@agirails/sdk 2.2.0 → 2.2.2

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 (120) hide show
  1. package/dist/ACTPClient.d.ts +200 -0
  2. package/dist/ACTPClient.d.ts.map +1 -1
  3. package/dist/ACTPClient.js +266 -2
  4. package/dist/ACTPClient.js.map +1 -1
  5. package/dist/abi/ACTPKernel.json +16 -0
  6. package/dist/adapters/AdapterRegistry.d.ts +140 -0
  7. package/dist/adapters/AdapterRegistry.d.ts.map +1 -0
  8. package/dist/adapters/AdapterRegistry.js +166 -0
  9. package/dist/adapters/AdapterRegistry.js.map +1 -0
  10. package/dist/adapters/AdapterRouter.d.ts +165 -0
  11. package/dist/adapters/AdapterRouter.d.ts.map +1 -0
  12. package/dist/adapters/AdapterRouter.js +350 -0
  13. package/dist/adapters/AdapterRouter.js.map +1 -0
  14. package/dist/adapters/BaseAdapter.d.ts +17 -0
  15. package/dist/adapters/BaseAdapter.d.ts.map +1 -1
  16. package/dist/adapters/BaseAdapter.js +21 -0
  17. package/dist/adapters/BaseAdapter.js.map +1 -1
  18. package/dist/adapters/BasicAdapter.d.ts +72 -3
  19. package/dist/adapters/BasicAdapter.d.ts.map +1 -1
  20. package/dist/adapters/BasicAdapter.js +170 -2
  21. package/dist/adapters/BasicAdapter.js.map +1 -1
  22. package/dist/adapters/IAdapter.d.ts +230 -0
  23. package/dist/adapters/IAdapter.d.ts.map +1 -0
  24. package/dist/adapters/IAdapter.js +44 -0
  25. package/dist/adapters/IAdapter.js.map +1 -0
  26. package/dist/adapters/StandardAdapter.d.ts +70 -1
  27. package/dist/adapters/StandardAdapter.d.ts.map +1 -1
  28. package/dist/adapters/StandardAdapter.js +184 -0
  29. package/dist/adapters/StandardAdapter.js.map +1 -1
  30. package/dist/adapters/X402Adapter.d.ts +208 -0
  31. package/dist/adapters/X402Adapter.d.ts.map +1 -0
  32. package/dist/adapters/X402Adapter.js +423 -0
  33. package/dist/adapters/X402Adapter.js.map +1 -0
  34. package/dist/adapters/index.d.ts +8 -0
  35. package/dist/adapters/index.d.ts.map +1 -1
  36. package/dist/adapters/index.js +19 -1
  37. package/dist/adapters/index.js.map +1 -1
  38. package/dist/cli/commands/init.d.ts +4 -0
  39. package/dist/cli/commands/init.d.ts.map +1 -1
  40. package/dist/cli/commands/init.js +184 -4
  41. package/dist/cli/commands/init.js.map +1 -1
  42. package/dist/config/networks.js +3 -3
  43. package/dist/config/networks.js.map +1 -1
  44. package/dist/erc8004/ERC8004Bridge.d.ts +155 -0
  45. package/dist/erc8004/ERC8004Bridge.d.ts.map +1 -0
  46. package/dist/erc8004/ERC8004Bridge.js +325 -0
  47. package/dist/erc8004/ERC8004Bridge.js.map +1 -0
  48. package/dist/erc8004/ReputationReporter.d.ts +223 -0
  49. package/dist/erc8004/ReputationReporter.d.ts.map +1 -0
  50. package/dist/erc8004/ReputationReporter.js +266 -0
  51. package/dist/erc8004/ReputationReporter.js.map +1 -0
  52. package/dist/erc8004/index.d.ts +36 -0
  53. package/dist/erc8004/index.d.ts.map +1 -0
  54. package/dist/erc8004/index.js +46 -0
  55. package/dist/erc8004/index.js.map +1 -0
  56. package/dist/index.d.ts +5 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +21 -2
  59. package/dist/index.js.map +1 -1
  60. package/dist/protocol/ACTPKernel.d.ts +1 -1
  61. package/dist/protocol/ACTPKernel.d.ts.map +1 -1
  62. package/dist/protocol/ACTPKernel.js +16 -7
  63. package/dist/protocol/ACTPKernel.js.map +1 -1
  64. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
  65. package/dist/runtime/BlockchainRuntime.js +2 -0
  66. package/dist/runtime/BlockchainRuntime.js.map +1 -1
  67. package/dist/runtime/IACTPRuntime.d.ts +6 -0
  68. package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
  69. package/dist/runtime/MockRuntime.d.ts +12 -0
  70. package/dist/runtime/MockRuntime.d.ts.map +1 -1
  71. package/dist/runtime/MockRuntime.js +41 -0
  72. package/dist/runtime/MockRuntime.js.map +1 -1
  73. package/dist/runtime/types/MockState.d.ts +6 -0
  74. package/dist/runtime/types/MockState.d.ts.map +1 -1
  75. package/dist/runtime/types/MockState.js.map +1 -1
  76. package/dist/types/adapter.d.ts +359 -0
  77. package/dist/types/adapter.d.ts.map +1 -0
  78. package/dist/types/adapter.js +115 -0
  79. package/dist/types/adapter.js.map +1 -0
  80. package/dist/types/erc8004.d.ts +184 -0
  81. package/dist/types/erc8004.d.ts.map +1 -0
  82. package/dist/types/erc8004.js +132 -0
  83. package/dist/types/erc8004.js.map +1 -0
  84. package/dist/types/index.d.ts +3 -0
  85. package/dist/types/index.d.ts.map +1 -1
  86. package/dist/types/index.js +3 -0
  87. package/dist/types/index.js.map +1 -1
  88. package/dist/types/transaction.d.ts +12 -0
  89. package/dist/types/transaction.d.ts.map +1 -1
  90. package/dist/types/x402.d.ts +162 -0
  91. package/dist/types/x402.d.ts.map +1 -0
  92. package/dist/types/x402.js +162 -0
  93. package/dist/types/x402.js.map +1 -0
  94. package/package.json +3 -2
  95. package/src/ACTPClient.ts +318 -2
  96. package/src/abi/ACTPKernel.json +16 -0
  97. package/src/adapters/AdapterRegistry.ts +173 -0
  98. package/src/adapters/AdapterRouter.ts +417 -0
  99. package/src/adapters/BaseAdapter.ts +25 -0
  100. package/src/adapters/BasicAdapter.ts +199 -3
  101. package/src/adapters/IAdapter.ts +292 -0
  102. package/src/adapters/StandardAdapter.ts +220 -1
  103. package/src/adapters/X402Adapter.ts +653 -0
  104. package/src/adapters/index.ts +27 -0
  105. package/src/cli/commands/init.ts +208 -3
  106. package/src/config/networks.ts +3 -3
  107. package/src/erc8004/ERC8004Bridge.ts +461 -0
  108. package/src/erc8004/ReputationReporter.ts +472 -0
  109. package/src/erc8004/index.ts +61 -0
  110. package/src/index.ts +43 -0
  111. package/src/protocol/ACTPKernel.ts +26 -7
  112. package/src/runtime/BlockchainRuntime.ts +2 -0
  113. package/src/runtime/IACTPRuntime.ts +6 -0
  114. package/src/runtime/MockRuntime.ts +42 -0
  115. package/src/runtime/types/MockState.ts +7 -0
  116. package/src/types/adapter.ts +296 -0
  117. package/src/types/erc8004.ts +293 -0
  118. package/src/types/index.ts +3 -0
  119. package/src/types/transaction.ts +12 -0
  120. package/src/types/x402.ts +219 -0
@@ -0,0 +1,140 @@
1
+ /**
2
+ * AdapterRegistry - Central registry for payment adapters.
3
+ *
4
+ * Manages the collection of available adapters and provides
5
+ * methods for registration, lookup, and priority-based retrieval.
6
+ *
7
+ * @module adapters/AdapterRegistry
8
+ */
9
+ import { IAdapter } from './IAdapter';
10
+ /**
11
+ * AdapterRegistry - Central registry for managing available adapters.
12
+ *
13
+ * The registry maintains a collection of adapters indexed by their ID.
14
+ * It provides methods for:
15
+ * - Registration and unregistration
16
+ * - Lookup by ID
17
+ * - Priority-sorted retrieval
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const registry = new AdapterRegistry();
22
+ *
23
+ * // Register adapters
24
+ * registry.register(basicAdapter);
25
+ * registry.register(standardAdapter);
26
+ *
27
+ * // Lookup by ID
28
+ * const adapter = registry.get('basic');
29
+ *
30
+ * // Get all adapters sorted by priority
31
+ * const adapters = registry.getByPriority();
32
+ * ```
33
+ */
34
+ export declare class AdapterRegistry {
35
+ /**
36
+ * Internal map of adapters by ID.
37
+ */
38
+ private adapters;
39
+ /**
40
+ * Register an adapter.
41
+ *
42
+ * If an adapter with the same ID already exists, it will be replaced.
43
+ *
44
+ * @param adapter - Adapter to register
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * registry.register(new BasicAdapter(runtime, requesterAddress));
49
+ * ```
50
+ */
51
+ register(adapter: IAdapter): void;
52
+ /**
53
+ * Unregister an adapter by ID.
54
+ *
55
+ * @param id - Adapter ID to remove
56
+ * @returns True if adapter was found and removed, false otherwise
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const removed = registry.unregister('custom-adapter');
61
+ * ```
62
+ */
63
+ unregister(id: string): boolean;
64
+ /**
65
+ * Get an adapter by ID.
66
+ *
67
+ * @param id - Adapter ID to look up
68
+ * @returns The adapter or undefined if not found
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const adapter = registry.get('standard');
73
+ * if (adapter) {
74
+ * await adapter.pay(params);
75
+ * }
76
+ * ```
77
+ */
78
+ get(id: string): IAdapter | undefined;
79
+ /**
80
+ * Get all registered adapters.
81
+ *
82
+ * Returns adapters in insertion order.
83
+ *
84
+ * @returns Array of all registered adapters
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * const all = registry.getAll();
89
+ * console.log(`${all.length} adapters registered`);
90
+ * ```
91
+ */
92
+ getAll(): IAdapter[];
93
+ /**
94
+ * Check if an adapter is registered.
95
+ *
96
+ * @param id - Adapter ID to check
97
+ * @returns True if adapter is registered
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * if (registry.has('x402')) {
102
+ * console.log('x402 adapter available');
103
+ * }
104
+ * ```
105
+ */
106
+ has(id: string): boolean;
107
+ /**
108
+ * Get adapters sorted by priority (highest first).
109
+ *
110
+ * Higher priority adapters are tried first during selection.
111
+ *
112
+ * @returns Array of adapters sorted by priority descending
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * const byPriority = registry.getByPriority();
117
+ * // byPriority[0] has highest priority
118
+ * ```
119
+ */
120
+ getByPriority(): IAdapter[];
121
+ /**
122
+ * Get the number of registered adapters.
123
+ *
124
+ * @returns Number of adapters
125
+ */
126
+ get size(): number;
127
+ /**
128
+ * Get all adapter IDs.
129
+ *
130
+ * @returns Array of adapter IDs
131
+ */
132
+ getIds(): string[];
133
+ /**
134
+ * Clear all registered adapters.
135
+ *
136
+ * Primarily useful for testing.
137
+ */
138
+ clear(): void;
139
+ }
140
+ //# sourceMappingURL=AdapterRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterRegistry.d.ts","sourceRoot":"","sources":["../../src/adapters/AdapterRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAoC;IAEpD;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAOjC;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIrC;;;;;;;;;;;;OAYG;IACH,MAAM,IAAI,QAAQ,EAAE;IAIpB;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;;;;;;;;;;;OAYG;IACH,aAAa,IAAI,QAAQ,EAAE;IAM3B;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,MAAM,IAAI,MAAM,EAAE;IAIlB;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /**
3
+ * AdapterRegistry - Central registry for payment adapters.
4
+ *
5
+ * Manages the collection of available adapters and provides
6
+ * methods for registration, lookup, and priority-based retrieval.
7
+ *
8
+ * @module adapters/AdapterRegistry
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.AdapterRegistry = void 0;
12
+ /**
13
+ * AdapterRegistry - Central registry for managing available adapters.
14
+ *
15
+ * The registry maintains a collection of adapters indexed by their ID.
16
+ * It provides methods for:
17
+ * - Registration and unregistration
18
+ * - Lookup by ID
19
+ * - Priority-sorted retrieval
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const registry = new AdapterRegistry();
24
+ *
25
+ * // Register adapters
26
+ * registry.register(basicAdapter);
27
+ * registry.register(standardAdapter);
28
+ *
29
+ * // Lookup by ID
30
+ * const adapter = registry.get('basic');
31
+ *
32
+ * // Get all adapters sorted by priority
33
+ * const adapters = registry.getByPriority();
34
+ * ```
35
+ */
36
+ class AdapterRegistry {
37
+ constructor() {
38
+ /**
39
+ * Internal map of adapters by ID.
40
+ */
41
+ this.adapters = new Map();
42
+ }
43
+ /**
44
+ * Register an adapter.
45
+ *
46
+ * If an adapter with the same ID already exists, it will be replaced.
47
+ *
48
+ * @param adapter - Adapter to register
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * registry.register(new BasicAdapter(runtime, requesterAddress));
53
+ * ```
54
+ */
55
+ register(adapter) {
56
+ if (!adapter.metadata?.id) {
57
+ throw new Error('Cannot register adapter without metadata.id');
58
+ }
59
+ this.adapters.set(adapter.metadata.id, adapter);
60
+ }
61
+ /**
62
+ * Unregister an adapter by ID.
63
+ *
64
+ * @param id - Adapter ID to remove
65
+ * @returns True if adapter was found and removed, false otherwise
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * const removed = registry.unregister('custom-adapter');
70
+ * ```
71
+ */
72
+ unregister(id) {
73
+ return this.adapters.delete(id);
74
+ }
75
+ /**
76
+ * Get an adapter by ID.
77
+ *
78
+ * @param id - Adapter ID to look up
79
+ * @returns The adapter or undefined if not found
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const adapter = registry.get('standard');
84
+ * if (adapter) {
85
+ * await adapter.pay(params);
86
+ * }
87
+ * ```
88
+ */
89
+ get(id) {
90
+ return this.adapters.get(id);
91
+ }
92
+ /**
93
+ * Get all registered adapters.
94
+ *
95
+ * Returns adapters in insertion order.
96
+ *
97
+ * @returns Array of all registered adapters
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * const all = registry.getAll();
102
+ * console.log(`${all.length} adapters registered`);
103
+ * ```
104
+ */
105
+ getAll() {
106
+ return Array.from(this.adapters.values());
107
+ }
108
+ /**
109
+ * Check if an adapter is registered.
110
+ *
111
+ * @param id - Adapter ID to check
112
+ * @returns True if adapter is registered
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * if (registry.has('x402')) {
117
+ * console.log('x402 adapter available');
118
+ * }
119
+ * ```
120
+ */
121
+ has(id) {
122
+ return this.adapters.has(id);
123
+ }
124
+ /**
125
+ * Get adapters sorted by priority (highest first).
126
+ *
127
+ * Higher priority adapters are tried first during selection.
128
+ *
129
+ * @returns Array of adapters sorted by priority descending
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * const byPriority = registry.getByPriority();
134
+ * // byPriority[0] has highest priority
135
+ * ```
136
+ */
137
+ getByPriority() {
138
+ return this.getAll().sort((a, b) => b.metadata.priority - a.metadata.priority);
139
+ }
140
+ /**
141
+ * Get the number of registered adapters.
142
+ *
143
+ * @returns Number of adapters
144
+ */
145
+ get size() {
146
+ return this.adapters.size;
147
+ }
148
+ /**
149
+ * Get all adapter IDs.
150
+ *
151
+ * @returns Array of adapter IDs
152
+ */
153
+ getIds() {
154
+ return Array.from(this.adapters.keys());
155
+ }
156
+ /**
157
+ * Clear all registered adapters.
158
+ *
159
+ * Primarily useful for testing.
160
+ */
161
+ clear() {
162
+ this.adapters.clear();
163
+ }
164
+ }
165
+ exports.AdapterRegistry = AdapterRegistry;
166
+ //# sourceMappingURL=AdapterRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterRegistry.js","sourceRoot":"","sources":["../../src/adapters/AdapterRegistry.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAIH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAa,eAAe;IAA5B;QACE;;WAEG;QACK,aAAQ,GAA0B,IAAI,GAAG,EAAE,CAAC;IAqItD,CAAC;IAnIC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAiB;QACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CACpD,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AAzID,0CAyIC"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * AdapterRouter - Intelligent adapter selection with guard-rails.
3
+ *
4
+ * The router selects the best adapter for each payment based on:
5
+ * - Explicit adapter preference
6
+ * - Required capabilities (escrow, disputes, identity)
7
+ * - Recipient type (address vs HTTP endpoint)
8
+ * - Adapter priority
9
+ *
10
+ * SECURITY: All parameters are validated before selection.
11
+ * SECURITY: All adapters must enforce explicit release (no auto-settle).
12
+ *
13
+ * @module adapters/AdapterRouter
14
+ */
15
+ import { AdapterRegistry } from './AdapterRegistry';
16
+ import { IAdapter } from './IAdapter';
17
+ import { UnifiedPayParams } from '../types/adapter';
18
+ import { ERC8004Bridge } from '../erc8004/ERC8004Bridge';
19
+ /**
20
+ * Result of adapter selection with potential ERC-8004 resolution.
21
+ */
22
+ export interface AdapterSelectionResult {
23
+ /** Selected adapter */
24
+ adapter: IAdapter;
25
+ /** Resolved payment parameters (with wallet instead of agentId) */
26
+ resolvedParams: UnifiedPayParams;
27
+ /** Whether an ERC-8004 agent ID was resolved */
28
+ wasAgentIdResolved: boolean;
29
+ }
30
+ /**
31
+ * AdapterRouter - Intelligent adapter selection with guard-rails.
32
+ *
33
+ * Selection logic (in order):
34
+ * 1. Validate params (throws if invalid)
35
+ * 2. Explicit adapter requested -> use it
36
+ * 3. Escrow/dispute required -> StandardAdapter
37
+ * 4. HTTP endpoint + no escrow -> X402Adapter (when available)
38
+ * 5. ERC-8004 identity -> ERC8004Adapter (when available)
39
+ * 6. Default -> First adapter that can handle (by priority)
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const registry = new AdapterRegistry();
44
+ * registry.register(basicAdapter);
45
+ * registry.register(standardAdapter);
46
+ *
47
+ * const router = new AdapterRouter(registry);
48
+ *
49
+ * // Auto-select best adapter
50
+ * const adapter = router.select({ to: '0x...', amount: '100' });
51
+ *
52
+ * // Explicit adapter request
53
+ * const adapter = router.select({
54
+ * to: '0x...',
55
+ * amount: '100',
56
+ * metadata: { preferredAdapter: 'standard' }
57
+ * });
58
+ * ```
59
+ */
60
+ export declare class AdapterRouter {
61
+ private registry;
62
+ private erc8004Bridge?;
63
+ /**
64
+ * Creates a new AdapterRouter instance.
65
+ *
66
+ * @param registry - AdapterRegistry containing available adapters
67
+ * @param erc8004Bridge - Optional ERC-8004 bridge for agent ID resolution
68
+ */
69
+ constructor(registry: AdapterRegistry, erc8004Bridge?: ERC8004Bridge);
70
+ /**
71
+ * Set the ERC-8004 bridge for agent ID resolution.
72
+ *
73
+ * @param bridge - ERC8004Bridge instance
74
+ */
75
+ setERC8004Bridge(bridge: ERC8004Bridge): void;
76
+ /**
77
+ * Select the best adapter for the given payment parameters.
78
+ *
79
+ * @param params - Unified payment parameters
80
+ * @returns The selected adapter
81
+ * @throws {ValidationError} If params are invalid
82
+ * @throws {Error} If no suitable adapter found
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * const adapter = router.select({
87
+ * to: '0xProvider...',
88
+ * amount: '100',
89
+ * });
90
+ * const result = await adapter.pay(params);
91
+ * ```
92
+ */
93
+ select(params: UnifiedPayParams): IAdapter;
94
+ /**
95
+ * Validate payment parameters with Zod schema.
96
+ *
97
+ * GUARD-RAIL: Performs strict validation before any adapter selection.
98
+ *
99
+ * @param params - Parameters to validate
100
+ * @throws {ValidationError} If params are invalid
101
+ */
102
+ private validateParams;
103
+ /**
104
+ * Check if a string is an HTTP/HTTPS endpoint.
105
+ *
106
+ * @param to - Recipient string to check
107
+ * @returns True if it's an HTTP endpoint
108
+ */
109
+ private isHttpEndpoint;
110
+ /**
111
+ * Get all adapters that can handle the given params.
112
+ *
113
+ * Useful for debugging or letting users choose from multiple options.
114
+ *
115
+ * @param params - Payment parameters
116
+ * @returns Array of adapters that can handle params
117
+ */
118
+ getCompatibleAdapters(params: UnifiedPayParams): IAdapter[];
119
+ /**
120
+ * Check if any adapter can handle the given params.
121
+ *
122
+ * @param params - Payment parameters
123
+ * @returns True if at least one adapter can handle
124
+ */
125
+ canHandle(params: UnifiedPayParams): boolean;
126
+ /**
127
+ * Select adapter AND resolve ERC-8004 agent IDs.
128
+ *
129
+ * This is the recommended method for payment flows. It:
130
+ * 1. Checks if `to` is an ERC-8004 agent ID (numeric string)
131
+ * 2. If so, resolves it to a wallet address via ERC8004Bridge
132
+ * 3. Stores the original agentId in erc8004AgentId field
133
+ * 4. Selects the appropriate adapter
134
+ *
135
+ * @param params - Unified payment parameters
136
+ * @returns Selection result with resolved params
137
+ * @throws {ValidationError} If params invalid or agent not found
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * const { adapter, resolvedParams } = await router.selectAndResolve({
142
+ * to: '12345', // ERC-8004 agent ID
143
+ * amount: '100',
144
+ * });
145
+ *
146
+ * // resolvedParams.to is now the wallet address
147
+ * // resolvedParams.erc8004AgentId is '12345'
148
+ * const result = await adapter.pay(resolvedParams);
149
+ * ```
150
+ */
151
+ selectAndResolve(params: UnifiedPayParams): Promise<AdapterSelectionResult>;
152
+ /**
153
+ * Check if a string looks like an ERC-8004 agent ID.
154
+ *
155
+ * Agent IDs are numeric strings (uint256) that are:
156
+ * - NOT Ethereum addresses (0x-prefixed)
157
+ * - NOT URLs (http/https)
158
+ * - Valid as BigInt in range [0, 2^256)
159
+ *
160
+ * @param to - Recipient string to check
161
+ * @returns True if it looks like an agent ID
162
+ */
163
+ isERC8004AgentId(to: string): boolean;
164
+ }
165
+ //# sourceMappingURL=AdapterRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterRouter.d.ts","sourceRoot":"","sources":["../../src/adapters/AdapterRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACL,gBAAgB,EAGjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uBAAuB;IACvB,OAAO,EAAE,QAAQ,CAAC;IAElB,mEAAmE;IACnE,cAAc,EAAE,gBAAgB,CAAC;IAEjC,gDAAgD;IAChD,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,aAAa;IAUtB,OAAO,CAAC,QAAQ;IATlB,OAAO,CAAC,aAAa,CAAC,CAAgB;IAEtC;;;;;OAKG;gBAEO,QAAQ,EAAE,eAAe,EACjC,aAAa,CAAC,EAAE,aAAa;IAK/B;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAI7C;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,QAAQ;IA4F1C;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IA6CtB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAStB;;;;;;;OAOG;IACH,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,EAAE;IAW3D;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO;IAa5C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgDjF;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAuBtC"}