@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,9 @@
|
|
|
1
|
+
/** Amplitude-safe id from npm `package.json` `name` (strip `@`, `/` and `-` → `_`). */
|
|
2
|
+
export declare function sanitizePackageDeviceId(name: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* npm package name of the app that called `createCelinaClient()`, sanitized for Amplitude.
|
|
5
|
+
* Returns `undefined` when detection fails or the consumer is the SDK itself.
|
|
6
|
+
*/
|
|
7
|
+
export declare function detectConsumerPackageName(stack?: string): string | undefined;
|
|
8
|
+
/** Test-only: clear cached consumer detection between cases. */
|
|
9
|
+
export declare function resetConsumerPackageDetectionForTests(): void;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join, resolve, sep } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const SDK_PACKAGE_NAME = "@andrewkimjoseph/celina-sdk";
|
|
5
|
+
const SDK_DEVICE_IDS = new Set(["andrewkimjoseph_celina_sdk", "celina-sdk"]);
|
|
6
|
+
let detectionCached = false;
|
|
7
|
+
let detectedDeviceId;
|
|
8
|
+
/** Amplitude-safe id from npm `package.json` `name` (strip `@`, `/` and `-` → `_`). */
|
|
9
|
+
export function sanitizePackageDeviceId(name) {
|
|
10
|
+
const stripped = name.startsWith("@") ? name.slice(1) : name;
|
|
11
|
+
return stripped.replace(/\//g, "_").replace(/-/g, "_");
|
|
12
|
+
}
|
|
13
|
+
function getSdkPackageRoot() {
|
|
14
|
+
let dir = dirname(fileURLToPath(import.meta.url));
|
|
15
|
+
for (let i = 0; i < 24; i++) {
|
|
16
|
+
const pkgPath = join(dir, "package.json");
|
|
17
|
+
if (existsSync(pkgPath)) {
|
|
18
|
+
try {
|
|
19
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
20
|
+
if (pkg.name === SDK_PACKAGE_NAME) {
|
|
21
|
+
return dir;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// ignore malformed package.json
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const parent = dirname(dir);
|
|
29
|
+
if (parent === dir) {
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
dir = parent;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
function isSdkFramePath(filePath, sdkRoot) {
|
|
37
|
+
const normalized = resolve(filePath);
|
|
38
|
+
if (sdkRoot) {
|
|
39
|
+
const root = resolve(sdkRoot);
|
|
40
|
+
if (normalized === root || normalized.startsWith(root + sep)) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return normalized.includes(`${sep}node_modules${sep}@andrewkimjoseph${sep}celina-sdk${sep}`);
|
|
45
|
+
}
|
|
46
|
+
function readPackageNameFromFile(filePath) {
|
|
47
|
+
let dir = dirname(resolve(filePath));
|
|
48
|
+
for (let i = 0; i < 24; i++) {
|
|
49
|
+
const pkgPath = join(dir, "package.json");
|
|
50
|
+
if (existsSync(pkgPath)) {
|
|
51
|
+
try {
|
|
52
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
53
|
+
if (typeof pkg.name === "string" && pkg.name.length > 0) {
|
|
54
|
+
return pkg.name;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const parent = dirname(dir);
|
|
62
|
+
if (parent === dir) {
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
dir = parent;
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
function parseStackFramePaths(stack) {
|
|
70
|
+
const paths = [];
|
|
71
|
+
for (const line of stack.split("\n")) {
|
|
72
|
+
const trimmed = line.trim();
|
|
73
|
+
if (!trimmed.startsWith("at ")) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const parenMatch = /\(([^)]+)\)/.exec(trimmed);
|
|
77
|
+
let loc = parenMatch?.[1];
|
|
78
|
+
if (!loc) {
|
|
79
|
+
const bare = /^at (?:async )?(?:.+ )?(.+)$/.exec(trimmed);
|
|
80
|
+
loc = bare?.[1];
|
|
81
|
+
}
|
|
82
|
+
if (!loc) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
let filePath = loc.trim();
|
|
86
|
+
if (filePath.startsWith("file://")) {
|
|
87
|
+
try {
|
|
88
|
+
filePath = fileURLToPath(filePath);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
filePath = filePath.replace(/:\d+:\d+$/, "").replace(/:\d+$/, "");
|
|
95
|
+
if (filePath) {
|
|
96
|
+
paths.push(filePath);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return paths;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* npm package name of the app that called `createCelinaClient()`, sanitized for Amplitude.
|
|
103
|
+
* Returns `undefined` when detection fails or the consumer is the SDK itself.
|
|
104
|
+
*/
|
|
105
|
+
export function detectConsumerPackageName(stack) {
|
|
106
|
+
if (detectionCached) {
|
|
107
|
+
return detectedDeviceId;
|
|
108
|
+
}
|
|
109
|
+
detectionCached = true;
|
|
110
|
+
detectedDeviceId = undefined;
|
|
111
|
+
if (typeof process === "undefined") {
|
|
112
|
+
return detectedDeviceId;
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const stackTrace = stack ?? new Error().stack ?? "";
|
|
116
|
+
const sdkRoot = getSdkPackageRoot();
|
|
117
|
+
for (const framePath of parseStackFramePaths(stackTrace)) {
|
|
118
|
+
if (isSdkFramePath(framePath, sdkRoot)) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const rawName = readPackageNameFromFile(framePath);
|
|
122
|
+
if (!rawName) {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
const deviceId = sanitizePackageDeviceId(rawName);
|
|
126
|
+
if (SDK_DEVICE_IDS.has(deviceId)) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
detectedDeviceId = deviceId;
|
|
130
|
+
return detectedDeviceId;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
detectedDeviceId = undefined;
|
|
135
|
+
}
|
|
136
|
+
return detectedDeviceId;
|
|
137
|
+
}
|
|
138
|
+
/** Test-only: clear cached consumer detection between cases. */
|
|
139
|
+
export function resetConsumerPackageDetectionForTests() {
|
|
140
|
+
detectionCached = false;
|
|
141
|
+
detectedDeviceId = undefined;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=consumer-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consumer-package.js","sourceRoot":"","sources":["../../../src/analytics/consumer-package.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AACvD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC,CAAC;AAE7E,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,gBAAoC,CAAC;AAEzC,uFAAuF;AACvF,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC1C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAEnD,CAAC;gBACF,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBAClC,OAAO,GAAG,CAAC;gBACb,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,gCAAgC;YAClC,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;QACD,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,OAA2B;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,QAAQ,CACxB,GAAG,GAAG,eAAe,GAAG,mBAAmB,GAAG,aAAa,GAAG,EAAE,CACjE,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB;IAC/C,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC1C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAEnD,CAAC;gBACF,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxD,OAAO,GAAG,CAAC,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;QACD,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,GAAG,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,eAAe,GAAG,IAAI,CAAC;IACvB,gBAAgB,GAAG,SAAS,CAAC;IAE7B,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,KAAK,MAAM,SAAS,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;YACzD,IAAI,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;gBACvC,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YACD,gBAAgB,GAAG,QAAQ,CAAC;YAC5B,OAAO,gBAAgB,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,qCAAqC;IACnD,eAAe,GAAG,KAAK,CAAC;IACxB,gBAAgB,GAAG,SAAS,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/generate-mcp-analytics-map.mjs — do not edit by hand.
|
|
3
|
+
* Maps SDK method keys (catalog OperationSpec.id) to MCP tool event names.
|
|
4
|
+
*/
|
|
5
|
+
export const MCP_TOOL_EVENT_BY_SDK_METHOD = {
|
|
6
|
+
"aave.getBalances": "get_aave_balances",
|
|
7
|
+
"account.getAccount": "get_account",
|
|
8
|
+
"account.getWalletAddress": "get_wallet_address",
|
|
9
|
+
"blockchain.getBlock": "get_block",
|
|
10
|
+
"blockchain.getBlockWithTransactions": "get_block",
|
|
11
|
+
"blockchain.getLatestBlocks": "get_latest_blocks",
|
|
12
|
+
"blockchain.getNetworkStatus": "get_network_status",
|
|
13
|
+
"blockchain.getTransaction": "get_transaction",
|
|
14
|
+
"contract.callFunction": "call_contract_function",
|
|
15
|
+
"contract.estimateGas": "estimate_contract_gas",
|
|
16
|
+
"ens.resolveEns": "resolve_ens",
|
|
17
|
+
"gooddollar.estimateReserveSwap.sell": "estimate_gooddollar_reserve_swap",
|
|
18
|
+
"gooddollar.getIdentityLink": "get_gooddollar_identity_link",
|
|
19
|
+
"gooddollar.getReserveQuote.buy": "get_gooddollar_reserve_quote",
|
|
20
|
+
"gooddollar.getReserveQuote.buy.exactOut": "get_gooddollar_reserve_quote",
|
|
21
|
+
"gooddollar.getReserveQuote.sell": "get_gooddollar_reserve_quote",
|
|
22
|
+
"gooddollar.getReserveQuote.sell.exactOut": "get_gooddollar_reserve_quote",
|
|
23
|
+
"gooddollar.getUbiClaimEligibility": "get_gooddollar_ubi_entitlement",
|
|
24
|
+
"gooddollar.getWhitelistingInfo": "get_gooddollar_whitelisting_info",
|
|
25
|
+
"governance.getGovernanceProposals": "get_governance_proposals",
|
|
26
|
+
"governance.getProposalDetails": "get_proposal_details",
|
|
27
|
+
"mentoFx.estimateFx": "estimate_mento_fx",
|
|
28
|
+
"mentoFx.getFxQuote": "get_mento_fx_quote",
|
|
29
|
+
"nft.getNftBalance": "get_nft_balance",
|
|
30
|
+
"nft.getNftInfo": "get_nft_info",
|
|
31
|
+
"self.authenticatedSelfFetch": "authenticated_self_fetch",
|
|
32
|
+
"self.checkSelfRegistration": "check_self_registration",
|
|
33
|
+
"self.getSelfIdentity": "get_self_identity",
|
|
34
|
+
"self.lookupSelfAgent": "lookup_self_agent",
|
|
35
|
+
"self.signSelfRequest": "sign_self_request",
|
|
36
|
+
"self.verifySelfAgent": "verify_self_agent",
|
|
37
|
+
"self.verifySelfRequest": "verify_self_request",
|
|
38
|
+
"staking.getActivatableStakes": "get_activatable_stakes",
|
|
39
|
+
"staking.getStakingBalances": "get_staking_balances",
|
|
40
|
+
"staking.getTotalStakingInfo": "get_total_staking_info",
|
|
41
|
+
"staking.getValidatorGroupDetails": "get_validator_group_details",
|
|
42
|
+
"staking.getValidatorGroups": "get_validator_groups",
|
|
43
|
+
"token.getBalances": "get_celo_balances",
|
|
44
|
+
"token.getStablecoinBalances": "get_stablecoin_balances",
|
|
45
|
+
"token.getTokenBalance": "get_token_balance",
|
|
46
|
+
"token.getTokenInfo": "get_token_info",
|
|
47
|
+
"transaction.estimateSend": "estimate_send",
|
|
48
|
+
"transaction.estimateTransaction": "estimate_transaction",
|
|
49
|
+
"transaction.getGasFeeData": "get_gas_fee_data",
|
|
50
|
+
"uniswap.estimateSwap": "estimate_uniswap_swap",
|
|
51
|
+
"uniswap.getSwapQuote": "get_uniswap_quote",
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=mcp-tool-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-events.js","sourceRoot":"","sources":["../../../src/analytics/mcp-tool-events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAqC;IAC5E,kBAAkB,EAAE,mBAAmB;IACvC,oBAAoB,EAAE,aAAa;IACnC,0BAA0B,EAAE,oBAAoB;IAChD,qBAAqB,EAAE,WAAW;IAClC,qCAAqC,EAAE,WAAW;IAClD,4BAA4B,EAAE,mBAAmB;IACjD,6BAA6B,EAAE,oBAAoB;IACnD,2BAA2B,EAAE,iBAAiB;IAC9C,uBAAuB,EAAE,wBAAwB;IACjD,sBAAsB,EAAE,uBAAuB;IAC/C,gBAAgB,EAAE,aAAa;IAC/B,qCAAqC,EAAE,kCAAkC;IACzE,4BAA4B,EAAE,8BAA8B;IAC5D,gCAAgC,EAAE,8BAA8B;IAChE,yCAAyC,EAAE,8BAA8B;IACzE,iCAAiC,EAAE,8BAA8B;IACjE,0CAA0C,EAAE,8BAA8B;IAC1E,mCAAmC,EAAE,gCAAgC;IACrE,gCAAgC,EAAE,kCAAkC;IACpE,mCAAmC,EAAE,0BAA0B;IAC/D,+BAA+B,EAAE,sBAAsB;IACvD,oBAAoB,EAAE,mBAAmB;IACzC,oBAAoB,EAAE,oBAAoB;IAC1C,mBAAmB,EAAE,iBAAiB;IACtC,gBAAgB,EAAE,cAAc;IAChC,6BAA6B,EAAE,0BAA0B;IACzD,4BAA4B,EAAE,yBAAyB;IACvD,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,qBAAqB;IAC/C,8BAA8B,EAAE,wBAAwB;IACxD,4BAA4B,EAAE,sBAAsB;IACpD,6BAA6B,EAAE,wBAAwB;IACvD,kCAAkC,EAAE,6BAA6B;IACjE,4BAA4B,EAAE,sBAAsB;IACpD,mBAAmB,EAAE,mBAAmB;IACxC,6BAA6B,EAAE,yBAAyB;IACxD,uBAAuB,EAAE,mBAAmB;IAC5C,oBAAoB,EAAE,gBAAgB;IACtC,0BAA0B,EAAE,eAAe;IAC3C,iCAAiC,EAAE,sBAAsB;IACzD,2BAA2B,EAAE,kBAAkB;IAC/C,sBAAsB,EAAE,uBAAuB;IAC/C,sBAAsB,EAAE,mBAAmB;CACnC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SdkConfig } from "../config/sdk-config.js";
|
|
2
|
+
/** Validate and normalize a Celo address for telemetry `user_id`. */
|
|
3
|
+
export declare function normalizeWalletAddress(value: unknown): string | undefined;
|
|
4
|
+
/** Extract wallet from read args using catalog-generated rules. */
|
|
5
|
+
export declare function extractWalletFromReadArgs(methodKey: string, args: readonly unknown[]): string | undefined;
|
|
6
|
+
/** Run async/sync work with a request-scoped analytics wallet (singleton SDK clients). */
|
|
7
|
+
export declare function runWithAnalyticsWallet<T>(address: string | undefined, fn: () => T): T;
|
|
8
|
+
/** Resolve wallet for telemetry: read args → ALS → config default. */
|
|
9
|
+
export declare function resolveAnalyticsWallet(methodKey: string, args: readonly unknown[], config: SdkConfig): string | undefined;
|
|
10
|
+
/** Test-only: clear ALS between cases. */
|
|
11
|
+
export declare function resetAnalyticsWalletStorageForTests(): void;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
import { WALLET_EXTRACT_BY_SDK_METHOD } from "./wallet-extract.js";
|
|
3
|
+
const WALLET_RE = /^0x[a-fA-F0-9]{40}$/;
|
|
4
|
+
const analyticsWalletStorage = new AsyncLocalStorage();
|
|
5
|
+
/** Validate and normalize a Celo address for telemetry `user_id`. */
|
|
6
|
+
export function normalizeWalletAddress(value) {
|
|
7
|
+
if (typeof value !== "string") {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const trimmed = value.trim();
|
|
11
|
+
if (!WALLET_RE.test(trimmed)) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return trimmed.toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
function walletFromArgValue(value) {
|
|
17
|
+
const direct = normalizeWalletAddress(value);
|
|
18
|
+
if (direct) {
|
|
19
|
+
return direct;
|
|
20
|
+
}
|
|
21
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
22
|
+
for (const key of [
|
|
23
|
+
"address",
|
|
24
|
+
"wallet_address",
|
|
25
|
+
"from",
|
|
26
|
+
"owner",
|
|
27
|
+
"accountAddress",
|
|
28
|
+
"fromAddress",
|
|
29
|
+
]) {
|
|
30
|
+
const nested = normalizeWalletAddress(value[key]);
|
|
31
|
+
if (nested) {
|
|
32
|
+
return nested;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
/** Extract wallet from read args using catalog-generated rules. */
|
|
39
|
+
export function extractWalletFromReadArgs(methodKey, args) {
|
|
40
|
+
const rule = WALLET_EXTRACT_BY_SDK_METHOD[methodKey];
|
|
41
|
+
if (!rule) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
if (rule.positional !== undefined) {
|
|
45
|
+
const fromPos = walletFromArgValue(args[rule.positional]);
|
|
46
|
+
if (fromPos) {
|
|
47
|
+
return fromPos;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (rule.objectKeys) {
|
|
51
|
+
for (const arg of args) {
|
|
52
|
+
if (!arg || typeof arg !== "object" || Array.isArray(arg)) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const obj = arg;
|
|
56
|
+
for (const key of rule.objectKeys) {
|
|
57
|
+
const found = normalizeWalletAddress(obj[key]);
|
|
58
|
+
if (found) {
|
|
59
|
+
return found;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
/** Run async/sync work with a request-scoped analytics wallet (singleton SDK clients). */
|
|
67
|
+
export function runWithAnalyticsWallet(address, fn) {
|
|
68
|
+
const normalized = normalizeWalletAddress(address);
|
|
69
|
+
return analyticsWalletStorage.run(normalized, fn);
|
|
70
|
+
}
|
|
71
|
+
/** Resolve wallet for telemetry: read args → ALS → config default. */
|
|
72
|
+
export function resolveAnalyticsWallet(methodKey, args, config) {
|
|
73
|
+
return (extractWalletFromReadArgs(methodKey, args) ??
|
|
74
|
+
analyticsWalletStorage.getStore() ??
|
|
75
|
+
normalizeWalletAddress(config.analyticsWalletAddress));
|
|
76
|
+
}
|
|
77
|
+
/** Test-only: clear ALS between cases. */
|
|
78
|
+
export function resetAnalyticsWalletStorageForTests() {
|
|
79
|
+
analyticsWalletStorage.disable();
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=wallet-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-context.js","sourceRoot":"","sources":["../../../src/analytics/wallet-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/generate-mcp-analytics-map.mjs — do not edit by hand.
|
|
3
|
+
* Catalog-derived rules for extracting wallet addresses from SDK read call args.
|
|
4
|
+
*/
|
|
5
|
+
export type WalletExtractRule = {
|
|
6
|
+
positional?: number;
|
|
7
|
+
objectKeys?: readonly string[];
|
|
8
|
+
};
|
|
9
|
+
export declare const WALLET_EXTRACT_BY_SDK_METHOD: Readonly<Record<string, WalletExtractRule>>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const WALLET_EXTRACT_BY_SDK_METHOD = {
|
|
2
|
+
"aave.getBalances": { positional: 0, objectKeys: ["address"] },
|
|
3
|
+
"account.getAccount": { positional: 0, objectKeys: ["address"] },
|
|
4
|
+
"contract.callFunction": { objectKeys: ["address"] },
|
|
5
|
+
"contract.estimateGas": { objectKeys: ["address"] },
|
|
6
|
+
"gooddollar.getIdentityLink": { positional: 0, objectKeys: ["address"] },
|
|
7
|
+
"gooddollar.getUbiClaimEligibility": { positional: 0, objectKeys: ["address"] },
|
|
8
|
+
"gooddollar.getWhitelistingInfo": { positional: 0, objectKeys: ["address"] },
|
|
9
|
+
"nft.getNftBalance": { objectKeys: ["address"] },
|
|
10
|
+
"nft.getNftInfo": { objectKeys: ["address"] },
|
|
11
|
+
"self.verifySelfAgent": { objectKeys: ["address", "agent_address"] },
|
|
12
|
+
"staking.getActivatableStakes": { positional: 0, objectKeys: ["address"] },
|
|
13
|
+
"staking.getStakingBalances": { positional: 0, objectKeys: ["address"] },
|
|
14
|
+
"staking.getValidatorGroupDetails": { objectKeys: ["address"] },
|
|
15
|
+
"token.getBalances": { objectKeys: ["address"] },
|
|
16
|
+
"token.getStablecoinBalances": { positional: 0, objectKeys: ["address"] },
|
|
17
|
+
"token.getTokenBalance": { positional: 1, objectKeys: ["address"] },
|
|
18
|
+
"transaction.estimateSend": { positional: 1 },
|
|
19
|
+
"transaction.estimateTransaction": { objectKeys: ["from"] },
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=wallet-extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-extract.js","sourceRoot":"","sources":["../../../src/analytics/wallet-extract.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,4BAA4B,GAErC;IACF,kBAAkB,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IAC9D,oBAAoB,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IAChE,uBAAuB,EAAE,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IACpD,sBAAsB,EAAE,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IACnD,4BAA4B,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IACxE,mCAAmC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IAC/E,gCAAgC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IAC5E,mBAAmB,EAAE,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IAChD,gBAAgB,EAAE,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IAC7C,sBAAsB,EAAE,EAAE,UAAU,EAAE,CAAC,SAAS,EAAC,eAAe,CAAC,EAAE;IACnE,8BAA8B,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IAC1E,4BAA4B,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IACxE,kCAAkC,EAAE,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IAC/D,mBAAmB,EAAE,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IAChD,6BAA6B,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IACzE,uBAAuB,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;IACnE,0BAA0B,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;IAC7C,iCAAiC,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE;CACnD,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SdkConfig } from "../config/sdk-config.js";
|
|
2
|
+
/**
|
|
3
|
+
* Wrap a domain service so catalog-mapped async reads emit Amplitude events (MCP tool names).
|
|
4
|
+
*/
|
|
5
|
+
export declare function wrapServiceForAnalytics<T extends object>(serviceKey: string, service: T, config: SdkConfig): T;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { trackMcpTool } from "./amplitude.js";
|
|
2
|
+
import { isAnalyticsEnabled } from "./config.js";
|
|
3
|
+
import { MCP_TOOL_EVENT_BY_SDK_METHOD } from "./mcp-tool-events.js";
|
|
4
|
+
/**
|
|
5
|
+
* Wrap a domain service so catalog-mapped async reads emit Amplitude events (MCP tool names).
|
|
6
|
+
*/
|
|
7
|
+
export function wrapServiceForAnalytics(serviceKey, service, config) {
|
|
8
|
+
if (!isAnalyticsEnabled(config)) {
|
|
9
|
+
return service;
|
|
10
|
+
}
|
|
11
|
+
return new Proxy(service, {
|
|
12
|
+
get(target, prop, receiver) {
|
|
13
|
+
const value = Reflect.get(target, prop, receiver);
|
|
14
|
+
if (typeof prop !== "string" || typeof value !== "function") {
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
const methodKey = `${serviceKey}.${prop}`;
|
|
18
|
+
const eventName = MCP_TOOL_EVENT_BY_SDK_METHOD[methodKey];
|
|
19
|
+
if (!eventName) {
|
|
20
|
+
return value.bind(target);
|
|
21
|
+
}
|
|
22
|
+
const fn = value;
|
|
23
|
+
return (...args) => {
|
|
24
|
+
const result = fn.apply(target, args);
|
|
25
|
+
const context = { methodKey, args };
|
|
26
|
+
if (result !== null && typeof result === "object" && "then" in result) {
|
|
27
|
+
return result.then((resolved) => {
|
|
28
|
+
trackMcpTool(eventName, config, context);
|
|
29
|
+
return resolved;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
trackMcpTool(eventName, config, context);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=wrap-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-service.js","sourceRoot":"","sources":["../../../src/analytics/wrap-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,OAAU,EACV,MAAiB;IAEjB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,EAAE,GAAG,KAAwC,CAAC;YACpD,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBACpC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;oBACtE,OAAQ,MAA2B,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;wBACpD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;wBACzC,OAAO,QAAQ,CAAC;oBAClB,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACzC,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cached viem public client for Celo mainnet RPC reads.
|
|
3
|
+
*/
|
|
4
|
+
import { type PublicClient } from "viem";
|
|
5
|
+
import type { SdkConfig } from "../config/sdk-config.js";
|
|
6
|
+
/** viem public client bundle for Celo mainnet. */
|
|
7
|
+
export interface CeloClients {
|
|
8
|
+
public: PublicClient;
|
|
9
|
+
}
|
|
10
|
+
/** Lazily constructs and caches a Celo mainnet public client from `SdkConfig`. */
|
|
11
|
+
export declare class CeloClientFactory {
|
|
12
|
+
private readonly config;
|
|
13
|
+
private clients;
|
|
14
|
+
constructor(config: SdkConfig);
|
|
15
|
+
/** Return a shared public client (created on first call). */
|
|
16
|
+
getClients(): CeloClients;
|
|
17
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cached viem public client for Celo mainnet RPC reads.
|
|
3
|
+
*/
|
|
4
|
+
import { createPublicClient, http, } from "viem";
|
|
5
|
+
import { CHAIN, DEFAULT_RPC_URL } from "../config/chains.js";
|
|
6
|
+
/** Lazily constructs and caches a Celo mainnet public client from `SdkConfig`. */
|
|
7
|
+
export class CeloClientFactory {
|
|
8
|
+
config;
|
|
9
|
+
clients = null;
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
}
|
|
13
|
+
/** Return a shared public client (created on first call). */
|
|
14
|
+
getClients() {
|
|
15
|
+
if (this.clients) {
|
|
16
|
+
return this.clients;
|
|
17
|
+
}
|
|
18
|
+
const rpcUrl = this.config.rpcUrl ?? DEFAULT_RPC_URL;
|
|
19
|
+
const transport = http(rpcUrl);
|
|
20
|
+
const publicClient = createPublicClient({
|
|
21
|
+
chain: CHAIN,
|
|
22
|
+
transport,
|
|
23
|
+
});
|
|
24
|
+
this.clients = { public: publicClient };
|
|
25
|
+
return this.clients;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=celo-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"celo-client.js","sourceRoot":"","sources":["../../../src/clients/celo-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,kBAAkB,EAClB,IAAI,GAEL,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO7D,kFAAkF;AAClF,MAAM,OAAO,iBAAiB;IAGC;IAFrB,OAAO,GAAuB,IAAI,CAAC;IAE3C,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAElD,6DAA6D;IAC7D,UAAU;QACR,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,KAAK,EAAE,KAAK;YACZ,SAAS;SACV,CAAiB,CAAC;QAEnB,IAAI,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ethereum mainnet public client for ENS resolution (CCIP-read gateway).
|
|
3
|
+
*/
|
|
4
|
+
import { type PublicClient } from "viem";
|
|
5
|
+
import type { SdkConfig } from "../config/sdk-config.js";
|
|
6
|
+
/** Default Ethereum RPC when `ethRpcUrl` is not set in `SdkConfig`. */
|
|
7
|
+
export declare const DEFAULT_ETH_RPC_URL = "https://ethereum.publicnode.com";
|
|
8
|
+
/** CCIP-read gateway used by viem ENS helpers. */
|
|
9
|
+
export declare const ENS_CCIP_GATEWAY = "https://ccip.ens.xyz";
|
|
10
|
+
/** Lazily constructs and caches an Ethereum mainnet client for ENS lookups. */
|
|
11
|
+
export declare class EnsClientFactory {
|
|
12
|
+
private readonly config;
|
|
13
|
+
private client;
|
|
14
|
+
constructor(config: SdkConfig);
|
|
15
|
+
/** Return a shared Ethereum public client (created on first call). */
|
|
16
|
+
getClient(): PublicClient;
|
|
17
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ethereum mainnet public client for ENS resolution (CCIP-read gateway).
|
|
3
|
+
*/
|
|
4
|
+
import { createPublicClient, http } from "viem";
|
|
5
|
+
import { mainnet } from "viem/chains";
|
|
6
|
+
/** Default Ethereum RPC when `ethRpcUrl` is not set in `SdkConfig`. */
|
|
7
|
+
export const DEFAULT_ETH_RPC_URL = "https://ethereum.publicnode.com";
|
|
8
|
+
/** CCIP-read gateway used by viem ENS helpers. */
|
|
9
|
+
export const ENS_CCIP_GATEWAY = "https://ccip.ens.xyz";
|
|
10
|
+
/** Lazily constructs and caches an Ethereum mainnet client for ENS lookups. */
|
|
11
|
+
export class EnsClientFactory {
|
|
12
|
+
config;
|
|
13
|
+
client = null;
|
|
14
|
+
constructor(config) {
|
|
15
|
+
this.config = config;
|
|
16
|
+
}
|
|
17
|
+
/** Return a shared Ethereum public client (created on first call). */
|
|
18
|
+
getClient() {
|
|
19
|
+
if (this.client) {
|
|
20
|
+
return this.client;
|
|
21
|
+
}
|
|
22
|
+
const rpcUrl = this.config.ethRpcUrl ?? DEFAULT_ETH_RPC_URL;
|
|
23
|
+
this.client = createPublicClient({
|
|
24
|
+
chain: mainnet,
|
|
25
|
+
transport: http(rpcUrl, { timeout: 15_000 }),
|
|
26
|
+
});
|
|
27
|
+
return this.client;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ens-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ens-client.js","sourceRoot":"","sources":["../../../src/clients/ens-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAqB,MAAM,MAAM,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,uEAAuE;AACvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,iCAAiC,CAAC;AAErE,kDAAkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,+EAA+E;AAC/E,MAAM,OAAO,gBAAgB;IAGE;IAFrB,MAAM,GAAwB,IAAI,CAAC;IAE3C,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAElD,sEAAsE;IACtE,SAAS;QACP,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,mBAAmB,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC;YAC/B,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;SAC7C,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const Mento: typeof import("@mento-protocol/mento-sdk").Mento, ChainId: typeof import("@mento-protocol/mento-sdk").ChainId, deadlineFromMinutes: typeof import("@mento-protocol/mento-sdk").deadlineFromMinutes, RouteNotFoundError: typeof import("@mento-protocol/mento-sdk").RouteNotFoundError, FXMarketClosedError: typeof import("@mento-protocol/mento-sdk").FXMarketClosedError;
|
|
2
|
+
export type { CallParams } from "@mento-protocol/mento-sdk";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
/**
|
|
3
|
+
* @mento-protocol/mento-sdk's ESM build omits .js extensions on internal imports.
|
|
4
|
+
* Load the CJS entry via createRequire until upstream fixes exports.
|
|
5
|
+
*/
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
const mentoSdk = require("@mento-protocol/mento-sdk");
|
|
8
|
+
export const { Mento, ChainId, deadlineFromMinutes, RouteNotFoundError, FXMarketClosedError, } = mentoSdk;
|
|
9
|
+
//# sourceMappingURL=mento-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mento-sdk.js","sourceRoot":"","sources":["../../../src/clients/mento-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,QAAQ,GAAG,OAAO,CAAC,2BAA2B,CAA+C,CAAC;AAEpG,MAAM,CAAC,MAAM,EACX,KAAK,EACL,OAAO,EACP,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { type SelfRegistrationMode } from "../config/self.js";
|
|
2
|
+
export declare class SelfApiError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class SelfExpiredSessionError extends Error {
|
|
6
|
+
constructor(message?: string);
|
|
7
|
+
}
|
|
8
|
+
export interface SelfRegistrationDisclosures {
|
|
9
|
+
minimumAge?: number;
|
|
10
|
+
ofac?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface SelfRegistrationResult {
|
|
13
|
+
agentId: number;
|
|
14
|
+
agentAddress: string;
|
|
15
|
+
credentials?: unknown;
|
|
16
|
+
txHash?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SelfRefreshResult {
|
|
19
|
+
proofExpiresAt: Date;
|
|
20
|
+
}
|
|
21
|
+
export interface SelfRegistrationSession {
|
|
22
|
+
sessionToken: string;
|
|
23
|
+
stage: string;
|
|
24
|
+
deepLink: string;
|
|
25
|
+
scanUrl?: string;
|
|
26
|
+
agentAddress: string;
|
|
27
|
+
expiresAt: string;
|
|
28
|
+
timeRemainingMs?: number;
|
|
29
|
+
humanInstructions: string[];
|
|
30
|
+
waitForCompletion(opts?: {
|
|
31
|
+
timeoutMs?: number;
|
|
32
|
+
pollIntervalMs?: number;
|
|
33
|
+
}): Promise<SelfRegistrationResult>;
|
|
34
|
+
exportKey(): Promise<string>;
|
|
35
|
+
}
|
|
36
|
+
export interface SelfRefreshSession {
|
|
37
|
+
sessionToken: string;
|
|
38
|
+
stage: string;
|
|
39
|
+
deepLink: string;
|
|
40
|
+
scanUrl?: string;
|
|
41
|
+
expiresAt: string;
|
|
42
|
+
timeRemainingMs?: number;
|
|
43
|
+
humanInstructions: string[];
|
|
44
|
+
waitForCompletion(opts?: {
|
|
45
|
+
timeoutMs?: number;
|
|
46
|
+
pollIntervalMs?: number;
|
|
47
|
+
}): Promise<SelfRefreshResult>;
|
|
48
|
+
}
|
|
49
|
+
export interface SelfDeregistrationSession {
|
|
50
|
+
sessionToken: string;
|
|
51
|
+
stage: string;
|
|
52
|
+
deepLink: string;
|
|
53
|
+
scanUrl?: string;
|
|
54
|
+
expiresAt: string;
|
|
55
|
+
timeRemainingMs?: number;
|
|
56
|
+
humanInstructions: string[];
|
|
57
|
+
waitForCompletion(opts?: {
|
|
58
|
+
timeoutMs?: number;
|
|
59
|
+
pollIntervalMs?: number;
|
|
60
|
+
}): Promise<void>;
|
|
61
|
+
}
|
|
62
|
+
export declare function requestRegistration(opts: {
|
|
63
|
+
mode?: SelfRegistrationMode;
|
|
64
|
+
disclosures?: SelfRegistrationDisclosures;
|
|
65
|
+
humanAddress?: string;
|
|
66
|
+
agentName?: string;
|
|
67
|
+
agentDescription?: string;
|
|
68
|
+
apiBase?: string;
|
|
69
|
+
}): Promise<SelfRegistrationSession>;
|
|
70
|
+
export declare function requestDeregistration(opts: {
|
|
71
|
+
agentAddress: string;
|
|
72
|
+
disclosures?: SelfRegistrationDisclosures;
|
|
73
|
+
apiBase?: string;
|
|
74
|
+
}): Promise<SelfDeregistrationSession>;
|
|
75
|
+
export declare function requestProofRefresh(opts: {
|
|
76
|
+
agentId: number;
|
|
77
|
+
disclosures?: SelfRegistrationDisclosures;
|
|
78
|
+
apiBase?: string;
|
|
79
|
+
}): Promise<SelfRefreshSession>;
|
|
80
|
+
export declare function getAgentInfo(agentId: number, apiBase?: string): Promise<Record<string, unknown>>;
|
|
81
|
+
export declare function getAgentsForHuman(address: string, apiBase?: string): Promise<Record<string, unknown>>;
|
|
82
|
+
export declare function selfQrUrl(sessionToken: string, apiBase?: string): string;
|