1- import { BigNumber } from "./bignumber.js" ;
1+ import { BigNumber , BigNumberish } from "./bignumber.js" ;
22import { Decimal } from "decimal.js" ;
33
44/**
55 * Extract decimals from a number - converts human-readable amount to base units
6- * @param num - The amount as a number (e.g., 1.5 ZNN )
6+ * @param num - The amount as BigNumberish (e.g., 1.5, "1.5", bigint )
77 * @param decimals - Number of decimals (e.g., 8 for ZNN)
88 * @returns BigNumber representing the amount in base units
99 * @example extractNumberDecimals(1.5, 8) => BigNumber(150000000)
1010 */
11- export function extractNumberDecimals ( num : number , decimals : number ) : BigNumber {
12- const decimal = new Decimal ( num ) ;
11+ export function extractNumberDecimals ( num : BigNumberish , decimals : number ) : BigNumber {
12+ const decimal = new Decimal ( num . toString ( ) ) ;
1313 const scalingFactor = new Decimal ( 10 ) . pow ( decimals ) ;
1414 const result = decimal . times ( scalingFactor ) ;
1515 // Truncate to remove any fractional part (matching Dart SDK behavior)
@@ -23,10 +23,10 @@ export function extractNumberDecimals(num: number, decimals: number): BigNumber
2323 * @returns String representing the human-readable amount
2424 * @example addNumberDecimals(150000000, 8) => "1.5"
2525 */
26- export function addNumberDecimals ( num : number , decimals : number ) : string {
27- const decimal = new Decimal ( num ) ;
26+ export function addNumberDecimals ( num : BigNumberish , decimals : number ) : string {
27+ const decimal = new Decimal ( num . toString ( ) ) ;
2828 const scalingFactor = new Decimal ( 10 ) . pow ( decimals ) ;
2929 const result = decimal . dividedBy ( scalingFactor ) ;
30- return result . toString ( ) ;
30+ return result . toFixed ( ) ;
3131}
3232
0 commit comments