@andrewkimjoseph/celina-sdk 0.9.7 → 0.9.9
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/build/analytics/mcp-tool-events.js +2 -0
- package/build/analytics/mcp-tool-events.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/services/gooddollar.service.d.ts +16 -2
- package/build/services/gooddollar.service.js +54 -31
- package/build/services/gooddollar.service.js.map +1 -1
- package/build/src/a2a/agent-card.d.ts +37 -0
- package/build/src/a2a/agent-card.js +46 -0
- package/build/src/a2a/agent-card.js.map +1 -0
- package/build/src/a2a/index.d.ts +2 -0
- package/build/src/a2a/index.js +3 -0
- package/build/src/a2a/index.js.map +1 -0
- package/build/src/a2a/skills.d.ts +18 -0
- package/build/src/a2a/skills.js +101 -0
- package/build/src/a2a/skills.js.map +1 -0
- package/build/src/abis/aave-pool.d.ts +37 -0
- package/build/src/abis/aave-pool.js +26 -0
- package/build/src/abis/aave-pool.js.map +1 -0
- package/build/src/abis/accounts.d.ts +13 -0
- package/build/src/abis/accounts.js +10 -0
- package/build/src/abis/accounts.js.map +1 -0
- package/build/src/abis/election.d.ts +124 -0
- package/build/src/abis/election.js +88 -0
- package/build/src/abis/election.js.map +1 -0
- package/build/src/abis/gooddollar-broker.d.ts +77 -0
- package/build/src/abis/gooddollar-broker.js +44 -0
- package/build/src/abis/gooddollar-broker.js.map +1 -0
- package/build/src/abis/gooddollar-identity.d.ts +85 -0
- package/build/src/abis/gooddollar-identity.js +52 -0
- package/build/src/abis/gooddollar-identity.js.map +1 -0
- package/build/src/abis/governance.d.ts +86 -0
- package/build/src/abis/governance.js +68 -0
- package/build/src/abis/governance.js.map +1 -0
- package/build/src/abis/locked-gold.d.ts +10 -0
- package/build/src/abis/locked-gold.js +10 -0
- package/build/src/abis/locked-gold.js.map +1 -0
- package/build/src/abis/nft.d.ts +107 -0
- package/build/src/abis/nft.js +75 -0
- package/build/src/abis/nft.js.map +1 -0
- package/build/src/abis/permit2.d.ts +43 -0
- package/build/src/abis/permit2.js +30 -0
- package/build/src/abis/permit2.js.map +1 -0
- package/build/src/abis/self-registry.d.ts +194 -0
- package/build/src/abis/self-registry.js +120 -0
- package/build/src/abis/self-registry.js.map +1 -0
- package/build/src/abis/ubi-scheme.d.ts +91 -0
- package/build/src/abis/ubi-scheme.js +66 -0
- package/build/src/abis/ubi-scheme.js.map +1 -0
- package/build/src/abis/uniswap-state-view.d.ts +34 -0
- package/build/src/abis/uniswap-state-view.js +22 -0
- package/build/src/abis/uniswap-state-view.js.map +1 -0
- package/build/src/abis/uniswap-v4-quoter.d.ts +86 -0
- package/build/src/abis/uniswap-v4-quoter.js +64 -0
- package/build/src/abis/uniswap-v4-quoter.js.map +1 -0
- package/build/src/abis/universal-router.d.ts +16 -0
- package/build/src/abis/universal-router.js +14 -0
- package/build/src/abis/universal-router.js.map +1 -0
- package/build/src/abis/validators-minimal.d.ts +65 -0
- package/build/src/abis/validators-minimal.js +39 -0
- package/build/src/abis/validators-minimal.js.map +1 -0
- package/build/src/analytics/amplitude.d.ts +11 -0
- package/build/src/analytics/amplitude.js +76 -0
- package/build/src/analytics/amplitude.js.map +1 -0
- package/build/src/analytics/config.d.ts +7 -0
- package/build/src/analytics/config.js +28 -0
- package/build/src/analytics/config.js.map +1 -0
- package/build/src/analytics/consumer-package.d.ts +9 -0
- package/build/src/analytics/consumer-package.js +143 -0
- package/build/src/analytics/consumer-package.js.map +1 -0
- package/build/src/analytics/mcp-tool-events.d.ts +5 -0
- package/build/src/analytics/mcp-tool-events.js +53 -0
- package/build/src/analytics/mcp-tool-events.js.map +1 -0
- package/build/src/analytics/wallet-context.d.ts +11 -0
- package/build/src/analytics/wallet-context.js +81 -0
- package/build/src/analytics/wallet-context.js.map +1 -0
- package/build/src/analytics/wallet-extract.d.ts +9 -0
- package/build/src/analytics/wallet-extract.js +21 -0
- package/build/src/analytics/wallet-extract.js.map +1 -0
- package/build/src/analytics/wrap-service.d.ts +5 -0
- package/build/src/analytics/wrap-service.js +38 -0
- package/build/src/analytics/wrap-service.js.map +1 -0
- package/build/src/clients/celo-client.d.ts +17 -0
- package/build/src/clients/celo-client.js +28 -0
- package/build/src/clients/celo-client.js.map +1 -0
- package/build/src/clients/ens-client.d.ts +17 -0
- package/build/src/clients/ens-client.js +30 -0
- package/build/src/clients/ens-client.js.map +1 -0
- package/build/src/clients/mento-sdk.d.ts +2 -0
- package/build/src/clients/mento-sdk.js +9 -0
- package/build/src/clients/mento-sdk.js.map +1 -0
- package/build/src/clients/self-api.d.ts +82 -0
- package/build/src/clients/self-api.js +242 -0
- package/build/src/clients/self-api.js.map +1 -0
- package/build/src/clients/uniswap-sdk.d.ts +4 -0
- package/build/src/clients/uniswap-sdk.js +13 -0
- package/build/src/clients/uniswap-sdk.js.map +1 -0
- package/build/src/config/aave.d.ts +17 -0
- package/build/src/config/aave.js +77 -0
- package/build/src/config/aave.js.map +1 -0
- package/build/src/config/celina-tag.d.ts +4 -0
- package/build/src/config/celina-tag.js +13 -0
- package/build/src/config/celina-tag.js.map +1 -0
- package/build/src/config/celo-core-contracts.d.ts +8 -0
- package/build/src/config/celo-core-contracts.js +9 -0
- package/build/src/config/celo-core-contracts.js.map +1 -0
- package/build/src/config/chains.d.ts +937 -0
- package/build/src/config/chains.js +319 -0
- package/build/src/config/chains.js.map +1 -0
- package/build/src/config/gooddollar.d.ts +16 -0
- package/build/src/config/gooddollar.js +24 -0
- package/build/src/config/gooddollar.js.map +1 -0
- package/build/src/config/sdk-config.d.ts +33 -0
- package/build/src/config/sdk-config.js +31 -0
- package/build/src/config/sdk-config.js.map +1 -0
- package/build/src/config/self.d.ts +22 -0
- package/build/src/config/self.js +27 -0
- package/build/src/config/self.js.map +1 -0
- package/build/src/config/uniswap.d.ts +42 -0
- package/build/src/config/uniswap.js +76 -0
- package/build/src/config/uniswap.js.map +1 -0
- package/build/src/index.d.ts +90 -0
- package/build/src/index.js +65 -0
- package/build/src/index.js.map +1 -0
- package/build/src/oasf/index.d.ts +2 -0
- package/build/src/oasf/index.js +3 -0
- package/build/src/oasf/index.js.map +1 -0
- package/build/src/oasf/record.d.ts +39 -0
- package/build/src/oasf/record.js +35 -0
- package/build/src/oasf/record.js.map +1 -0
- package/build/src/oasf/taxonomy.d.ts +19 -0
- package/build/src/oasf/taxonomy.js +46 -0
- package/build/src/oasf/taxonomy.js.map +1 -0
- package/build/src/services/aave.service.d.ts +58 -0
- package/build/src/services/aave.service.js +210 -0
- package/build/src/services/aave.service.js.map +1 -0
- package/build/src/services/account.service.d.ts +22 -0
- package/build/src/services/account.service.js +29 -0
- package/build/src/services/account.service.js.map +1 -0
- package/build/src/services/blockchain.service.d.ts +107 -0
- package/build/src/services/blockchain.service.js +151 -0
- package/build/src/services/blockchain.service.js.map +1 -0
- package/build/src/services/contract.service.d.ts +78 -0
- package/build/src/services/contract.service.js +117 -0
- package/build/src/services/contract.service.js.map +1 -0
- package/build/src/services/ens.service.d.ts +44 -0
- package/build/src/services/ens.service.js +92 -0
- package/build/src/services/ens.service.js.map +1 -0
- package/build/src/services/gooddollar.service.d.ts +183 -0
- package/build/src/services/gooddollar.service.js +675 -0
- package/build/src/services/gooddollar.service.js.map +1 -0
- package/build/src/services/governance.service.d.ts +96 -0
- package/build/src/services/governance.service.js +255 -0
- package/build/src/services/governance.service.js.map +1 -0
- package/build/src/services/mento-fx.service.d.ts +80 -0
- package/build/src/services/mento-fx.service.js +319 -0
- package/build/src/services/mento-fx.service.js.map +1 -0
- package/build/src/services/nft.service.d.ts +58 -0
- package/build/src/services/nft.service.js +222 -0
- package/build/src/services/nft.service.js.map +1 -0
- package/build/src/services/self-session-store.d.ts +19 -0
- package/build/src/services/self-session-store.js +28 -0
- package/build/src/services/self-session-store.js.map +1 -0
- package/build/src/services/self.service.d.ts +241 -0
- package/build/src/services/self.service.js +699 -0
- package/build/src/services/self.service.js.map +1 -0
- package/build/src/services/staking.service.d.ts +140 -0
- package/build/src/services/staking.service.js +444 -0
- package/build/src/services/staking.service.js.map +1 -0
- package/build/src/services/token.service.d.ts +110 -0
- package/build/src/services/token.service.js +189 -0
- package/build/src/services/token.service.js.map +1 -0
- package/build/src/services/transaction.service.d.ts +68 -0
- package/build/src/services/transaction.service.js +198 -0
- package/build/src/services/transaction.service.js.map +1 -0
- package/build/src/services/uniswap-path-router.d.ts +40 -0
- package/build/src/services/uniswap-path-router.js +168 -0
- package/build/src/services/uniswap-path-router.js.map +1 -0
- package/build/src/services/uniswap-pool-discovery.d.ts +55 -0
- package/build/src/services/uniswap-pool-discovery.js +198 -0
- package/build/src/services/uniswap-pool-discovery.js.map +1 -0
- package/build/src/services/uniswap.service.d.ts +82 -0
- package/build/src/services/uniswap.service.js +352 -0
- package/build/src/services/uniswap.service.js.map +1 -0
- package/build/src/simulation/index.d.ts +5 -0
- package/build/src/simulation/index.js +2 -0
- package/build/src/simulation/index.js.map +1 -0
- package/build/src/simulation/simulate-prepared-step.d.ts +17 -0
- package/build/src/simulation/simulate-prepared-step.js +42 -0
- package/build/src/simulation/simulate-prepared-step.js.map +1 -0
- package/build/src/tools/catalog.d.ts +11 -0
- package/build/src/tools/catalog.js +43 -0
- package/build/src/tools/catalog.js.map +1 -0
- package/build/src/tools/domains/aave.d.ts +2 -0
- package/build/src/tools/domains/aave.js +115 -0
- package/build/src/tools/domains/aave.js.map +1 -0
- package/build/src/tools/domains/blockchain.d.ts +2 -0
- package/build/src/tools/domains/blockchain.js +86 -0
- package/build/src/tools/domains/blockchain.js.map +1 -0
- package/build/src/tools/domains/browser.d.ts +2 -0
- package/build/src/tools/domains/browser.js +45 -0
- package/build/src/tools/domains/browser.js.map +1 -0
- package/build/src/tools/domains/contract.d.ts +2 -0
- package/build/src/tools/domains/contract.js +67 -0
- package/build/src/tools/domains/contract.js.map +1 -0
- package/build/src/tools/domains/ens.d.ts +2 -0
- package/build/src/tools/domains/ens.js +16 -0
- package/build/src/tools/domains/ens.js.map +1 -0
- package/build/src/tools/domains/gooddollar.d.ts +2 -0
- package/build/src/tools/domains/gooddollar.js +171 -0
- package/build/src/tools/domains/gooddollar.js.map +1 -0
- package/build/src/tools/domains/governance.d.ts +2 -0
- package/build/src/tools/domains/governance.js +41 -0
- package/build/src/tools/domains/governance.js.map +1 -0
- package/build/src/tools/domains/index.d.ts +1 -0
- package/build/src/tools/domains/index.js +31 -0
- package/build/src/tools/domains/index.js.map +1 -0
- package/build/src/tools/domains/mento-fx.d.ts +2 -0
- package/build/src/tools/domains/mento-fx.js +67 -0
- package/build/src/tools/domains/mento-fx.js.map +1 -0
- package/build/src/tools/domains/nft.d.ts +2 -0
- package/build/src/tools/domains/nft.js +38 -0
- package/build/src/tools/domains/nft.js.map +1 -0
- package/build/src/tools/domains/self.d.ts +2 -0
- package/build/src/tools/domains/self.js +187 -0
- package/build/src/tools/domains/self.js.map +1 -0
- package/build/src/tools/domains/staking.d.ts +2 -0
- package/build/src/tools/domains/staking.js +74 -0
- package/build/src/tools/domains/staking.js.map +1 -0
- package/build/src/tools/domains/token.d.ts +2 -0
- package/build/src/tools/domains/token.js +74 -0
- package/build/src/tools/domains/token.js.map +1 -0
- package/build/src/tools/domains/transaction.d.ts +2 -0
- package/build/src/tools/domains/transaction.js +120 -0
- package/build/src/tools/domains/transaction.js.map +1 -0
- package/build/src/tools/domains/uniswap.d.ts +2 -0
- package/build/src/tools/domains/uniswap.js +67 -0
- package/build/src/tools/domains/uniswap.js.map +1 -0
- package/build/src/tools/filter.d.ts +2 -0
- package/build/src/tools/filter.js +50 -0
- package/build/src/tools/filter.js.map +1 -0
- package/build/src/tools/index.d.ts +7 -0
- package/build/src/tools/index.js +7 -0
- package/build/src/tools/index.js.map +1 -0
- package/build/src/tools/schemas/common.d.ts +165 -0
- package/build/src/tools/schemas/common.js +207 -0
- package/build/src/tools/schemas/common.js.map +1 -0
- package/build/src/tools/schemas/wallet-params.d.ts +9 -0
- package/build/src/tools/schemas/wallet-params.js +52 -0
- package/build/src/tools/schemas/wallet-params.js.map +1 -0
- package/build/src/tools/swap-routing.d.ts +25 -0
- package/build/src/tools/swap-routing.js +174 -0
- package/build/src/tools/swap-routing.js.map +1 -0
- package/build/src/tools/types.d.ts +124 -0
- package/build/src/tools/types.js +2 -0
- package/build/src/tools/types.js.map +1 -0
- package/build/src/tools/utils/normalize-token.d.ts +2 -0
- package/build/src/tools/utils/normalize-token.js +12 -0
- package/build/src/tools/utils/normalize-token.js.map +1 -0
- package/build/src/tools/utils/wallet.d.ts +4 -0
- package/build/src/tools/utils/wallet.js +8 -0
- package/build/src/tools/utils/wallet.js.map +1 -0
- package/build/src/tools/website-sync.d.ts +28 -0
- package/build/src/tools/website-sync.js +165 -0
- package/build/src/tools/website-sync.js.map +1 -0
- package/build/src/types/prepared.d.ts +28 -0
- package/build/src/types/prepared.js +12 -0
- package/build/src/types/prepared.js.map +1 -0
- package/build/src/utils/celo-format.d.ts +6 -0
- package/build/src/utils/celo-format.js +17 -0
- package/build/src/utils/celo-format.js.map +1 -0
- package/build/src/utils/erc20-allowance-storage.d.ts +20 -0
- package/build/src/utils/erc20-allowance-storage.js +64 -0
- package/build/src/utils/erc20-allowance-storage.js.map +1 -0
- package/build/src/utils/format-date.d.ts +2 -0
- package/build/src/utils/format-date.js +13 -0
- package/build/src/utils/format-date.js.map +1 -0
- package/build/src/utils/format-duration.d.ts +2 -0
- package/build/src/utils/format-duration.js +17 -0
- package/build/src/utils/format-duration.js.map +1 -0
- package/build/src/utils/format-unix-datetime.d.ts +4 -0
- package/build/src/utils/format-unix-datetime.js +18 -0
- package/build/src/utils/format-unix-datetime.js.map +1 -0
- package/build/src/utils/gooddollar-ubi-period.d.ts +23 -0
- package/build/src/utils/gooddollar-ubi-period.js +23 -0
- package/build/src/utils/gooddollar-ubi-period.js.map +1 -0
- package/build/src/utils/normalize-address.d.ts +7 -0
- package/build/src/utils/normalize-address.js +16 -0
- package/build/src/utils/normalize-address.js.map +1 -0
- package/build/src/utils/self-format.d.ts +28 -0
- package/build/src/utils/self-format.js +79 -0
- package/build/src/utils/self-format.js.map +1 -0
- package/build/src/utils/self-signing.d.ts +4 -0
- package/build/src/utils/self-signing.js +38 -0
- package/build/src/utils/self-signing.js.map +1 -0
- package/build/src/utils/transaction-errors.d.ts +3 -0
- package/build/src/utils/transaction-errors.js +17 -0
- package/build/src/utils/transaction-errors.js.map +1 -0
- package/build/tests/catalog/domains/blockchain.d.ts +2 -0
- package/build/tests/catalog/domains/blockchain.js +127 -0
- package/build/tests/catalog/domains/blockchain.js.map +1 -0
- package/build/tests/catalog/domains/chain-ext.d.ts +5 -0
- package/build/tests/catalog/domains/chain-ext.js +207 -0
- package/build/tests/catalog/domains/chain-ext.js.map +1 -0
- package/build/tests/catalog/domains/defi.d.ts +6 -0
- package/build/tests/catalog/domains/defi.js +581 -0
- package/build/tests/catalog/domains/defi.js.map +1 -0
- package/build/tests/catalog/domains/self.d.ts +2 -0
- package/build/tests/catalog/domains/self.js +208 -0
- package/build/tests/catalog/domains/self.js.map +1 -0
- package/build/tests/catalog/domains/token.d.ts +2 -0
- package/build/tests/catalog/domains/token.js +70 -0
- package/build/tests/catalog/domains/token.js.map +1 -0
- package/build/tests/catalog/domains/transaction.d.ts +2 -0
- package/build/tests/catalog/domains/transaction.js +96 -0
- package/build/tests/catalog/domains/transaction.js.map +1 -0
- package/build/tests/catalog/index.d.ts +2 -0
- package/build/tests/catalog/index.js +2 -0
- package/build/tests/catalog/index.js.map +1 -0
- package/build/tests/catalog/operations.d.ts +12 -0
- package/build/tests/catalog/operations.js +29 -0
- package/build/tests/catalog/operations.js.map +1 -0
- package/build/tests/catalog/types.d.ts +24 -0
- package/build/tests/catalog/types.js +2 -0
- package/build/tests/catalog/types.js.map +1 -0
- package/build/tests/fixtures/mainnet.d.ts +54 -0
- package/build/tests/fixtures/mainnet.js +53 -0
- package/build/tests/fixtures/mainnet.js.map +1 -0
- package/build/tests/helpers/assert.d.ts +4 -0
- package/build/tests/helpers/assert.js +24 -0
- package/build/tests/helpers/assert.js.map +1 -0
- package/build/tests/helpers/env.d.ts +11 -0
- package/build/tests/helpers/env.js +28 -0
- package/build/tests/helpers/env.js.map +1 -0
- package/build/tests/helpers/gating.d.ts +3 -0
- package/build/tests/helpers/gating.js +23 -0
- package/build/tests/helpers/gating.js.map +1 -0
- package/build/tests/testing-entry.d.ts +6 -0
- package/build/tests/testing-entry.js +6 -0
- package/build/tests/testing-entry.js.map +1 -0
- package/build/tools/domains/browser.js +4 -1
- package/build/tools/domains/browser.js.map +1 -1
- package/build/tools/domains/gooddollar.js +11 -7
- package/build/tools/domains/gooddollar.js.map +1 -1
- package/build/tools/schemas/common.d.ts +7 -0
- package/build/tools/schemas/common.js +9 -1
- package/build/tools/schemas/common.js.map +1 -1
- package/build/tools/swap-routing.d.ts +1 -0
- package/build/tools/swap-routing.js +2 -1
- package/build/tools/swap-routing.js.map +1 -1
- package/package.json +5 -9
- package/tests/README.md +0 -78
- package/tests/catalog/domains/blockchain.ts +0 -133
- package/tests/catalog/domains/chain-ext.ts +0 -219
- package/tests/catalog/domains/defi.ts +0 -532
- package/tests/catalog/domains/self.ts +0 -220
- package/tests/catalog/domains/token.ts +0 -74
- package/tests/catalog/domains/transaction.ts +0 -111
- package/tests/catalog/index.ts +0 -7
- package/tests/catalog/operations.ts +0 -53
- package/tests/catalog/types.ts +0 -27
- package/tests/fixtures/mainnet.ts +0 -93
- package/tests/helpers/assert.ts +0 -30
- package/tests/helpers/env.ts +0 -38
- package/tests/helpers/gating.ts +0 -36
- package/tests/testing-entry.ts +0 -27
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ERC-20 allowance storage slot helpers for gas simulation with state overrides.
|
|
3
|
+
* Used when estimating swap/send gas before on-chain approval is confirmed.
|
|
4
|
+
*/
|
|
5
|
+
import { type Address, type Hex, type StateOverride } from "viem";
|
|
6
|
+
/** Common base slots for ERC-20 allowance mappings (Mento stablecoins use 7). */
|
|
7
|
+
declare const ALLOWANCE_MAPPING_SLOTS: readonly [7n, 1n, 0n, 2n, 3n, 4n, 5n, 6n, 8n, 9n, 10n, 11n, 12n, 13n, 14n, 15n, 16n, 17n, 18n, 19n, 20n, 51n];
|
|
8
|
+
/**
|
|
9
|
+
* Compute the storage slot for `allowance(owner, spender)` given the mapping base slot.
|
|
10
|
+
*/
|
|
11
|
+
export declare function erc20AllowanceStorageSlot(owner: Address, spender: Address, mappingSlot: bigint): Hex;
|
|
12
|
+
/**
|
|
13
|
+
* viem `stateOverride` that sets ERC-20 allowance for gas estimation.
|
|
14
|
+
* @param mappingSlot - Allowance mapping slot in the token contract (try `ALLOWANCE_MAPPING_SLOTS`)
|
|
15
|
+
*/
|
|
16
|
+
export declare function erc20AllowanceStateOverride(token: Address, owner: Address, spender: Address, amount: bigint, mappingSlot: bigint): StateOverride;
|
|
17
|
+
/** True when an estimateGas error likely means allowance/transfer would revert. */
|
|
18
|
+
export declare function isLikelyTransferFailed(error: unknown): boolean;
|
|
19
|
+
/** Mapping base slots to probe when simulating ERC-20 allowance (exported for tests). */
|
|
20
|
+
export { ALLOWANCE_MAPPING_SLOTS };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ERC-20 allowance storage slot helpers for gas simulation with state overrides.
|
|
3
|
+
* Used when estimating swap/send gas before on-chain approval is confirmed.
|
|
4
|
+
*/
|
|
5
|
+
import { encodeAbiParameters, keccak256, pad, parseAbiParameters, toHex, } from "viem";
|
|
6
|
+
/** Common base slots for ERC-20 allowance mappings (Mento stablecoins use 7). */
|
|
7
|
+
const ALLOWANCE_MAPPING_SLOTS = [
|
|
8
|
+
7n,
|
|
9
|
+
1n,
|
|
10
|
+
0n,
|
|
11
|
+
2n,
|
|
12
|
+
3n,
|
|
13
|
+
4n,
|
|
14
|
+
5n,
|
|
15
|
+
6n,
|
|
16
|
+
8n,
|
|
17
|
+
9n,
|
|
18
|
+
10n,
|
|
19
|
+
11n,
|
|
20
|
+
12n,
|
|
21
|
+
13n,
|
|
22
|
+
14n,
|
|
23
|
+
15n,
|
|
24
|
+
16n,
|
|
25
|
+
17n,
|
|
26
|
+
18n,
|
|
27
|
+
19n,
|
|
28
|
+
20n,
|
|
29
|
+
51n,
|
|
30
|
+
];
|
|
31
|
+
/**
|
|
32
|
+
* Compute the storage slot for `allowance(owner, spender)` given the mapping base slot.
|
|
33
|
+
*/
|
|
34
|
+
export function erc20AllowanceStorageSlot(owner, spender, mappingSlot) {
|
|
35
|
+
const ownerSlot = keccak256(encodeAbiParameters(parseAbiParameters("address, uint256"), [owner, mappingSlot]));
|
|
36
|
+
return keccak256(encodeAbiParameters(parseAbiParameters("address, bytes32"), [spender, ownerSlot]));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* viem `stateOverride` that sets ERC-20 allowance for gas estimation.
|
|
40
|
+
* @param mappingSlot - Allowance mapping slot in the token contract (try `ALLOWANCE_MAPPING_SLOTS`)
|
|
41
|
+
*/
|
|
42
|
+
export function erc20AllowanceStateOverride(token, owner, spender, amount, mappingSlot) {
|
|
43
|
+
return [
|
|
44
|
+
{
|
|
45
|
+
address: token,
|
|
46
|
+
stateDiff: [
|
|
47
|
+
{
|
|
48
|
+
slot: erc20AllowanceStorageSlot(owner, spender, mappingSlot),
|
|
49
|
+
value: pad(toHex(amount)),
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
/** True when an estimateGas error likely means allowance/transfer would revert. */
|
|
56
|
+
export function isLikelyTransferFailed(error) {
|
|
57
|
+
const message = error instanceof Error
|
|
58
|
+
? `${error.message} ${error.cause instanceof Error ? error.cause.message : ""}`
|
|
59
|
+
: String(error);
|
|
60
|
+
return /transfer failed/i.test(message);
|
|
61
|
+
}
|
|
62
|
+
/** Mapping base slots to probe when simulating ERC-20 allowance (exported for tests). */
|
|
63
|
+
export { ALLOWANCE_MAPPING_SLOTS };
|
|
64
|
+
//# sourceMappingURL=erc20-allowance-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erc20-allowance-storage.js","sourceRoot":"","sources":["../../../src/utils/erc20-allowance-storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,GAAG,EACH,kBAAkB,EAClB,KAAK,GAIN,MAAM,MAAM,CAAC;AAEd,iFAAiF;AACjF,MAAM,uBAAuB,GAAG;IAC9B,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACK,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAc,EACd,OAAgB,EAChB,WAAmB;IAEnB,MAAM,SAAS,GAAG,SAAS,CACzB,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAClF,CAAC;IACF,OAAO,SAAS,CACd,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAClF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAc,EACd,KAAc,EACd,OAAgB,EAChB,MAAc,EACd,WAAmB;IAEnB,OAAO;QACL;YACE,OAAO,EAAE,KAAK;YACd,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC;oBAC5D,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBAC1B;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,MAAM,OAAO,GACX,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/E,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,yFAAyF;AACzF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Format a Unix timestamp (seconds) as a UTC long date string. */
|
|
2
|
+
export function formatUnixDate(unixSeconds) {
|
|
3
|
+
const date = new Date(Number(unixSeconds) * 1000);
|
|
4
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
5
|
+
month: "long",
|
|
6
|
+
day: "numeric",
|
|
7
|
+
year: "numeric",
|
|
8
|
+
timeZone: "UTC",
|
|
9
|
+
})
|
|
10
|
+
.format(date)
|
|
11
|
+
.replace(",", "");
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=format-date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../../src/utils/format-date.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,UAAU,cAAc,CAAC,WAA4B;IACzD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;IAClD,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACtC,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;KAChB,CAAC;SACC,MAAM,CAAC,IAAI,CAAC;SACZ,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Format a duration in seconds as a short human-readable string (hours and minutes). */
|
|
2
|
+
export function formatDuration(seconds) {
|
|
3
|
+
const total = Number(seconds);
|
|
4
|
+
if (total <= 0)
|
|
5
|
+
return "0 minutes";
|
|
6
|
+
const hours = Math.floor(total / 3600);
|
|
7
|
+
const minutes = Math.floor((total % 3600) / 60);
|
|
8
|
+
const parts = [];
|
|
9
|
+
if (hours > 0) {
|
|
10
|
+
parts.push(`${hours} hour${hours === 1 ? "" : "s"}`);
|
|
11
|
+
}
|
|
12
|
+
if (minutes > 0 || hours === 0) {
|
|
13
|
+
parts.push(`${minutes} minute${minutes === 1 ? "" : "s"}`);
|
|
14
|
+
}
|
|
15
|
+
return parts.join(" ");
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=format-duration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-duration.js","sourceRoot":"","sources":["../../../src/utils/format-duration.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,UAAU,cAAc,CAAC,OAAwB;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC;IAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Format a Unix timestamp (seconds) as an ISO 8601 UTC string. */
|
|
2
|
+
export declare function formatUnixIso(unixSeconds: number | bigint): string;
|
|
3
|
+
/** Format a Unix timestamp for display in reason strings (UTC date and time). */
|
|
4
|
+
export declare function formatUnixDateTimeUtc(unixSeconds: number | bigint): string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Format a Unix timestamp (seconds) as an ISO 8601 UTC string. */
|
|
2
|
+
export function formatUnixIso(unixSeconds) {
|
|
3
|
+
return new Date(Number(unixSeconds) * 1000).toISOString();
|
|
4
|
+
}
|
|
5
|
+
/** Format a Unix timestamp for display in reason strings (UTC date and time). */
|
|
6
|
+
export function formatUnixDateTimeUtc(unixSeconds) {
|
|
7
|
+
const date = new Date(Number(unixSeconds) * 1000);
|
|
8
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
9
|
+
month: "long",
|
|
10
|
+
day: "numeric",
|
|
11
|
+
year: "numeric",
|
|
12
|
+
hour: "numeric",
|
|
13
|
+
minute: "2-digit",
|
|
14
|
+
timeZone: "UTC",
|
|
15
|
+
timeZoneName: "short",
|
|
16
|
+
}).format(date);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=format-unix-datetime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-unix-datetime.js","sourceRoot":"","sources":["../../../src/utils/format-unix-datetime.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,WAA4B;IACxD,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAC5D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,qBAAqB,CAAC,WAA4B;IAChE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;IAClD,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACtC,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,OAAO;KACtB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Inputs for UBISchemeV2 period/cooldown eligibility (mirrors on-chain claim()). */
|
|
2
|
+
export type UbiPeriodEligibilityInput = {
|
|
3
|
+
contractDay: bigint;
|
|
4
|
+
computedDay: bigint;
|
|
5
|
+
claimedForOnChainDay: boolean;
|
|
6
|
+
hasRoot: boolean;
|
|
7
|
+
schemePaused: boolean;
|
|
8
|
+
schemeStarted: boolean;
|
|
9
|
+
isWhitelisted: boolean;
|
|
10
|
+
claimable: bigint;
|
|
11
|
+
};
|
|
12
|
+
export type UbiPeriodEligibilityState = {
|
|
13
|
+
awaitingContractDayRoll: boolean;
|
|
14
|
+
alreadyClaimedToday: boolean;
|
|
15
|
+
inClaimCooldown: boolean;
|
|
16
|
+
isEligibleToClaim: boolean;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Resolve UBI claim eligibility from period day and on-chain hasClaimed.
|
|
20
|
+
* Between UTC noon and the first claim that calls setDay(), computedDay exceeds
|
|
21
|
+
* contractDay while hasClaimed still reflects the previous on-chain day.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveUbiPeriodEligibility(input: UbiPeriodEligibilityInput): UbiPeriodEligibilityState;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve UBI claim eligibility from period day and on-chain hasClaimed.
|
|
3
|
+
* Between UTC noon and the first claim that calls setDay(), computedDay exceeds
|
|
4
|
+
* contractDay while hasClaimed still reflects the previous on-chain day.
|
|
5
|
+
*/
|
|
6
|
+
export function resolveUbiPeriodEligibility(input) {
|
|
7
|
+
const awaitingContractDayRoll = input.computedDay > input.contractDay;
|
|
8
|
+
const alreadyClaimedToday = input.claimedForOnChainDay && !awaitingContractDayRoll;
|
|
9
|
+
const inClaimCooldown = input.hasRoot && alreadyClaimedToday;
|
|
10
|
+
const isEligibleToClaim = input.hasRoot &&
|
|
11
|
+
!input.schemePaused &&
|
|
12
|
+
input.schemeStarted &&
|
|
13
|
+
input.isWhitelisted &&
|
|
14
|
+
!inClaimCooldown &&
|
|
15
|
+
(input.claimable > 0n || awaitingContractDayRoll);
|
|
16
|
+
return {
|
|
17
|
+
awaitingContractDayRoll,
|
|
18
|
+
alreadyClaimedToday,
|
|
19
|
+
inClaimCooldown,
|
|
20
|
+
isEligibleToClaim,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=gooddollar-ubi-period.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gooddollar-ubi-period.js","sourceRoot":"","sources":["../../../src/utils/gooddollar-ubi-period.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAgC;IAEhC,MAAM,uBAAuB,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACtE,MAAM,mBAAmB,GACvB,KAAK,CAAC,oBAAoB,IAAI,CAAC,uBAAuB,CAAC;IACzD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,IAAI,mBAAmB,CAAC;IAC7D,MAAM,iBAAiB,GACrB,KAAK,CAAC,OAAO;QACb,CAAC,KAAK,CAAC,YAAY;QACnB,KAAK,CAAC,aAAa;QACnB,KAAK,CAAC,aAAa;QACnB,CAAC,eAAe;QAChB,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,IAAI,uBAAuB,CAAC,CAAC;IAEpD,OAAO;QACL,uBAAuB;QACvB,mBAAmB;QACnB,eAAe;QACf,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize a hex address to EIP-55 checksum form.
|
|
3
|
+
* @param address - Hex address string
|
|
4
|
+
* @param label - Used in error messages when invalid (default `"address"`)
|
|
5
|
+
* @throws When the string is not a valid hex address
|
|
6
|
+
*/
|
|
7
|
+
export declare function normalizeAddress(address: string, label?: string): `0x${string}`;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { getAddress } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* Normalize a hex address to EIP-55 checksum form.
|
|
4
|
+
* @param address - Hex address string
|
|
5
|
+
* @param label - Used in error messages when invalid (default `"address"`)
|
|
6
|
+
* @throws When the string is not a valid hex address
|
|
7
|
+
*/
|
|
8
|
+
export function normalizeAddress(address, label = "address") {
|
|
9
|
+
try {
|
|
10
|
+
return getAddress(address);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
throw new Error(`Invalid ${label}: ${address}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=normalize-address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-address.js","sourceRoot":"","sources":["../../../src/utils/normalize-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,KAAK,GAAG,SAAS;IAEjB,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface SelfSessionLinksInput {
|
|
2
|
+
sessionToken: string;
|
|
3
|
+
deepLink: string;
|
|
4
|
+
scanUrl?: string;
|
|
5
|
+
apiBase?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SelfSessionLinks {
|
|
8
|
+
qr_code_url: string;
|
|
9
|
+
deep_link: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function resolveSelfSessionLinks(input: SelfSessionLinksInput): SelfSessionLinks;
|
|
12
|
+
export declare function formatSelfSessionLinksDisplay(links: SelfSessionLinks): string;
|
|
13
|
+
export interface SelfCredentialLike {
|
|
14
|
+
nationality?: string;
|
|
15
|
+
olderThan?: bigint | number;
|
|
16
|
+
ofac?: boolean[];
|
|
17
|
+
}
|
|
18
|
+
export declare function formatCredentialsSummary(credentials?: SelfCredentialLike | null): string;
|
|
19
|
+
export declare function truncateBody(body: string, maxBytes?: number): {
|
|
20
|
+
body: string;
|
|
21
|
+
truncated: boolean;
|
|
22
|
+
};
|
|
23
|
+
export declare function formatAgentInfo(info: Record<string, unknown>): Record<string, unknown>;
|
|
24
|
+
export declare function proofExpiryFields(proofExpiresAtRaw: bigint): {
|
|
25
|
+
proof_expires_at: string | null;
|
|
26
|
+
days_until_expiry: number;
|
|
27
|
+
is_expiring_soon: boolean;
|
|
28
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { selfQrUrl } from "../clients/self-api.js";
|
|
2
|
+
import { SELF_PROOF_EXPIRING_SOON_DAYS } from "../config/self.js";
|
|
3
|
+
export function resolveSelfSessionLinks(input) {
|
|
4
|
+
const qr_code_url = input.scanUrl ?? selfQrUrl(input.sessionToken, input.apiBase);
|
|
5
|
+
const deep_link = input.deepLink.trim();
|
|
6
|
+
if (!qr_code_url) {
|
|
7
|
+
throw new Error("Self session is missing a QR code URL.");
|
|
8
|
+
}
|
|
9
|
+
if (!deep_link || deep_link === "undefined") {
|
|
10
|
+
throw new Error("Self session is missing a deep link.");
|
|
11
|
+
}
|
|
12
|
+
return { qr_code_url, deep_link };
|
|
13
|
+
}
|
|
14
|
+
export function formatSelfSessionLinksDisplay(links) {
|
|
15
|
+
return [
|
|
16
|
+
"Present BOTH links to the human (never omit one):",
|
|
17
|
+
"",
|
|
18
|
+
`QR code URL: ${links.qr_code_url}`,
|
|
19
|
+
`Deep link: ${links.deep_link}`,
|
|
20
|
+
].join("\n");
|
|
21
|
+
}
|
|
22
|
+
export function formatCredentialsSummary(credentials) {
|
|
23
|
+
if (!credentials) {
|
|
24
|
+
return "No credentials available";
|
|
25
|
+
}
|
|
26
|
+
const parts = ["Verified human"];
|
|
27
|
+
const age = Number(credentials.olderThan ?? 0);
|
|
28
|
+
if (age > 0) {
|
|
29
|
+
parts.push(`${age}+`);
|
|
30
|
+
}
|
|
31
|
+
if (credentials.ofac?.[0] === true) {
|
|
32
|
+
parts.push("OFAC clear");
|
|
33
|
+
}
|
|
34
|
+
if (credentials.nationality) {
|
|
35
|
+
parts.push(`nationality: ${credentials.nationality}`);
|
|
36
|
+
}
|
|
37
|
+
return parts.join(", ");
|
|
38
|
+
}
|
|
39
|
+
export function truncateBody(body, maxBytes = 10 * 1024) {
|
|
40
|
+
const encoded = new TextEncoder().encode(body);
|
|
41
|
+
if (encoded.byteLength <= maxBytes) {
|
|
42
|
+
return { body, truncated: false };
|
|
43
|
+
}
|
|
44
|
+
const truncated = new TextDecoder().decode(encoded.slice(0, maxBytes));
|
|
45
|
+
return {
|
|
46
|
+
body: truncated +
|
|
47
|
+
`\n\n[Truncated — original was ${encoded.byteLength} bytes, limit is ${maxBytes} bytes]`,
|
|
48
|
+
truncated: true,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function formatAgentInfo(info) {
|
|
52
|
+
const result = {};
|
|
53
|
+
for (const [key, value] of Object.entries(info)) {
|
|
54
|
+
result[key] =
|
|
55
|
+
typeof value === "bigint"
|
|
56
|
+
? Number(value)
|
|
57
|
+
: Array.isArray(value)
|
|
58
|
+
? value.map((item) => (typeof item === "bigint" ? Number(item) : item))
|
|
59
|
+
: value;
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
export function proofExpiryFields(proofExpiresAtRaw) {
|
|
64
|
+
const proofExpiresAtSecs = Number(proofExpiresAtRaw);
|
|
65
|
+
const proofExpiresAtISO = proofExpiresAtSecs > 0
|
|
66
|
+
? new Date(proofExpiresAtSecs * 1000).toISOString()
|
|
67
|
+
: null;
|
|
68
|
+
const now = Math.floor(Date.now() / 1000);
|
|
69
|
+
const daysUntilExpiry = proofExpiresAtSecs > 0
|
|
70
|
+
? Math.floor((proofExpiresAtSecs - now) / 86400)
|
|
71
|
+
: -1;
|
|
72
|
+
const isExpiringSoon = daysUntilExpiry >= 0 && daysUntilExpiry <= SELF_PROOF_EXPIRING_SOON_DAYS;
|
|
73
|
+
return {
|
|
74
|
+
proof_expires_at: proofExpiresAtISO,
|
|
75
|
+
days_until_expiry: daysUntilExpiry,
|
|
76
|
+
is_expiring_soon: isExpiringSoon,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=self-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-format.js","sourceRoot":"","sources":["../../../src/utils/self-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type Hex } from "viem";
|
|
2
|
+
export declare function canonicalizeSigningUrl(url: string): string;
|
|
3
|
+
export declare function computeBodyHash(body?: string | null): Hex;
|
|
4
|
+
export declare function computeSigningMessage(timestamp: string, method: string, url: string, body?: string | null): Hex;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { keccak256, toBytes } from "viem";
|
|
2
|
+
export function canonicalizeSigningUrl(url) {
|
|
3
|
+
if (!url) {
|
|
4
|
+
return "";
|
|
5
|
+
}
|
|
6
|
+
if (url.startsWith("http://") || url.startsWith("https://")) {
|
|
7
|
+
try {
|
|
8
|
+
const parsed = new URL(url);
|
|
9
|
+
return (parsed.pathname || "/") + parsed.search;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return url;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (url.startsWith("?")) {
|
|
16
|
+
return `/${url}`;
|
|
17
|
+
}
|
|
18
|
+
if (url.startsWith("/")) {
|
|
19
|
+
return url;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const parsed = new URL(url, "http://self.local");
|
|
23
|
+
return (parsed.pathname || "/") + parsed.search;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return url;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function computeBodyHash(body) {
|
|
30
|
+
const payload = body ?? "";
|
|
31
|
+
return keccak256(toBytes(payload));
|
|
32
|
+
}
|
|
33
|
+
export function computeSigningMessage(timestamp, method, url, body) {
|
|
34
|
+
const canonicalUrl = canonicalizeSigningUrl(url);
|
|
35
|
+
const bodyHash = computeBodyHash(body);
|
|
36
|
+
return keccak256(toBytes(timestamp + method.toUpperCase() + canonicalUrl + bodyHash));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=self-signing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-signing.js","sourceRoot":"","sources":["../../../src/utils/self-signing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAY,MAAM,MAAM,CAAC;AAEpD,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAoB;IAClD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;IAC3B,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,MAAc,EACd,GAAW,EACX,IAAoB;IAEpB,MAAM,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,SAAS,CACd,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,YAAY,GAAG,QAAQ,CAAC,CACpE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const INSUFFICIENT_BALANCE_PATTERNS = [
|
|
2
|
+
/transfer amount exceeds balance/i,
|
|
3
|
+
/erc20:\s*transfer amount exceeds balance/i,
|
|
4
|
+
/insufficient .+ balance/i,
|
|
5
|
+
/insufficient funds/i,
|
|
6
|
+
/exceeds balance/i,
|
|
7
|
+
];
|
|
8
|
+
/** True when a transfer gas simulation failed due to insufficient token balance. */
|
|
9
|
+
export function isInsufficientBalanceSimulationError(error) {
|
|
10
|
+
const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
|
|
11
|
+
return INSUFFICIENT_BALANCE_PATTERNS.some((pattern) => pattern.test(message));
|
|
12
|
+
}
|
|
13
|
+
export function insufficientBalanceEstimateMessage(token) {
|
|
14
|
+
return (`Insufficient ${token}. Transfer simulation failed — gas cannot be estimated ` +
|
|
15
|
+
"without sufficient balance.");
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=transaction-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-errors.js","sourceRoot":"","sources":["../../../src/utils/transaction-errors.ts"],"names":[],"mappings":"AAAA,MAAM,6BAA6B,GAAG;IACpC,kCAAkC;IAClC,2CAA2C;IAC3C,0BAA0B;IAC1B,qBAAqB;IACrB,kBAAkB;CACnB,CAAC;AAEF,oFAAoF;AACpF,MAAM,UAAU,oCAAoC,CAAC,KAAc;IACjE,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,KAAa;IAC9D,OAAO,CACL,gBAAgB,KAAK,yDAAyD;QAC9E,6BAA6B,CAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { assertArray, assertHasKeys } from "../../helpers/assert.js";
|
|
3
|
+
function expectNumberLike(value) {
|
|
4
|
+
assert.notEqual(value, undefined);
|
|
5
|
+
assert.equal(Number.isNaN(Number(value)), false);
|
|
6
|
+
}
|
|
7
|
+
export const blockchainOperations = [
|
|
8
|
+
{
|
|
9
|
+
id: "blockchain.getNetworkStatus",
|
|
10
|
+
domain: "blockchain",
|
|
11
|
+
layer: "read",
|
|
12
|
+
sdk: {
|
|
13
|
+
invoke: (client) => client.blockchain.getNetworkStatus(),
|
|
14
|
+
},
|
|
15
|
+
mcp: {
|
|
16
|
+
tool: "get_network_status",
|
|
17
|
+
arguments: () => ({}),
|
|
18
|
+
},
|
|
19
|
+
assert: (result) => {
|
|
20
|
+
const obj = assertHasKeys(result, ["network", "chainId", "blockNumber"]);
|
|
21
|
+
expectNumberLike(obj.blockNumber);
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: "blockchain.getBlock",
|
|
26
|
+
domain: "blockchain",
|
|
27
|
+
layer: "read",
|
|
28
|
+
sdk: {
|
|
29
|
+
invoke: (client, fx) => client.blockchain.getBlock(Number(fx.latestBlockNumber)),
|
|
30
|
+
},
|
|
31
|
+
mcp: {
|
|
32
|
+
tool: "get_block",
|
|
33
|
+
arguments: (fx) => ({
|
|
34
|
+
block_id: Number(fx.latestBlockNumber),
|
|
35
|
+
}),
|
|
36
|
+
},
|
|
37
|
+
assert: (result) => {
|
|
38
|
+
assertHasKeys(result, ["number", "hash"]);
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "blockchain.getBlockWithTransactions",
|
|
43
|
+
domain: "blockchain",
|
|
44
|
+
layer: "read",
|
|
45
|
+
sdk: {
|
|
46
|
+
invoke: (client, fx) => client.blockchain.getBlock(Number(fx.latestBlockNumber), {
|
|
47
|
+
includeTransactions: true,
|
|
48
|
+
}),
|
|
49
|
+
},
|
|
50
|
+
mcp: {
|
|
51
|
+
tool: "get_block",
|
|
52
|
+
arguments: (fx) => ({
|
|
53
|
+
block_id: Number(fx.latestBlockNumber),
|
|
54
|
+
include_transactions: true,
|
|
55
|
+
}),
|
|
56
|
+
},
|
|
57
|
+
assert: (result) => {
|
|
58
|
+
const obj = assertHasKeys(result, ["number", "hash", "transactions"]);
|
|
59
|
+
assert.doesNotThrow(() => JSON.stringify(result));
|
|
60
|
+
const txs = assertArray(obj.transactions);
|
|
61
|
+
assert.ok(txs.length > 0);
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: "blockchain.getLatestBlocks",
|
|
66
|
+
domain: "blockchain",
|
|
67
|
+
layer: "read",
|
|
68
|
+
sdk: {
|
|
69
|
+
invoke: (client) => client.blockchain.getLatestBlocks(3, 0),
|
|
70
|
+
},
|
|
71
|
+
mcp: {
|
|
72
|
+
tool: "get_latest_blocks",
|
|
73
|
+
arguments: () => ({ count: 3, offset: 0 }),
|
|
74
|
+
},
|
|
75
|
+
assert: (result) => {
|
|
76
|
+
const blocks = assertArray(result);
|
|
77
|
+
assert.ok(blocks.length > 0);
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: "blockchain.getTransaction",
|
|
82
|
+
domain: "blockchain",
|
|
83
|
+
layer: "read",
|
|
84
|
+
sdk: {
|
|
85
|
+
invoke: (client, fx) => client.blockchain.getTransaction(fx.knownTxHash),
|
|
86
|
+
},
|
|
87
|
+
mcp: {
|
|
88
|
+
tool: "get_transaction",
|
|
89
|
+
arguments: (fx) => ({ hash: fx.knownTxHash }),
|
|
90
|
+
},
|
|
91
|
+
assert: (result) => {
|
|
92
|
+
assertHasKeys(result, ["hash", "from"]);
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: "account.getAccount",
|
|
97
|
+
domain: "blockchain",
|
|
98
|
+
layer: "read",
|
|
99
|
+
sdk: {
|
|
100
|
+
invoke: (client, fx) => client.account.getAccount(fx.wallet),
|
|
101
|
+
},
|
|
102
|
+
mcp: {
|
|
103
|
+
tool: "get_account",
|
|
104
|
+
arguments: (fx) => ({ address: fx.wallet }),
|
|
105
|
+
},
|
|
106
|
+
assert: (result) => {
|
|
107
|
+
assertHasKeys(result, ["address", "balanceWei"]);
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: "account.getWalletAddress",
|
|
112
|
+
domain: "blockchain",
|
|
113
|
+
layer: "read",
|
|
114
|
+
requiresEnv: ["CELO_PRIVATE_KEY"],
|
|
115
|
+
mcp: {
|
|
116
|
+
tool: "get_wallet_address",
|
|
117
|
+
arguments: () => ({}),
|
|
118
|
+
},
|
|
119
|
+
assert: (result, fx) => {
|
|
120
|
+
const obj = assertHasKeys(result, ["wallet_address", "has_wallet", "source"]);
|
|
121
|
+
assert.equal(obj.has_wallet, true);
|
|
122
|
+
assert.equal(String(obj.wallet_address).toLowerCase(), fx.wallet.toLowerCase());
|
|
123
|
+
assert.equal(obj.source, "CELO_PRIVATE_KEY");
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
];
|
|
127
|
+
//# sourceMappingURL=blockchain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blockchain.js","sourceRoot":"","sources":["../../../../tests/catalog/domains/blockchain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { OperationSpec } from "../types.js";
|
|
2
|
+
export declare const governanceOperations: OperationSpec[];
|
|
3
|
+
export declare const stakingOperations: OperationSpec[];
|
|
4
|
+
export declare const nftOperations: OperationSpec[];
|
|
5
|
+
export declare const contractOperations: OperationSpec[];
|