Skip to content

Commit e8b6f89

Browse files
authored
fix: transaction decimal (#30)
* fix: transaction decimal * fix: decimals trailing zeroes
1 parent 644d046 commit e8b6f89

3 files changed

Lines changed: 391 additions & 6 deletions

File tree

packages/sdk/src/mintlayer-connect-sdk.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,21 @@ export function atomsToDecimal(atoms: string | number, decimals: number): string
110110
}
111111

112112
export 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+
119128
type 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

Comments
 (0)