From 913235a850d3e691cd10fb9537b91caa3301d3df Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Mon, 26 Jun 2023 07:55:55 +0200 Subject: [PATCH 1/2] Bump semver (#365) --- package-lock.json | 147 ++++++++-------------------------------------- package.json | 6 +- 2 files changed, 30 insertions(+), 123 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6fa51f75..b645ffd3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@dfinity/ic-js", - "version": "0.17.1", + "version": "0.17.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@dfinity/ic-js", - "version": "0.17.1", + "version": "0.17.2", "license": "Apache-2.0", "workspaces": [ "packages/utils", @@ -37,6 +37,7 @@ "node-fetch": "^3.3.1", "prettier": "^2.8.7", "prettier-plugin-organize-imports": "^3.2.2", + "semver": "^7.5.3", "size-limit": "^8.2.4", "text-encoding": "^0.7.0", "ts-jest": "^29.1.0", @@ -110,15 +111,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { "version": "7.19.3", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz", @@ -165,15 +157,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-environment-visitor": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", @@ -3452,15 +3435,6 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-n": { "version": "15.2.4", "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.4.tgz", @@ -3550,15 +3524,6 @@ "node": ">=4" } }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-promise": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", @@ -4750,15 +4715,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", @@ -5548,15 +5504,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -6327,9 +6274,9 @@ } }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -7325,15 +7272,7 @@ "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "semver": "^7.5.3" } }, "@babel/generator": { @@ -7369,15 +7308,7 @@ "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "semver": "^7.5.3" } }, "@babel/helper-environment-visitor": { @@ -8435,7 +8366,7 @@ "integrity": "sha512-xLuF97W7m7lxrRJvqXRlxO/4t7cpXtfxOnjml/t4aRVUCMXLdyvebRr9OM4jjoK8Fmiz8jomCbETUCI3jVhLzA==", "dev": true, "requires": { - "semver": "7.3.8" + "semver": "^7.5.3" } }, "@size-limit/preset-small-lib": { @@ -8641,7 +8572,7 @@ "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", + "semver": "^7.5.3", "tsutils": "^3.21.0" }, "dependencies": { @@ -8726,7 +8657,7 @@ "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", + "semver": "^7.5.3", "tsutils": "^3.21.0" } }, @@ -8761,7 +8692,7 @@ "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", + "semver": "^7.5.3", "tsutils": "^3.21.0" } }, @@ -8778,7 +8709,7 @@ "@typescript-eslint/types": "5.57.1", "@typescript-eslint/typescript-estree": "5.57.1", "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "semver": "^7.5.3" }, "dependencies": { "@typescript-eslint/scope-manager": { @@ -8808,7 +8739,7 @@ "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", + "semver": "^7.5.3", "tsutils": "^3.21.0" } }, @@ -9165,7 +9096,7 @@ "dev": true, "peer": true, "requires": { - "semver": "^7.0.0" + "semver": "^7.5.3" } }, "bytes-iec": { @@ -9751,7 +9682,7 @@ "minimatch": "^3.1.2", "object.values": "^1.1.6", "resolve": "^1.22.1", - "semver": "^6.3.0", + "semver": "^7.5.3", "tsconfig-paths": "^3.14.1" }, "dependencies": { @@ -9772,12 +9703,6 @@ "requires": { "esutils": "^2.0.2" } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true } } }, @@ -9795,7 +9720,7 @@ "is-core-module": "^2.9.0", "minimatch": "^3.1.2", "resolve": "^1.10.1", - "semver": "^7.3.7" + "semver": "^7.5.3" } }, "eslint-plugin-node": { @@ -9809,7 +9734,7 @@ "ignore": "^5.1.1", "minimatch": "^3.0.4", "resolve": "^1.10.1", - "semver": "^6.1.0" + "semver": "^7.5.3" }, "dependencies": { "eslint-plugin-es": { @@ -9836,12 +9761,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true } } }, @@ -10624,15 +10543,7 @@ "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "semver": "^7.5.3" } }, "istanbul-lib-report": { @@ -11027,7 +10938,7 @@ "jest-util": "^29.5.0", "natural-compare": "^1.4.0", "pretty-format": "^29.5.0", - "semver": "^7.3.5" + "semver": "^7.5.3" } }, "jest-util": { @@ -11240,15 +11151,7 @@ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "semver": "^7.5.3" } }, "make-error": { @@ -11769,9 +11672,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -12045,7 +11948,7 @@ "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", - "semver": "7.x", + "semver": "^7.5.3", "yargs-parser": "^21.0.1" } }, diff --git a/package.json b/package.json index 995ded7b..41084c44 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "node-fetch": "^3.3.1", "prettier": "^2.8.7", "prettier-plugin-organize-imports": "^3.2.2", + "semver": "^7.5.3", "size-limit": "^8.2.4", "text-encoding": "^0.7.0", "ts-jest": "^29.1.0", @@ -147,5 +148,8 @@ "@dfinity/principal" ] } - ] + ], + "overrides": { + "semver": "^7.5.3" + } } From 11b36b058519d33261a0fbaf57f65c68d115d8b8 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Mon, 26 Jun 2023 12:05:54 +0200 Subject: [PATCH 2/2] refactor: move token to utils (#367) --- CHANGELOG.md | 5 + package.json | 3 +- packages/nns/README.md | 96 +------------------ packages/nns/src/errors/ledger.errors.ts | 2 +- packages/nns/src/icp.spec.ts | 2 +- packages/nns/src/icp.ts | 8 +- packages/nns/src/index.ts | 2 - packages/utils/README.md | 92 ++++++++++++++++++ packages/utils/src/constants/constants.ts | 1 + .../{nns => utils}/src/enums/token.enums.ts | 0 packages/utils/src/index.ts | 2 + .../src => utils/src/parser}/token.spec.ts | 2 +- .../{nns/src => utils/src/parser}/token.ts | 18 +--- 13 files changed, 114 insertions(+), 119 deletions(-) create mode 100644 packages/utils/src/constants/constants.ts rename packages/{nns => utils}/src/enums/token.enums.ts (100%) rename packages/{nns/src => utils/src/parser}/token.spec.ts (98%) rename packages/{nns/src => utils/src/parser}/token.ts (87%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d441c6a..a2f813c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,11 @@ - utils `v0.0.18` - nns-proto `v0.0.4` +## Breaking Changes + +- move `convertStringToE8s` and `TokenAmount` from Nns package to `@dfinity/utils` +- retire `TokenAmount.toProto()` + ## Features - add a new utils function `decodePayment` to the `@dfinity/ledger` library. Useful to decode payment through QR code that contains target address and amount diff --git a/package.json b/package.json index 41084c44..2ee23980 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,8 @@ "ignore": [ "@dfinity/agent", "@dfinity/candid", - "@dfinity/principal" + "@dfinity/principal", + "@dfinity/utils" ] } ], diff --git a/packages/nns/README.md b/packages/nns/README.md index 5d39dcd8..7ba6e17a 100644 --- a/packages/nns/README.md +++ b/packages/nns/README.md @@ -65,23 +65,10 @@ await main(); ### :toolbox: Functions -- [convertStringToE8s](#gear-convertstringtoe8s) - [ineligibleNeurons](#gear-ineligibleneurons) - [votableNeurons](#gear-votableneurons) - [votedNeurons](#gear-votedneurons) -#### :gear: convertStringToE8s - -Receives a string representing a number and returns the big int or error. - -| Function | Type | -| -------------------- | ----------------------------------------------------- | -| `convertStringToE8s` | `(value: string) => bigint or FromStringToTokenError` | - -Parameters: - -- `amount`: - in string format - #### :gear: ineligibleNeurons Filter the neurons that are ineligible to vote to a proposal. @@ -126,16 +113,6 @@ Parameters: - `params.neurons`: The neurons to filter. - `params.proposal`: The proposal for which some neurons might have already voted. -### :wrench: Constants - -- [ICPToken](#gear-icptoken) - -#### :gear: ICPToken - -| Constant | Type | -| ---------- | ------- | -| `ICPToken` | `Token` | - ### :factory: AccountIdentifier #### Methods @@ -242,77 +219,6 @@ Parameters: | -------------- | --------------------------------------------------------------- | | `claimNeurons` | `({ hexPubKey, }: { hexPubKey: string; }) => Promise` | -### :factory: TokenAmount - -Represents an amount of tokens. - -#### Methods - -- [fromE8s](#gear-frome8s) -- [fromString](#gear-fromstring) -- [fromNumber](#gear-fromnumber) -- [toE8s](#gear-toe8s) -- [toProto](#gear-toproto) - -##### :gear: fromE8s - -Initialize from a bigint. Bigint are considered e8s. - -| Method | Type | -| --------- | ------------------------------------------------------------------------ | -| `fromE8s` | `({ amount, token, }: { amount: bigint; token: Token; }) => TokenAmount` | - -Parameters: - -- `params.amount`: The amount in bigint format. -- `params.token`: The token type. - -##### :gear: fromString - -Initialize from a string. Accepted formats: - -1234567.8901 -1'234'567.8901 -1,234,567.8901 - -| Method | Type | -| ------------ | -------------------------------------------------------------------------------------------------- | -| `fromString` | `({ amount, token, }: { amount: string; token: Token; }) => FromStringToTokenError or TokenAmount` | - -Parameters: - -- `params.amount`: The amount in string format. -- `params.token`: The token type. - -##### :gear: fromNumber - -Initialize from a number. - -1 integer is considered E8S_PER_TOKEN - -| Method | Type | -| ------------ | ------------------------------------------------------------------------ | -| `fromNumber` | `({ amount, token, }: { amount: number; token: Token; }) => TokenAmount` | - -Parameters: - -- `params.amount`: The amount in number format. -- `params.token`: The token type. - -##### :gear: toE8s - -| Method | Type | -| ------- | -------------- | -| `toE8s` | `() => bigint` | - -##### :gear: toProto - -TODO: Remove this method when ICP class is not used anymore - -| Method | Type | -| --------- | ---------------------- | -| `toProto` | `() => Promise` | - ### :factory: LedgerCanister #### Methods @@ -691,7 +597,7 @@ Initialize from a string. Accepted formats: | Method | Type | | ------------ | --------------------------------------------------- | -| `fromString` | `(amount: string) => FromStringToTokenError or ICP` | +| `fromString` | `(amount: string) => ICP or FromStringToTokenError` | ##### :gear: toE8s diff --git a/packages/nns/src/errors/ledger.errors.ts b/packages/nns/src/errors/ledger.errors.ts index db9a1b2a..b1124da2 100644 --- a/packages/nns/src/errors/ledger.errors.ts +++ b/packages/nns/src/errors/ledger.errors.ts @@ -1,5 +1,5 @@ +import { convertStringToE8s } from "@dfinity/utils"; import type { TransferError as RawTransferError } from "../../candid/ledger"; -import { convertStringToE8s } from "../token"; import type { BlockHeight } from "../types/common"; export class TransferError extends Error {} diff --git a/packages/nns/src/icp.spec.ts b/packages/nns/src/icp.spec.ts index 36161bde..758fec63 100644 --- a/packages/nns/src/icp.spec.ts +++ b/packages/nns/src/icp.spec.ts @@ -1,5 +1,5 @@ +import { FromStringToTokenError } from "@dfinity/utils"; import { describe, expect, it } from "@jest/globals"; -import { FromStringToTokenError } from "./enums/token.enums"; import { ICP } from "./icp"; describe("ICP", () => { diff --git a/packages/nns/src/icp.ts b/packages/nns/src/icp.ts index 4b52589d..e9f648cc 100644 --- a/packages/nns/src/icp.ts +++ b/packages/nns/src/icp.ts @@ -1,6 +1,10 @@ import type { ICPTs } from "@dfinity/nns-proto"; -import type { FromStringToTokenError } from "./enums/token.enums"; -import { convertStringToE8s, ICPToken, type Token } from "./token"; +import { + convertStringToE8s, + ICPToken, + type FromStringToTokenError, + type Token, +} from "@dfinity/utils"; import { importNnsProto } from "./utils/proto.utils"; /** diff --git a/packages/nns/src/index.ts b/packages/nns/src/index.ts index d1d5f1b8..0de98748 100644 --- a/packages/nns/src/index.ts +++ b/packages/nns/src/index.ts @@ -2,7 +2,6 @@ export type { RewardEvent } from "../candid/governance"; export type { DeployedSns } from "../candid/sns_wasm"; export { AccountIdentifier, SubAccount } from "./account_identifier"; export * from "./enums/governance.enums"; -export * from "./enums/token.enums"; export * from "./errors/governance.errors"; export * from "./errors/ledger.errors"; export { GenesisTokenCanister } from "./genesis_token.canister"; @@ -10,7 +9,6 @@ export { GovernanceCanister } from "./governance.canister"; export { ICP } from "./icp"; export { LedgerCanister } from "./ledger.canister"; export { SnsWasmCanister } from "./sns_wasm.canister"; -export * from "./token"; export * from "./types/common"; export * from "./types/governance.options"; export * from "./types/governance_converters"; diff --git a/packages/utils/README.md b/packages/utils/README.md index fbb4dae7..94a0c07a 100644 --- a/packages/utils/README.md +++ b/packages/utils/README.md @@ -31,6 +31,7 @@ npm i @dfinity/agent @dfinity/candid @dfinity/principal ### :toolbox: Functions +- [convertStringToE8s](#gear-convertstringtoe8s) - [defaultAgent](#gear-defaultagent) - [createAgent](#gear-createagent) - [createServices](#gear-createservices) @@ -58,6 +59,18 @@ npm i @dfinity/agent @dfinity/candid @dfinity/principal - [principalToSubAccount](#gear-principaltosubaccount) - [smallerVersion](#gear-smallerversion) +#### :gear: convertStringToE8s + +Receives a string representing a number and returns the big int or error. + +| Function | Type | +| -------------------- | ----------------------------------------------------- | +| `convertStringToE8s` | `(value: string) => bigint or FromStringToTokenError` | + +Parameters: + +- `amount`: - in string format + #### :gear: defaultAgent Get a default agent that connects to mainnet with the anonymous identity. @@ -253,6 +266,85 @@ Tags after patch version are ignored, e.g. 1.0.0-beta.1 is considered equal to 1 | ---------------- | ----------------------------------------------------------------------------------------------- | | `smallerVersion` | `({ minVersion, currentVersion, }: { minVersion: string; currentVersion: string; }) => boolean` | +### :wrench: Constants + +- [E8S_PER_TOKEN](#gear-e8s_per_token) +- [ICPToken](#gear-icptoken) + +#### :gear: E8S_PER_TOKEN + +| Constant | Type | +| --------------- | -------- | +| `E8S_PER_TOKEN` | `bigint` | + +#### :gear: ICPToken + +| Constant | Type | +| ---------- | ------- | +| `ICPToken` | `Token` | + +### :factory: TokenAmount + +Represents an amount of tokens. + +#### Methods + +- [fromE8s](#gear-frome8s) +- [fromString](#gear-fromstring) +- [fromNumber](#gear-fromnumber) +- [toE8s](#gear-toe8s) + +##### :gear: fromE8s + +Initialize from a bigint. Bigint are considered e8s. + +| Method | Type | +| --------- | ------------------------------------------------------------------------ | +| `fromE8s` | `({ amount, token, }: { amount: bigint; token: Token; }) => TokenAmount` | + +Parameters: + +- `params.amount`: The amount in bigint format. +- `params.token`: The token type. + +##### :gear: fromString + +Initialize from a string. Accepted formats: + +1234567.8901 +1'234'567.8901 +1,234,567.8901 + +| Method | Type | +| ------------ | -------------------------------------------------------------------------------------------------- | +| `fromString` | `({ amount, token, }: { amount: string; token: Token; }) => FromStringToTokenError or TokenAmount` | + +Parameters: + +- `params.amount`: The amount in string format. +- `params.token`: The token type. + +##### :gear: fromNumber + +Initialize from a number. + +1 integer is considered E8S_PER_TOKEN + +| Method | Type | +| ------------ | ------------------------------------------------------------------------ | +| `fromNumber` | `({ amount, token, }: { amount: number; token: Token; }) => TokenAmount` | + +Parameters: + +- `params.amount`: The amount in number format. +- `params.token`: The token type. + +##### :gear: toE8s + +| Method | Type | +| ------- | -------------- | +| `toE8s` | `() => bigint` | + ### :factory: Canister #### Constructors diff --git a/packages/utils/src/constants/constants.ts b/packages/utils/src/constants/constants.ts new file mode 100644 index 00000000..6527b97b --- /dev/null +++ b/packages/utils/src/constants/constants.ts @@ -0,0 +1 @@ +export const E8S_PER_TOKEN = BigInt(100000000); diff --git a/packages/nns/src/enums/token.enums.ts b/packages/utils/src/enums/token.enums.ts similarity index 100% rename from packages/nns/src/enums/token.enums.ts rename to packages/utils/src/enums/token.enums.ts diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 7f10c1c3..f0ed7552 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -1,3 +1,5 @@ +export * from "./enums/token.enums"; +export * from "./parser/token"; export * from "./services/canister"; export type { CanisterOptions } from "./types/canister.options"; export type { QueryParams } from "./types/query.params"; diff --git a/packages/nns/src/token.spec.ts b/packages/utils/src/parser/token.spec.ts similarity index 98% rename from packages/nns/src/token.spec.ts rename to packages/utils/src/parser/token.spec.ts index 4a8f46aa..ee9650b2 100644 --- a/packages/nns/src/token.spec.ts +++ b/packages/utils/src/parser/token.spec.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "@jest/globals"; -import { FromStringToTokenError } from "./enums/token.enums"; +import { FromStringToTokenError } from "../enums/token.enums"; import { ICPToken, TokenAmount } from "./token"; describe("ICP", () => { diff --git a/packages/nns/src/token.ts b/packages/utils/src/parser/token.ts similarity index 87% rename from packages/nns/src/token.ts rename to packages/utils/src/parser/token.ts index 3df5293a..d90bf2a6 100644 --- a/packages/nns/src/token.ts +++ b/packages/utils/src/parser/token.ts @@ -1,7 +1,5 @@ -import type { ICPTs } from "@dfinity/nns-proto"; -import { E8S_PER_TOKEN } from "./constants/constants"; -import { FromStringToTokenError } from "./enums/token.enums"; -import { importNnsProto } from "./utils/proto.utils"; +import { E8S_PER_TOKEN } from "../constants/constants"; +import { FromStringToTokenError } from "../enums/token.enums"; /** * Receives a string representing a number and returns the big int or error. @@ -156,16 +154,4 @@ export class TokenAmount { public toE8s(): bigint { return this.e8s; } - - /** - * TODO: Remove this method when ICP class is not used anymore - * @deprecated - */ - public async toProto(): Promise { - const { ICPTs: ICPTsConstructor } = await importNnsProto(); - - const proto = new ICPTsConstructor(); - proto.setE8s(this.e8s.toString()); - return proto; - } }