@@ -110,12 +110,21 @@ export function atomsToDecimal(atoms: string | number, decimals: number): string
110110}
111111
112112export function decimalsToAtoms ( value : string | number , decimals : number ) : bigint {
113- const [ intPart , fracPart = "" ] = value . toString ( ) . split ( "." ) ;
113+ const v = Number ( value ) ;
114+ const [ intPart , fracPart = "" ] = v . toFixed ( decimals ) . split ( "." ) ;
114115 const paddedFrac = ( fracPart + "0" . repeat ( decimals ) ) . slice ( 0 , decimals ) ;
115116 const full = intPart + paddedFrac ;
116117 return BigInt ( full ) ;
117118}
118119
120+ export function decimals ( value : string | number , decimals : number ) : string {
121+ const v = Number ( value ) ;
122+ if ( isNaN ( v ) ) return '0' ;
123+ return v
124+ . toFixed ( decimals )
125+ . replace ( / \. ? 0 + $ / , '' ) ;
126+ }
127+
119128type Address = {
120129 [ key : string ] : {
121130 receiving : string [ ] ;
@@ -1547,13 +1556,13 @@ class Client {
15471556 ...( token_details
15481557 ? {
15491558 amount : {
1550- decimal : params . amount ! . toString ( ) ,
1559+ decimal : decimals ( params . amount , token_details . number_of_decimals ) . toString ( ) ,
15511560 atoms : decimalsToAtoms ( params . amount ! , token_details . number_of_decimals ) . toString ( ) ,
15521561 } ,
15531562 }
15541563 : {
15551564 amount : {
1556- decimal : params . amount ! . toString ( ) ,
1565+ decimal : decimals ( params . amount , 11 ) . toString ( ) ,
15571566 atoms : decimalsToAtoms ( params . amount ! , 11 ) . toString ( ) ,
15581567 } ,
15591568 } ) ,
@@ -1584,7 +1593,7 @@ class Client {
15841593 token_id,
15851594 } ) ,
15861595 amount : {
1587- decimal : params . amount ! . toString ( ) ,
1596+ decimal : decimals ( params . amount , 11 ) . toString ( ) ,
15881597 atoms : decimalsToAtoms ( params . amount ! , 11 ) . toString ( ) ,
15891598 } ,
15901599 } ,
@@ -1603,7 +1612,7 @@ class Client {
16031612 type : 'Fixed' ,
16041613 amount : {
16051614 atoms : decimalsToAtoms ( params . supply_amount ! , params . number_of_decimals ! ) . toString ( ) ,
1606- decimal : params . supply_amount ! . toString ( ) ,
1615+ decimal : decimals ( params . supply_amount ! , params . number_of_decimals ! ) . toString ( ) ,
16071616 } ,
16081617 } ;
16091618 } else {
@@ -1669,7 +1678,7 @@ class Client {
16691678 if ( type === 'MintToken' ) {
16701679 const amount = {
16711680 atoms : decimalsToAtoms ( params . amount ! , params . token_details ! . number_of_decimals ) . toString ( ) ,
1672- decimal : params . amount ! . toString ( ) ,
1681+ decimal : decimals ( params . amount ! , params . token_details ! . number_of_decimals ) . toString ( ) ,
16731682 } ;
16741683
16751684 inputs . push ( {
0 commit comments