agentwallet-sdk 3.0.0 → 3.1.1

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 (214) hide show
  1. package/README.md +226 -10
  2. package/dist/fiat/index.d.ts +10 -0
  3. package/dist/fiat/index.d.ts.map +1 -0
  4. package/dist/fiat/index.js +9 -0
  5. package/dist/fiat/index.js.map +1 -0
  6. package/dist/fiat/onramp.d.ts +101 -0
  7. package/dist/fiat/onramp.d.ts.map +1 -0
  8. package/dist/fiat/onramp.js +155 -0
  9. package/dist/fiat/onramp.js.map +1 -0
  10. package/dist/fiat/providers/index.d.ts +16 -0
  11. package/dist/fiat/providers/index.d.ts.map +1 -0
  12. package/dist/fiat/providers/index.js +30 -0
  13. package/dist/fiat/providers/index.js.map +1 -0
  14. package/dist/fiat/providers/moonpay.d.ts +22 -0
  15. package/dist/fiat/providers/moonpay.d.ts.map +1 -0
  16. package/dist/fiat/providers/moonpay.js +107 -0
  17. package/dist/fiat/providers/moonpay.js.map +1 -0
  18. package/dist/fiat/providers/stripe.d.ts +26 -0
  19. package/dist/fiat/providers/stripe.d.ts.map +1 -0
  20. package/dist/fiat/providers/stripe.js +135 -0
  21. package/dist/fiat/providers/stripe.js.map +1 -0
  22. package/dist/fiat/providers/transak.d.ts +26 -0
  23. package/dist/fiat/providers/transak.d.ts.map +1 -0
  24. package/dist/fiat/providers/transak.js +119 -0
  25. package/dist/fiat/providers/transak.js.map +1 -0
  26. package/dist/fiat/types.d.ts +106 -0
  27. package/dist/fiat/types.d.ts.map +1 -0
  28. package/dist/fiat/types.js +13 -0
  29. package/dist/fiat/types.js.map +1 -0
  30. package/dist/flash/executor.d.ts +119 -0
  31. package/dist/flash/executor.d.ts.map +1 -0
  32. package/dist/flash/executor.js +195 -0
  33. package/dist/flash/executor.js.map +1 -0
  34. package/dist/flash/index.d.ts +28 -0
  35. package/dist/flash/index.d.ts.map +1 -0
  36. package/dist/flash/index.js +25 -0
  37. package/dist/flash/index.js.map +1 -0
  38. package/dist/flash/scanner.d.ts +133 -0
  39. package/dist/flash/scanner.d.ts.map +1 -0
  40. package/dist/flash/scanner.js +212 -0
  41. package/dist/flash/scanner.js.map +1 -0
  42. package/dist/flash/types.d.ts +136 -0
  43. package/dist/flash/types.d.ts.map +1 -0
  44. package/dist/flash/types.js +23 -0
  45. package/dist/flash/types.js.map +1 -0
  46. package/dist/gas/index.d.ts +4 -0
  47. package/dist/gas/index.d.ts.map +1 -0
  48. package/dist/gas/index.js +3 -0
  49. package/dist/gas/index.js.map +1 -0
  50. package/dist/gas/sponsor.d.ts +70 -0
  51. package/dist/gas/sponsor.d.ts.map +1 -0
  52. package/dist/gas/sponsor.js +193 -0
  53. package/dist/gas/sponsor.js.map +1 -0
  54. package/dist/gas/types.d.ts +76 -0
  55. package/dist/gas/types.d.ts.map +1 -0
  56. package/dist/gas/types.js +21 -0
  57. package/dist/gas/types.js.map +1 -0
  58. package/dist/index.d.ts +84 -62
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +29 -0
  61. package/dist/index.js.map +1 -1
  62. package/dist/mev/index.d.ts +4 -0
  63. package/dist/mev/index.d.ts.map +1 -0
  64. package/dist/mev/index.js +4 -0
  65. package/dist/mev/index.js.map +1 -0
  66. package/dist/mev/protection.d.ts +54 -0
  67. package/dist/mev/protection.d.ts.map +1 -0
  68. package/dist/mev/protection.js +185 -0
  69. package/dist/mev/protection.js.map +1 -0
  70. package/dist/mev/risk.d.ts +19 -0
  71. package/dist/mev/risk.d.ts.map +1 -0
  72. package/dist/mev/risk.js +95 -0
  73. package/dist/mev/risk.js.map +1 -0
  74. package/dist/mev/types.d.ts +49 -0
  75. package/dist/mev/types.d.ts.map +1 -0
  76. package/dist/mev/types.js +2 -0
  77. package/dist/mev/types.js.map +1 -0
  78. package/dist/settlement/index.d.ts +4 -0
  79. package/dist/settlement/index.d.ts.map +1 -0
  80. package/dist/settlement/index.js +3 -0
  81. package/dist/settlement/index.js.map +1 -0
  82. package/dist/settlement/types.d.ts +66 -0
  83. package/dist/settlement/types.d.ts.map +1 -0
  84. package/dist/settlement/types.js +37 -0
  85. package/dist/settlement/types.js.map +1 -0
  86. package/dist/settlement/verifier.d.ts +75 -0
  87. package/dist/settlement/verifier.d.ts.map +1 -0
  88. package/dist/settlement/verifier.js +354 -0
  89. package/dist/settlement/verifier.js.map +1 -0
  90. package/dist/solver/adapter.d.ts +47 -0
  91. package/dist/solver/adapter.d.ts.map +1 -0
  92. package/dist/solver/adapter.js +138 -0
  93. package/dist/solver/adapter.js.map +1 -0
  94. package/dist/solver/analyzer.d.ts +48 -0
  95. package/dist/solver/analyzer.d.ts.map +1 -0
  96. package/dist/solver/analyzer.js +89 -0
  97. package/dist/solver/analyzer.js.map +1 -0
  98. package/dist/solver/builder.d.ts +31 -0
  99. package/dist/solver/builder.d.ts.map +1 -0
  100. package/dist/solver/builder.js +60 -0
  101. package/dist/solver/builder.js.map +1 -0
  102. package/dist/solver/index.d.ts +22 -0
  103. package/dist/solver/index.d.ts.map +1 -0
  104. package/dist/solver/index.js +21 -0
  105. package/dist/solver/index.js.map +1 -0
  106. package/dist/solver/types.d.ts +115 -0
  107. package/dist/solver/types.d.ts.map +1 -0
  108. package/dist/solver/types.js +10 -0
  109. package/dist/solver/types.js.map +1 -0
  110. package/dist/swap/index.d.ts +1 -0
  111. package/dist/swap/index.d.ts.map +1 -1
  112. package/dist/swap/index.js +2 -0
  113. package/dist/swap/index.js.map +1 -1
  114. package/dist/swap/router/cache.d.ts +13 -0
  115. package/dist/swap/router/cache.d.ts.map +1 -0
  116. package/dist/swap/router/cache.js +30 -0
  117. package/dist/swap/router/cache.js.map +1 -0
  118. package/dist/swap/router/flashbots.d.ts +10 -0
  119. package/dist/swap/router/flashbots.d.ts.map +1 -0
  120. package/dist/swap/router/flashbots.js +43 -0
  121. package/dist/swap/router/flashbots.js.map +1 -0
  122. package/dist/swap/router/health.d.ts +17 -0
  123. package/dist/swap/router/health.d.ts.map +1 -0
  124. package/dist/swap/router/health.js +38 -0
  125. package/dist/swap/router/health.js.map +1 -0
  126. package/dist/swap/router/index.d.ts +10 -0
  127. package/dist/swap/router/index.d.ts.map +1 -0
  128. package/dist/swap/router/index.js +10 -0
  129. package/dist/swap/router/index.js.map +1 -0
  130. package/dist/swap/router/providers/cowswap.d.ts +11 -0
  131. package/dist/swap/router/providers/cowswap.d.ts.map +1 -0
  132. package/dist/swap/router/providers/cowswap.js +79 -0
  133. package/dist/swap/router/providers/cowswap.js.map +1 -0
  134. package/dist/swap/router/providers/index.d.ts +20 -0
  135. package/dist/swap/router/providers/index.d.ts.map +1 -0
  136. package/dist/swap/router/providers/index.js +32 -0
  137. package/dist/swap/router/providers/index.js.map +1 -0
  138. package/dist/swap/router/providers/jupiter.d.ts +12 -0
  139. package/dist/swap/router/providers/jupiter.d.ts.map +1 -0
  140. package/dist/swap/router/providers/jupiter.js +73 -0
  141. package/dist/swap/router/providers/jupiter.js.map +1 -0
  142. package/dist/swap/router/providers/lifi.d.ts +11 -0
  143. package/dist/swap/router/providers/lifi.d.ts.map +1 -0
  144. package/dist/swap/router/providers/lifi.js +123 -0
  145. package/dist/swap/router/providers/lifi.js.map +1 -0
  146. package/dist/swap/router/providers/oneinch.d.ts +13 -0
  147. package/dist/swap/router/providers/oneinch.d.ts.map +1 -0
  148. package/dist/swap/router/providers/oneinch.js +71 -0
  149. package/dist/swap/router/providers/oneinch.js.map +1 -0
  150. package/dist/swap/router/providers/paraswap.d.ts +11 -0
  151. package/dist/swap/router/providers/paraswap.d.ts.map +1 -0
  152. package/dist/swap/router/providers/paraswap.js +73 -0
  153. package/dist/swap/router/providers/paraswap.js.map +1 -0
  154. package/dist/swap/router/providers/uniswap.d.ts +31 -0
  155. package/dist/swap/router/providers/uniswap.d.ts.map +1 -0
  156. package/dist/swap/router/providers/uniswap.js +116 -0
  157. package/dist/swap/router/providers/uniswap.js.map +1 -0
  158. package/dist/swap/router/providers/zerox.d.ts +13 -0
  159. package/dist/swap/router/providers/zerox.d.ts.map +1 -0
  160. package/dist/swap/router/providers/zerox.js +94 -0
  161. package/dist/swap/router/providers/zerox.js.map +1 -0
  162. package/dist/swap/router/router.d.ts +86 -0
  163. package/dist/swap/router/router.d.ts.map +1 -0
  164. package/dist/swap/router/router.js +224 -0
  165. package/dist/swap/router/router.js.map +1 -0
  166. package/dist/swap/router/rsi/engine.d.ts +60 -0
  167. package/dist/swap/router/rsi/engine.d.ts.map +1 -0
  168. package/dist/swap/router/rsi/engine.js +483 -0
  169. package/dist/swap/router/rsi/engine.js.map +1 -0
  170. package/dist/swap/router/rsi/index.d.ts +3 -0
  171. package/dist/swap/router/rsi/index.d.ts.map +1 -0
  172. package/dist/swap/router/rsi/index.js +3 -0
  173. package/dist/swap/router/rsi/index.js.map +1 -0
  174. package/dist/swap/router/rsi/types.d.ts +106 -0
  175. package/dist/swap/router/rsi/types.d.ts.map +1 -0
  176. package/dist/swap/router/rsi/types.js +3 -0
  177. package/dist/swap/router/rsi/types.js.map +1 -0
  178. package/dist/swap/router/types.d.ts +120 -0
  179. package/dist/swap/router/types.d.ts.map +1 -0
  180. package/dist/swap/router/types.js +16 -0
  181. package/dist/swap/router/types.js.map +1 -0
  182. package/dist/tax/engine.d.ts +131 -0
  183. package/dist/tax/engine.d.ts.map +1 -0
  184. package/dist/tax/engine.js +307 -0
  185. package/dist/tax/engine.js.map +1 -0
  186. package/dist/tax/index.d.ts +9 -0
  187. package/dist/tax/index.d.ts.map +1 -0
  188. package/dist/tax/index.js +8 -0
  189. package/dist/tax/index.js.map +1 -0
  190. package/dist/tax/lots.d.ts +60 -0
  191. package/dist/tax/lots.d.ts.map +1 -0
  192. package/dist/tax/lots.js +129 -0
  193. package/dist/tax/lots.js.map +1 -0
  194. package/dist/tax/types.d.ts +113 -0
  195. package/dist/tax/types.d.ts.map +1 -0
  196. package/dist/tax/types.js +18 -0
  197. package/dist/tax/types.js.map +1 -0
  198. package/dist/yield/index.d.ts +26 -0
  199. package/dist/yield/index.d.ts.map +1 -0
  200. package/dist/yield/index.js +25 -0
  201. package/dist/yield/index.js.map +1 -0
  202. package/dist/yield/rates.d.ts +114 -0
  203. package/dist/yield/rates.d.ts.map +1 -0
  204. package/dist/yield/rates.js +351 -0
  205. package/dist/yield/rates.js.map +1 -0
  206. package/dist/yield/types.d.ts +134 -0
  207. package/dist/yield/types.d.ts.map +1 -0
  208. package/dist/yield/types.js +24 -0
  209. package/dist/yield/types.js.map +1 -0
  210. package/dist/yield/vault.d.ts +112 -0
  211. package/dist/yield/vault.d.ts.map +1 -0
  212. package/dist/yield/vault.js +264 -0
  213. package/dist/yield/vault.js.map +1 -0
  214. package/package.json +2 -2
@@ -0,0 +1,193 @@
1
+ // GasSponsor — Alchemy ERC-4337 Gas Manager integration
2
+ // Enables agents to execute transactions without holding native gas tokens.
3
+ //
4
+ // Alchemy API reference:
5
+ // https://docs.alchemy.com/docs/gas-manager-services
6
+ // POST https://{network}.g.alchemy.com/v2/{apiKey}
7
+ // Methods: alchemy_requestGasAndPaymasterAndData, pm_sponsorUserOperation
8
+ import { ALCHEMY_NETWORK_SLUGS } from './types.js';
9
+ /** ERC-4337 entry point — canonical v0.6 address used across all EVM chains */
10
+ const DEFAULT_ENTRY_POINT = '0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789';
11
+ /**
12
+ * GasSponsor — wraps transactions as ERC-4337 UserOperations with Alchemy paymaster data.
13
+ *
14
+ * Agents don't need to hold ETH/MATIC/etc. to pay gas. The Alchemy Gas Manager
15
+ * sponsors gas on their behalf, billed to your Alchemy account.
16
+ *
17
+ * Requires:
18
+ * - An Alchemy API key with Gas Manager enabled
19
+ * - A Gas Manager policy ID (create at https://dashboard.alchemy.com/gas-manager)
20
+ * - A smart account (ERC-4337 compatible) for the agent
21
+ *
22
+ * @example
23
+ * const sponsor = new GasSponsor({ alchemyApiKey: 'your-key', policyId: 'your-policy-id' });
24
+ * const sponsored = await sponsor.sponsorTransaction({
25
+ * chain: 'base',
26
+ * from: agentSmartAccountAddress,
27
+ * to: usdcContract,
28
+ * data: transferCalldata,
29
+ * });
30
+ * // Now submit sponsored.userOperation to an ERC-4337 bundler
31
+ */
32
+ export class GasSponsor {
33
+ constructor(config) {
34
+ this.config = {
35
+ alchemyApiKey: config.alchemyApiKey,
36
+ policyId: config.policyId ?? process.env.ALCHEMY_GAS_POLICY_ETH ?? '',
37
+ solanaPolicyId: config.solanaPolicyId ?? process.env.ALCHEMY_GAS_POLICY_SOL ?? '',
38
+ entryPoint: config.entryPoint ?? DEFAULT_ENTRY_POINT,
39
+ };
40
+ }
41
+ /** Get the Solana gas policy ID */
42
+ getSolanaPolicyId() {
43
+ return this.config.solanaPolicyId;
44
+ }
45
+ /** Get the EVM gas policy ID */
46
+ getEvmPolicyId() {
47
+ return this.config.policyId;
48
+ }
49
+ /**
50
+ * Check if gas sponsorship is available for a given chain.
51
+ */
52
+ isSupported(chain) {
53
+ return chain in ALCHEMY_NETWORK_SLUGS;
54
+ }
55
+ /**
56
+ * Returns the list of chains where Alchemy Gas Manager is available.
57
+ * Of the SDK's 17 CCTP chains, 6 are supported by Alchemy's Gas Manager.
58
+ */
59
+ getSupportedChains() {
60
+ return Object.keys(ALCHEMY_NETWORK_SLUGS);
61
+ }
62
+ /**
63
+ * Get the Alchemy RPC URL for a given chain.
64
+ */
65
+ getAlchemyRpcUrl(chain) {
66
+ const slug = ALCHEMY_NETWORK_SLUGS[chain];
67
+ return `https://${slug}.g.alchemy.com/v2/${this.config.alchemyApiKey}`;
68
+ }
69
+ /**
70
+ * Sponsor a transaction — wraps it as a UserOperation with Alchemy paymaster data.
71
+ *
72
+ * The resulting UserOperation must be submitted to an ERC-4337 bundler
73
+ * (e.g. Alchemy's bundler via `eth_sendUserOperation`).
74
+ *
75
+ * Note: `from` must be an ERC-4337 smart account, not a plain EOA.
76
+ * Plain EOA transactions cannot be sponsored via ERC-4337 paymasters.
77
+ */
78
+ async sponsorTransaction(params) {
79
+ if (!this.isSupported(params.chain)) {
80
+ throw new Error(`Gas sponsorship not supported on chain "${params.chain}". ` +
81
+ `Supported chains: ${this.getSupportedChains().join(', ')}`);
82
+ }
83
+ if (!this.config.policyId) {
84
+ throw new Error('Gas sponsorship requires a policyId. ' +
85
+ 'Create one at https://dashboard.alchemy.com/gas-manager');
86
+ }
87
+ const rpcUrl = this.getAlchemyRpcUrl(params.chain);
88
+ const valueHex = params.value ? `0x${params.value.toString(16)}` : '0x0';
89
+ // Build a minimal UserOperation stub — Alchemy fills in gas limits + paymasterAndData
90
+ const userOpStub = {
91
+ sender: params.from,
92
+ nonce: '0x0', // caller should set the correct nonce from the smart account
93
+ initCode: '0x',
94
+ callData: this._encodeExecuteCall(params.to, params.value ?? 0n, params.data),
95
+ callGasLimit: '0x0',
96
+ verificationGasLimit: '0x0',
97
+ preVerificationGas: '0x0',
98
+ maxFeePerGas: '0x0',
99
+ maxPriorityFeePerGas: '0x0',
100
+ paymasterAndData: '0x',
101
+ signature: '0x',
102
+ };
103
+ const response = await this._alchemyRpc(rpcUrl, 'alchemy_requestGasAndPaymasterAndData', [
104
+ {
105
+ policyId: this.config.policyId,
106
+ entryPoint: this.config.entryPoint,
107
+ userOperation: userOpStub,
108
+ dummySignature: '0x',
109
+ },
110
+ ]);
111
+ const result = response.result;
112
+ const sponsoredUserOp = {
113
+ ...userOpStub,
114
+ paymasterAndData: result.paymasterAndData,
115
+ preVerificationGas: result.preVerificationGas,
116
+ verificationGasLimit: result.verificationGasLimit,
117
+ callGasLimit: result.callGasLimit,
118
+ maxFeePerGas: result.maxFeePerGas,
119
+ maxPriorityFeePerGas: result.maxPriorityFeePerGas,
120
+ };
121
+ return {
122
+ userOperation: sponsoredUserOp,
123
+ paymasterAndData: result.paymasterAndData,
124
+ preVerificationGas: result.preVerificationGas,
125
+ verificationGasLimit: result.verificationGasLimit,
126
+ callGasLimit: result.callGasLimit,
127
+ maxFeePerGas: result.maxFeePerGas,
128
+ maxPriorityFeePerGas: result.maxPriorityFeePerGas,
129
+ chain: params.chain,
130
+ };
131
+ }
132
+ /**
133
+ * Sponsor a bridge transaction (e.g., from BridgeModule or UnifiedBridge).
134
+ *
135
+ * Bridge transactions tend to require significant gas on some chains.
136
+ * Sponsoring allows agents to bridge USDC without holding native gas tokens.
137
+ */
138
+ async sponsorBridge(params) {
139
+ return this.sponsorTransaction({
140
+ chain: params.chain,
141
+ from: params.from,
142
+ to: params.bridgeTx.to,
143
+ data: params.bridgeTx.data,
144
+ value: params.bridgeTx.value,
145
+ });
146
+ }
147
+ /**
148
+ * Encode the `execute(address,uint256,bytes)` call for ERC-4337 account contracts.
149
+ * This is the standard call format used by SimpleAccount and many ERC-4337 wallets.
150
+ *
151
+ * Selector: keccak256("execute(address,uint256,bytes)")[0:4] = 0xb61d27f6
152
+ */
153
+ _encodeExecuteCall(to, value, data) {
154
+ // ABI-encode: execute(address to, uint256 value, bytes calldata data)
155
+ // We use a manual encoding approach to avoid adding ethers/viem dependency here
156
+ const selector = '0xb61d27f6';
157
+ // Pad address (32 bytes)
158
+ const paddedTo = to.toLowerCase().replace('0x', '').padStart(64, '0');
159
+ // Pad value (32 bytes)
160
+ const paddedValue = value.toString(16).padStart(64, '0');
161
+ // Data offset (32 bytes) — points to 0x60 = 96 bytes offset
162
+ const dataOffset = '0000000000000000000000000000000000000000000000000000000000000060';
163
+ // Data length (32 bytes)
164
+ const dataBytes = data.replace('0x', '');
165
+ const dataLength = Math.floor(dataBytes.length / 2).toString(16).padStart(64, '0');
166
+ // Data padded to 32-byte boundary
167
+ const paddedDataLen = Math.ceil(dataBytes.length / 64) * 64;
168
+ const paddedData = dataBytes.padEnd(paddedDataLen, '0');
169
+ return `${selector}${paddedTo}${paddedValue}${dataOffset}${dataLength}${paddedData}`;
170
+ }
171
+ /** Make a JSON-RPC request to Alchemy */
172
+ async _alchemyRpc(url, method, params) {
173
+ const response = await fetch(url, {
174
+ method: 'POST',
175
+ headers: { 'Content-Type': 'application/json' },
176
+ body: JSON.stringify({
177
+ jsonrpc: '2.0',
178
+ id: 1,
179
+ method,
180
+ params,
181
+ }),
182
+ });
183
+ if (!response.ok) {
184
+ throw new Error(`Alchemy RPC error: HTTP ${response.status} ${response.statusText}`);
185
+ }
186
+ const json = (await response.json());
187
+ if (json.error) {
188
+ throw new Error(`Alchemy RPC error [${json.error.code}]: ${json.error.message}`);
189
+ }
190
+ return json;
191
+ }
192
+ }
193
+ //# sourceMappingURL=sponsor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sponsor.js","sourceRoot":"","sources":["../../src/gas/sponsor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ export interface GasSponsorConfig {
2
+ /** Alchemy API key */
3
+ alchemyApiKey: string;
4
+ /** Alchemy Gas Manager policy ID for EVM chains — required for EVM gas sponsorship */
5
+ policyId?: string;
6
+ /** Alchemy Gas Manager policy ID for Solana — required for Solana gas sponsorship */
7
+ solanaPolicyId?: string;
8
+ /** ERC-4337 entry point address (default: v0.6 canonical) */
9
+ entryPoint?: string;
10
+ }
11
+ /**
12
+ * Default Gas Policy IDs from Alchemy AgentNexus2 app.
13
+ * These are loaded from environment variables at runtime.
14
+ * ENV: ALCHEMY_GAS_POLICY_ETH, ALCHEMY_GAS_POLICY_SOL
15
+ */
16
+ export declare const DEFAULT_GAS_POLICIES: {
17
+ readonly evm: string;
18
+ readonly solana: string;
19
+ };
20
+ /**
21
+ * Chains supported by Alchemy Gas Manager.
22
+ * Source: https://www.alchemy.com/docs/wallets/reference/gas-manager-faqs
23
+ * Of our 17 CCTP chains, Alchemy supports: ethereum, base, arbitrum, optimism, polygon, worldchain
24
+ */
25
+ export type GasSupportedChain = 'ethereum' | 'base' | 'arbitrum' | 'optimism' | 'polygon' | 'worldchain';
26
+ /** Alchemy network slug for each supported chain */
27
+ export declare const ALCHEMY_NETWORK_SLUGS: Record<GasSupportedChain, string>;
28
+ /** A UserOperation ready for submission to an ERC-4337 bundler */
29
+ export interface UserOperation {
30
+ sender: string;
31
+ nonce: string;
32
+ initCode: string;
33
+ callData: string;
34
+ callGasLimit: string;
35
+ verificationGasLimit: string;
36
+ preVerificationGas: string;
37
+ maxFeePerGas: string;
38
+ maxPriorityFeePerGas: string;
39
+ paymasterAndData: string;
40
+ signature: string;
41
+ }
42
+ /** Result of a sponsored transaction request */
43
+ export interface SponsoredTx {
44
+ /** The UserOperation with paymaster data filled in */
45
+ userOperation: UserOperation;
46
+ /** Gas and paymaster data from Alchemy */
47
+ paymasterAndData: string;
48
+ preVerificationGas: string;
49
+ verificationGasLimit: string;
50
+ callGasLimit: string;
51
+ maxFeePerGas: string;
52
+ maxPriorityFeePerGas: string;
53
+ /** Chain this was sponsored on */
54
+ chain: GasSupportedChain;
55
+ }
56
+ /** Parameters for sponsoring a raw transaction */
57
+ export interface SponsorTxParams {
58
+ chain: GasSupportedChain;
59
+ /** EOA or smart account sending the tx */
60
+ from: string;
61
+ to: string;
62
+ data: string;
63
+ value?: bigint;
64
+ }
65
+ /** Parameters for sponsoring a bridge transaction */
66
+ export interface SponsorBridgeParams {
67
+ chain: GasSupportedChain;
68
+ /** Raw bridge transaction (from BridgeModule) */
69
+ bridgeTx: {
70
+ to: string;
71
+ data: string;
72
+ value?: bigint;
73
+ };
74
+ from: string;
75
+ }
76
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gas/types.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;CAGvB,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,MAAM,GACN,UAAU,GACV,UAAU,GACV,SAAS,GACT,YAAY,CAAC;AAEjB,oDAAoD;AACpD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAOnE,CAAC;AAEF,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,aAAa,EAAE,aAAa,CAAC;IAC7B,0CAA0C;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,iBAAiB,CAAC;IACzB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,iBAAiB,CAAC;IACzB,iDAAiD;IACjD,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,21 @@
1
+ // Gas Sponsorship — Types
2
+ // Uses Alchemy's ERC-4337 paymaster API to sponsor gas for agents that don't hold native tokens.
3
+ /**
4
+ * Default Gas Policy IDs from Alchemy AgentNexus2 app.
5
+ * These are loaded from environment variables at runtime.
6
+ * ENV: ALCHEMY_GAS_POLICY_ETH, ALCHEMY_GAS_POLICY_SOL
7
+ */
8
+ export const DEFAULT_GAS_POLICIES = {
9
+ evm: process.env.ALCHEMY_GAS_POLICY_ETH || '',
10
+ solana: process.env.ALCHEMY_GAS_POLICY_SOL || '',
11
+ };
12
+ /** Alchemy network slug for each supported chain */
13
+ export const ALCHEMY_NETWORK_SLUGS = {
14
+ ethereum: 'eth-mainnet',
15
+ base: 'base-mainnet',
16
+ arbitrum: 'arb-mainnet',
17
+ optimism: 'opt-mainnet',
18
+ polygon: 'polygon-mainnet',
19
+ worldchain: 'worldchain-mainnet',
20
+ };
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/gas/types.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,iGAAiG;AAajG;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE;IAC7C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE;CACxC,CAAC;AAeX,oDAAoD;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAsC;IACtE,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,aAAa;IACvB,OAAO,EAAE,iBAAiB;IAC1B,UAAU,EAAE,oBAAoB;CACjC,CAAC"}