agentwallet-sdk 3.2.1 → 3.4.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 (315) hide show
  1. package/README.md +2 -536
  2. package/dist/bridge/abis.d.ts +48 -171
  3. package/dist/bridge/abis.d.ts.map +1 -1
  4. package/dist/bridge/abis.js.map +1 -1
  5. package/dist/bridge/client.d.ts +2 -41
  6. package/dist/bridge/client.d.ts.map +1 -1
  7. package/dist/bridge/client.js +35 -168
  8. package/dist/bridge/client.js.map +1 -1
  9. package/dist/bridge/index.d.ts +2 -4
  10. package/dist/bridge/index.d.ts.map +1 -1
  11. package/dist/bridge/index.js +1 -8
  12. package/dist/bridge/index.js.map +1 -1
  13. package/dist/bridge/types.d.ts +15 -134
  14. package/dist/bridge/types.d.ts.map +1 -1
  15. package/dist/bridge/types.js +16 -170
  16. package/dist/bridge/types.js.map +1 -1
  17. package/dist/identity/erc8004.d.ts +2 -240
  18. package/dist/identity/erc8004.d.ts.map +1 -1
  19. package/dist/identity/erc8004.js +58 -334
  20. package/dist/identity/erc8004.js.map +1 -1
  21. package/dist/index.d.ts +313 -134
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +11 -56
  24. package/dist/index.js.map +1 -1
  25. package/dist/swap/SwapModule.d.ts +6 -50
  26. package/dist/swap/SwapModule.d.ts.map +1 -1
  27. package/dist/swap/SwapModule.js +25 -153
  28. package/dist/swap/SwapModule.js.map +1 -1
  29. package/dist/swap/abi.d.ts +47 -165
  30. package/dist/swap/abi.d.ts.map +1 -1
  31. package/dist/swap/abi.js.map +1 -1
  32. package/dist/swap/index.d.ts +2 -3
  33. package/dist/swap/index.d.ts.map +1 -1
  34. package/dist/swap/index.js +1 -4
  35. package/dist/swap/index.js.map +1 -1
  36. package/dist/swap/types.d.ts +6 -36
  37. package/dist/swap/types.d.ts.map +1 -1
  38. package/dist/swap/types.js +0 -1
  39. package/dist/swap/types.js.map +1 -1
  40. package/dist/types.d.ts +1 -2
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/types.js +0 -1
  43. package/dist/types.js.map +1 -1
  44. package/dist/x402/__tests__/budget.test.d.ts +2 -0
  45. package/dist/x402/__tests__/budget.test.d.ts.map +1 -0
  46. package/dist/x402/__tests__/budget.test.js +114 -0
  47. package/dist/x402/__tests__/budget.test.js.map +1 -0
  48. package/dist/x402/__tests__/client.test.d.ts +2 -0
  49. package/dist/x402/__tests__/client.test.d.ts.map +1 -0
  50. package/dist/x402/__tests__/client.test.js +107 -0
  51. package/dist/x402/__tests__/client.test.js.map +1 -0
  52. package/dist/x402/chains/abstract/index.d.ts +135 -0
  53. package/dist/x402/chains/abstract/index.d.ts.map +1 -0
  54. package/dist/x402/chains/abstract/index.js +190 -0
  55. package/dist/x402/chains/abstract/index.js.map +1 -0
  56. package/dist/x402/client.d.ts.map +1 -1
  57. package/dist/x402/client.js +1 -2
  58. package/dist/x402/client.js.map +1 -1
  59. package/dist/x402/index.d.ts +3 -1
  60. package/dist/x402/index.d.ts.map +1 -1
  61. package/dist/x402/index.js +3 -1
  62. package/dist/x402/index.js.map +1 -1
  63. package/dist/x402/types.d.ts +3 -5
  64. package/dist/x402/types.d.ts.map +1 -1
  65. package/dist/x402/types.js +2 -17
  66. package/dist/x402/types.js.map +1 -1
  67. package/package.json +12 -32
  68. package/dist/ap2/index.d.ts +0 -185
  69. package/dist/ap2/index.d.ts.map +0 -1
  70. package/dist/ap2/index.js +0 -255
  71. package/dist/ap2/index.js.map +0 -1
  72. package/dist/bridge/unified.d.ts +0 -101
  73. package/dist/bridge/unified.d.ts.map +0 -1
  74. package/dist/bridge/unified.js +0 -284
  75. package/dist/bridge/unified.js.map +0 -1
  76. package/dist/chains.d.ts +0 -62
  77. package/dist/chains.d.ts.map +0 -1
  78. package/dist/chains.js +0 -108
  79. package/dist/chains.js.map +0 -1
  80. package/dist/fiat/index.d.ts +0 -10
  81. package/dist/fiat/index.d.ts.map +0 -1
  82. package/dist/fiat/index.js +0 -9
  83. package/dist/fiat/index.js.map +0 -1
  84. package/dist/fiat/onramp.d.ts +0 -101
  85. package/dist/fiat/onramp.d.ts.map +0 -1
  86. package/dist/fiat/onramp.js +0 -155
  87. package/dist/fiat/onramp.js.map +0 -1
  88. package/dist/fiat/providers/index.d.ts +0 -16
  89. package/dist/fiat/providers/index.d.ts.map +0 -1
  90. package/dist/fiat/providers/index.js +0 -30
  91. package/dist/fiat/providers/index.js.map +0 -1
  92. package/dist/fiat/providers/moonpay.d.ts +0 -22
  93. package/dist/fiat/providers/moonpay.d.ts.map +0 -1
  94. package/dist/fiat/providers/moonpay.js +0 -107
  95. package/dist/fiat/providers/moonpay.js.map +0 -1
  96. package/dist/fiat/providers/stripe.d.ts +0 -26
  97. package/dist/fiat/providers/stripe.d.ts.map +0 -1
  98. package/dist/fiat/providers/stripe.js +0 -135
  99. package/dist/fiat/providers/stripe.js.map +0 -1
  100. package/dist/fiat/providers/transak.d.ts +0 -26
  101. package/dist/fiat/providers/transak.d.ts.map +0 -1
  102. package/dist/fiat/providers/transak.js +0 -119
  103. package/dist/fiat/providers/transak.js.map +0 -1
  104. package/dist/fiat/types.d.ts +0 -106
  105. package/dist/fiat/types.d.ts.map +0 -1
  106. package/dist/fiat/types.js +0 -13
  107. package/dist/fiat/types.js.map +0 -1
  108. package/dist/flash/executor.d.ts +0 -119
  109. package/dist/flash/executor.d.ts.map +0 -1
  110. package/dist/flash/executor.js +0 -195
  111. package/dist/flash/executor.js.map +0 -1
  112. package/dist/flash/index.d.ts +0 -28
  113. package/dist/flash/index.d.ts.map +0 -1
  114. package/dist/flash/index.js +0 -25
  115. package/dist/flash/index.js.map +0 -1
  116. package/dist/flash/scanner.d.ts +0 -133
  117. package/dist/flash/scanner.d.ts.map +0 -1
  118. package/dist/flash/scanner.js +0 -212
  119. package/dist/flash/scanner.js.map +0 -1
  120. package/dist/flash/types.d.ts +0 -136
  121. package/dist/flash/types.d.ts.map +0 -1
  122. package/dist/flash/types.js +0 -23
  123. package/dist/flash/types.js.map +0 -1
  124. package/dist/gas/index.d.ts +0 -4
  125. package/dist/gas/index.d.ts.map +0 -1
  126. package/dist/gas/index.js +0 -3
  127. package/dist/gas/index.js.map +0 -1
  128. package/dist/gas/sponsor.d.ts +0 -70
  129. package/dist/gas/sponsor.d.ts.map +0 -1
  130. package/dist/gas/sponsor.js +0 -193
  131. package/dist/gas/sponsor.js.map +0 -1
  132. package/dist/gas/types.d.ts +0 -76
  133. package/dist/gas/types.d.ts.map +0 -1
  134. package/dist/gas/types.js +0 -21
  135. package/dist/gas/types.js.map +0 -1
  136. package/dist/identity/agent-identity.d.ts +0 -276
  137. package/dist/identity/agent-identity.d.ts.map +0 -1
  138. package/dist/identity/agent-identity.js +0 -300
  139. package/dist/identity/agent-identity.js.map +0 -1
  140. package/dist/identity/erc6551.d.ts +0 -441
  141. package/dist/identity/erc6551.d.ts.map +0 -1
  142. package/dist/identity/erc6551.js +0 -517
  143. package/dist/identity/erc6551.js.map +0 -1
  144. package/dist/mev/index.d.ts +0 -4
  145. package/dist/mev/index.d.ts.map +0 -1
  146. package/dist/mev/index.js +0 -4
  147. package/dist/mev/index.js.map +0 -1
  148. package/dist/mev/protection.d.ts +0 -54
  149. package/dist/mev/protection.d.ts.map +0 -1
  150. package/dist/mev/protection.js +0 -185
  151. package/dist/mev/protection.js.map +0 -1
  152. package/dist/mev/risk.d.ts +0 -19
  153. package/dist/mev/risk.d.ts.map +0 -1
  154. package/dist/mev/risk.js +0 -95
  155. package/dist/mev/risk.js.map +0 -1
  156. package/dist/mev/types.d.ts +0 -49
  157. package/dist/mev/types.d.ts.map +0 -1
  158. package/dist/mev/types.js +0 -2
  159. package/dist/mev/types.js.map +0 -1
  160. package/dist/settlement/index.d.ts +0 -4
  161. package/dist/settlement/index.d.ts.map +0 -1
  162. package/dist/settlement/index.js +0 -3
  163. package/dist/settlement/index.js.map +0 -1
  164. package/dist/settlement/types.d.ts +0 -66
  165. package/dist/settlement/types.d.ts.map +0 -1
  166. package/dist/settlement/types.js +0 -37
  167. package/dist/settlement/types.js.map +0 -1
  168. package/dist/settlement/verifier.d.ts +0 -75
  169. package/dist/settlement/verifier.d.ts.map +0 -1
  170. package/dist/settlement/verifier.js +0 -354
  171. package/dist/settlement/verifier.js.map +0 -1
  172. package/dist/solana/bridge.d.ts +0 -144
  173. package/dist/solana/bridge.d.ts.map +0 -1
  174. package/dist/solana/bridge.js +0 -352
  175. package/dist/solana/bridge.js.map +0 -1
  176. package/dist/solana/index.d.ts +0 -8
  177. package/dist/solana/index.d.ts.map +0 -1
  178. package/dist/solana/index.js +0 -6
  179. package/dist/solana/index.js.map +0 -1
  180. package/dist/solana/swap.d.ts +0 -85
  181. package/dist/solana/swap.d.ts.map +0 -1
  182. package/dist/solana/swap.js +0 -173
  183. package/dist/solana/swap.js.map +0 -1
  184. package/dist/solana/types.d.ts +0 -126
  185. package/dist/solana/types.d.ts.map +0 -1
  186. package/dist/solana/types.js +0 -10
  187. package/dist/solana/types.js.map +0 -1
  188. package/dist/solana/wallet.d.ts +0 -83
  189. package/dist/solana/wallet.d.ts.map +0 -1
  190. package/dist/solana/wallet.js +0 -164
  191. package/dist/solana/wallet.js.map +0 -1
  192. package/dist/solana/x402.d.ts +0 -69
  193. package/dist/solana/x402.d.ts.map +0 -1
  194. package/dist/solana/x402.js +0 -154
  195. package/dist/solana/x402.js.map +0 -1
  196. package/dist/solver/adapter.d.ts +0 -47
  197. package/dist/solver/adapter.d.ts.map +0 -1
  198. package/dist/solver/adapter.js +0 -138
  199. package/dist/solver/adapter.js.map +0 -1
  200. package/dist/solver/analyzer.d.ts +0 -48
  201. package/dist/solver/analyzer.d.ts.map +0 -1
  202. package/dist/solver/analyzer.js +0 -89
  203. package/dist/solver/analyzer.js.map +0 -1
  204. package/dist/solver/builder.d.ts +0 -31
  205. package/dist/solver/builder.d.ts.map +0 -1
  206. package/dist/solver/builder.js +0 -60
  207. package/dist/solver/builder.js.map +0 -1
  208. package/dist/solver/index.d.ts +0 -22
  209. package/dist/solver/index.d.ts.map +0 -1
  210. package/dist/solver/index.js +0 -21
  211. package/dist/solver/index.js.map +0 -1
  212. package/dist/solver/types.d.ts +0 -115
  213. package/dist/solver/types.d.ts.map +0 -1
  214. package/dist/solver/types.js +0 -10
  215. package/dist/solver/types.js.map +0 -1
  216. package/dist/swap/router/cache.d.ts +0 -13
  217. package/dist/swap/router/cache.d.ts.map +0 -1
  218. package/dist/swap/router/cache.js +0 -30
  219. package/dist/swap/router/cache.js.map +0 -1
  220. package/dist/swap/router/flashbots.d.ts +0 -10
  221. package/dist/swap/router/flashbots.d.ts.map +0 -1
  222. package/dist/swap/router/flashbots.js +0 -43
  223. package/dist/swap/router/flashbots.js.map +0 -1
  224. package/dist/swap/router/health.d.ts +0 -17
  225. package/dist/swap/router/health.d.ts.map +0 -1
  226. package/dist/swap/router/health.js +0 -38
  227. package/dist/swap/router/health.js.map +0 -1
  228. package/dist/swap/router/index.d.ts +0 -10
  229. package/dist/swap/router/index.d.ts.map +0 -1
  230. package/dist/swap/router/index.js +0 -10
  231. package/dist/swap/router/index.js.map +0 -1
  232. package/dist/swap/router/providers/cowswap.d.ts +0 -11
  233. package/dist/swap/router/providers/cowswap.d.ts.map +0 -1
  234. package/dist/swap/router/providers/cowswap.js +0 -79
  235. package/dist/swap/router/providers/cowswap.js.map +0 -1
  236. package/dist/swap/router/providers/index.d.ts +0 -20
  237. package/dist/swap/router/providers/index.d.ts.map +0 -1
  238. package/dist/swap/router/providers/index.js +0 -32
  239. package/dist/swap/router/providers/index.js.map +0 -1
  240. package/dist/swap/router/providers/jupiter.d.ts +0 -12
  241. package/dist/swap/router/providers/jupiter.d.ts.map +0 -1
  242. package/dist/swap/router/providers/jupiter.js +0 -73
  243. package/dist/swap/router/providers/jupiter.js.map +0 -1
  244. package/dist/swap/router/providers/lifi.d.ts +0 -11
  245. package/dist/swap/router/providers/lifi.d.ts.map +0 -1
  246. package/dist/swap/router/providers/lifi.js +0 -123
  247. package/dist/swap/router/providers/lifi.js.map +0 -1
  248. package/dist/swap/router/providers/oneinch.d.ts +0 -13
  249. package/dist/swap/router/providers/oneinch.d.ts.map +0 -1
  250. package/dist/swap/router/providers/oneinch.js +0 -71
  251. package/dist/swap/router/providers/oneinch.js.map +0 -1
  252. package/dist/swap/router/providers/paraswap.d.ts +0 -11
  253. package/dist/swap/router/providers/paraswap.d.ts.map +0 -1
  254. package/dist/swap/router/providers/paraswap.js +0 -73
  255. package/dist/swap/router/providers/paraswap.js.map +0 -1
  256. package/dist/swap/router/providers/uniswap.d.ts +0 -31
  257. package/dist/swap/router/providers/uniswap.d.ts.map +0 -1
  258. package/dist/swap/router/providers/uniswap.js +0 -116
  259. package/dist/swap/router/providers/uniswap.js.map +0 -1
  260. package/dist/swap/router/providers/zerox.d.ts +0 -13
  261. package/dist/swap/router/providers/zerox.d.ts.map +0 -1
  262. package/dist/swap/router/providers/zerox.js +0 -94
  263. package/dist/swap/router/providers/zerox.js.map +0 -1
  264. package/dist/swap/router/router.d.ts +0 -86
  265. package/dist/swap/router/router.d.ts.map +0 -1
  266. package/dist/swap/router/router.js +0 -224
  267. package/dist/swap/router/router.js.map +0 -1
  268. package/dist/swap/router/rsi/engine.d.ts +0 -60
  269. package/dist/swap/router/rsi/engine.d.ts.map +0 -1
  270. package/dist/swap/router/rsi/engine.js +0 -483
  271. package/dist/swap/router/rsi/engine.js.map +0 -1
  272. package/dist/swap/router/rsi/index.d.ts +0 -3
  273. package/dist/swap/router/rsi/index.d.ts.map +0 -1
  274. package/dist/swap/router/rsi/index.js +0 -3
  275. package/dist/swap/router/rsi/index.js.map +0 -1
  276. package/dist/swap/router/rsi/types.d.ts +0 -106
  277. package/dist/swap/router/rsi/types.d.ts.map +0 -1
  278. package/dist/swap/router/rsi/types.js +0 -3
  279. package/dist/swap/router/rsi/types.js.map +0 -1
  280. package/dist/swap/router/types.d.ts +0 -120
  281. package/dist/swap/router/types.d.ts.map +0 -1
  282. package/dist/swap/router/types.js +0 -16
  283. package/dist/swap/router/types.js.map +0 -1
  284. package/dist/tax/engine.d.ts +0 -131
  285. package/dist/tax/engine.d.ts.map +0 -1
  286. package/dist/tax/engine.js +0 -307
  287. package/dist/tax/engine.js.map +0 -1
  288. package/dist/tax/index.d.ts +0 -9
  289. package/dist/tax/index.d.ts.map +0 -1
  290. package/dist/tax/index.js +0 -8
  291. package/dist/tax/index.js.map +0 -1
  292. package/dist/tax/lots.d.ts +0 -60
  293. package/dist/tax/lots.d.ts.map +0 -1
  294. package/dist/tax/lots.js +0 -129
  295. package/dist/tax/lots.js.map +0 -1
  296. package/dist/tax/types.d.ts +0 -113
  297. package/dist/tax/types.d.ts.map +0 -1
  298. package/dist/tax/types.js +0 -18
  299. package/dist/tax/types.js.map +0 -1
  300. package/dist/yield/index.d.ts +0 -26
  301. package/dist/yield/index.d.ts.map +0 -1
  302. package/dist/yield/index.js +0 -25
  303. package/dist/yield/index.js.map +0 -1
  304. package/dist/yield/rates.d.ts +0 -114
  305. package/dist/yield/rates.d.ts.map +0 -1
  306. package/dist/yield/rates.js +0 -351
  307. package/dist/yield/rates.js.map +0 -1
  308. package/dist/yield/types.d.ts +0 -134
  309. package/dist/yield/types.d.ts.map +0 -1
  310. package/dist/yield/types.js +0 -24
  311. package/dist/yield/types.js.map +0 -1
  312. package/dist/yield/vault.d.ts +0 -112
  313. package/dist/yield/vault.d.ts.map +0 -1
  314. package/dist/yield/vault.js +0 -264
  315. package/dist/yield/vault.js.map +0 -1
@@ -1,193 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"sponsor.js","sourceRoot":"","sources":["../../src/gas/sponsor.ts"],"names":[],"mappings":"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"}
@@ -1,76 +0,0 @@
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
@@ -1 +0,0 @@
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"}
package/dist/gas/types.js DELETED
@@ -1,21 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,276 +0,0 @@
1
- /**
2
- * MIT License
3
- *
4
- * Copyright (c) 2026 AgentNexus / agentwallet-sdk contributors
5
- *
6
- * Permission is hereby granted, free of charge, to any person obtaining a copy
7
- * of this software and associated documentation files (the "Software"), to deal
8
- * in the Software without restriction, including without limitation the rights
9
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- * copies of the Software, and to permit persons to whom the Software is
11
- * furnished to do so, subject to the following conditions:
12
- *
13
- * The above copyright notice and this permission notice shall be included in all
14
- * copies or substantial portions of the Software.
15
- *
16
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- * SOFTWARE.
23
- */
24
- /**
25
- * AgentIdentity — Unified ERC-8004 + ERC-6551 Identity Facade
26
- *
27
- * Combines the ERC-8004 Identity Registry (on-chain agent registration / NFT)
28
- * with the ERC-6551 Token Bound Account (TBA) system into a single, ergonomic
29
- * class. One call to register your agent, one call to deploy its autonomous wallet,
30
- * and a single execute() for on-chain actions.
31
- *
32
- * Architecture:
33
- * AgentIdentity
34
- * ├── ERC8004Client → registers agent NFT, manages off-chain metadata
35
- * └── ERC6551Client → deploys TBA, executes calls from NFT-owned wallet
36
- *
37
- * @module identity/agent-identity
38
- */
39
- import type { WalletClient, Address, Hex } from 'viem';
40
- import { ERC8004Client, type AgentRegistrationFile, type RegistrationResult } from './erc8004.js';
41
- import { ERC6551Client, type TBAAccount, type TBAExecuteParams, type TBAExecuteResult } from './erc6551.js';
42
- /**
43
- * Supported chain names for AgentIdentity.
44
- */
45
- export type AgentIdentityChain = 'base' | 'base-sepolia' | 'ethereum' | 'arbitrum' | 'polygon';
46
- /**
47
- * Configuration for AgentIdentity.
48
- */
49
- export interface AgentIdentityConfig {
50
- /**
51
- * The agent's signing WalletClient (controls the NFT and TBA).
52
- * Keys never leave the device — all signing is local.
53
- */
54
- wallet: WalletClient;
55
- /**
56
- * Target chain. Defaults to 'base' (Base mainnet).
57
- */
58
- chain?: AgentIdentityChain;
59
- /**
60
- * ERC-8004 Identity Registry contract address.
61
- * Required for ERC-8004 registration. Omit if only using ERC-6551.
62
- */
63
- registryAddress?: Address;
64
- /**
65
- * ERC-6551 registry override. Defaults to canonical registry.
66
- * You almost never need to change this.
67
- */
68
- tbaRegistryAddress?: Address;
69
- /**
70
- * ERC-6551 account implementation override.
71
- * Defaults to Tokenbound reference implementation on Base.
72
- */
73
- tbaImplementationAddress?: Address;
74
- /**
75
- * RPC URL override for both ERC-8004 and ERC-6551 clients.
76
- */
77
- rpcUrl?: string;
78
- /**
79
- * Salt for TBA derivation. Defaults to 0x000...0.
80
- * Change this to create multiple TBAs for the same NFT.
81
- */
82
- tbaSalt?: Hex;
83
- }
84
- /**
85
- * Full resolved agent identity state.
86
- */
87
- export interface AgentIdentityState {
88
- /** On-chain ERC-721 agent token ID (null before registration). */
89
- agentId: bigint | null;
90
- /** TBA address (null before deployTBA()). */
91
- tbaAddress: Address | null;
92
- /** Whether the ERC-8004 NFT is registered on-chain. */
93
- isRegistered: boolean;
94
- /** Whether the ERC-6551 TBA is deployed on-chain. */
95
- isTBADeployed: boolean;
96
- /** NFT owner address (= wallet account address). */
97
- owner: Address | null;
98
- }
99
- /**
100
- * AgentIdentity — unified ERC-8004 + ERC-6551 identity manager.
101
- *
102
- * Provides a single interface to manage an agent's complete on-chain identity:
103
- * - ERC-8004: NFT registration with metadata and service endpoints
104
- * - ERC-6551: Token Bound Account (TBA) — the agent's autonomous wallet
105
- *
106
- * @example
107
- * ```typescript
108
- * import { AgentIdentity } from 'agentwallet-sdk';
109
- * import { createWalletClient, http } from 'viem';
110
- * import { privateKeyToAccount } from 'viem/accounts';
111
- * import { base } from 'viem/chains';
112
- *
113
- * const wallet = createWalletClient({
114
- * account: privateKeyToAccount('0xYOUR_PRIVATE_KEY'),
115
- * chain: base,
116
- * transport: http(),
117
- * });
118
- *
119
- * const identity = new AgentIdentity({
120
- * wallet,
121
- * chain: 'base',
122
- * registryAddress: '0xYOUR_ERC8004_REGISTRY',
123
- * });
124
- *
125
- * // 1. Register agent NFT (ERC-8004)
126
- * const { agentId } = await identity.register({
127
- * name: 'MyTradingAgent',
128
- * description: 'Autonomous DeFi trading agent',
129
- * x402Support: true,
130
- * });
131
- *
132
- * // 2. Deploy TBA (ERC-6551) — NFT now owns an autonomous wallet
133
- * await identity.deployTBA();
134
- * console.log('Agent TBA:', identity.tbaAddress);
135
- *
136
- * // 3. Execute from TBA (agent acts on-chain)
137
- * await identity.execute({
138
- * to: TASKBRIDGE_CONTRACT,
139
- * value: parseEther('0.01'),
140
- * data: encodedCalldata,
141
- * });
142
- * ```
143
- */
144
- export declare class AgentIdentity {
145
- private readonly wallet;
146
- private readonly chain;
147
- private readonly tbaSalt;
148
- private readonly erc8004;
149
- private readonly erc6551;
150
- private _agentId;
151
- private _nftContract;
152
- private _tbaAccount;
153
- constructor(config: AgentIdentityConfig);
154
- /**
155
- * Register this agent as an ERC-8004 identity NFT on-chain.
156
- *
157
- * Builds a spec-compliant agent registration file and mints an ERC-721 NFT
158
- * via the ERC-8004 Identity Registry. After registration, the NFT represents
159
- * the agent's permanent, portable on-chain identity.
160
- *
161
- * Non-custodial: the wallet signs the registration transaction locally.
162
- *
163
- * @param metadata - Agent metadata for the registration file
164
- * @param agentURI - Optional external URI (IPFS/HTTPS). Auto-builds data URI if omitted.
165
- * @returns Registration result with txHash and agentId
166
- * @throws Error if no registryAddress was provided in config
167
- */
168
- register(metadata: Omit<AgentRegistrationFile, 'type'>, agentURI?: string): Promise<RegistrationResult>;
169
- /**
170
- * Restore a previously registered agent identity.
171
- *
172
- * Use this when you already have an agentId from a prior session.
173
- * Sets the internal agentId so deployTBA() and execute() work correctly.
174
- *
175
- * @param agentId - Previously registered ERC-8004 token ID
176
- * @param nftContract - The ERC-8004 registry contract (= registryAddress in config)
177
- */
178
- setAgentId(agentId: bigint, nftContract?: Address): void;
179
- /**
180
- * Deploy the Token Bound Account for this agent's NFT.
181
- *
182
- * The TBA address is deterministic — you can compute it before deployment
183
- * via `computeTBAAddress()`. This call deploys the actual smart contract at
184
- * that address, enabling the agent to act autonomously on-chain.
185
- *
186
- * Idempotent: calling deployTBA() on an already-deployed TBA is safe.
187
- *
188
- * @param nftContract - Override: NFT contract to bind the TBA to.
189
- * Defaults to the registryAddress (ERC-8004 registry is also the NFT contract).
190
- * @param tokenId - Override: token ID. Defaults to the registered agentId.
191
- * @returns Deployed TBAAccount
192
- * @throws Error if agentId not set (call register() first or use setAgentId())
193
- */
194
- deployTBA(nftContract?: Address, tokenId?: bigint): Promise<TBAAccount>;
195
- /**
196
- * Compute the deterministic TBA address without deploying.
197
- *
198
- * Useful for pre-computing the address to fund it before deployment,
199
- * or to check if a TBA already exists.
200
- *
201
- * @param nftContract - NFT contract (defaults to registryAddress)
202
- * @param tokenId - Token ID (defaults to agentId)
203
- * @returns Deterministic TBA address
204
- */
205
- computeTBAAddress(nftContract?: Address, tokenId?: bigint): Address;
206
- /**
207
- * Load TBA state without deploying — useful for resuming a session.
208
- * Sets internal TBA state so execute() works without re-deploying.
209
- *
210
- * @param nftContract - NFT contract (defaults to registryAddress)
211
- * @param tokenId - Token ID (defaults to agentId)
212
- */
213
- loadTBA(nftContract?: Address, tokenId?: bigint): Promise<TBAAccount>;
214
- /**
215
- * Execute a call from the agent's TBA (the agent acts autonomously).
216
- *
217
- * Routes the call through the TBA's `execute()` function, which verifies
218
- * the caller owns the NFT before dispatching to the target contract.
219
- *
220
- * @param params - Call parameters (to, value, data, operation)
221
- * @returns Transaction hash and return data
222
- * @throws Error if TBA not deployed (call deployTBA() first)
223
- *
224
- * @example
225
- * ```typescript
226
- * // Agent bids on a TaskBridge task
227
- * await identity.execute({
228
- * to: TASKBRIDGE_ADDRESS,
229
- * value: 0n,
230
- * data: encodeFunctionData({
231
- * abi: TaskBridgeAbi,
232
- * functionName: 'bid',
233
- * args: [taskId, bidAmount],
234
- * }),
235
- * });
236
- * ```
237
- */
238
- execute(params: TBAExecuteParams): Promise<TBAExecuteResult>;
239
- /**
240
- * The agent's ERC-8004 token ID (null before registration).
241
- */
242
- get agentId(): bigint | null;
243
- /**
244
- * The agent's TBA address (null before deployTBA() or loadTBA()).
245
- */
246
- get tbaAddress(): Address | null;
247
- /**
248
- * Full TBA account details (null before deployTBA() or loadTBA()).
249
- */
250
- get tbaAccount(): TBAAccount | null;
251
- /**
252
- * Whether the agent's ERC-8004 NFT is registered.
253
- */
254
- get isRegistered(): boolean;
255
- /**
256
- * Whether the agent's TBA is deployed on-chain.
257
- */
258
- get isTBADeployed(): boolean;
259
- /**
260
- * The wallet account address (human principal / NFT owner).
261
- */
262
- get ownerAddress(): Address | null;
263
- /**
264
- * Full identity state snapshot.
265
- */
266
- get state(): AgentIdentityState;
267
- /**
268
- * Direct access to the underlying ERC6551Client for advanced usage.
269
- */
270
- get erc6551Client(): ERC6551Client;
271
- /**
272
- * Direct access to the underlying ERC8004Client (null if no registryAddress provided).
273
- */
274
- get erc8004Client(): ERC8004Client | null;
275
- }
276
- //# sourceMappingURL=agent-identity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-identity.d.ts","sourceRoot":"","sources":["../../src/identity/agent-identity.ts"],"names":[],"mappings":"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"}