@ledgerhq/coin-mina 1.1.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +20 -0
- package/.turbo/turbo-build.log +4 -0
- package/.unimportedrc.json +24 -0
- package/CHANGELOG.md +15 -0
- package/LICENSE.txt +21 -0
- package/jest.config.js +8 -0
- package/jest.integ.config.js +8 -0
- package/lib/api/index.d.ts +13 -0
- package/lib/api/index.d.ts.map +1 -0
- package/lib/api/index.integ.test.d.ts +2 -0
- package/lib/api/index.integ.test.d.ts.map +1 -0
- package/lib/api/index.integ.test.js +57 -0
- package/lib/api/index.integ.test.js.map +1 -0
- package/lib/api/index.js +91 -0
- package/lib/api/index.js.map +1 -0
- package/lib/api/rosetta/index.d.ts +9 -0
- package/lib/api/rosetta/index.d.ts.map +1 -0
- package/lib/api/rosetta/index.js +90 -0
- package/lib/api/rosetta/index.js.map +1 -0
- package/lib/api/rosetta/types.d.ts +143 -0
- package/lib/api/rosetta/types.d.ts.map +1 -0
- package/lib/api/rosetta/types.js +3 -0
- package/lib/api/rosetta/types.js.map +1 -0
- package/lib/api/rosetta/utils.d.ts +43 -0
- package/lib/api/rosetta/utils.d.ts.map +1 -0
- package/lib/api/rosetta/utils.js +60 -0
- package/lib/api/rosetta/utils.js.map +1 -0
- package/lib/api/rosetta/utils.test.d.ts +2 -0
- package/lib/api/rosetta/utils.test.d.ts.map +1 -0
- package/lib/api/rosetta/utils.test.js +82 -0
- package/lib/api/rosetta/utils.test.js.map +1 -0
- package/lib/bridge/broadcast.d.ts +6 -0
- package/lib/bridge/broadcast.d.ts.map +1 -0
- package/lib/bridge/broadcast.js +11 -0
- package/lib/bridge/broadcast.js.map +1 -0
- package/lib/bridge/broadcast.test.d.ts +2 -0
- package/lib/bridge/broadcast.test.d.ts.map +1 -0
- package/lib/bridge/broadcast.test.js +36 -0
- package/lib/bridge/broadcast.test.js.map +1 -0
- package/lib/bridge/buildTransaction.d.ts +4 -0
- package/lib/bridge/buildTransaction.d.ts.map +1 -0
- package/lib/bridge/buildTransaction.js +37 -0
- package/lib/bridge/buildTransaction.js.map +1 -0
- package/lib/bridge/buildTransaction.test.d.ts +2 -0
- package/lib/bridge/buildTransaction.test.d.ts.map +1 -0
- package/lib/bridge/buildTransaction.test.js +57 -0
- package/lib/bridge/buildTransaction.test.js.map +1 -0
- package/lib/bridge/cli-transaction.d.ts +18 -0
- package/lib/bridge/cli-transaction.d.ts.map +1 -0
- package/lib/bridge/cli-transaction.js +37 -0
- package/lib/bridge/cli-transaction.js.map +1 -0
- package/lib/bridge/createTransaction.d.ts +4 -0
- package/lib/bridge/createTransaction.d.ts.map +1 -0
- package/lib/bridge/createTransaction.js +21 -0
- package/lib/bridge/createTransaction.js.map +1 -0
- package/lib/bridge/createTransaction.test.d.ts +2 -0
- package/lib/bridge/createTransaction.test.d.ts.map +1 -0
- package/lib/bridge/createTransaction.test.js +24 -0
- package/lib/bridge/createTransaction.test.js.map +1 -0
- package/lib/bridge/deviceTransactionConfig.d.ts +11 -0
- package/lib/bridge/deviceTransactionConfig.d.ts.map +1 -0
- package/lib/bridge/deviceTransactionConfig.js +8 -0
- package/lib/bridge/deviceTransactionConfig.js.map +1 -0
- package/lib/bridge/errors.d.ts +10 -0
- package/lib/bridge/errors.d.ts.map +1 -0
- package/lib/bridge/errors.js +17 -0
- package/lib/bridge/errors.js.map +1 -0
- package/lib/bridge/estimateMaxSpendable.d.ts +5 -0
- package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -0
- package/lib/bridge/estimateMaxSpendable.js +26 -0
- package/lib/bridge/estimateMaxSpendable.js.map +1 -0
- package/lib/bridge/getEstimatedFees.d.ts +8 -0
- package/lib/bridge/getEstimatedFees.d.ts.map +1 -0
- package/lib/bridge/getEstimatedFees.js +9 -0
- package/lib/bridge/getEstimatedFees.js.map +1 -0
- package/lib/bridge/getTransactionStatus.d.ts +5 -0
- package/lib/bridge/getTransactionStatus.d.ts.map +1 -0
- package/lib/bridge/getTransactionStatus.js +62 -0
- package/lib/bridge/getTransactionStatus.js.map +1 -0
- package/lib/bridge/getTransactionStatus.test.d.ts +2 -0
- package/lib/bridge/getTransactionStatus.test.d.ts.map +1 -0
- package/lib/bridge/getTransactionStatus.test.js +138 -0
- package/lib/bridge/getTransactionStatus.test.js.map +1 -0
- package/lib/bridge/index.d.ts +14 -0
- package/lib/bridge/index.d.ts.map +1 -0
- package/lib/bridge/index.js +59 -0
- package/lib/bridge/index.js.map +1 -0
- package/lib/bridge/index.test.d.ts +2 -0
- package/lib/bridge/index.test.d.ts.map +1 -0
- package/lib/bridge/index.test.js +32 -0
- package/lib/bridge/index.test.js.map +1 -0
- package/lib/bridge/prepareTransaction.d.ts +4 -0
- package/lib/bridge/prepareTransaction.d.ts.map +1 -0
- package/lib/bridge/prepareTransaction.js +23 -0
- package/lib/bridge/prepareTransaction.js.map +1 -0
- package/lib/bridge/prepareTransaction.test.d.ts +2 -0
- package/lib/bridge/prepareTransaction.test.d.ts.map +1 -0
- package/lib/bridge/prepareTransaction.test.js +43 -0
- package/lib/bridge/prepareTransaction.test.js.map +1 -0
- package/lib/bridge/signOperation.d.ts +12 -0
- package/lib/bridge/signOperation.d.ts.map +1 -0
- package/lib/bridge/signOperation.js +72 -0
- package/lib/bridge/signOperation.js.map +1 -0
- package/lib/bridge/signOperation.test.d.ts +2 -0
- package/lib/bridge/signOperation.test.d.ts.map +1 -0
- package/lib/bridge/signOperation.test.js +129 -0
- package/lib/bridge/signOperation.test.js.map +1 -0
- package/lib/bridge/synchronisation.d.ts +7 -0
- package/lib/bridge/synchronisation.d.ts.map +1 -0
- package/lib/bridge/synchronisation.js +155 -0
- package/lib/bridge/synchronisation.js.map +1 -0
- package/lib/bridge/synchronisation.test.d.ts +2 -0
- package/lib/bridge/synchronisation.test.d.ts.map +1 -0
- package/lib/bridge/synchronisation.test.js +164 -0
- package/lib/bridge/synchronisation.test.js.map +1 -0
- package/lib/bridge/transaction.d.ts +14 -0
- package/lib/bridge/transaction.d.ts.map +1 -0
- package/lib/bridge/transaction.js +61 -0
- package/lib/bridge/transaction.js.map +1 -0
- package/lib/common-logic/index.d.ts +9 -0
- package/lib/common-logic/index.d.ts.map +1 -0
- package/lib/common-logic/index.js +96 -0
- package/lib/common-logic/index.js.map +1 -0
- package/lib/common-logic/index.test.d.ts +2 -0
- package/lib/common-logic/index.test.d.ts.map +1 -0
- package/lib/common-logic/index.test.js +181 -0
- package/lib/common-logic/index.test.js.map +1 -0
- package/lib/config.d.ts +9 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +16 -0
- package/lib/config.js.map +1 -0
- package/lib/consts.d.ts +16 -0
- package/lib/consts.d.ts.map +1 -0
- package/lib/consts.js +19 -0
- package/lib/consts.js.map +1 -0
- package/lib/signer/getAddress.d.ts +6 -0
- package/lib/signer/getAddress.d.ts.map +1 -0
- package/lib/signer/getAddress.js +22 -0
- package/lib/signer/getAddress.js.map +1 -0
- package/lib/signer/getAddress.test.d.ts +2 -0
- package/lib/signer/getAddress.test.d.ts.map +1 -0
- package/lib/signer/getAddress.test.js +106 -0
- package/lib/signer/getAddress.test.js.map +1 -0
- package/lib/signer/index.d.ts +3 -0
- package/lib/signer/index.d.ts.map +1 -0
- package/lib/signer/index.js +8 -0
- package/lib/signer/index.js.map +1 -0
- package/lib/test/bot-deviceActions.d.ts +4 -0
- package/lib/test/bot-deviceActions.d.ts.map +1 -0
- package/lib/test/bot-deviceActions.js +67 -0
- package/lib/test/bot-deviceActions.js.map +1 -0
- package/lib/test/bot-specs.d.ts +7 -0
- package/lib/test/bot-specs.d.ts.map +1 -0
- package/lib/test/bot-specs.js +107 -0
- package/lib/test/bot-specs.js.map +1 -0
- package/lib/test/bridgeDatasetTest.d.ts +4 -0
- package/lib/test/bridgeDatasetTest.d.ts.map +1 -0
- package/lib/test/bridgeDatasetTest.js +174 -0
- package/lib/test/bridgeDatasetTest.js.map +1 -0
- package/lib/test/fixtures.d.ts +55 -0
- package/lib/test/fixtures.d.ts.map +1 -0
- package/lib/test/fixtures.js +194 -0
- package/lib/test/fixtures.js.map +1 -0
- package/lib/test/index.d.ts +4 -0
- package/lib/test/index.d.ts.map +1 -0
- package/lib/test/index.js +20 -0
- package/lib/test/index.js.map +1 -0
- package/lib/test/testUtils.d.ts +2 -0
- package/lib/test/testUtils.d.ts.map +1 -0
- package/lib/test/testUtils.js +8 -0
- package/lib/test/testUtils.js.map +1 -0
- package/lib/test/testUtils.test.d.ts +2 -0
- package/lib/test/testUtils.test.d.ts.map +1 -0
- package/lib/test/testUtils.test.js +11 -0
- package/lib/test/testUtils.test.js.map +1 -0
- package/lib/types/common.d.ts +55 -0
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/common.js +3 -0
- package/lib/types/common.js.map +1 -0
- package/lib/types/index.d.ts +3 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +19 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/signer.d.ts +32 -0
- package/lib/types/signer.d.ts.map +1 -0
- package/lib/types/signer.js +3 -0
- package/lib/types/signer.js.map +1 -0
- package/lib-es/api/index.d.ts +13 -0
- package/lib-es/api/index.d.ts.map +1 -0
- package/lib-es/api/index.integ.test.d.ts +2 -0
- package/lib-es/api/index.integ.test.d.ts.map +1 -0
- package/lib-es/api/index.integ.test.js +55 -0
- package/lib-es/api/index.integ.test.js.map +1 -0
- package/lib-es/api/index.js +79 -0
- package/lib-es/api/index.js.map +1 -0
- package/lib-es/api/rosetta/index.d.ts +8 -0
- package/lib-es/api/rosetta/index.d.ts.map +1 -0
- package/lib-es/api/rosetta/index.js +78 -0
- package/lib-es/api/rosetta/index.js.map +1 -0
- package/lib-es/api/rosetta/types.d.ts +143 -0
- package/lib-es/api/rosetta/types.d.ts.map +1 -0
- package/lib-es/api/rosetta/types.js +2 -0
- package/lib-es/api/rosetta/types.js.map +1 -0
- package/lib-es/api/rosetta/utils.d.ts +43 -0
- package/lib-es/api/rosetta/utils.d.ts.map +1 -0
- package/lib-es/api/rosetta/utils.js +54 -0
- package/lib-es/api/rosetta/utils.js.map +1 -0
- package/lib-es/api/rosetta/utils.test.d.ts +2 -0
- package/lib-es/api/rosetta/utils.test.d.ts.map +1 -0
- package/lib-es/api/rosetta/utils.test.js +80 -0
- package/lib-es/api/rosetta/utils.test.js.map +1 -0
- package/lib-es/bridge/broadcast.d.ts +6 -0
- package/lib-es/bridge/broadcast.d.ts.map +1 -0
- package/lib-es/bridge/broadcast.js +9 -0
- package/lib-es/bridge/broadcast.js.map +1 -0
- package/lib-es/bridge/broadcast.test.d.ts +2 -0
- package/lib-es/bridge/broadcast.test.d.ts.map +1 -0
- package/lib-es/bridge/broadcast.test.js +31 -0
- package/lib-es/bridge/broadcast.test.js.map +1 -0
- package/lib-es/bridge/buildTransaction.d.ts +4 -0
- package/lib-es/bridge/buildTransaction.d.ts.map +1 -0
- package/lib-es/bridge/buildTransaction.js +30 -0
- package/lib-es/bridge/buildTransaction.js.map +1 -0
- package/lib-es/bridge/buildTransaction.test.d.ts +2 -0
- package/lib-es/bridge/buildTransaction.test.d.ts.map +1 -0
- package/lib-es/bridge/buildTransaction.test.js +55 -0
- package/lib-es/bridge/buildTransaction.test.js.map +1 -0
- package/lib-es/bridge/cli-transaction.d.ts +18 -0
- package/lib-es/bridge/cli-transaction.d.ts.map +1 -0
- package/lib-es/bridge/cli-transaction.js +31 -0
- package/lib-es/bridge/cli-transaction.js.map +1 -0
- package/lib-es/bridge/createTransaction.d.ts +4 -0
- package/lib-es/bridge/createTransaction.d.ts.map +1 -0
- package/lib-es/bridge/createTransaction.js +14 -0
- package/lib-es/bridge/createTransaction.js.map +1 -0
- package/lib-es/bridge/createTransaction.test.d.ts +2 -0
- package/lib-es/bridge/createTransaction.test.d.ts.map +1 -0
- package/lib-es/bridge/createTransaction.test.js +19 -0
- package/lib-es/bridge/createTransaction.test.js.map +1 -0
- package/lib-es/bridge/deviceTransactionConfig.d.ts +11 -0
- package/lib-es/bridge/deviceTransactionConfig.d.ts.map +1 -0
- package/lib-es/bridge/deviceTransactionConfig.js +6 -0
- package/lib-es/bridge/deviceTransactionConfig.js.map +1 -0
- package/lib-es/bridge/errors.d.ts +10 -0
- package/lib-es/bridge/errors.d.ts.map +1 -0
- package/lib-es/bridge/errors.js +14 -0
- package/lib-es/bridge/errors.js.map +1 -0
- package/lib-es/bridge/estimateMaxSpendable.d.ts +5 -0
- package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -0
- package/lib-es/bridge/estimateMaxSpendable.js +21 -0
- package/lib-es/bridge/estimateMaxSpendable.js.map +1 -0
- package/lib-es/bridge/getEstimatedFees.d.ts +8 -0
- package/lib-es/bridge/getEstimatedFees.d.ts.map +1 -0
- package/lib-es/bridge/getEstimatedFees.js +7 -0
- package/lib-es/bridge/getEstimatedFees.js.map +1 -0
- package/lib-es/bridge/getTransactionStatus.d.ts +5 -0
- package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -0
- package/lib-es/bridge/getTransactionStatus.js +60 -0
- package/lib-es/bridge/getTransactionStatus.js.map +1 -0
- package/lib-es/bridge/getTransactionStatus.test.d.ts +2 -0
- package/lib-es/bridge/getTransactionStatus.test.d.ts.map +1 -0
- package/lib-es/bridge/getTransactionStatus.test.js +133 -0
- package/lib-es/bridge/getTransactionStatus.test.js.map +1 -0
- package/lib-es/bridge/index.d.ts +14 -0
- package/lib-es/bridge/index.d.ts.map +1 -0
- package/lib-es/bridge/index.js +50 -0
- package/lib-es/bridge/index.js.map +1 -0
- package/lib-es/bridge/index.test.d.ts +2 -0
- package/lib-es/bridge/index.test.d.ts.map +1 -0
- package/lib-es/bridge/index.test.js +30 -0
- package/lib-es/bridge/index.test.js.map +1 -0
- package/lib-es/bridge/prepareTransaction.d.ts +4 -0
- package/lib-es/bridge/prepareTransaction.d.ts.map +1 -0
- package/lib-es/bridge/prepareTransaction.js +16 -0
- package/lib-es/bridge/prepareTransaction.js.map +1 -0
- package/lib-es/bridge/prepareTransaction.test.d.ts +2 -0
- package/lib-es/bridge/prepareTransaction.test.d.ts.map +1 -0
- package/lib-es/bridge/prepareTransaction.test.js +38 -0
- package/lib-es/bridge/prepareTransaction.test.js.map +1 -0
- package/lib-es/bridge/signOperation.d.ts +12 -0
- package/lib-es/bridge/signOperation.d.ts.map +1 -0
- package/lib-es/bridge/signOperation.js +64 -0
- package/lib-es/bridge/signOperation.js.map +1 -0
- package/lib-es/bridge/signOperation.test.d.ts +2 -0
- package/lib-es/bridge/signOperation.test.d.ts.map +1 -0
- package/lib-es/bridge/signOperation.test.js +127 -0
- package/lib-es/bridge/signOperation.test.js.map +1 -0
- package/lib-es/bridge/synchronisation.d.ts +7 -0
- package/lib-es/bridge/synchronisation.d.ts.map +1 -0
- package/lib-es/bridge/synchronisation.js +147 -0
- package/lib-es/bridge/synchronisation.js.map +1 -0
- package/lib-es/bridge/synchronisation.test.d.ts +2 -0
- package/lib-es/bridge/synchronisation.test.d.ts.map +1 -0
- package/lib-es/bridge/synchronisation.test.js +159 -0
- package/lib-es/bridge/synchronisation.test.js.map +1 -0
- package/lib-es/bridge/transaction.d.ts +14 -0
- package/lib-es/bridge/transaction.d.ts.map +1 -0
- package/lib-es/bridge/transaction.js +53 -0
- package/lib-es/bridge/transaction.js.map +1 -0
- package/lib-es/common-logic/index.d.ts +9 -0
- package/lib-es/common-logic/index.d.ts.map +1 -0
- package/lib-es/common-logic/index.js +84 -0
- package/lib-es/common-logic/index.js.map +1 -0
- package/lib-es/common-logic/index.test.d.ts +2 -0
- package/lib-es/common-logic/index.test.d.ts.map +1 -0
- package/lib-es/common-logic/index.test.js +179 -0
- package/lib-es/common-logic/index.test.js.map +1 -0
- package/lib-es/config.d.ts +9 -0
- package/lib-es/config.d.ts.map +1 -0
- package/lib-es/config.js +11 -0
- package/lib-es/config.js.map +1 -0
- package/lib-es/consts.d.ts +16 -0
- package/lib-es/consts.d.ts.map +1 -0
- package/lib-es/consts.js +16 -0
- package/lib-es/consts.js.map +1 -0
- package/lib-es/signer/getAddress.d.ts +6 -0
- package/lib-es/signer/getAddress.d.ts.map +1 -0
- package/lib-es/signer/getAddress.js +17 -0
- package/lib-es/signer/getAddress.js.map +1 -0
- package/lib-es/signer/getAddress.test.d.ts +2 -0
- package/lib-es/signer/getAddress.test.d.ts.map +1 -0
- package/lib-es/signer/getAddress.test.js +101 -0
- package/lib-es/signer/getAddress.test.js.map +1 -0
- package/lib-es/signer/index.d.ts +3 -0
- package/lib-es/signer/index.d.ts.map +1 -0
- package/lib-es/signer/index.js +3 -0
- package/lib-es/signer/index.js.map +1 -0
- package/lib-es/test/bot-deviceActions.d.ts +4 -0
- package/lib-es/test/bot-deviceActions.d.ts.map +1 -0
- package/lib-es/test/bot-deviceActions.js +64 -0
- package/lib-es/test/bot-deviceActions.js.map +1 -0
- package/lib-es/test/bot-specs.d.ts +7 -0
- package/lib-es/test/bot-specs.d.ts.map +1 -0
- package/lib-es/test/bot-specs.js +102 -0
- package/lib-es/test/bot-specs.js.map +1 -0
- package/lib-es/test/bridgeDatasetTest.d.ts +4 -0
- package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -0
- package/lib-es/test/bridgeDatasetTest.js +171 -0
- package/lib-es/test/bridgeDatasetTest.js.map +1 -0
- package/lib-es/test/fixtures.d.ts +55 -0
- package/lib-es/test/fixtures.d.ts.map +1 -0
- package/lib-es/test/fixtures.js +182 -0
- package/lib-es/test/fixtures.js.map +1 -0
- package/lib-es/test/index.d.ts +4 -0
- package/lib-es/test/index.d.ts.map +1 -0
- package/lib-es/test/index.js +4 -0
- package/lib-es/test/index.js.map +1 -0
- package/lib-es/test/testUtils.d.ts +2 -0
- package/lib-es/test/testUtils.d.ts.map +1 -0
- package/lib-es/test/testUtils.js +4 -0
- package/lib-es/test/testUtils.js.map +1 -0
- package/lib-es/test/testUtils.test.d.ts +2 -0
- package/lib-es/test/testUtils.test.d.ts.map +1 -0
- package/lib-es/test/testUtils.test.js +9 -0
- package/lib-es/test/testUtils.test.js.map +1 -0
- package/lib-es/types/common.d.ts +55 -0
- package/lib-es/types/common.d.ts.map +1 -0
- package/lib-es/types/common.js +2 -0
- package/lib-es/types/common.js.map +1 -0
- package/lib-es/types/index.d.ts +3 -0
- package/lib-es/types/index.d.ts.map +1 -0
- package/lib-es/types/index.js +3 -0
- package/lib-es/types/index.js.map +1 -0
- package/lib-es/types/signer.d.ts +32 -0
- package/lib-es/types/signer.d.ts.map +1 -0
- package/lib-es/types/signer.js +2 -0
- package/lib-es/types/signer.js.map +1 -0
- package/package.json +143 -0
- package/src/api/index.integ.test.ts +62 -0
- package/src/api/index.ts +120 -0
- package/src/api/rosetta/index.ts +110 -0
- package/src/api/rosetta/types.ts +156 -0
- package/src/api/rosetta/utils.test.ts +100 -0
- package/src/api/rosetta/utils.ts +71 -0
- package/src/bridge/broadcast.test.ts +35 -0
- package/src/bridge/broadcast.ts +17 -0
- package/src/bridge/buildTransaction.test.ts +68 -0
- package/src/bridge/buildTransaction.ts +34 -0
- package/src/bridge/cli-transaction.ts +43 -0
- package/src/bridge/createTransaction.test.ts +21 -0
- package/src/bridge/createTransaction.ts +19 -0
- package/src/bridge/deviceTransactionConfig.ts +15 -0
- package/src/bridge/errors.ts +16 -0
- package/src/bridge/estimateMaxSpendable.ts +31 -0
- package/src/bridge/getEstimatedFees.ts +17 -0
- package/src/bridge/getTransactionStatus.test.ts +175 -0
- package/src/bridge/getTransactionStatus.ts +87 -0
- package/src/bridge/index.test.ts +39 -0
- package/src/bridge/index.ts +72 -0
- package/src/bridge/prepareTransaction.test.ts +43 -0
- package/src/bridge/prepareTransaction.ts +24 -0
- package/src/bridge/signOperation.test.ts +158 -0
- package/src/bridge/signOperation.ts +112 -0
- package/src/bridge/synchronisation.test.ts +184 -0
- package/src/bridge/synchronisation.ts +168 -0
- package/src/bridge/transaction.ts +69 -0
- package/src/common-logic/index.test.ts +225 -0
- package/src/common-logic/index.ts +97 -0
- package/src/config.ts +21 -0
- package/src/consts.ts +18 -0
- package/src/signer/getAddress.test.ts +131 -0
- package/src/signer/getAddress.ts +24 -0
- package/src/signer/index.ts +3 -0
- package/src/test/bot-deviceActions.ts +73 -0
- package/src/test/bot-specs.ts +130 -0
- package/src/test/bridgeDatasetTest.ts +180 -0
- package/src/test/fixtures.ts +226 -0
- package/src/test/index.ts +3 -0
- package/src/test/testUtils.test.ts +9 -0
- package/src/test/testUtils.ts +3 -0
- package/src/types/common.ts +70 -0
- package/src/types/index.ts +2 -0
- package/src/types/signer.ts +29 -0
- package/tsconfig.json +13 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.reEncodeRawSignature = exports.getTotalSpent = exports.getMaxAmount = exports.getAccountNumFromPath = exports.isValidMemo = exports.isValidAddress = void 0;
|
|
7
|
+
const bignumber_js_1 = require("bignumber.js");
|
|
8
|
+
const types_cryptoassets_1 = require("@ledgerhq/types-cryptoassets");
|
|
9
|
+
const consts_1 = require("../consts");
|
|
10
|
+
const bs58check_1 = __importDefault(require("bs58check"));
|
|
11
|
+
/*
|
|
12
|
+
* Validate a Mina address.
|
|
13
|
+
*/
|
|
14
|
+
function isValidAddress(address) {
|
|
15
|
+
try {
|
|
16
|
+
if (!address.toLowerCase().startsWith("b62")) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const decodedAddress = Buffer.from(bs58check_1.default.decode(address)).toString("hex");
|
|
20
|
+
return !!decodedAddress && decodedAddress.length === consts_1.MINA_DECODED_ADDRESS_LENGTH;
|
|
21
|
+
}
|
|
22
|
+
catch (ex) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.isValidAddress = isValidAddress;
|
|
27
|
+
const isValidMemo = (memo) => {
|
|
28
|
+
return memo.length <= consts_1.MAX_MEMO_LENGTH;
|
|
29
|
+
};
|
|
30
|
+
exports.isValidMemo = isValidMemo;
|
|
31
|
+
// Get the account number from the path
|
|
32
|
+
const getAccountNumFromPath = (path) => {
|
|
33
|
+
const parts = path.split("'/");
|
|
34
|
+
if (parts.length === 3) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (parts[1] !== `${types_cryptoassets_1.CoinType.MINA}`) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const acc = parseInt(parts[2], 10);
|
|
42
|
+
if (acc >= 0) {
|
|
43
|
+
return acc;
|
|
44
|
+
}
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
exports.getAccountNumFromPath = getAccountNumFromPath;
|
|
52
|
+
/*
|
|
53
|
+
* Get the max amount that can be spent, taking into account tx type and pending operations.
|
|
54
|
+
*/
|
|
55
|
+
const getMaxAmount = (a, _t, fees) => {
|
|
56
|
+
let maxAmount;
|
|
57
|
+
let pendingDefaultAmount = new bignumber_js_1.BigNumber(0);
|
|
58
|
+
a.pendingOperations.forEach(({ value }) => {
|
|
59
|
+
pendingDefaultAmount = pendingDefaultAmount.plus(value);
|
|
60
|
+
});
|
|
61
|
+
maxAmount = a.spendableBalance.minus(pendingDefaultAmount);
|
|
62
|
+
if (fees) {
|
|
63
|
+
maxAmount = maxAmount.minus(fees);
|
|
64
|
+
}
|
|
65
|
+
if (maxAmount === undefined || maxAmount.lt(0)) {
|
|
66
|
+
return new bignumber_js_1.BigNumber(0);
|
|
67
|
+
}
|
|
68
|
+
return maxAmount;
|
|
69
|
+
};
|
|
70
|
+
exports.getMaxAmount = getMaxAmount;
|
|
71
|
+
const getTotalSpent = (a, t, fees) => {
|
|
72
|
+
if (t.useAllAmount) {
|
|
73
|
+
return a.spendableBalance;
|
|
74
|
+
}
|
|
75
|
+
return new bignumber_js_1.BigNumber(t.amount).plus(fees);
|
|
76
|
+
};
|
|
77
|
+
exports.getTotalSpent = getTotalSpent;
|
|
78
|
+
// reEncodeRawSignature takes a raw signature in the form of a 128-character hex string and returns a re-encoded version of it.
|
|
79
|
+
function reEncodeRawSignature(rawSignature) {
|
|
80
|
+
function shuffleBytes(hex) {
|
|
81
|
+
const bytes = hex.match(/.{2}/g);
|
|
82
|
+
if (!bytes) {
|
|
83
|
+
throw "Invalid hex input";
|
|
84
|
+
}
|
|
85
|
+
bytes.reverse();
|
|
86
|
+
return bytes.join("");
|
|
87
|
+
}
|
|
88
|
+
if (rawSignature.length !== 128) {
|
|
89
|
+
throw "Invalid raw signature input";
|
|
90
|
+
}
|
|
91
|
+
const field = rawSignature.substring(0, 64);
|
|
92
|
+
const scalar = rawSignature.substring(64);
|
|
93
|
+
return shuffleBytes(field) + shuffleBytes(scalar);
|
|
94
|
+
}
|
|
95
|
+
exports.reEncodeRawSignature = reEncodeRawSignature;
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common-logic/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/common-logic/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const _1 = require(".");
|
|
4
|
+
const bignumber_js_1 = require("bignumber.js");
|
|
5
|
+
const consts_1 = require("../consts");
|
|
6
|
+
// Mock functions to create test objects
|
|
7
|
+
function createMockAccount(overrides = {}) {
|
|
8
|
+
return {
|
|
9
|
+
spendableBalance: new bignumber_js_1.BigNumber(1000),
|
|
10
|
+
pendingOperations: [],
|
|
11
|
+
...overrides,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function createMockTransaction(overrides = {}) {
|
|
15
|
+
return {
|
|
16
|
+
family: "mina",
|
|
17
|
+
amount: new bignumber_js_1.BigNumber(0),
|
|
18
|
+
recipient: "B62qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc",
|
|
19
|
+
...overrides,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
describe("getAccountNumFromPath", () => {
|
|
23
|
+
it("should return undefined for invalid account number", () => {
|
|
24
|
+
const account = (0, _1.getAccountNumFromPath)("44'/616'/4'/0/0");
|
|
25
|
+
expect(account).toBe(undefined);
|
|
26
|
+
});
|
|
27
|
+
it("should return undefined for unsupported path", () => {
|
|
28
|
+
const account = (0, _1.getAccountNumFromPath)("44'/616'/4/0/0");
|
|
29
|
+
expect(account).toBe(undefined);
|
|
30
|
+
});
|
|
31
|
+
it("should return the account number", () => {
|
|
32
|
+
const account = (0, _1.getAccountNumFromPath)("44'/12586'/4'/0/0");
|
|
33
|
+
expect(account).toBe(4);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe("testingAddress", () => {
|
|
37
|
+
const validAddresses = [
|
|
38
|
+
"B62qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc",
|
|
39
|
+
"B62qr5cXFjdnZXYxP5dEwRY7wENxcod4Q2oLxUDiq1QrBXZZyxMH8q4",
|
|
40
|
+
"B62qqmRToRiXZjyLLMJoGnQFXXZuZWdqaNYr43xEDDQzkXMHLouCMZp",
|
|
41
|
+
"B62qnixP59E4vJytpDWZ5YQPrnmqb7YNwhVWiuSAkxbYdX5RauHWwcm",
|
|
42
|
+
"B62qmfBiJx88gM9opov4MDxmDVKMutQsBQ1aGt7TrQYyGQx66fRFxvC",
|
|
43
|
+
"B62qosg21UpwpfPFaxTyirdfUVDHe2Ynsyv1QydE4z34zbLuBZ92ALM",
|
|
44
|
+
"B62qkWUvsVEnXmd4poHbkKujHNnjxkDcZtrLxN1FTa8pp3GkfHMB1gv",
|
|
45
|
+
"B62qoiK7DJurVUUJx1dmJGULdNUmX5bjdiYvoWXEXGugS2Cx3YDsHhy",
|
|
46
|
+
"B62qn1KptFUxxu8aRS52NGQ3GWzn5h8v7U9k571r4LCs5obpoZyd81e",
|
|
47
|
+
"B62qis2tX1rveddCeJeBAZJnXcCwWPp1x9ScZ3iMCxbV29gRbxWo7qi",
|
|
48
|
+
"B62qpBKEDTnS4efjBmou7iztx5x152JEmc29XMR1Y3FVCpnmfKGX4R4",
|
|
49
|
+
"B62qro5bGnk7eCNMA1S5QWmzn5sCcRWckbw83GGaqN3HM2QzP9zYS83",
|
|
50
|
+
"B62qospDjUj43x2yMKiNehojWWRUsE1wpdUDVpfxH8V3n5Y1QgJKFfw",
|
|
51
|
+
"B62qrmYwToypQv8v9cjxJdyhAxKihrqtTtEkYC4Y3u412KCPLGSD93V",
|
|
52
|
+
"B62qj3rpYkGM1T3VN6JDAJs9NccHCRQDYMcQ6UCBc81ff5HXTDjU44d",
|
|
53
|
+
"B62qp2kks3r14P8GWkR2ieT18JobwnmrBFGEoqy3dAReiyM8aDp4be7",
|
|
54
|
+
"B62qpW1SYPcp7TcHJYL6egnN9qzvNtQL5XGyiM8S6UsHvxCYzhhFPjz",
|
|
55
|
+
"B62qospDjUj43x2yMKiNehojWWRUsE1wpdUDVpfxH8V3n5Y1QgJKFfw",
|
|
56
|
+
"B62qj5L8U8A8gexpHLWHxBdfjKuWb8HMguVPecQ5FGqgZAwBAKHvhEy",
|
|
57
|
+
"B62qnt5WShcbVVnVqQqWjkyMJdxMwLq4QbRbgMjoi5nmvQw7dZLRtpx",
|
|
58
|
+
"B62qrGUxqRWn9A8PEJschgLZuS5S1GJiairh65mgTapaK58nkTKHUs8",
|
|
59
|
+
"B62qkS7hmMkzmNDjeCUKyAMZSw1c98MxszZPA7WnvBuh7Pq66ztiwdt",
|
|
60
|
+
"B62qjGWerE9MPNk7E2jEJe9Ex5GxkNR9JCc5mhFeJdGFaNDHnMdGQJQ",
|
|
61
|
+
"B62qpp2DLkLxwFn1QZdkEWgiRFMYnkgh6cj5AJC5pqCYiALh8BmiYJ8",
|
|
62
|
+
"B62qqALaAoEnaJPSNmQaDkUwFGiKwZo4zRK4Ay5eSMxAMVhNxwr2KeM",
|
|
63
|
+
"B62qospDjUj43x2yMKiNehojWWRUsE1wpdUDVpfxH8V3n5Y1QgJKFfw",
|
|
64
|
+
"B62qr3epzHUrxrdminUN4Hzuinuc7aBDAFSR94mPmmxVsbuFpUvDDq6",
|
|
65
|
+
"B62qrJurUKtcqdhQu1XtJJfSH7rR1xrEtSWPQQcFwBJBwVcsFSyVSM3",
|
|
66
|
+
];
|
|
67
|
+
const invalidAddresses = [
|
|
68
|
+
"", // Empty address
|
|
69
|
+
null, // Null address
|
|
70
|
+
undefined, // Undefined address
|
|
71
|
+
"123", // Too short
|
|
72
|
+
"B61qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc", // Incorrect prefix
|
|
73
|
+
"B62q!@#$%^&*()_+{}|:<>?`~", // Invalid characters
|
|
74
|
+
"B62qj5L8U8A8gexpHLWHxBdfjKuWb8HMguVPecQ5FGqgZAwBAKHvhE", // Too short
|
|
75
|
+
"B62qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq", // Too long
|
|
76
|
+
" B62qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc", // Leading whitespace
|
|
77
|
+
"B62qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc ", // Trailing whitespace
|
|
78
|
+
"B62qiVhtBtqakq8sNTHdC TXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc", // Internal whitespace
|
|
79
|
+
"C62qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc", // Incorrect prefix
|
|
80
|
+
];
|
|
81
|
+
it("should return true for valid address", () => {
|
|
82
|
+
for (const address of validAddresses) {
|
|
83
|
+
expect((0, _1.isValidAddress)(address)).toBe(true);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
it("should return false for invalid address", () => {
|
|
87
|
+
for (const address of invalidAddresses) {
|
|
88
|
+
expect((0, _1.isValidAddress)(address)).toBe(false);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe("isValidMemo", () => {
|
|
93
|
+
it("should return true for valid memo", () => {
|
|
94
|
+
expect((0, _1.isValidMemo)("")).toBe(true);
|
|
95
|
+
expect((0, _1.isValidMemo)("Valid memo")).toBe(true);
|
|
96
|
+
expect((0, _1.isValidMemo)("A".repeat(consts_1.MAX_MEMO_LENGTH))).toBe(true);
|
|
97
|
+
});
|
|
98
|
+
it("should return false for memo exceeding max length", () => {
|
|
99
|
+
expect((0, _1.isValidMemo)("A".repeat(consts_1.MAX_MEMO_LENGTH + 1))).toBe(false);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
describe("getMaxAmount", () => {
|
|
103
|
+
it("should calculate correct max amount with no fees", () => {
|
|
104
|
+
const account = createMockAccount({
|
|
105
|
+
spendableBalance: new bignumber_js_1.BigNumber(1000),
|
|
106
|
+
pendingOperations: [],
|
|
107
|
+
});
|
|
108
|
+
const transaction = createMockTransaction();
|
|
109
|
+
expect((0, _1.getMaxAmount)(account, transaction).toNumber()).toBe(1000);
|
|
110
|
+
});
|
|
111
|
+
it("should calculate correct max amount with fees", () => {
|
|
112
|
+
const account = createMockAccount({
|
|
113
|
+
spendableBalance: new bignumber_js_1.BigNumber(1000),
|
|
114
|
+
pendingOperations: [],
|
|
115
|
+
});
|
|
116
|
+
const transaction = createMockTransaction();
|
|
117
|
+
const fees = new bignumber_js_1.BigNumber(10);
|
|
118
|
+
expect((0, _1.getMaxAmount)(account, transaction, fees).toNumber()).toBe(990);
|
|
119
|
+
});
|
|
120
|
+
it("should subtract pending operations from max amount", () => {
|
|
121
|
+
const account = createMockAccount({
|
|
122
|
+
spendableBalance: new bignumber_js_1.BigNumber(1000),
|
|
123
|
+
pendingOperations: [
|
|
124
|
+
{ value: new bignumber_js_1.BigNumber(100) },
|
|
125
|
+
{ value: new bignumber_js_1.BigNumber(200) },
|
|
126
|
+
],
|
|
127
|
+
});
|
|
128
|
+
const transaction = createMockTransaction();
|
|
129
|
+
expect((0, _1.getMaxAmount)(account, transaction).toNumber()).toBe(700);
|
|
130
|
+
});
|
|
131
|
+
it("should return 0 when max amount would be negative", () => {
|
|
132
|
+
const account = createMockAccount({
|
|
133
|
+
spendableBalance: new bignumber_js_1.BigNumber(100),
|
|
134
|
+
pendingOperations: [{ value: new bignumber_js_1.BigNumber(200) }],
|
|
135
|
+
});
|
|
136
|
+
const transaction = createMockTransaction();
|
|
137
|
+
expect((0, _1.getMaxAmount)(account, transaction).toNumber()).toBe(0);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
describe("getTotalSpent", () => {
|
|
141
|
+
it("should return spendable balance when useAllAmount is true", () => {
|
|
142
|
+
const account = createMockAccount({
|
|
143
|
+
spendableBalance: new bignumber_js_1.BigNumber(1000),
|
|
144
|
+
});
|
|
145
|
+
const transaction = createMockTransaction({
|
|
146
|
+
useAllAmount: true,
|
|
147
|
+
amount: new bignumber_js_1.BigNumber(500),
|
|
148
|
+
});
|
|
149
|
+
const fees = new bignumber_js_1.BigNumber(10);
|
|
150
|
+
expect((0, _1.getTotalSpent)(account, transaction, fees).toNumber()).toBe(1000);
|
|
151
|
+
});
|
|
152
|
+
it("should return amount plus fees when useAllAmount is false", () => {
|
|
153
|
+
const account = createMockAccount({
|
|
154
|
+
spendableBalance: new bignumber_js_1.BigNumber(1000),
|
|
155
|
+
});
|
|
156
|
+
const transaction = createMockTransaction({
|
|
157
|
+
useAllAmount: false,
|
|
158
|
+
amount: new bignumber_js_1.BigNumber(500),
|
|
159
|
+
});
|
|
160
|
+
const fees = new bignumber_js_1.BigNumber(10);
|
|
161
|
+
expect((0, _1.getTotalSpent)(account, transaction, fees).toNumber()).toBe(510);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe("reEncodeRawSignature", () => {
|
|
165
|
+
it("should correctly re-encode a valid signature", () => {
|
|
166
|
+
const rawSignature = "a".repeat(64) + "b".repeat(64);
|
|
167
|
+
const result = (0, _1.reEncodeRawSignature)(rawSignature);
|
|
168
|
+
// Check that the result has the correct format (reverse bytes)
|
|
169
|
+
expect(result.length).toBe(128);
|
|
170
|
+
// Check field part
|
|
171
|
+
const fieldPart = result.substring(0, 64);
|
|
172
|
+
expect(fieldPart).toBe("a".repeat(64).match(/.{2}/g)?.reverse().join(""));
|
|
173
|
+
// Check scalar part
|
|
174
|
+
const scalarPart = result.substring(64);
|
|
175
|
+
expect(scalarPart).toBe("b".repeat(64).match(/.{2}/g)?.reverse().join(""));
|
|
176
|
+
});
|
|
177
|
+
it("should throw an error for invalid signature length", () => {
|
|
178
|
+
expect(() => (0, _1.reEncodeRawSignature)("too_short")).toThrow("Invalid raw signature input");
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/common-logic/index.test.ts"],"names":[],"mappings":"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"}
|
package/lib/config.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CurrencyConfig } from "@ledgerhq/coin-framework/config";
|
|
2
|
+
export type MinaCoinConfig = () => CurrencyConfig & {
|
|
3
|
+
infra: {
|
|
4
|
+
API_MINA_ROSETTA_NODE: string;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
export declare const setCoinConfig: (config: MinaCoinConfig) => void;
|
|
8
|
+
export declare const getCoinConfig: () => ReturnType<MinaCoinConfig>;
|
|
9
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,MAAM,cAAc,GAAG,MAAM,cAAc,GAAG;IAClD,KAAK,EAAE;QACL,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,CAAC;AAIF,eAAO,MAAM,aAAa,WAAY,cAAc,KAAG,IAEtD,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,WAAW,cAAc,CAMzD,CAAC"}
|
package/lib/config.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCoinConfig = exports.setCoinConfig = void 0;
|
|
4
|
+
let coinConfig;
|
|
5
|
+
const setCoinConfig = (config) => {
|
|
6
|
+
coinConfig = config;
|
|
7
|
+
};
|
|
8
|
+
exports.setCoinConfig = setCoinConfig;
|
|
9
|
+
const getCoinConfig = () => {
|
|
10
|
+
if (!coinConfig?.()) {
|
|
11
|
+
throw new Error("Mina module config not set");
|
|
12
|
+
}
|
|
13
|
+
return coinConfig();
|
|
14
|
+
};
|
|
15
|
+
exports.getCoinConfig = getCoinConfig;
|
|
16
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAQA,IAAI,UAAsC,CAAC;AAEpC,MAAM,aAAa,GAAG,CAAC,MAAsB,EAAQ,EAAE;IAC5D,UAAU,GAAG,MAAM,CAAC;AACtB,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEK,MAAM,aAAa,GAAG,GAA+B,EAAE;IAC5D,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB"}
|
package/lib/consts.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const MAINNET_NETWORK_IDENTIFIER: {
|
|
2
|
+
network_identifier: {
|
|
3
|
+
blockchain: string;
|
|
4
|
+
network: string;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
export declare const MINA_MAINNET_NETWORK_ID = 1;
|
|
8
|
+
export declare const MINA_PAYMENT_TYPE_ID = 0;
|
|
9
|
+
export declare const MINA_TOKEN_ID = "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf";
|
|
10
|
+
export declare const MINA_DECIMALS = 9;
|
|
11
|
+
export declare const MINA_SYMBOL = "MINA";
|
|
12
|
+
export declare const MINA_CURVE_TYPE = "pallas";
|
|
13
|
+
export declare const MAX_MEMO_LENGTH = 32;
|
|
14
|
+
export declare const MINA_DECODED_ADDRESS_LENGTH = 72;
|
|
15
|
+
export declare const MAX_TRANSACTIONS_PER_PAGE = 100;
|
|
16
|
+
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B;;;;;CAKtC,CAAC;AAEF,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,aAAa,uDAAuD,CAAC;AAClF,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,eAAO,MAAM,eAAe,WAAW,CAAC;AAExC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,eAAO,MAAM,yBAAyB,MAAM,CAAC"}
|
package/lib/consts.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_TRANSACTIONS_PER_PAGE = exports.MINA_DECODED_ADDRESS_LENGTH = exports.MAX_MEMO_LENGTH = exports.MINA_CURVE_TYPE = exports.MINA_SYMBOL = exports.MINA_DECIMALS = exports.MINA_TOKEN_ID = exports.MINA_PAYMENT_TYPE_ID = exports.MINA_MAINNET_NETWORK_ID = exports.MAINNET_NETWORK_IDENTIFIER = void 0;
|
|
4
|
+
exports.MAINNET_NETWORK_IDENTIFIER = {
|
|
5
|
+
network_identifier: {
|
|
6
|
+
blockchain: "mina",
|
|
7
|
+
network: "mainnet",
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
exports.MINA_MAINNET_NETWORK_ID = 1;
|
|
11
|
+
exports.MINA_PAYMENT_TYPE_ID = 0;
|
|
12
|
+
exports.MINA_TOKEN_ID = "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf";
|
|
13
|
+
exports.MINA_DECIMALS = 9;
|
|
14
|
+
exports.MINA_SYMBOL = "MINA";
|
|
15
|
+
exports.MINA_CURVE_TYPE = "pallas";
|
|
16
|
+
exports.MAX_MEMO_LENGTH = 32;
|
|
17
|
+
exports.MINA_DECODED_ADDRESS_LENGTH = 72;
|
|
18
|
+
exports.MAX_TRANSACTIONS_PER_PAGE = 100;
|
|
19
|
+
//# sourceMappingURL=consts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GAAG;IACxC,kBAAkB,EAAE;QAClB,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,SAAS;KACnB;CACF,CAAC;AAEW,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAC5B,QAAA,oBAAoB,GAAG,CAAC,CAAC;AACzB,QAAA,aAAa,GAAG,oDAAoD,CAAC;AACrE,QAAA,aAAa,GAAG,CAAC,CAAC;AAClB,QAAA,WAAW,GAAG,MAAM,CAAC;AACrB,QAAA,eAAe,GAAG,QAAQ,CAAC;AAE3B,QAAA,eAAe,GAAG,EAAE,CAAC;AACrB,QAAA,2BAA2B,GAAG,EAAE,CAAC;AAEjC,QAAA,yBAAyB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GetAddressFn } from "@ledgerhq/coin-framework/bridge/getAddressWrapper";
|
|
2
|
+
import { SignerContext } from "@ledgerhq/coin-framework/signer";
|
|
3
|
+
import { MinaSigner } from "../types/signer";
|
|
4
|
+
declare const resolver: (signerContext: SignerContext<MinaSigner>) => GetAddressFn;
|
|
5
|
+
export default resolver;
|
|
6
|
+
//# sourceMappingURL=getAddress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAddress.d.ts","sourceRoot":"","sources":["../../src/signer/getAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAsB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIjE,QAAA,MAAM,QAAQ,kBAAmB,cAAc,UAAU,CAAC,KAAG,YAc5D,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const common_logic_1 = require("../common-logic");
|
|
7
|
+
const invariant_1 = __importDefault(require("invariant"));
|
|
8
|
+
const resolver = (signerContext) => {
|
|
9
|
+
return async (deviceId, { path, verify }) => {
|
|
10
|
+
const account = (0, common_logic_1.getAccountNumFromPath)(path);
|
|
11
|
+
(0, invariant_1.default)(account !== undefined, "Invalid account path, supported: 44'/12586'/<account>'/0/0");
|
|
12
|
+
const r = (await signerContext(deviceId, signer => signer.getAddress(account, verify || false)));
|
|
13
|
+
(0, invariant_1.default)(r.publicKey, "[mina] getAddress: expected publicKey to be defined");
|
|
14
|
+
return {
|
|
15
|
+
address: r.publicKey,
|
|
16
|
+
publicKey: r.publicKey,
|
|
17
|
+
path,
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
exports.default = resolver;
|
|
22
|
+
//# sourceMappingURL=getAddress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAddress.js","sourceRoot":"","sources":["../../src/signer/getAddress.ts"],"names":[],"mappings":";;;;;AAIA,kDAAwD;AACxD,0DAAkC;AAElC,MAAM,QAAQ,GAAG,CAAC,aAAwC,EAAgB,EAAE;IAC1E,OAAO,KAAK,EAAE,QAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAqB,EAAE,EAAE;QACrE,MAAM,OAAO,GAAG,IAAA,oCAAqB,EAAC,IAAI,CAAC,CAAC;QAC5C,IAAA,mBAAS,EAAC,OAAO,KAAK,SAAS,EAAE,4DAA4D,CAAC,CAAC;QAC/F,MAAM,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAChD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,CAC5C,CAAuB,CAAC;QACzB,IAAA,mBAAS,EAAC,CAAC,CAAC,SAAS,EAAE,qDAAqD,CAAC,CAAC;QAC9E,OAAO;YACL,OAAO,EAAE,CAAC,CAAC,SAAS;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI;SACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAddress.test.d.ts","sourceRoot":"","sources":["../../src/signer/getAddress.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const getAddress_1 = __importDefault(require("./getAddress"));
|
|
7
|
+
const currencies_1 = require("@ledgerhq/cryptoassets/lib/currencies");
|
|
8
|
+
describe("Mina getAddress resolver", () => {
|
|
9
|
+
// Mock the signer context
|
|
10
|
+
const mockSigner = {
|
|
11
|
+
getAddress: jest.fn(),
|
|
12
|
+
signTransaction: jest.fn(),
|
|
13
|
+
};
|
|
14
|
+
const commonOptions = {
|
|
15
|
+
currency: (0, currencies_1.getCryptoCurrencyById)("mina"),
|
|
16
|
+
derivationMode: "minabip44",
|
|
17
|
+
};
|
|
18
|
+
const mockSignerContext = jest.fn(async (deviceId, callback) => {
|
|
19
|
+
return callback(mockSigner);
|
|
20
|
+
});
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
jest.clearAllMocks();
|
|
23
|
+
});
|
|
24
|
+
it("should call the signer with the correct account number", async () => {
|
|
25
|
+
const options = {
|
|
26
|
+
...commonOptions,
|
|
27
|
+
path: "44'/12586'/0'/0/0",
|
|
28
|
+
verify: false,
|
|
29
|
+
};
|
|
30
|
+
// Mock response from signer
|
|
31
|
+
mockSigner.getAddress.mockResolvedValue({
|
|
32
|
+
publicKey: "testPublicKey123",
|
|
33
|
+
});
|
|
34
|
+
const getAddress = (0, getAddress_1.default)(mockSignerContext);
|
|
35
|
+
await getAddress("device1", options);
|
|
36
|
+
expect(mockSigner.getAddress).toHaveBeenCalledWith(0, false);
|
|
37
|
+
});
|
|
38
|
+
it("should pass the verify flag correctly", async () => {
|
|
39
|
+
const options = {
|
|
40
|
+
path: "44'/12586'/2'/0/0",
|
|
41
|
+
verify: true,
|
|
42
|
+
...commonOptions,
|
|
43
|
+
};
|
|
44
|
+
// Mock response from signer
|
|
45
|
+
mockSigner.getAddress.mockResolvedValue({
|
|
46
|
+
publicKey: "testPublicKey456",
|
|
47
|
+
});
|
|
48
|
+
const getAddress = (0, getAddress_1.default)(mockSignerContext);
|
|
49
|
+
await getAddress("device1", options);
|
|
50
|
+
expect(mockSigner.getAddress).toHaveBeenCalledWith(2, true);
|
|
51
|
+
});
|
|
52
|
+
it("should default to verify=false when not provided", async () => {
|
|
53
|
+
const options = {
|
|
54
|
+
path: "44'/12586'/1'/0/0",
|
|
55
|
+
...commonOptions,
|
|
56
|
+
};
|
|
57
|
+
// Mock response from signer
|
|
58
|
+
mockSigner.getAddress.mockResolvedValue({
|
|
59
|
+
publicKey: "testPublicKey789",
|
|
60
|
+
});
|
|
61
|
+
const getAddress = (0, getAddress_1.default)(mockSignerContext);
|
|
62
|
+
await getAddress("device1", options);
|
|
63
|
+
expect(mockSigner.getAddress).toHaveBeenCalledWith(1, false);
|
|
64
|
+
});
|
|
65
|
+
it("should return the correct address format", async () => {
|
|
66
|
+
const options = {
|
|
67
|
+
path: "44'/12586'/3'/0/0",
|
|
68
|
+
...commonOptions,
|
|
69
|
+
};
|
|
70
|
+
const expectedPublicKey = "minaPublicKeyABC123";
|
|
71
|
+
// Mock response from signer
|
|
72
|
+
mockSigner.getAddress.mockResolvedValue({
|
|
73
|
+
publicKey: expectedPublicKey,
|
|
74
|
+
});
|
|
75
|
+
const getAddress = (0, getAddress_1.default)(mockSignerContext);
|
|
76
|
+
const result = await getAddress("device1", options);
|
|
77
|
+
expect(result).toEqual({
|
|
78
|
+
address: expectedPublicKey,
|
|
79
|
+
publicKey: expectedPublicKey,
|
|
80
|
+
path: options.path,
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
it("should throw an error for invalid path", async () => {
|
|
84
|
+
const options = {
|
|
85
|
+
path: "44'/789'/0'/0/0", // Invalid coin type for Mina
|
|
86
|
+
verify: false,
|
|
87
|
+
...commonOptions,
|
|
88
|
+
};
|
|
89
|
+
const getAddress = (0, getAddress_1.default)(mockSignerContext);
|
|
90
|
+
await expect(getAddress("device1", options)).rejects.toThrow();
|
|
91
|
+
});
|
|
92
|
+
it("should throw an error when publicKey is undefined", async () => {
|
|
93
|
+
const options = {
|
|
94
|
+
path: "44'/12586'/0'/0/0",
|
|
95
|
+
verify: false,
|
|
96
|
+
...commonOptions,
|
|
97
|
+
};
|
|
98
|
+
// Mock response from signer with undefined publicKey
|
|
99
|
+
mockSigner.getAddress.mockResolvedValue({
|
|
100
|
+
publicKey: undefined,
|
|
101
|
+
});
|
|
102
|
+
const getAddress = (0, getAddress_1.default)(mockSignerContext);
|
|
103
|
+
await expect(getAddress("device1", options)).rejects.toThrow("[mina] getAddress: expected publicKey to be defined");
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=getAddress.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAddress.test.js","sourceRoot":"","sources":["../../src/signer/getAddress.test.ts"],"names":[],"mappings":";;;;;AAAA,8DAAoC;AAIpC,sEAA8E;AAG9E,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,0BAA0B;IAC1B,MAAM,UAAU,GAAe;QAC7B,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;QACrB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;KAC3B,CAAC;IACF,MAAM,aAAa,GAAG;QACpB,QAAQ,EAAE,IAAA,kCAAqB,EAAC,MAAM,CAAC;QACvC,cAAc,EAAE,WAA6B;KAC9C,CAAC;IAEF,MAAM,iBAAiB,GAA8B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;QACxF,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,OAAO,GAAsB;YACjC,GAAG,aAAa;YAChB,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,4BAA4B;QAC3B,UAAU,CAAC,UAAwB,CAAC,iBAAiB,CAAC;YACrD,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAA,oBAAQ,EAAC,iBAAiB,CAAC,CAAC;QAC/C,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAErC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,OAAO,GAAsB;YACjC,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,IAAI;YACZ,GAAG,aAAa;SACjB,CAAC;QAEF,4BAA4B;QAC3B,UAAU,CAAC,UAAwB,CAAC,iBAAiB,CAAC;YACrD,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAA,oBAAQ,EAAC,iBAAiB,CAAC,CAAC;QAC/C,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAErC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,OAAO,GAAsB;YACjC,IAAI,EAAE,mBAAmB;YACzB,GAAG,aAAa;SACjB,CAAC;QAEF,4BAA4B;QAC3B,UAAU,CAAC,UAAwB,CAAC,iBAAiB,CAAC;YACrD,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAA,oBAAQ,EAAC,iBAAiB,CAAC,CAAC;QAC/C,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAErC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,OAAO,GAAsB;YACjC,IAAI,EAAE,mBAAmB;YACzB,GAAG,aAAa;SACjB,CAAC;QAEF,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;QAEhD,4BAA4B;QAC3B,UAAU,CAAC,UAAwB,CAAC,iBAAiB,CAAC;YACrD,SAAS,EAAE,iBAAiB;SAC7B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAA,oBAAQ,EAAC,iBAAiB,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEpD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,OAAO,EAAE,iBAAiB;YAC1B,SAAS,EAAE,iBAAiB;YAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,OAAO,GAAsB;YACjC,IAAI,EAAE,iBAAiB,EAAE,6BAA6B;YACtD,MAAM,EAAE,KAAK;YACb,GAAG,aAAa;SACjB,CAAC;QAEF,MAAM,UAAU,GAAG,IAAA,oBAAQ,EAAC,iBAAiB,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,OAAO,GAAsB;YACjC,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,KAAK;YACb,GAAG,aAAa;SACjB,CAAC;QAEF,qDAAqD;QACpD,UAAU,CAAC,UAAwB,CAAC,iBAAiB,CAAC;YACrD,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAA,oBAAQ,EAAC,iBAAiB,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC1D,qDAAqD,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,cAAc,CAAC;AAEpC,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const getAddress_1 = __importDefault(require("./getAddress"));
|
|
7
|
+
exports.default = getAddress_1.default;
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":";;;;;AAAA,8DAAoC;AAEpC,kBAAe,oBAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bot-deviceActions.d.ts","sourceRoot":"","sources":["../../src/test/bot-deviceActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,eAAO,MAAM,iBAAiB,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAmE1E,CAAC"}
|