@waiaas/core 2.11.0-rc.7 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +5 -5
  2. package/dist/caip/asset-resolve.d.ts +39 -0
  3. package/dist/caip/asset-resolve.d.ts.map +1 -0
  4. package/dist/caip/asset-resolve.js +33 -0
  5. package/dist/caip/asset-resolve.js.map +1 -0
  6. package/dist/caip/index.d.ts +2 -0
  7. package/dist/caip/index.d.ts.map +1 -1
  8. package/dist/caip/index.js +4 -0
  9. package/dist/caip/index.js.map +1 -1
  10. package/dist/caip/response-enrichment.d.ts +70 -0
  11. package/dist/caip/response-enrichment.d.ts.map +1 -0
  12. package/dist/caip/response-enrichment.js +132 -0
  13. package/dist/caip/response-enrichment.js.map +1 -0
  14. package/dist/constants/index.d.ts +1 -0
  15. package/dist/constants/index.d.ts.map +1 -1
  16. package/dist/constants/index.js +2 -0
  17. package/dist/constants/index.js.map +1 -1
  18. package/dist/constants/well-known-contracts.d.ts +22 -0
  19. package/dist/constants/well-known-contracts.d.ts.map +1 -0
  20. package/dist/constants/well-known-contracts.js +415 -0
  21. package/dist/constants/well-known-contracts.js.map +1 -0
  22. package/dist/enums/chain.d.ts.map +1 -1
  23. package/dist/enums/chain.js +8 -0
  24. package/dist/enums/chain.js.map +1 -1
  25. package/dist/erc8128/types.d.ts +2 -2
  26. package/dist/errors/error-codes.d.ts +29 -1
  27. package/dist/errors/error-codes.d.ts.map +1 -1
  28. package/dist/errors/error-codes.js +29 -1
  29. package/dist/errors/error-codes.js.map +1 -1
  30. package/dist/i18n/en.d.ts.map +1 -1
  31. package/dist/i18n/en.js +6 -2
  32. package/dist/i18n/en.js.map +1 -1
  33. package/dist/i18n/ko.d.ts.map +1 -1
  34. package/dist/i18n/ko.js +6 -2
  35. package/dist/i18n/ko.js.map +1 -1
  36. package/dist/index.d.ts +12 -5
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +22 -5
  39. package/dist/index.js.map +1 -1
  40. package/dist/interfaces/IChainAdapter.d.ts +2 -2
  41. package/dist/interfaces/IChainAdapter.d.ts.map +1 -1
  42. package/dist/interfaces/IChainSubscriber.d.ts +19 -1
  43. package/dist/interfaces/IChainSubscriber.d.ts.map +1 -1
  44. package/dist/interfaces/INotificationChannel.d.ts +1 -1
  45. package/dist/interfaces/action-provider.types.d.ts +21 -0
  46. package/dist/interfaces/action-provider.types.d.ts.map +1 -1
  47. package/dist/interfaces/action-provider.types.js +18 -0
  48. package/dist/interfaces/action-provider.types.js.map +1 -1
  49. package/dist/interfaces/chain-adapter.types.d.ts +19 -0
  50. package/dist/interfaces/chain-adapter.types.d.ts.map +1 -1
  51. package/dist/interfaces/connection-state.d.ts.map +1 -1
  52. package/dist/interfaces/connection-state.js +1 -4
  53. package/dist/interfaces/connection-state.js.map +1 -1
  54. package/dist/interfaces/index.d.ts +5 -3
  55. package/dist/interfaces/index.d.ts.map +1 -1
  56. package/dist/interfaces/index.js +5 -2
  57. package/dist/interfaces/index.js.map +1 -1
  58. package/dist/interfaces/logger.d.ts +25 -0
  59. package/dist/interfaces/logger.d.ts.map +1 -0
  60. package/dist/interfaces/logger.js +28 -0
  61. package/dist/interfaces/logger.js.map +1 -0
  62. package/dist/interfaces/nft-indexer.types.d.ts +4 -4
  63. package/dist/interfaces/perp-provider.types.d.ts +4 -4
  64. package/dist/interfaces/position-provider.types.d.ts +18 -1
  65. package/dist/interfaces/position-provider.types.d.ts.map +1 -1
  66. package/dist/schemas/incoming-transaction.schema.d.ts +2 -2
  67. package/dist/schemas/index.d.ts +2 -2
  68. package/dist/schemas/index.d.ts.map +1 -1
  69. package/dist/schemas/index.js +6 -2
  70. package/dist/schemas/index.js.map +1 -1
  71. package/dist/schemas/policy.schema.d.ts +297 -6
  72. package/dist/schemas/policy.schema.d.ts.map +1 -1
  73. package/dist/schemas/policy.schema.js +110 -14
  74. package/dist/schemas/policy.schema.js.map +1 -1
  75. package/dist/schemas/resolved-action.schema.d.ts +112 -4
  76. package/dist/schemas/resolved-action.schema.d.ts.map +1 -1
  77. package/dist/schemas/signing-protocol.d.ts +39 -52
  78. package/dist/schemas/signing-protocol.d.ts.map +1 -1
  79. package/dist/schemas/signing-protocol.js +6 -11
  80. package/dist/schemas/signing-protocol.js.map +1 -1
  81. package/dist/schemas/simulation.schema.d.ts +69 -15
  82. package/dist/schemas/simulation.schema.d.ts.map +1 -1
  83. package/dist/schemas/simulation.schema.js +11 -0
  84. package/dist/schemas/simulation.schema.js.map +1 -1
  85. package/dist/schemas/transaction.schema.d.ts +514 -226
  86. package/dist/schemas/transaction.schema.d.ts.map +1 -1
  87. package/dist/schemas/transaction.schema.js +73 -20
  88. package/dist/schemas/transaction.schema.js.map +1 -1
  89. package/dist/schemas/userop.schema.d.ts +302 -134
  90. package/dist/schemas/userop.schema.d.ts.map +1 -1
  91. package/dist/schemas/wallet-preset.d.ts +1 -1
  92. package/dist/schemas/wallet-preset.js +1 -1
  93. package/dist/services/contract-name-registry.d.ts +67 -0
  94. package/dist/services/contract-name-registry.d.ts.map +1 -0
  95. package/dist/services/contract-name-registry.js +118 -0
  96. package/dist/services/contract-name-registry.js.map +1 -0
  97. package/dist/services/index.d.ts +2 -0
  98. package/dist/services/index.d.ts.map +1 -0
  99. package/dist/services/index.js +3 -0
  100. package/dist/services/index.js.map +1 -0
  101. package/dist/testing/chain-adapter-contract.js +1 -1
  102. package/dist/testing/chain-adapter-contract.js.map +1 -1
  103. package/dist/utils/chain-constants.d.ts +17 -0
  104. package/dist/utils/chain-constants.d.ts.map +1 -0
  105. package/dist/utils/chain-constants.js +27 -0
  106. package/dist/utils/chain-constants.js.map +1 -0
  107. package/dist/utils/index.d.ts +3 -0
  108. package/dist/utils/index.d.ts.map +1 -1
  109. package/dist/utils/index.js +6 -0
  110. package/dist/utils/index.js.map +1 -1
  111. package/dist/utils/safe-json-parse.d.ts +52 -0
  112. package/dist/utils/safe-json-parse.d.ts.map +1 -0
  113. package/dist/utils/safe-json-parse.js +68 -0
  114. package/dist/utils/safe-json-parse.js.map +1 -0
  115. package/dist/utils/sleep.d.ts +8 -0
  116. package/dist/utils/sleep.d.ts.map +1 -0
  117. package/dist/utils/sleep.js +10 -0
  118. package/dist/utils/sleep.js.map +1 -0
  119. package/package.json +2 -2
package/README.md CHANGED
@@ -133,7 +133,7 @@ waiaas quickset # Creates wallets + sessions automatically
133
133
  waiaas set-master # (Later) Harden password, then delete recovery.key
134
134
  ```
135
135
 
136
- The `--auto-provision` flag generates a cryptographically random master password and saves it to `~/.waiaas/recovery.key`. All subsequent CLI commands read it automatically. See the [Agent Self-Setup Guide](docs/guides/agent-self-setup.md) for the complete flow.
136
+ The `--auto-provision` flag generates a cryptographically random master password and saves it to `~/.waiaas/recovery.key`. All subsequent CLI commands read it automatically. See the [Agent Self-Setup Guide](docs/agent-guides/agent-self-setup.md) for the complete flow.
137
137
 
138
138
  For manual setup with human-guided password entry, install skills and follow `waiaas-setup/SKILL.md`:
139
139
 
@@ -215,10 +215,10 @@ Enabled by default (`admin_ui = true` in config.toml).
215
215
  | [Security Model](docs/security-model.md) | Authentication, policy engine, Kill Switch, AutoStop |
216
216
  | [Deployment Guide](docs/deployment.md) | Docker, npm, configuration reference |
217
217
  | [API Reference](docs/api-reference.md) | REST API endpoints and authentication |
218
- | [Agent Self-Setup Guide](docs/guides/agent-self-setup.md) | Fully autonomous setup with auto-provision |
219
- | [Agent Skills Integration](docs/guides/agent-skills-integration.md) | Universal guide for 27+ AI agent platforms |
220
- | [Claude Code Integration](docs/guides/claude-code-integration.md) | Skill files + MCP server setup for Claude Code |
221
- | [OpenClaw Integration](docs/guides/openclaw-integration.md) | Quick setup for OpenClaw bot |
218
+ | [Agent Self-Setup Guide](docs/agent-guides/agent-self-setup.md) | Fully autonomous setup with auto-provision |
219
+ | [Agent Skills Integration](docs/agent-guides/agent-skills-integration.md) | Universal guide for 27+ AI agent platforms |
220
+ | [Claude Code Integration](docs/agent-guides/claude-code-integration.md) | Skill files + MCP server setup for Claude Code |
221
+ | [OpenClaw Integration](docs/agent-guides/openclaw-integration.md) | Quick setup for OpenClaw bot |
222
222
  | [Wallet SDK Integration](docs/wallet-sdk-integration.md) | Integration guide for wallet developers |
223
223
  | [Why WAIaaS?](docs/why-waiaas/) | Background on AI agent wallet security |
224
224
  | [Contributing](CONTRIBUTING.md) | Development setup, code style, testing, PR guidelines |
@@ -0,0 +1,39 @@
1
+ /**
2
+ * CAIP-19 asset ID parsing and network extraction utilities.
3
+ *
4
+ * parseAssetId: parses a CAIP-19 asset type string and resolves the WAIaaS network.
5
+ * extractNetworkFromAssetId: convenience wrapper that returns only the network.
6
+ *
7
+ * @see standards.chainagnostic.org/CAIPs/caip-19
8
+ */
9
+ import type { NetworkType } from '../enums/chain.js';
10
+ export interface ParsedAssetId {
11
+ /** CAIP-2 chain identifier (e.g., "eip155:1") */
12
+ chainId: string;
13
+ /** Asset namespace (e.g., "erc20", "token", "slip44") */
14
+ namespace: string;
15
+ /** Token address, or null for native assets (slip44) */
16
+ address: string | null;
17
+ /** Resolved WAIaaS network type */
18
+ network: NetworkType;
19
+ /** True if this is a native asset (slip44 namespace) */
20
+ isNative: boolean;
21
+ }
22
+ /**
23
+ * Parse a CAIP-19 asset type string into its components with WAIaaS network resolution.
24
+ *
25
+ * - slip44 namespace => isNative=true, address=null
26
+ * - erc20/token namespace => isNative=false, address=assetReference
27
+ *
28
+ * @throws {Error} if CAIP-19 format is invalid
29
+ * @throws {Error} if CAIP-2 chain ID is not in the network mapping
30
+ */
31
+ export declare function parseAssetId(assetId: string): ParsedAssetId;
32
+ /**
33
+ * Extract the WAIaaS network type from a CAIP-19 asset type string.
34
+ * Convenience wrapper around parseAssetId.
35
+ *
36
+ * @throws {Error} if CAIP-19 format is invalid or CAIP-2 chain ID is unknown
37
+ */
38
+ export declare function extractNetworkFromAssetId(assetId: string): NetworkType;
39
+ //# sourceMappingURL=asset-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-resolve.d.ts","sourceRoot":"","sources":["../../src/caip/asset-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mCAAmC;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,wDAAwD;IACxD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAa3D;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAEtE"}
@@ -0,0 +1,33 @@
1
+ import { parseCaip19 } from './caip19.js';
2
+ import { caip2ToNetwork } from './network-map.js';
3
+ /**
4
+ * Parse a CAIP-19 asset type string into its components with WAIaaS network resolution.
5
+ *
6
+ * - slip44 namespace => isNative=true, address=null
7
+ * - erc20/token namespace => isNative=false, address=assetReference
8
+ *
9
+ * @throws {Error} if CAIP-19 format is invalid
10
+ * @throws {Error} if CAIP-2 chain ID is not in the network mapping
11
+ */
12
+ export function parseAssetId(assetId) {
13
+ const parsed = parseCaip19(assetId);
14
+ const { network } = caip2ToNetwork(parsed.chainId);
15
+ const isNative = parsed.assetNamespace === 'slip44';
16
+ return {
17
+ chainId: parsed.chainId,
18
+ namespace: parsed.assetNamespace,
19
+ address: isNative ? null : parsed.assetReference,
20
+ network,
21
+ isNative,
22
+ };
23
+ }
24
+ /**
25
+ * Extract the WAIaaS network type from a CAIP-19 asset type string.
26
+ * Convenience wrapper around parseAssetId.
27
+ *
28
+ * @throws {Error} if CAIP-19 format is invalid or CAIP-2 chain ID is unknown
29
+ */
30
+ export function extractNetworkFromAssetId(assetId) {
31
+ return parseAssetId(assetId).network;
32
+ }
33
+ //# sourceMappingURL=asset-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-resolve.js","sourceRoot":"","sources":["../../src/caip/asset-resolve.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAelD;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,KAAK,QAAQ,CAAC;IAEpD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,cAAc;QAChC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;QAChD,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACvC,CAAC"}
@@ -2,4 +2,6 @@ export { Caip2Schema, type Caip2, type Caip2Params, parseCaip2, formatCaip2 } fr
2
2
  export { CAIP19_REGEX, Caip19AssetTypeSchema, Caip19Schema, type Caip19AssetType, type Caip19, type Caip19Params, parseCaip19, formatCaip19, } from './caip19.js';
3
3
  export { CAIP2_TO_NETWORK, NETWORK_TO_CAIP2, networkToCaip2, caip2ToNetwork } from './network-map.js';
4
4
  export { nativeAssetId, tokenAssetId, isNativeAsset, nftAssetId, isNftAsset } from './asset-helpers.js';
5
+ export { parseAssetId, extractNetworkFromAssetId, type ParsedAssetId } from './asset-resolve.js';
6
+ export { enrichBalance, enrichAsset, enrichNft, enrichTransaction, enrichIncomingTx } from './response-enrichment.js';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/caip/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,KAAK,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGhG,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGtG,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/caip/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,KAAK,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGhG,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGtG,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGxG,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGjG,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -6,4 +6,8 @@ export { CAIP19_REGEX, Caip19AssetTypeSchema, Caip19Schema, parseCaip19, formatC
6
6
  export { CAIP2_TO_NETWORK, NETWORK_TO_CAIP2, networkToCaip2, caip2ToNetwork } from './network-map.js';
7
7
  // Asset helpers (native + token + NFT CAIP-19 generation)
8
8
  export { nativeAssetId, tokenAssetId, isNativeAsset, nftAssetId, isNftAsset } from './asset-helpers.js';
9
+ // Asset resolve (CAIP-19 parsing + network extraction)
10
+ export { parseAssetId, extractNetworkFromAssetId } from './asset-resolve.js';
11
+ // Response enrichment (runtime CAIP-2/19 injection)
12
+ export { enrichBalance, enrichAsset, enrichNft, enrichTransaction, enrichIncomingTx } from './response-enrichment.js';
9
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/caip/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAgC,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhG,uBAAuB;AACvB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,YAAY,EAIZ,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,qDAAqD;AACrD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEtG,0DAA0D;AAC1D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/caip/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAgC,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhG,uBAAuB;AACvB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,YAAY,EAIZ,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,qDAAqD;AACrD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEtG,0DAA0D;AAC1D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAExG,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAsB,MAAM,oBAAoB,CAAC;AAEjG,oDAAoD;AACpD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * CAIP response enrichment utilities.
3
+ *
4
+ * Each function takes an existing response object and returns a new object
5
+ * with chainId (CAIP-2) and/or assetId (CAIP-19) fields added.
6
+ *
7
+ * All functions are:
8
+ * - Additive only: original fields are spread and never removed
9
+ * - Graceful: unknown networks produce no chainId/assetId (no errors thrown)
10
+ *
11
+ * @see Phase 409-01 -- response enrichment utility functions
12
+ */
13
+ /**
14
+ * Enrich a balance response with chainId and native assetId.
15
+ */
16
+ export declare function enrichBalance<T extends Record<string, unknown>>(obj: T & {
17
+ network: string;
18
+ }): T & {
19
+ chainId?: string;
20
+ assetId?: string;
21
+ };
22
+ /**
23
+ * Enrich an asset response with chainId and assetId.
24
+ * - isNative=true -> slip44 namespace
25
+ * - isNative=false -> erc20 (EVM) or token (Solana) namespace
26
+ */
27
+ export declare function enrichAsset<T extends Record<string, unknown>>(obj: T & {
28
+ network: string;
29
+ mint: string;
30
+ isNative: boolean;
31
+ }): T & {
32
+ chainId?: string;
33
+ assetId?: string;
34
+ };
35
+ /**
36
+ * Enrich an NFT response with chainId and assetId.
37
+ * Only generates assetId for known standards (erc721, erc1155, metaplex).
38
+ */
39
+ export declare function enrichNft<T extends Record<string, unknown>>(obj: T & {
40
+ network: string;
41
+ contractAddress: string;
42
+ tokenId: string;
43
+ standard: string;
44
+ }): T & {
45
+ chainId?: string;
46
+ assetId?: string;
47
+ };
48
+ /**
49
+ * Enrich a transaction response with chainId.
50
+ * Only adds chainId when network is present and non-null.
51
+ */
52
+ export declare function enrichTransaction<T extends Record<string, unknown>>(obj: T & {
53
+ network?: string | null;
54
+ }): T & {
55
+ chainId?: string;
56
+ };
57
+ /**
58
+ * Enrich an incoming transaction response with chainId and assetId.
59
+ * - tokenAddress null/undefined -> native assetId
60
+ * - tokenAddress present -> token assetId (erc20/token namespace)
61
+ */
62
+ export declare function enrichIncomingTx<T extends Record<string, unknown>>(obj: T & {
63
+ network: string;
64
+ chain: string;
65
+ tokenAddress?: string | null;
66
+ }): T & {
67
+ chainId?: string;
68
+ assetId?: string;
69
+ };
70
+ //# sourceMappingURL=response-enrichment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-enrichment.d.ts","sourceRoot":"","sources":["../../src/caip/response-enrichment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqCH;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,GAAG,EAAE,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3B,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAQ5C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,GAAG,EAAE,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAC5D,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAe5C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,GAAG,EAAE,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvF,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAuB5C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,GAAG,EAAE,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnC,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAS1B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,GAAG,EAAE,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACxE,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAe5C"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * CAIP response enrichment utilities.
3
+ *
4
+ * Each function takes an existing response object and returns a new object
5
+ * with chainId (CAIP-2) and/or assetId (CAIP-19) fields added.
6
+ *
7
+ * All functions are:
8
+ * - Additive only: original fields are spread and never removed
9
+ * - Graceful: unknown networks produce no chainId/assetId (no errors thrown)
10
+ *
11
+ * @see Phase 409-01 -- response enrichment utility functions
12
+ */
13
+ import { networkToCaip2 } from './network-map.js';
14
+ import { nativeAssetId, tokenAssetId, nftAssetId } from './asset-helpers.js';
15
+ // ── Helpers ──────────────────────────────────────────────────────────
16
+ /** Safely get CAIP-2 chain ID from network string. Returns undefined on failure. */
17
+ function safeChainId(network) {
18
+ try {
19
+ return networkToCaip2(network);
20
+ }
21
+ catch {
22
+ return undefined;
23
+ }
24
+ }
25
+ /** Safely get native CAIP-19 asset ID. Returns undefined on failure. */
26
+ function safeNativeAssetId(network) {
27
+ try {
28
+ return nativeAssetId(network);
29
+ }
30
+ catch {
31
+ return undefined;
32
+ }
33
+ }
34
+ /** Safely get token CAIP-19 asset ID. Returns undefined on failure. */
35
+ function safeTokenAssetId(network, address) {
36
+ try {
37
+ return tokenAssetId(network, address);
38
+ }
39
+ catch {
40
+ return undefined;
41
+ }
42
+ }
43
+ // ── Enrichment functions ─────────────────────────────────────────────
44
+ /**
45
+ * Enrich a balance response with chainId and native assetId.
46
+ */
47
+ export function enrichBalance(obj) {
48
+ const chainId = safeChainId(obj.network);
49
+ const assetId = safeNativeAssetId(obj.network);
50
+ return {
51
+ ...obj,
52
+ ...(chainId ? { chainId } : {}),
53
+ ...(assetId ? { assetId } : {}),
54
+ };
55
+ }
56
+ /**
57
+ * Enrich an asset response with chainId and assetId.
58
+ * - isNative=true -> slip44 namespace
59
+ * - isNative=false -> erc20 (EVM) or token (Solana) namespace
60
+ */
61
+ export function enrichAsset(obj) {
62
+ const chainId = safeChainId(obj.network);
63
+ let assetId;
64
+ if (obj.isNative) {
65
+ assetId = safeNativeAssetId(obj.network);
66
+ }
67
+ else {
68
+ assetId = safeTokenAssetId(obj.network, obj.mint);
69
+ }
70
+ return {
71
+ ...obj,
72
+ ...(chainId ? { chainId } : {}),
73
+ ...(assetId ? { assetId } : {}),
74
+ };
75
+ }
76
+ /**
77
+ * Enrich an NFT response with chainId and assetId.
78
+ * Only generates assetId for known standards (erc721, erc1155, metaplex).
79
+ */
80
+ export function enrichNft(obj) {
81
+ const chainId = safeChainId(obj.network);
82
+ let assetId;
83
+ const validStandards = new Set(['erc721', 'erc1155', 'metaplex']);
84
+ if (validStandards.has(obj.standard)) {
85
+ try {
86
+ assetId = nftAssetId(obj.network, obj.contractAddress, obj.tokenId, obj.standard);
87
+ }
88
+ catch {
89
+ // graceful skip
90
+ }
91
+ }
92
+ return {
93
+ ...obj,
94
+ ...(chainId ? { chainId } : {}),
95
+ ...(assetId ? { assetId } : {}),
96
+ };
97
+ }
98
+ /**
99
+ * Enrich a transaction response with chainId.
100
+ * Only adds chainId when network is present and non-null.
101
+ */
102
+ export function enrichTransaction(obj) {
103
+ if (!obj.network) {
104
+ return { ...obj };
105
+ }
106
+ const chainId = safeChainId(obj.network);
107
+ return {
108
+ ...obj,
109
+ ...(chainId ? { chainId } : {}),
110
+ };
111
+ }
112
+ /**
113
+ * Enrich an incoming transaction response with chainId and assetId.
114
+ * - tokenAddress null/undefined -> native assetId
115
+ * - tokenAddress present -> token assetId (erc20/token namespace)
116
+ */
117
+ export function enrichIncomingTx(obj) {
118
+ const chainId = safeChainId(obj.network);
119
+ let assetId;
120
+ if (obj.tokenAddress) {
121
+ assetId = safeTokenAssetId(obj.network, obj.tokenAddress);
122
+ }
123
+ else {
124
+ assetId = safeNativeAssetId(obj.network);
125
+ }
126
+ return {
127
+ ...obj,
128
+ ...(chainId ? { chainId } : {}),
129
+ ...(assetId ? { assetId } : {}),
130
+ };
131
+ }
132
+ //# sourceMappingURL=response-enrichment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-enrichment.js","sourceRoot":"","sources":["../../src/caip/response-enrichment.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export { AA_PROVIDER_CHAIN_MAP, resolveProviderChainId, buildProviderBundlerUrl, AA_PROVIDER_DASHBOARD_URLS, } from './aa-provider-chains.js';
2
+ export { WELL_KNOWN_CONTRACTS, type WellKnownContractEntry, } from './well-known-contracts.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,oBAAoB,EACpB,KAAK,sBAAsB,GAC5B,MAAM,2BAA2B,CAAC"}
@@ -1,2 +1,4 @@
1
1
  export { AA_PROVIDER_CHAIN_MAP, resolveProviderChainId, buildProviderBundlerUrl, AA_PROVIDER_DASHBOARD_URLS, } from './aa-provider-chains.js';
2
+ // v32.0 Well-known contract data
3
+ export { WELL_KNOWN_CONTRACTS, } from './well-known-contracts.js';
2
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AAEjC,iCAAiC;AACjC,OAAO,EACL,oBAAoB,GAErB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Well-known contract addresses for human-readable name resolution.
3
+ *
4
+ * 300+ entries across 6 networks (Ethereum, Base, Arbitrum, Optimism, Polygon, Solana).
5
+ * Used by ContractNameRegistry as Tier 2 (well-known) data source.
6
+ *
7
+ * All EVM addresses MUST be lowercase (no checksummed mixed-case).
8
+ * Solana addresses are base58 strings.
9
+ */
10
+ /** A single well-known contract entry. */
11
+ export interface WellKnownContractEntry {
12
+ /** Contract address (lowercase hex for EVM, base58 for Solana). */
13
+ address: string;
14
+ /** Human-readable name. */
15
+ name: string;
16
+ /** Protocol or project name. */
17
+ protocol: string;
18
+ /** Network identifier. */
19
+ network: string;
20
+ }
21
+ export declare const WELL_KNOWN_CONTRACTS: readonly WellKnownContractEntry[];
22
+ //# sourceMappingURL=well-known-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"well-known-contracts.d.ts","sourceRoot":"","sources":["../../src/constants/well-known-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,0CAA0C;AAC1C,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,oBAAoB,EAAE,SAAS,sBAAsB,EAsexD,CAAC"}