diff --git a/hbar.go b/hbar.go new file mode 100644 index 000000000..2bf4d1e6c --- /dev/null +++ b/hbar.go @@ -0,0 +1,24 @@ +package hedera + +type Hbar struct { + tinybar int64 +} + +const max = int64(^uint(0) >> 1) +const min = -max - 1 + +var HbarMAX = Hbar{max} +var HbarMIN = Hbar{min} +var HbarZERO = Hbar{} + +func HbarFromTinybar(tinybar uint64) Hbar { + return Hbar{tinybar: int64(tinybar)} +} + +func HbarOf(tinybar float64) Hbar { + return Hbar{tinybar: int64(tinybar * 100_000_000)} +} + +func (hbar Hbar) AsTinybar() uint64 { + return uint64(hbar.tinybar) +} diff --git a/hbar_unit.go b/hbar_unit.go new file mode 100644 index 000000000..49e20e3d8 --- /dev/null +++ b/hbar_unit.go @@ -0,0 +1,39 @@ +package hedera + +type HbarUnit string + +const ( + Tinybar HbarUnit = "tinybar" + Microbar HbarUnit = "microbar" + Millibar HbarUnit = "millibar" + // Hbar HbarUnit = "hbar" + Kilobar HbarUnit = "kilobar" + Megabar HbarUnit = "megabar" + Gigabar HbarUnit = "gigabar" +) + +func (unit HbarUnit) GetSymbol() string { + switch unit { + case Tinybar: + return "tℏ" + case Microbar: + return "μℏ" + case Millibar: + return "mℏ" + // case Hbar: + // return "ℏ" + case Kilobar: + return "kℏ" + case Megabar: + return "Mℏ" + case Gigabar: + return "Gℏ" + } + + // Unreachable + return "" +} + +func (unit HbarUnit) String() string { + return string(unit) +}