@ledgerhq/coin-framework 0.3.6 → 0.3.7-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 +8 -46
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +27 -1
- package/lib/account/accountId.d.ts +16 -0
- package/lib/account/accountId.d.ts.map +1 -0
- package/lib/account/accountId.js +67 -0
- package/lib/account/accountId.js.map +1 -0
- package/lib/account/accountName.d.ts +14 -0
- package/lib/account/accountName.d.ts.map +1 -0
- package/lib/account/accountName.js +14 -0
- package/lib/account/accountName.js.map +1 -0
- package/lib/account/balanceHistoryCache.d.ts +28 -0
- package/lib/account/balanceHistoryCache.d.ts.map +1 -0
- package/lib/account/balanceHistoryCache.js +132 -0
- package/lib/account/balanceHistoryCache.js.map +1 -0
- package/lib/account/balanceHistoryCache.test.d.ts +2 -0
- package/lib/account/balanceHistoryCache.test.d.ts.map +1 -0
- package/lib/account/balanceHistoryCache.test.js +21 -0
- package/lib/account/balanceHistoryCache.test.js.map +1 -0
- package/lib/account/groupOperations.d.ts +17 -0
- package/lib/account/groupOperations.d.ts.map +1 -0
- package/lib/account/groupOperations.js +122 -0
- package/lib/account/groupOperations.js.map +1 -0
- package/lib/account/helpers.d.ts +46 -0
- package/lib/account/helpers.d.ts.map +1 -0
- package/lib/account/helpers.js +296 -0
- package/lib/account/helpers.js.map +1 -0
- package/lib/account/helpers.test.d.ts +2 -0
- package/lib/account/helpers.test.d.ts.map +1 -0
- package/lib/account/helpers.test.js +409 -0
- package/lib/account/helpers.test.js.map +1 -0
- package/lib/account/index.d.ts +10 -0
- package/lib/account/index.d.ts.map +1 -0
- package/lib/account/index.js +26 -0
- package/lib/account/index.js.map +1 -0
- package/lib/account/ordering.d.ts +10 -0
- package/lib/account/ordering.d.ts.map +1 -0
- package/lib/account/ordering.js +80 -0
- package/lib/account/ordering.js.map +1 -0
- package/lib/account/pending.d.ts +4 -0
- package/lib/account/pending.d.ts.map +1 -0
- package/lib/account/pending.js +53 -0
- package/lib/account/pending.js.map +1 -0
- package/lib/account/serialization.d.ts +6 -0
- package/lib/account/serialization.d.ts.map +1 -0
- package/lib/account/serialization.js +108 -0
- package/lib/account/serialization.js.map +1 -0
- package/lib/account/support.d.ts +7 -0
- package/lib/account/support.d.ts.map +1 -0
- package/lib/account/support.js +45 -0
- package/lib/account/support.js.map +1 -0
- package/lib/account.test.d.ts +2 -0
- package/lib/account.test.d.ts.map +1 -0
- package/lib/account.test.js +180 -0
- package/lib/account.test.js.map +1 -0
- package/lib/bot/bot-test-context.d.ts +3 -0
- package/lib/bot/bot-test-context.d.ts.map +1 -0
- package/lib/bot/bot-test-context.js +26 -0
- package/lib/bot/bot-test-context.js.map +1 -0
- package/lib/bot/bot-test-context.test.d.ts +2 -0
- package/lib/bot/bot-test-context.test.d.ts.map +1 -0
- package/lib/bot/bot-test-context.test.js +41 -0
- package/lib/bot/bot-test-context.test.js.map +1 -0
- package/lib/bot/formatters.d.ts +2 -0
- package/lib/bot/formatters.d.ts.map +1 -0
- package/lib/bot/formatters.js +30 -0
- package/lib/bot/formatters.js.map +1 -0
- package/lib/bot/specs.d.ts +50 -0
- package/lib/bot/specs.d.ts.map +1 -0
- package/lib/bot/specs.js +181 -0
- package/lib/bot/specs.js.map +1 -0
- package/lib/bot/types.d.ts +177 -0
- package/lib/bot/types.d.ts.map +1 -0
- package/lib/bot/types.js +3 -0
- package/lib/bot/types.js.map +1 -0
- package/lib/bridge/getAddressWrapper.d.ts +5 -0
- package/lib/bridge/getAddressWrapper.d.ts.map +1 -0
- package/lib/bridge/getAddressWrapper.js +36 -0
- package/lib/bridge/getAddressWrapper.js.map +1 -0
- package/lib/bridge/jsHelpers.d.ts +59 -0
- package/lib/bridge/jsHelpers.d.ts.map +1 -0
- package/lib/bridge/jsHelpers.js +390 -0
- package/lib/bridge/jsHelpers.js.map +1 -0
- package/lib/cache.d.ts +11 -0
- package/lib/cache.d.ts.map +1 -0
- package/lib/cache.js +21 -0
- package/lib/cache.js.map +1 -0
- package/lib/currencies/BigNumberToLocaleString.d.ts +8 -0
- package/lib/currencies/BigNumberToLocaleString.d.ts.map +1 -0
- package/lib/currencies/BigNumberToLocaleString.js +62 -0
- package/lib/currencies/BigNumberToLocaleString.js.map +1 -0
- package/lib/currencies/BigNumberToLocaleString.test.d.ts +2 -0
- package/lib/currencies/BigNumberToLocaleString.test.d.ts.map +1 -0
- package/lib/currencies/BigNumberToLocaleString.test.js +108 -0
- package/lib/currencies/BigNumberToLocaleString.test.js.map +1 -0
- package/lib/currencies/CurrencyURIScheme.d.ts +13 -0
- package/lib/currencies/CurrencyURIScheme.d.ts.map +1 -0
- package/lib/currencies/CurrencyURIScheme.js +95 -0
- package/lib/currencies/CurrencyURIScheme.js.map +1 -0
- package/lib/currencies/chopCurrencyUnitDecimals.d.ts +3 -0
- package/lib/currencies/chopCurrencyUnitDecimals.d.ts.map +1 -0
- package/lib/currencies/chopCurrencyUnitDecimals.js +29 -0
- package/lib/currencies/chopCurrencyUnitDecimals.js.map +1 -0
- package/lib/currencies/formatCurrencyUnit.d.ts +33 -0
- package/lib/currencies/formatCurrencyUnit.d.ts.map +1 -0
- package/lib/currencies/formatCurrencyUnit.js +109 -0
- package/lib/currencies/formatCurrencyUnit.js.map +1 -0
- package/lib/currencies/formatShort.d.ts +8 -0
- package/lib/currencies/formatShort.d.ts.map +1 -0
- package/lib/currencies/formatShort.js +27 -0
- package/lib/currencies/formatShort.js.map +1 -0
- package/lib/currencies/index.d.ts +13 -0
- package/lib/currencies/index.d.ts.map +1 -0
- package/lib/currencies/index.js +62 -0
- package/lib/currencies/index.js.map +1 -0
- package/lib/currencies/localeUtility.d.ts +8 -0
- package/lib/currencies/localeUtility.d.ts.map +1 -0
- package/lib/currencies/localeUtility.js +45 -0
- package/lib/currencies/localeUtility.js.map +1 -0
- package/lib/currencies/parseCurrencyUnit.d.ts +4 -0
- package/lib/currencies/parseCurrencyUnit.d.ts.map +1 -0
- package/lib/currencies/parseCurrencyUnit.js +18 -0
- package/lib/currencies/parseCurrencyUnit.js.map +1 -0
- package/lib/currencies/sanitizeValueString.d.ts +6 -0
- package/lib/currencies/sanitizeValueString.d.ts.map +1 -0
- package/lib/currencies/sanitizeValueString.js +56 -0
- package/lib/currencies/sanitizeValueString.js.map +1 -0
- package/lib/currencies/support.d.ts +8 -0
- package/lib/currencies/support.d.ts.map +1 -0
- package/lib/currencies/support.js +98 -0
- package/lib/currencies/support.js.map +1 -0
- package/lib/currencies/valueFromUnit.d.ts +9 -0
- package/lib/currencies/valueFromUnit.d.ts.map +1 -0
- package/lib/currencies/valueFromUnit.js +12 -0
- package/lib/currencies/valueFromUnit.js.map +1 -0
- package/lib/derivation.d.ts +232 -0
- package/lib/derivation.d.ts.map +1 -0
- package/lib/derivation.js +416 -0
- package/lib/derivation.js.map +1 -0
- package/lib/derivation.test.d.ts +2 -0
- package/lib/derivation.test.d.ts.map +1 -0
- package/lib/derivation.test.js +35 -0
- package/lib/derivation.test.js.map +1 -0
- package/lib/errors.d.ts +7 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +7 -0
- package/lib/errors.js.map +1 -0
- package/lib/errors.test.d.ts +2 -0
- package/lib/errors.test.d.ts.map +1 -0
- package/lib/errors.test.js +20 -0
- package/lib/errors.test.js.map +1 -0
- package/lib/mocks/account.d.ts +26 -0
- package/lib/mocks/account.d.ts.map +1 -0
- package/lib/mocks/account.js +334 -0
- package/lib/mocks/account.js.map +1 -0
- package/lib/mocks/fixtures/nfts.d.ts +36 -0
- package/lib/mocks/fixtures/nfts.d.ts.map +1 -0
- package/lib/mocks/fixtures/nfts.js +401 -0
- package/lib/mocks/fixtures/nfts.js.map +1 -0
- package/lib/mocks/fixtures/nfts.test.d.ts +2 -0
- package/lib/mocks/fixtures/nfts.test.d.ts.map +1 -0
- package/lib/mocks/fixtures/nfts.test.js +20 -0
- package/lib/mocks/fixtures/nfts.test.js.map +1 -0
- package/lib/mocks/helpers.d.ts +15 -0
- package/lib/mocks/helpers.d.ts.map +1 -0
- package/lib/mocks/helpers.js +32 -0
- package/lib/mocks/helpers.js.map +1 -0
- package/lib/network.d.ts +9 -0
- package/lib/network.d.ts.map +1 -0
- package/lib/network.js +3 -0
- package/lib/network.js.map +1 -0
- package/lib/nft/nftId.d.ts +8 -0
- package/lib/nft/nftId.d.ts.map +1 -0
- package/lib/nft/nftId.js +18 -0
- package/lib/nft/nftId.js.map +1 -0
- package/lib/operation.d.ts +31 -0
- package/lib/operation.d.ts.map +1 -0
- package/lib/operation.js +211 -0
- package/lib/operation.js.map +1 -0
- package/lib/operation.test.d.ts +2 -0
- package/lib/operation.test.d.ts.map +1 -0
- package/lib/operation.test.js +116 -0
- package/lib/operation.test.js.map +1 -0
- package/lib/signer.d.ts +3 -0
- package/lib/signer.d.ts.map +1 -0
- package/lib/signer.js +3 -0
- package/lib/signer.js.map +1 -0
- package/lib/test-helpers/staticTime.d.ts +2 -0
- package/lib/test-helpers/staticTime.d.ts.map +1 -0
- package/lib/test-helpers/staticTime.js +10 -0
- package/lib/test-helpers/staticTime.js.map +1 -0
- package/lib/transaction/common.d.ts +26 -0
- package/lib/transaction/common.d.ts.map +1 -0
- package/lib/transaction/common.js +101 -0
- package/lib/transaction/common.js.map +1 -0
- package/lib-es/account/accountId.d.ts +16 -0
- package/lib-es/account/accountId.d.ts.map +1 -0
- package/lib-es/account/accountId.js +56 -0
- package/lib-es/account/accountId.js.map +1 -0
- package/lib-es/account/accountName.d.ts +14 -0
- package/lib-es/account/accountName.d.ts.map +1 -0
- package/lib-es/account/accountName.js +9 -0
- package/lib-es/account/accountName.js.map +1 -0
- package/lib-es/account/balanceHistoryCache.d.ts +28 -0
- package/lib-es/account/balanceHistoryCache.d.ts.map +1 -0
- package/lib-es/account/balanceHistoryCache.js +123 -0
- package/lib-es/account/balanceHistoryCache.js.map +1 -0
- package/lib-es/account/balanceHistoryCache.test.d.ts +2 -0
- package/lib-es/account/balanceHistoryCache.test.d.ts.map +1 -0
- package/lib-es/account/balanceHistoryCache.test.js +19 -0
- package/lib-es/account/balanceHistoryCache.test.js.map +1 -0
- package/lib-es/account/groupOperations.d.ts +17 -0
- package/lib-es/account/groupOperations.d.ts.map +1 -0
- package/lib-es/account/groupOperations.js +117 -0
- package/lib-es/account/groupOperations.js.map +1 -0
- package/lib-es/account/helpers.d.ts +46 -0
- package/lib-es/account/helpers.d.ts.map +1 -0
- package/lib-es/account/helpers.js +264 -0
- package/lib-es/account/helpers.js.map +1 -0
- package/lib-es/account/helpers.test.d.ts +2 -0
- package/lib-es/account/helpers.test.d.ts.map +1 -0
- package/lib-es/account/helpers.test.js +404 -0
- package/lib-es/account/helpers.test.js.map +1 -0
- package/lib-es/account/index.d.ts +10 -0
- package/lib-es/account/index.d.ts.map +1 -0
- package/lib-es/account/index.js +10 -0
- package/lib-es/account/index.js.map +1 -0
- package/lib-es/account/ordering.d.ts +10 -0
- package/lib-es/account/ordering.d.ts.map +1 -0
- package/lib-es/account/ordering.js +73 -0
- package/lib-es/account/ordering.js.map +1 -0
- package/lib-es/account/pending.d.ts +4 -0
- package/lib-es/account/pending.d.ts.map +1 -0
- package/lib-es/account/pending.js +48 -0
- package/lib-es/account/pending.js.map +1 -0
- package/lib-es/account/serialization.d.ts +6 -0
- package/lib-es/account/serialization.d.ts.map +1 -0
- package/lib-es/account/serialization.js +102 -0
- package/lib-es/account/serialization.js.map +1 -0
- package/lib-es/account/support.d.ts +7 -0
- package/lib-es/account/support.d.ts.map +1 -0
- package/lib-es/account/support.js +39 -0
- package/lib-es/account/support.js.map +1 -0
- package/lib-es/account.test.d.ts +2 -0
- package/lib-es/account.test.d.ts.map +1 -0
- package/lib-es/account.test.js +175 -0
- package/lib-es/account.test.js.map +1 -0
- package/lib-es/bot/bot-test-context.d.ts +3 -0
- package/lib-es/bot/bot-test-context.d.ts.map +1 -0
- package/lib-es/bot/bot-test-context.js +21 -0
- package/lib-es/bot/bot-test-context.js.map +1 -0
- package/lib-es/bot/bot-test-context.test.d.ts +2 -0
- package/lib-es/bot/bot-test-context.test.d.ts.map +1 -0
- package/lib-es/bot/bot-test-context.test.js +39 -0
- package/lib-es/bot/bot-test-context.test.js.map +1 -0
- package/lib-es/bot/formatters.d.ts +2 -0
- package/lib-es/bot/formatters.d.ts.map +1 -0
- package/lib-es/bot/formatters.js +26 -0
- package/lib-es/bot/formatters.js.map +1 -0
- package/lib-es/bot/specs.d.ts +50 -0
- package/lib-es/bot/specs.d.ts.map +1 -0
- package/lib-es/bot/specs.js +170 -0
- package/lib-es/bot/specs.js.map +1 -0
- package/lib-es/bot/types.d.ts +177 -0
- package/lib-es/bot/types.d.ts.map +1 -0
- package/lib-es/bot/types.js +2 -0
- package/lib-es/bot/types.js.map +1 -0
- package/lib-es/bridge/getAddressWrapper.d.ts +5 -0
- package/lib-es/bridge/getAddressWrapper.d.ts.map +1 -0
- package/lib-es/bridge/getAddressWrapper.js +34 -0
- package/lib-es/bridge/getAddressWrapper.js.map +1 -0
- package/lib-es/bridge/jsHelpers.d.ts +59 -0
- package/lib-es/bridge/jsHelpers.d.ts.map +1 -0
- package/lib-es/bridge/jsHelpers.js +378 -0
- package/lib-es/bridge/jsHelpers.js.map +1 -0
- package/lib-es/cache.d.ts +11 -0
- package/lib-es/cache.d.ts.map +1 -0
- package/lib-es/cache.js +17 -0
- package/lib-es/cache.js.map +1 -0
- package/lib-es/currencies/BigNumberToLocaleString.d.ts +8 -0
- package/lib-es/currencies/BigNumberToLocaleString.d.ts.map +1 -0
- package/lib-es/currencies/BigNumberToLocaleString.js +58 -0
- package/lib-es/currencies/BigNumberToLocaleString.js.map +1 -0
- package/lib-es/currencies/BigNumberToLocaleString.test.d.ts +2 -0
- package/lib-es/currencies/BigNumberToLocaleString.test.d.ts.map +1 -0
- package/lib-es/currencies/BigNumberToLocaleString.test.js +106 -0
- package/lib-es/currencies/BigNumberToLocaleString.test.js.map +1 -0
- package/lib-es/currencies/CurrencyURIScheme.d.ts +13 -0
- package/lib-es/currencies/CurrencyURIScheme.d.ts.map +1 -0
- package/lib-es/currencies/CurrencyURIScheme.js +87 -0
- package/lib-es/currencies/CurrencyURIScheme.js.map +1 -0
- package/lib-es/currencies/chopCurrencyUnitDecimals.d.ts +3 -0
- package/lib-es/currencies/chopCurrencyUnitDecimals.d.ts.map +1 -0
- package/lib-es/currencies/chopCurrencyUnitDecimals.js +25 -0
- package/lib-es/currencies/chopCurrencyUnitDecimals.js.map +1 -0
- package/lib-es/currencies/formatCurrencyUnit.d.ts +33 -0
- package/lib-es/currencies/formatCurrencyUnit.d.ts.map +1 -0
- package/lib-es/currencies/formatCurrencyUnit.js +104 -0
- package/lib-es/currencies/formatCurrencyUnit.js.map +1 -0
- package/lib-es/currencies/formatShort.d.ts +8 -0
- package/lib-es/currencies/formatShort.d.ts.map +1 -0
- package/lib-es/currencies/formatShort.js +20 -0
- package/lib-es/currencies/formatShort.js.map +1 -0
- package/lib-es/currencies/index.d.ts +13 -0
- package/lib-es/currencies/index.d.ts.map +1 -0
- package/lib-es/currencies/index.js +14 -0
- package/lib-es/currencies/index.js.map +1 -0
- package/lib-es/currencies/localeUtility.d.ts +8 -0
- package/lib-es/currencies/localeUtility.d.ts.map +1 -0
- package/lib-es/currencies/localeUtility.js +39 -0
- package/lib-es/currencies/localeUtility.js.map +1 -0
- package/lib-es/currencies/parseCurrencyUnit.d.ts +4 -0
- package/lib-es/currencies/parseCurrencyUnit.d.ts.map +1 -0
- package/lib-es/currencies/parseCurrencyUnit.js +14 -0
- package/lib-es/currencies/parseCurrencyUnit.js.map +1 -0
- package/lib-es/currencies/sanitizeValueString.d.ts +6 -0
- package/lib-es/currencies/sanitizeValueString.d.ts.map +1 -0
- package/lib-es/currencies/sanitizeValueString.js +52 -0
- package/lib-es/currencies/sanitizeValueString.js.map +1 -0
- package/lib-es/currencies/support.d.ts +8 -0
- package/lib-es/currencies/support.d.ts.map +1 -0
- package/lib-es/currencies/support.js +89 -0
- package/lib-es/currencies/support.js.map +1 -0
- package/lib-es/currencies/valueFromUnit.d.ts +9 -0
- package/lib-es/currencies/valueFromUnit.d.ts.map +1 -0
- package/lib-es/currencies/valueFromUnit.js +8 -0
- package/lib-es/currencies/valueFromUnit.js.map +1 -0
- package/lib-es/derivation.d.ts +232 -0
- package/lib-es/derivation.d.ts.map +1 -0
- package/lib-es/derivation.js +388 -0
- package/lib-es/derivation.js.map +1 -0
- package/lib-es/derivation.test.d.ts +2 -0
- package/lib-es/derivation.test.d.ts.map +1 -0
- package/lib-es/derivation.test.js +33 -0
- package/lib-es/derivation.test.js.map +1 -0
- package/lib-es/errors.d.ts +7 -0
- package/lib-es/errors.d.ts.map +1 -0
- package/lib-es/errors.js +4 -0
- package/lib-es/errors.js.map +1 -0
- package/lib-es/errors.test.d.ts +2 -0
- package/lib-es/errors.test.d.ts.map +1 -0
- package/lib-es/errors.test.js +18 -0
- package/lib-es/errors.test.js.map +1 -0
- package/lib-es/mocks/account.d.ts +26 -0
- package/lib-es/mocks/account.d.ts.map +1 -0
- package/lib-es/mocks/account.js +324 -0
- package/lib-es/mocks/account.js.map +1 -0
- package/lib-es/mocks/fixtures/nfts.d.ts +36 -0
- package/lib-es/mocks/fixtures/nfts.d.ts.map +1 -0
- package/lib-es/mocks/fixtures/nfts.js +393 -0
- package/lib-es/mocks/fixtures/nfts.js.map +1 -0
- package/lib-es/mocks/fixtures/nfts.test.d.ts +2 -0
- package/lib-es/mocks/fixtures/nfts.test.d.ts.map +1 -0
- package/lib-es/mocks/fixtures/nfts.test.js +18 -0
- package/lib-es/mocks/fixtures/nfts.test.js.map +1 -0
- package/lib-es/mocks/helpers.d.ts +15 -0
- package/lib-es/mocks/helpers.d.ts.map +1 -0
- package/lib-es/mocks/helpers.js +26 -0
- package/lib-es/mocks/helpers.js.map +1 -0
- package/lib-es/network.d.ts +9 -0
- package/lib-es/network.d.ts.map +1 -0
- package/lib-es/network.js +2 -0
- package/lib-es/network.js.map +1 -0
- package/lib-es/nft/nftId.d.ts +8 -0
- package/lib-es/nft/nftId.d.ts.map +1 -0
- package/lib-es/nft/nftId.js +13 -0
- package/lib-es/nft/nftId.js.map +1 -0
- package/lib-es/operation.d.ts +31 -0
- package/lib-es/operation.d.ts.map +1 -0
- package/lib-es/operation.js +190 -0
- package/lib-es/operation.js.map +1 -0
- package/lib-es/operation.test.d.ts +2 -0
- package/lib-es/operation.test.d.ts.map +1 -0
- package/lib-es/operation.test.js +111 -0
- package/lib-es/operation.test.js.map +1 -0
- package/lib-es/signer.d.ts +3 -0
- package/lib-es/signer.d.ts.map +1 -0
- package/lib-es/signer.js +2 -0
- package/lib-es/signer.js.map +1 -0
- package/lib-es/test-helpers/staticTime.d.ts +2 -0
- package/lib-es/test-helpers/staticTime.d.ts.map +1 -0
- package/lib-es/test-helpers/staticTime.js +5 -0
- package/lib-es/test-helpers/staticTime.js.map +1 -0
- package/lib-es/transaction/common.d.ts +26 -0
- package/lib-es/transaction/common.d.ts.map +1 -0
- package/lib-es/transaction/common.js +93 -0
- package/lib-es/transaction/common.js.map +1 -0
- package/package.json +8 -21
- package/src/account/accountId.ts +20 -30
- package/src/account/accountName.ts +1 -4
- package/src/account/balanceHistoryCache.test.ts +19 -0
- package/src/account/balanceHistoryCache.ts +52 -38
- package/src/account/groupOperations.ts +4 -6
- package/src/account/helpers.test.ts +6 -26
- package/src/account/helpers.ts +28 -60
- package/src/account/ordering.ts +10 -18
- package/src/account/pending.ts +6 -15
- package/src/account/serialization.ts +8 -19
- package/src/account/support.ts +8 -18
- package/src/account.test.ts +25 -40
- package/src/bot/specs.ts +24 -43
- package/src/bot/types.ts +2 -3
- package/src/bridge/getAddressWrapper.ts +7 -15
- package/src/bridge/jsHelpers.ts +228 -293
- package/src/cache.ts +4 -4
- package/src/currencies/BigNumberToLocaleString.test.ts +25 -33
- package/src/currencies/BigNumberToLocaleString.ts +3 -8
- package/src/currencies/CurrencyURIScheme.ts +1 -3
- package/src/currencies/chopCurrencyUnitDecimals.ts +1 -4
- package/src/currencies/formatCurrencyUnit.ts +11 -21
- package/src/currencies/index.ts +1 -4
- package/src/currencies/localeUtility.ts +2 -4
- package/src/currencies/parseCurrencyUnit.ts +1 -4
- package/src/currencies/sanitizeValueString.ts +1 -1
- package/src/currencies/support.ts +3 -9
- package/src/derivation.test.ts +1 -4
- package/src/derivation.ts +45 -95
- package/src/errors.test.ts +1 -1
- package/src/errors.ts +2 -6
- package/src/mocks/account.ts +27 -80
- package/src/mocks/fixtures/nfts.test.ts +2 -6
- package/src/mocks/fixtures/nfts.ts +12 -38
- package/src/mocks/helpers.ts +2 -8
- package/src/nft/nftId.ts +2 -2
- package/src/operation.test.ts +119 -32
- package/src/operation.ts +74 -26
- package/src/signer.ts +5 -0
- package/src/transaction/common.ts +9 -22
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Operation, OperationRaw, SubAccount } from "@ledgerhq/types-live";
|
|
2
|
+
export type ExtractExtraFn = (extra: Record<string, any>) => Record<string, any>;
|
|
3
|
+
export declare const toOperationRaw: ({ date, value, fee, subOperations, internalOperations, nftOperations, extra, id, hash, type, senders, recipients, blockHeight, blockHash, transactionSequenceNumber, accountId, hasFailed, contract, operator, standard, tokenId, transactionRaw, }: Operation, preserveSubOperation?: boolean) => OperationRaw;
|
|
4
|
+
export declare const inferSubOperations: (txHash: string, subAccounts: SubAccount[]) => Operation[];
|
|
5
|
+
export declare const fromOperationRaw: ({ date, value, fee, extra, subOperations, internalOperations, nftOperations, id, hash, type, senders, recipients, blockHeight, blockHash, transactionSequenceNumber, hasFailed, contract, operator, standard, tokenId, transactionRaw, }: OperationRaw, accountId: string, subAccounts?: SubAccount[] | null | undefined) => Operation;
|
|
6
|
+
//# sourceMappingURL=serialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../src/account/serialization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhF,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEjF,eAAO,MAAM,cAAc,wPAwBtB,SAAS,yBACW,OAAO,KAC7B,YA6CF,CAAC;AACF,eAAO,MAAM,kBAAkB,WAAY,MAAM,eAAe,UAAU,EAAE,KAAG,SAAS,EAwBvF,CAAC;AACF,eAAO,MAAM,gBAAgB,6OAuBxB,YAAY,aACJ,MAAM,gBACH,UAAU,EAAE,GAAG,IAAI,GAAG,SAAS,KAC5C,SAiDF,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fromOperationRaw = exports.inferSubOperations = exports.toOperationRaw = void 0;
|
|
4
|
+
const bignumber_js_1 = require("bignumber.js");
|
|
5
|
+
const toOperationRaw = ({ date, value, fee, subOperations, internalOperations, nftOperations, extra, id, hash, type, senders, recipients, blockHeight, blockHash, transactionSequenceNumber, accountId, hasFailed, contract, operator, standard, tokenId, transactionRaw, }, preserveSubOperation) => {
|
|
6
|
+
const copy = {
|
|
7
|
+
id,
|
|
8
|
+
hash,
|
|
9
|
+
type,
|
|
10
|
+
senders,
|
|
11
|
+
recipients,
|
|
12
|
+
accountId,
|
|
13
|
+
blockHash,
|
|
14
|
+
blockHeight,
|
|
15
|
+
extra,
|
|
16
|
+
date: date.toISOString(),
|
|
17
|
+
value: value.toFixed(),
|
|
18
|
+
fee: fee.toString(),
|
|
19
|
+
contract,
|
|
20
|
+
operator,
|
|
21
|
+
standard,
|
|
22
|
+
tokenId,
|
|
23
|
+
};
|
|
24
|
+
if (transactionSequenceNumber !== undefined) {
|
|
25
|
+
copy.transactionSequenceNumber = transactionSequenceNumber;
|
|
26
|
+
}
|
|
27
|
+
if (hasFailed !== undefined) {
|
|
28
|
+
copy.hasFailed = hasFailed;
|
|
29
|
+
}
|
|
30
|
+
if (subOperations && preserveSubOperation) {
|
|
31
|
+
copy.subOperations = subOperations.map((o) => (0, exports.toOperationRaw)(o));
|
|
32
|
+
}
|
|
33
|
+
if (internalOperations) {
|
|
34
|
+
copy.internalOperations = internalOperations.map((o) => (0, exports.toOperationRaw)(o));
|
|
35
|
+
}
|
|
36
|
+
if (nftOperations) {
|
|
37
|
+
copy.nftOperations = nftOperations.map((o) => (0, exports.toOperationRaw)(o));
|
|
38
|
+
}
|
|
39
|
+
if (transactionRaw !== undefined) {
|
|
40
|
+
copy.transactionRaw = transactionRaw;
|
|
41
|
+
}
|
|
42
|
+
return copy;
|
|
43
|
+
};
|
|
44
|
+
exports.toOperationRaw = toOperationRaw;
|
|
45
|
+
const inferSubOperations = (txHash, subAccounts) => {
|
|
46
|
+
const all = [];
|
|
47
|
+
for (let i = 0; i < subAccounts.length; i++) {
|
|
48
|
+
const ta = subAccounts[i];
|
|
49
|
+
for (let j = 0; j < ta.operations.length; j++) {
|
|
50
|
+
const op = ta.operations[j];
|
|
51
|
+
if (op.hash === txHash) {
|
|
52
|
+
all.push(op);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
for (let j = 0; j < ta.pendingOperations.length; j++) {
|
|
56
|
+
const op = ta.pendingOperations[j];
|
|
57
|
+
if (op.hash === txHash) {
|
|
58
|
+
all.push(op);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return all;
|
|
63
|
+
};
|
|
64
|
+
exports.inferSubOperations = inferSubOperations;
|
|
65
|
+
const fromOperationRaw = ({ date, value, fee, extra, subOperations, internalOperations, nftOperations, id, hash, type, senders, recipients, blockHeight, blockHash, transactionSequenceNumber, hasFailed, contract, operator, standard, tokenId, transactionRaw, }, accountId, subAccounts) => {
|
|
66
|
+
const res = {
|
|
67
|
+
id,
|
|
68
|
+
hash,
|
|
69
|
+
type,
|
|
70
|
+
senders,
|
|
71
|
+
recipients,
|
|
72
|
+
accountId,
|
|
73
|
+
blockHash,
|
|
74
|
+
blockHeight,
|
|
75
|
+
date: new Date(date),
|
|
76
|
+
value: new bignumber_js_1.BigNumber(value),
|
|
77
|
+
fee: new bignumber_js_1.BigNumber(fee),
|
|
78
|
+
extra,
|
|
79
|
+
contract,
|
|
80
|
+
operator,
|
|
81
|
+
standard,
|
|
82
|
+
tokenId,
|
|
83
|
+
};
|
|
84
|
+
if (transactionSequenceNumber !== undefined) {
|
|
85
|
+
res.transactionSequenceNumber = transactionSequenceNumber;
|
|
86
|
+
}
|
|
87
|
+
if (hasFailed !== undefined) {
|
|
88
|
+
res.hasFailed = hasFailed;
|
|
89
|
+
}
|
|
90
|
+
if (subAccounts) {
|
|
91
|
+
res.subOperations = (0, exports.inferSubOperations)(hash, subAccounts);
|
|
92
|
+
}
|
|
93
|
+
else if (subOperations) {
|
|
94
|
+
res.subOperations = subOperations.map((o) => (0, exports.fromOperationRaw)(o, o.accountId));
|
|
95
|
+
}
|
|
96
|
+
if (internalOperations) {
|
|
97
|
+
res.internalOperations = internalOperations.map((o) => (0, exports.fromOperationRaw)(o, o.accountId));
|
|
98
|
+
}
|
|
99
|
+
if (nftOperations) {
|
|
100
|
+
res.nftOperations = nftOperations.map((o) => (0, exports.fromOperationRaw)(o, o.accountId));
|
|
101
|
+
}
|
|
102
|
+
if (transactionRaw !== undefined) {
|
|
103
|
+
res.transactionRaw = transactionRaw;
|
|
104
|
+
}
|
|
105
|
+
return res;
|
|
106
|
+
};
|
|
107
|
+
exports.fromOperationRaw = fromOperationRaw;
|
|
108
|
+
//# sourceMappingURL=serialization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../src/account/serialization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
|
|
2
|
+
import type { Account, AccountLike } from "@ledgerhq/types-live";
|
|
3
|
+
import type { DerivationMode } from "../derivation";
|
|
4
|
+
export declare const shouldShowNewAccount: (currency: CryptoCurrency, derivationMode: DerivationMode) => boolean;
|
|
5
|
+
export declare const getReceiveFlowError: (account: AccountLike, parentAccount: Account | null | undefined) => Error | null | undefined;
|
|
6
|
+
export declare function checkAccountSupported(account: Account): Error | null | undefined;
|
|
7
|
+
//# sourceMappingURL=support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/account/support.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,oBAAoB,aACrB,cAAc,kBACR,cAAc,KAC7B,OAkBF,CAAC;AACF,eAAO,MAAM,mBAAmB,YACrB,WAAW,iBACL,OAAO,GAAG,IAAI,GAAG,SAAS,KACxC,KAAK,GAAG,IAAI,GAAG,SAIjB,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAahF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkAccountSupported = exports.getReceiveFlowError = exports.shouldShowNewAccount = void 0;
|
|
4
|
+
const errors_1 = require("@ledgerhq/errors");
|
|
5
|
+
const live_env_1 = require("@ledgerhq/live-env");
|
|
6
|
+
const derivation_1 = require("../derivation");
|
|
7
|
+
const currencies_1 = require("../currencies");
|
|
8
|
+
const shouldShowNewAccount = (currency, derivationMode) => {
|
|
9
|
+
const modes = (0, derivation_1.getDerivationModesForCurrency)(currency);
|
|
10
|
+
// last mode is always creatable by convention
|
|
11
|
+
if (modes[modes.length - 1] === derivationMode)
|
|
12
|
+
return true;
|
|
13
|
+
// legacy is only available with flag SHOW_LEGACY_NEW_ACCOUNT
|
|
14
|
+
if (derivationMode === "" &&
|
|
15
|
+
(!!(0, live_env_1.getEnv)("SHOW_LEGACY_NEW_ACCOUNT") || currency.family === "bitcoin"))
|
|
16
|
+
return true;
|
|
17
|
+
// native segwit being not yet supported everywhere, segwit is always available for creation
|
|
18
|
+
if (derivationMode === "segwit" ||
|
|
19
|
+
(currency.family === "bitcoin" &&
|
|
20
|
+
(derivationMode === "native_segwit" || derivationMode === "taproot")))
|
|
21
|
+
return true;
|
|
22
|
+
return false;
|
|
23
|
+
};
|
|
24
|
+
exports.shouldShowNewAccount = shouldShowNewAccount;
|
|
25
|
+
const getReceiveFlowError = (account, parentAccount) => {
|
|
26
|
+
if (parentAccount && parentAccount.currency.id === "tezos") {
|
|
27
|
+
return new errors_1.UnavailableTezosOriginatedAccountReceive("");
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.getReceiveFlowError = getReceiveFlowError;
|
|
31
|
+
function checkAccountSupported(account) {
|
|
32
|
+
if (!(0, derivation_1.getAllDerivationModes)().includes(account.derivationMode)) {
|
|
33
|
+
return new errors_1.AccountNotSupported("derivation not supported " + account.derivationMode, {
|
|
34
|
+
reason: account.derivationMode,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (!(0, currencies_1.isCurrencySupported)(account.currency)) {
|
|
38
|
+
const currencyName = account.currency.name;
|
|
39
|
+
return new errors_1.CurrencyNotSupported("currency not supported: " + currencyName, {
|
|
40
|
+
currencyName,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.checkAccountSupported = checkAccountSupported;
|
|
45
|
+
//# sourceMappingURL=support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/account/support.ts"],"names":[],"mappings":";;;AAAA,6CAI0B;AAC1B,iDAA4C;AAC5C,8CAAqF;AACrF,8CAAoD;AAK7C,MAAM,oBAAoB,GAAG,CAClC,QAAwB,EACxB,cAA8B,EACrB,EAAE;IACX,MAAM,KAAK,GAAG,IAAA,0CAA6B,EAAC,QAAQ,CAAC,CAAC;IACtD,8CAA8C;IAC9C,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IAC5D,6DAA6D;IAC7D,IACE,cAAc,KAAK,EAAE;QACrB,CAAC,CAAC,CAAC,IAAA,iBAAM,EAAC,yBAAyB,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC;QAEtE,OAAO,IAAI,CAAC;IACd,4FAA4F;IAC5F,IACE,cAAc,KAAK,QAAQ;QAC3B,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS;YAC5B,CAAC,cAAc,KAAK,eAAe,IAAI,cAAc,KAAK,SAAS,CAAC,CAAC;QAEvE,OAAO,IAAI,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AArBW,QAAA,oBAAoB,wBAqB/B;AACK,MAAM,mBAAmB,GAAG,CACjC,OAAoB,EACpB,aAAyC,EACf,EAAE;IAC5B,IAAI,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,EAAE;QAC1D,OAAO,IAAI,iDAAwC,CAAC,EAAE,CAAC,CAAC;KACzD;AACH,CAAC,CAAC;AAPW,QAAA,mBAAmB,uBAO9B;AAEF,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,IAAI,CAAC,IAAA,kCAAqB,GAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAgC,CAAC,EAAE;QAC/E,OAAO,IAAI,4BAAmB,CAAC,2BAA2B,GAAG,OAAO,CAAC,cAAc,EAAE;YACnF,MAAM,EAAE,OAAO,CAAC,cAAc;SAC/B,CAAC,CAAC;KACJ;IAED,IAAI,CAAC,IAAA,gCAAmB,EAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC3C,OAAO,IAAI,6BAAoB,CAAC,0BAA0B,GAAG,YAAY,EAAE;YACzE,YAAY;SACb,CAAC,CAAC;KACJ;AACH,CAAC;AAbD,sDAaC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.test.d.ts","sourceRoot":"","sources":["../src/account.test.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,180 @@
|
|
|
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
|
+
require("./test-helpers/staticTime");
|
|
7
|
+
const bignumber_js_1 = require("bignumber.js");
|
|
8
|
+
const flatMap_1 = __importDefault(require("lodash/flatMap"));
|
|
9
|
+
const currencies_1 = require("./currencies");
|
|
10
|
+
const account_1 = require("./account");
|
|
11
|
+
const account_2 = require("./mocks/account");
|
|
12
|
+
(0, currencies_1.setSupportedCurrencies)(["ethereum", "ethereum_classic", "tron"]);
|
|
13
|
+
describe("groupAccountOperationsByDay", () => {
|
|
14
|
+
test("basic", () => {
|
|
15
|
+
const account = (0, account_2.genAccount)("seed_7", {
|
|
16
|
+
operationsSize: 20,
|
|
17
|
+
});
|
|
18
|
+
const res1 = (0, account_1.groupAccountOperationsByDay)(account, {
|
|
19
|
+
count: 10,
|
|
20
|
+
});
|
|
21
|
+
expect(res1.completed).toBe(false);
|
|
22
|
+
expect(res1).toMatchSnapshot();
|
|
23
|
+
const res2 = (0, account_1.groupAccountOperationsByDay)(account, {
|
|
24
|
+
count: Infinity,
|
|
25
|
+
});
|
|
26
|
+
expect(res2.completed).toBe(true);
|
|
27
|
+
expect(
|
|
28
|
+
// $FlowFixMe
|
|
29
|
+
(0, flatMap_1.default)(res2.sections, s => s.data).slice(0, 10)).toMatchObject(
|
|
30
|
+
// $FlowFixMe
|
|
31
|
+
(0, flatMap_1.default)(res1.sections, s => s.data));
|
|
32
|
+
});
|
|
33
|
+
test("basic 2", () => {
|
|
34
|
+
const accounts = Array(10)
|
|
35
|
+
.fill(null)
|
|
36
|
+
.map((_, i) => (0, account_2.genAccount)("gaobd" + i));
|
|
37
|
+
const res1 = (0, account_1.groupAccountsOperationsByDay)(accounts, {
|
|
38
|
+
count: 100,
|
|
39
|
+
});
|
|
40
|
+
expect(res1.completed).toBe(false);
|
|
41
|
+
expect(res1).toMatchSnapshot();
|
|
42
|
+
const res2 = (0, account_1.groupAccountsOperationsByDay)(accounts, {
|
|
43
|
+
count: Infinity,
|
|
44
|
+
});
|
|
45
|
+
expect(res2.completed).toBe(true);
|
|
46
|
+
expect(
|
|
47
|
+
// $FlowFixMe
|
|
48
|
+
(0, flatMap_1.default)(res2.sections, s => s.data).slice(0, 100)).toMatchObject(
|
|
49
|
+
// $FlowFixMe
|
|
50
|
+
(0, flatMap_1.default)(res1.sections, s => s.data));
|
|
51
|
+
});
|
|
52
|
+
test("filterOperation", () => {
|
|
53
|
+
const account = (0, account_2.genAccount)("seed_7");
|
|
54
|
+
account.pendingOperations = account.operations.splice(0, 2);
|
|
55
|
+
const res1 = (0, account_1.groupAccountOperationsByDay)(account, {
|
|
56
|
+
count: 10,
|
|
57
|
+
filterOperation: () => false,
|
|
58
|
+
});
|
|
59
|
+
expect(res1.sections.length).toBe(0);
|
|
60
|
+
expect(res1.completed).toBe(true);
|
|
61
|
+
const res2 = (0, account_1.groupAccountOperationsByDay)(account, {
|
|
62
|
+
count: 10,
|
|
63
|
+
filterOperation: () => true,
|
|
64
|
+
});
|
|
65
|
+
expect(res2).toEqual((0, account_1.groupAccountOperationsByDay)(account, {
|
|
66
|
+
count: 10,
|
|
67
|
+
}));
|
|
68
|
+
const res3 = (0, account_1.groupAccountOperationsByDay)(account, {
|
|
69
|
+
count: 10,
|
|
70
|
+
filterOperation: (op, acc) => {
|
|
71
|
+
expect(acc).toBe(account);
|
|
72
|
+
return op.type === "OUT";
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
expect(res3).toEqual((0, account_1.groupAccountOperationsByDay)(Object.assign(Object.assign({}, account), { operations: account.operations.filter(op => op.type === "OUT"), pendingOperations: account.pendingOperations.filter(op => op.type === "OUT") }), {
|
|
76
|
+
count: 10,
|
|
77
|
+
}));
|
|
78
|
+
});
|
|
79
|
+
test("provide at least the requested count even if some op yield nothing", () => {
|
|
80
|
+
const ethAccount = (0, account_2.genAccount)("eth_1", {
|
|
81
|
+
currency: (0, currencies_1.getCryptoCurrencyById)("ethereum"),
|
|
82
|
+
operationsSize: 300,
|
|
83
|
+
});
|
|
84
|
+
ethAccount.operations = Array(50)
|
|
85
|
+
.fill(Object.assign(Object.assign({}, ethAccount.operations[0]), { value: new bignumber_js_1.BigNumber(0), type: "NONE" }))
|
|
86
|
+
.concat(ethAccount.operations);
|
|
87
|
+
const res1 = (0, account_1.groupAccountOperationsByDay)(ethAccount, {
|
|
88
|
+
count: 100,
|
|
89
|
+
});
|
|
90
|
+
expect(res1.completed).toBe(false);
|
|
91
|
+
expect(res1.sections.reduce((acc, s) => acc.concat(s.data), []).length).toBeGreaterThanOrEqual(100);
|
|
92
|
+
});
|
|
93
|
+
test("to dedup", () => {
|
|
94
|
+
const account = (0, account_2.genAccount)("seed_8");
|
|
95
|
+
account.pendingOperations = account.operations.slice(0, 3);
|
|
96
|
+
const accountClone = (0, account_2.genAccount)("seed_8");
|
|
97
|
+
const res1 = (0, account_1.groupAccountOperationsByDay)(account, {
|
|
98
|
+
count: 100,
|
|
99
|
+
});
|
|
100
|
+
const res2 = (0, account_1.groupAccountOperationsByDay)(accountClone, {
|
|
101
|
+
count: 100,
|
|
102
|
+
});
|
|
103
|
+
expect(res1).toMatchObject(res2);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
test("shortAddressPreview", () => {
|
|
107
|
+
expect((0, account_1.shortAddressPreview)("0x112233445566778899001234567890aAbBcCdDeEfF")).toBe("0x112233...cCdDeEfF");
|
|
108
|
+
expect((0, account_1.shortAddressPreview)("0x112233445566778899001234567890aAbBcCdDeEfF", 30)).toBe("0x11223344556...0aAbBcCdDeEfF");
|
|
109
|
+
});
|
|
110
|
+
test("accountWithMandatoryTokens ethereum", () => {
|
|
111
|
+
const currency = (0, currencies_1.getCryptoCurrencyById)("ethereum");
|
|
112
|
+
const account = (0, account_2.genAccount)("", {
|
|
113
|
+
currency,
|
|
114
|
+
subAccountsCount: 5,
|
|
115
|
+
});
|
|
116
|
+
const enhance = (0, account_1.accountWithMandatoryTokens)(account, [(0, currencies_1.getTokenById)("ethereum/erc20/0x_project")]);
|
|
117
|
+
const doubleEnhance = (0, account_1.accountWithMandatoryTokens)(enhance, [
|
|
118
|
+
(0, currencies_1.getTokenById)("ethereum/erc20/0x_project"),
|
|
119
|
+
]);
|
|
120
|
+
expect(doubleEnhance).toEqual(enhance);
|
|
121
|
+
expect(Object.assign(Object.assign({}, enhance), { subAccounts: [] })).toMatchObject(Object.assign(Object.assign({}, account), { subAccounts: [] }));
|
|
122
|
+
expect((enhance.subAccounts || []).map(a => a.id)).toMatchSnapshot();
|
|
123
|
+
});
|
|
124
|
+
test("withoutToken ethereum", () => {
|
|
125
|
+
const isTokenAccount = (account, tokenId) => account.type === "TokenAccount" && account.token.id === tokenId;
|
|
126
|
+
const tokenIds = [
|
|
127
|
+
"ethereum/erc20/0x_project",
|
|
128
|
+
"ethereum/erc20/leo_token",
|
|
129
|
+
"ethereum/erc20/cro",
|
|
130
|
+
"ethereum/erc20/huobitoken",
|
|
131
|
+
];
|
|
132
|
+
const currency = (0, currencies_1.getCryptoCurrencyById)("ethereum");
|
|
133
|
+
const account = (0, account_2.genAccount)("", {
|
|
134
|
+
currency,
|
|
135
|
+
subAccountsCount: 0,
|
|
136
|
+
});
|
|
137
|
+
//Enhance the account with some tokens
|
|
138
|
+
const enhance = (0, account_1.accountWithMandatoryTokens)(account, tokenIds.map(currencies_1.getTokenById));
|
|
139
|
+
//Get a version of that account without all the tokens
|
|
140
|
+
let demote = enhance;
|
|
141
|
+
for (const tokenId of tokenIds) {
|
|
142
|
+
demote = (0, account_1.withoutToken)(demote, tokenId);
|
|
143
|
+
}
|
|
144
|
+
const saTokens = enhance.subAccounts || [];
|
|
145
|
+
const saNoTokens = demote.subAccounts || [];
|
|
146
|
+
//See if we have added/removed them correctly
|
|
147
|
+
for (const tokenId of tokenIds) {
|
|
148
|
+
expect(saTokens.find(a => isTokenAccount(a, tokenId))).toBeTruthy();
|
|
149
|
+
expect(saNoTokens.find(a => isTokenAccount(a, tokenId))).toBeFalsy();
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
test("withoutToken tron", () => {
|
|
153
|
+
const isTokenAccount = (account, tokenId) => account.type === "TokenAccount" && account.token.id === tokenId;
|
|
154
|
+
const tokenIds = [
|
|
155
|
+
"tron/trc10/1002000",
|
|
156
|
+
"tron/trc10/1002398",
|
|
157
|
+
"tron/trc10/1000226",
|
|
158
|
+
"tron/trc20/TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7",
|
|
159
|
+
];
|
|
160
|
+
const currency = (0, currencies_1.getCryptoCurrencyById)("tron");
|
|
161
|
+
const account = (0, account_2.genAccount)("", {
|
|
162
|
+
currency,
|
|
163
|
+
subAccountsCount: 0,
|
|
164
|
+
});
|
|
165
|
+
//Enhance the account with some tokens
|
|
166
|
+
const enhance = (0, account_1.accountWithMandatoryTokens)(account, tokenIds.map(currencies_1.getTokenById));
|
|
167
|
+
//Get a version of that account without all the tokens
|
|
168
|
+
let demote = enhance;
|
|
169
|
+
for (const tokenId of tokenIds) {
|
|
170
|
+
demote = (0, account_1.withoutToken)(demote, tokenId);
|
|
171
|
+
}
|
|
172
|
+
const saTokens = enhance.subAccounts || [];
|
|
173
|
+
const saNoTokens = demote.subAccounts || [];
|
|
174
|
+
//See if we have added/removed them correctly
|
|
175
|
+
for (const tokenId of tokenIds) {
|
|
176
|
+
expect(saTokens.find(a => isTokenAccount(a, tokenId))).toBeTruthy();
|
|
177
|
+
expect(saNoTokens.find(a => isTokenAccount(a, tokenId))).toBeFalsy();
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
//# sourceMappingURL=account.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.test.js","sourceRoot":"","sources":["../src/account.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bot-test-context.d.ts","sourceRoot":"","sources":["../../src/bot/bot-test-context.ts"],"names":[],"mappings":"AAKA,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAWhE;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAIzD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getContext = exports.botTest = void 0;
|
|
4
|
+
// This provides a botTest("description", () => {}) helper in order to give context in bot expect tests
|
|
5
|
+
function botTest(description, f) {
|
|
6
|
+
try {
|
|
7
|
+
f();
|
|
8
|
+
}
|
|
9
|
+
catch (e) {
|
|
10
|
+
if (e instanceof Error) {
|
|
11
|
+
const err = e;
|
|
12
|
+
err._bot_context = [description].concat(err._bot_context || []);
|
|
13
|
+
throw err;
|
|
14
|
+
}
|
|
15
|
+
throw e;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.botTest = botTest;
|
|
19
|
+
// retrieve the text context of a given error that was thrown from inside a botTest(...)
|
|
20
|
+
function getContext(error) {
|
|
21
|
+
if (error instanceof Error) {
|
|
22
|
+
return (error._bot_context || []).join(" > ");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.getContext = getContext;
|
|
26
|
+
//# sourceMappingURL=bot-test-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bot-test-context.js","sourceRoot":"","sources":["../../src/bot/bot-test-context.ts"],"names":[],"mappings":";;;AAIA,uGAAuG;AACvG,SAAgB,OAAO,CAAC,WAAmB,EAAE,CAAa;IACxD,IAAI;QACF,CAAC,EAAE,CAAC;KACL;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,KAAK,EAAE;YACtB,MAAM,GAAG,GAAG,CAAkB,CAAC;YAC/B,GAAG,CAAC,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;YAChE,MAAM,GAAG,CAAC;SACX;QACD,MAAM,CAAC,CAAC;KACT;AACH,CAAC;AAXD,0BAWC;AAED,wFAAwF;AACxF,SAAgB,UAAU,CAAC,KAAU;IACnC,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,CAAE,KAAuB,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClE;AACH,CAAC;AAJD,gCAIC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bot-test-context.test.d.ts","sourceRoot":"","sources":["../../src/bot/bot-test-context.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const bot_test_context_1 = require("./bot-test-context");
|
|
4
|
+
const formatters_1 = require("./formatters");
|
|
5
|
+
describe("test the botTest context itself", () => {
|
|
6
|
+
test("botTest", () => {
|
|
7
|
+
const f = () => {
|
|
8
|
+
try {
|
|
9
|
+
(0, bot_test_context_1.botTest)("CTX", () => expect(true).toEqual(false));
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
return (0, bot_test_context_1.getContext)(e);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
expect(f()).toEqual("CTX");
|
|
16
|
+
});
|
|
17
|
+
test("double botTest", () => {
|
|
18
|
+
const f = () => {
|
|
19
|
+
try {
|
|
20
|
+
(0, bot_test_context_1.botTest)("1", () => (0, bot_test_context_1.botTest)("2", () => expect(true).toEqual(false)));
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
return (0, bot_test_context_1.getContext)(e);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
expect(f()).toEqual("1 > 2");
|
|
27
|
+
});
|
|
28
|
+
test("formatError", () => {
|
|
29
|
+
var _a;
|
|
30
|
+
const f = () => {
|
|
31
|
+
try {
|
|
32
|
+
(0, bot_test_context_1.botTest)("CTX", () => expect(true).toEqual(false));
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
return (0, formatters_1.formatError)(e);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
expect((_a = f()) === null || _a === void 0 ? void 0 : _a.slice(0, 8)).toEqual("TEST CTX");
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=bot-test-context.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bot-test-context.test.js","sourceRoot":"","sources":["../../src/bot/bot-test-context.test.ts"],"names":[],"mappings":";;AAAA,yDAAyD;AACzD,6CAA2C;AAE3C,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;QACnB,MAAM,CAAC,GAAG,GAAG,EAAE;YACb,IAAI;gBACF,IAAA,0BAAO,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;aACnD;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,IAAA,6BAAU,EAAC,CAAC,CAAC,CAAC;aACtB;QACH,CAAC,CAAC;QACF,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC1B,MAAM,CAAC,GAAG,GAAG,EAAE;YACb,IAAI;gBACF,IAAA,0BAAO,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAA,0BAAO,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACrE;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,IAAA,6BAAU,EAAC,CAAC,CAAC,CAAC;aACtB;QACH,CAAC,CAAC;QACF,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;;QACvB,MAAM,CAAC,GAAG,GAAG,EAAE;YACb,IAAI;gBACF,IAAA,0BAAO,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;aACnD;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,IAAA,wBAAW,EAAC,CAAC,CAAC,CAAC;aACvB;QACH,CAAC,CAAC;QACF,MAAM,CAAC,MAAA,CAAC,EAAE,0CAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/bot/formatters.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAmBhE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatError = void 0;
|
|
4
|
+
const bot_test_context_1 = require("./bot-test-context");
|
|
5
|
+
function formatError(e, longform = false) {
|
|
6
|
+
let out = "";
|
|
7
|
+
if (!e || typeof e !== "object") {
|
|
8
|
+
out = String(e);
|
|
9
|
+
}
|
|
10
|
+
else if (e instanceof Error) {
|
|
11
|
+
const ctx = (0, bot_test_context_1.getContext)(e);
|
|
12
|
+
if (ctx)
|
|
13
|
+
out += `TEST ${ctx}\n`;
|
|
14
|
+
out += String(e);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
try {
|
|
18
|
+
out = "raw object: " + JSON.stringify(e);
|
|
19
|
+
}
|
|
20
|
+
catch (_e) {
|
|
21
|
+
out = String(e);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (longform) {
|
|
25
|
+
return out.slice(0, 500);
|
|
26
|
+
}
|
|
27
|
+
return out.replace(/[`]/g, "").replace(/\n/g, " ").slice(0, 200);
|
|
28
|
+
}
|
|
29
|
+
exports.formatError = formatError;
|
|
30
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/bot/formatters.ts"],"names":[],"mappings":";;;AAAA,yDAAgD;AAEhD,SAAgB,WAAW,CAAC,CAAU,EAAE,QAAQ,GAAG,KAAK;IACtD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QAC/B,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KACjB;SAAM,IAAI,CAAC,YAAY,KAAK,EAAE;QAC7B,MAAM,GAAG,GAAG,IAAA,6BAAU,EAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG;YAAE,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC;QAChC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;KAClB;SAAM;QACL,IAAI;YACF,GAAG,GAAG,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC1C;QAAC,OAAO,EAAE,EAAE;YACX,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SACjB;KACF;IACD,IAAI,QAAQ,EAAE;QACZ,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KAC1B;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC;AAnBD,kCAmBC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { DeviceAction, DeviceActionArg, TransactionDestinationTestInput } from "./types";
|
|
2
|
+
import { Account, TransactionCommon } from "@ledgerhq/types-live";
|
|
3
|
+
import { botTest } from "./bot-test-context";
|
|
4
|
+
import { CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets";
|
|
5
|
+
import BigNumber from "bignumber.js";
|
|
6
|
+
export { botTest };
|
|
7
|
+
export declare function pickSiblings(siblings: Account[], maxAccount?: number): Account;
|
|
8
|
+
type State<T extends TransactionCommon> = {
|
|
9
|
+
finalState: boolean;
|
|
10
|
+
stepTitle: string;
|
|
11
|
+
stepValue: string;
|
|
12
|
+
acc: Array<{
|
|
13
|
+
title: string;
|
|
14
|
+
value: string;
|
|
15
|
+
}>;
|
|
16
|
+
currentStep: Step<T> | null | undefined;
|
|
17
|
+
};
|
|
18
|
+
export declare enum SpeculosButton {
|
|
19
|
+
LEFT = "Ll",
|
|
20
|
+
RIGHT = "Rr",
|
|
21
|
+
BOTH = "LRlr"
|
|
22
|
+
}
|
|
23
|
+
type Step<T extends TransactionCommon> = {
|
|
24
|
+
title: string;
|
|
25
|
+
stepValueTransform?: (s: string) => string;
|
|
26
|
+
expectedValue?: (arg0: DeviceActionArg<T, State<T>>, acc: Array<{
|
|
27
|
+
title: string;
|
|
28
|
+
value: string;
|
|
29
|
+
}>) => string;
|
|
30
|
+
ignoreAssertionFailure?: boolean;
|
|
31
|
+
trimValue?: boolean;
|
|
32
|
+
button?: SpeculosButton;
|
|
33
|
+
final?: boolean;
|
|
34
|
+
maxY?: number;
|
|
35
|
+
};
|
|
36
|
+
type FlowDesc<T extends TransactionCommon> = {
|
|
37
|
+
steps: Array<Step<T>>;
|
|
38
|
+
fallback?: (arg0: DeviceActionArg<T, State<T>>) => Step<T> | null | undefined;
|
|
39
|
+
};
|
|
40
|
+
export declare function deviceActionFlow<T extends TransactionCommon>(description: FlowDesc<T>): DeviceAction<T, State<T>>;
|
|
41
|
+
type DeviceAmountFormatOptions = {
|
|
42
|
+
postfixCode: boolean;
|
|
43
|
+
forceFloating: boolean;
|
|
44
|
+
hideCode: boolean;
|
|
45
|
+
showAllDigits: boolean;
|
|
46
|
+
};
|
|
47
|
+
export declare function formatDeviceAmount(currency: CryptoCurrency | TokenCurrency, value: BigNumber, options?: Partial<DeviceAmountFormatOptions>): string;
|
|
48
|
+
export declare function expectSiblingsHaveSpendablePartGreaterThan(siblings: Account[], threshold: number): void;
|
|
49
|
+
export declare const genericTestDestination: <T>({ destination, operation, destinationBeforeTransaction, sendingOperation, }: TransactionDestinationTestInput<T>) => void;
|
|
50
|
+
//# sourceMappingURL=specs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../src/bot/specs.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,OAAO,EAAE,CAAC;AAKnB,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,SAAI,GAAG,OAAO,CAyBzE;AAED,KAAK,KAAK,CAAC,CAAC,SAAS,iBAAiB,IAAI;IACxC,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,KAAK,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,oBAAY,cAAc;IACxB,IAAI,OAAO;IACX,KAAK,OAAO;IACZ,IAAI,SAAS;CACd;AAED,KAAK,IAAI,CAAC,CAAC,SAAS,iBAAiB,IAAI;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAClC,GAAG,EAAE,KAAK,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,KACC,MAAM,CAAC;IACZ,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC;IAExB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,KAAK,QAAQ,CAAC,CAAC,SAAS,iBAAiB,IAAI;IAC3C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CAC/E,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,EAC1D,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,GACvB,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CA0F3B;AAED,KAAK,yBAAyB,GAAG;IAE/B,WAAW,EAAE,OAAO,CAAC;IAErB,aAAa,EAAE,OAAO,CAAC;IAEvB,QAAQ,EAAE,OAAO,CAAC;IAElB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AASF,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,GAAG,aAAa,EACxC,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,OAAO,CAAC,yBAAyB,CAAwB,GACjE,MAAM,CAiBR;AAKD,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB,IAAI,CAWN;AAED,eAAO,MAAM,sBAAsB,0HAKK,IAgBvC,CAAC"}
|