@pufferfinance/puffer-sdk 1.13.2 → 1.14.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 (210) hide show
  1. package/dist/api/puffer-client-helpers.cjs.map +1 -1
  2. package/dist/api/puffer-client-helpers.js.map +1 -1
  3. package/dist/ccip-C0xwQhXU.cjs.map +1 -1
  4. package/dist/ccip-K-z2PL4P.js.map +1 -1
  5. package/dist/constants-BcPRVxdH.cjs.map +1 -1
  6. package/dist/constants-CH7Tz5jz.js.map +1 -1
  7. package/dist/contracts/abis/mainnet/Accountant.cjs +1 -1
  8. package/dist/contracts/abis/mainnet/Accountant.cjs.map +1 -1
  9. package/dist/contracts/abis/mainnet/Accountant.d.ts +13 -457
  10. package/dist/contracts/abis/mainnet/Accountant.js +12 -441
  11. package/dist/contracts/abis/mainnet/Accountant.js.map +1 -1
  12. package/dist/contracts/abis/mainnet/BoringVault.cjs +1 -1
  13. package/dist/contracts/abis/mainnet/BoringVault.cjs.map +1 -1
  14. package/dist/contracts/abis/mainnet/BoringVault.d.ts +18 -505
  15. package/dist/contracts/abis/mainnet/BoringVault.js +15 -346
  16. package/dist/contracts/abis/mainnet/BoringVault.js.map +1 -1
  17. package/dist/contracts/abis/mainnet/CarrotStaker.cjs +1 -1
  18. package/dist/contracts/abis/mainnet/CarrotStaker.cjs.map +1 -1
  19. package/dist/contracts/abis/mainnet/CarrotStaker.d.ts +2 -371
  20. package/dist/contracts/abis/mainnet/CarrotStaker.js +4 -295
  21. package/dist/contracts/abis/mainnet/CarrotStaker.js.map +1 -1
  22. package/dist/contracts/abis/mainnet/Distributor.cjs +1 -1
  23. package/dist/contracts/abis/mainnet/Distributor.cjs.map +1 -1
  24. package/dist/contracts/abis/mainnet/Distributor.d.ts +0 -413
  25. package/dist/contracts/abis/mainnet/Distributor.js +2 -355
  26. package/dist/contracts/abis/mainnet/Distributor.js.map +1 -1
  27. package/dist/contracts/abis/mainnet/L1RewardManager.cjs +1 -1
  28. package/dist/contracts/abis/mainnet/L1RewardManager.cjs.map +1 -1
  29. package/dist/contracts/abis/mainnet/L1RewardManager.d.ts +0 -489
  30. package/dist/contracts/abis/mainnet/L1RewardManager.js +0 -411
  31. package/dist/contracts/abis/mainnet/L1RewardManager.js.map +1 -1
  32. package/dist/contracts/abis/mainnet/L2RewardManager.cjs +1 -1
  33. package/dist/contracts/abis/mainnet/L2RewardManager.cjs.map +1 -1
  34. package/dist/contracts/abis/mainnet/L2RewardManager.d.ts +23 -569
  35. package/dist/contracts/abis/mainnet/L2RewardManager.js +16 -484
  36. package/dist/contracts/abis/mainnet/L2RewardManager.js.map +1 -1
  37. package/dist/contracts/abis/mainnet/PufLocker.cjs +1 -1
  38. package/dist/contracts/abis/mainnet/PufLocker.cjs.map +1 -1
  39. package/dist/contracts/abis/mainnet/PufLocker.d.ts +29 -371
  40. package/dist/contracts/abis/mainnet/PufLocker.js +15 -285
  41. package/dist/contracts/abis/mainnet/PufLocker.js.map +1 -1
  42. package/dist/contracts/abis/mainnet/PufferL2Depositor.cjs +1 -1
  43. package/dist/contracts/abis/mainnet/PufferL2Depositor.cjs.map +1 -1
  44. package/dist/contracts/abis/mainnet/PufferL2Depositor.d.ts +0 -325
  45. package/dist/contracts/abis/mainnet/PufferL2Depositor.js +0 -270
  46. package/dist/contracts/abis/mainnet/PufferL2Depositor.js.map +1 -1
  47. package/dist/contracts/abis/mainnet/PufferVaultV2.cjs +1 -1
  48. package/dist/contracts/abis/mainnet/PufferVaultV2.cjs.map +1 -1
  49. package/dist/contracts/abis/mainnet/PufferVaultV2.d.ts +35 -1289
  50. package/dist/contracts/abis/mainnet/PufferVaultV2.js +45 -1681
  51. package/dist/contracts/abis/mainnet/PufferVaultV2.js.map +1 -1
  52. package/dist/contracts/abis/mainnet/PufferWithdrawalManager.cjs +1 -1
  53. package/dist/contracts/abis/mainnet/PufferWithdrawalManager.cjs.map +1 -1
  54. package/dist/contracts/abis/mainnet/PufferWithdrawalManager.d.ts +3 -426
  55. package/dist/contracts/abis/mainnet/PufferWithdrawalManager.js +5 -552
  56. package/dist/contracts/abis/mainnet/PufferWithdrawalManager.js.map +1 -1
  57. package/dist/contracts/abis/mainnet/Teller.cjs +1 -1
  58. package/dist/contracts/abis/mainnet/Teller.cjs.map +1 -1
  59. package/dist/contracts/abis/mainnet/Teller.d.ts +18 -444
  60. package/dist/contracts/abis/mainnet/Teller.js +15 -390
  61. package/dist/contracts/abis/mainnet/Teller.js.map +1 -1
  62. package/dist/contracts/abis/mainnet/mtwCARROT.cjs +1 -1
  63. package/dist/contracts/abis/mainnet/mtwCARROT.cjs.map +1 -1
  64. package/dist/contracts/abis/mainnet/mtwCARROT.d.ts +69 -399
  65. package/dist/contracts/abis/mainnet/mtwCARROT.js +43 -346
  66. package/dist/contracts/abis/mainnet/mtwCARROT.js.map +1 -1
  67. package/dist/contracts/addresses.cjs.map +1 -1
  68. package/dist/contracts/addresses.js +3 -0
  69. package/dist/contracts/addresses.js.map +1 -1
  70. package/dist/contracts/handlers/carrot-staking-handler.d.ts +1652 -0
  71. package/dist/contracts/handlers/distributor-handler.cjs +1 -1
  72. package/dist/contracts/handlers/distributor-handler.cjs.map +1 -1
  73. package/dist/contracts/handlers/distributor-handler.d.ts +8762 -0
  74. package/dist/contracts/handlers/distributor-handler.js +13 -127
  75. package/dist/contracts/handlers/distributor-handler.js.map +1 -1
  76. package/dist/contracts/handlers/erc20-permit-handler.cjs +1 -1
  77. package/dist/contracts/handlers/erc20-permit-handler.cjs.map +1 -1
  78. package/dist/contracts/handlers/erc20-permit-handler.d.ts +4 -4
  79. package/dist/contracts/handlers/erc20-permit-handler.js +12 -12
  80. package/dist/contracts/handlers/erc20-permit-handler.js.map +1 -1
  81. package/dist/contracts/handlers/l1-reward-manager-handler.cjs +1 -1
  82. package/dist/contracts/handlers/l1-reward-manager-handler.cjs.map +1 -1
  83. package/dist/contracts/handlers/l1-reward-manager-handler.d.ts +339 -0
  84. package/dist/contracts/handlers/l1-reward-manager-handler.js +13 -13
  85. package/dist/contracts/handlers/l1-reward-manager-handler.js.map +1 -1
  86. package/dist/contracts/handlers/l2-reward-manager-handler.cjs +1 -1
  87. package/dist/contracts/handlers/l2-reward-manager-handler.cjs.map +1 -1
  88. package/dist/contracts/handlers/l2-reward-manager-handler.d.ts +2423 -0
  89. package/dist/contracts/handlers/l2-reward-manager-handler.js +4 -4
  90. package/dist/contracts/handlers/l2-reward-manager-handler.js.map +1 -1
  91. package/dist/contracts/handlers/mtw-carrot-handler.d.ts +14333 -0
  92. package/dist/contracts/handlers/nucleus-accountant-handler.cjs +1 -1
  93. package/dist/contracts/handlers/nucleus-accountant-handler.cjs.map +1 -1
  94. package/dist/contracts/handlers/nucleus-accountant-handler.d.ts +620 -0
  95. package/dist/contracts/handlers/nucleus-accountant-handler.js +8 -8
  96. package/dist/contracts/handlers/nucleus-accountant-handler.js.map +1 -1
  97. package/dist/contracts/handlers/nucleus-atomic-queue-handler.cjs +1 -1
  98. package/dist/contracts/handlers/nucleus-atomic-queue-handler.cjs.map +1 -1
  99. package/dist/contracts/handlers/nucleus-atomic-queue-handler.js +9 -9
  100. package/dist/contracts/handlers/nucleus-atomic-queue-handler.js.map +1 -1
  101. package/dist/contracts/handlers/nucleus-boring-vault-handler.cjs +1 -1
  102. package/dist/contracts/handlers/nucleus-boring-vault-handler.cjs.map +1 -1
  103. package/dist/contracts/handlers/nucleus-boring-vault-handler.d.ts +3917 -0
  104. package/dist/contracts/handlers/nucleus-boring-vault-handler.js +22 -22
  105. package/dist/contracts/handlers/nucleus-boring-vault-handler.js.map +1 -1
  106. package/dist/contracts/handlers/nucleus-teller-handler.cjs +1 -1
  107. package/dist/contracts/handlers/nucleus-teller-handler.cjs.map +1 -1
  108. package/dist/contracts/handlers/nucleus-teller-handler.d.ts +2209 -0
  109. package/dist/contracts/handlers/nucleus-teller-handler.js +13 -13
  110. package/dist/contracts/handlers/nucleus-teller-handler.js.map +1 -1
  111. package/dist/contracts/handlers/puf-locker-handler.cjs +1 -1
  112. package/dist/contracts/handlers/puf-locker-handler.cjs.map +1 -1
  113. package/dist/contracts/handlers/puf-locker-handler.d.ts +2389 -0
  114. package/dist/contracts/handlers/puf-locker-handler.js +11 -11
  115. package/dist/contracts/handlers/puf-locker-handler.js.map +1 -1
  116. package/dist/contracts/handlers/puffer-depositor-handler.cjs +1 -1
  117. package/dist/contracts/handlers/puffer-depositor-handler.cjs.map +1 -1
  118. package/dist/contracts/handlers/puffer-depositor-handler.d.ts +100 -100
  119. package/dist/contracts/handlers/puffer-depositor-handler.js +18 -18
  120. package/dist/contracts/handlers/puffer-depositor-handler.js.map +1 -1
  121. package/dist/contracts/handlers/puffer-l2-depositor-handler.cjs +1 -1
  122. package/dist/contracts/handlers/puffer-l2-depositor-handler.cjs.map +1 -1
  123. package/dist/contracts/handlers/puffer-l2-depositor-handler.d.ts +471 -0
  124. package/dist/contracts/handlers/puffer-l2-depositor-handler.js +16 -16
  125. package/dist/contracts/handlers/puffer-l2-depositor-handler.js.map +1 -1
  126. package/dist/contracts/handlers/puffer-vault-handler.cjs +1 -1
  127. package/dist/contracts/handlers/puffer-vault-handler.cjs.map +1 -1
  128. package/dist/contracts/handlers/puffer-vault-handler.d.ts +4657 -0
  129. package/dist/contracts/handlers/puffer-vault-handler.js +2 -2
  130. package/dist/contracts/handlers/puffer-vault-handler.js.map +1 -1
  131. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.cjs +1 -1
  132. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.cjs.map +1 -1
  133. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.d.ts +1882 -0
  134. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.js +8 -8
  135. package/dist/contracts/handlers/puffer-withdrawal-manager-handler.js.map +1 -1
  136. package/dist/contracts/vaults-addresses.d.ts +5 -4
  137. package/dist/createWalletClient-DNLhBkOd.js.map +1 -1
  138. package/dist/createWalletClient-Di5of07E.cjs.map +1 -1
  139. package/dist/getContract-6ajhFbP2.js.map +1 -1
  140. package/dist/getContract-ChPFzc5y.cjs.map +1 -1
  141. package/dist/utils/version.cjs +1 -1
  142. package/dist/utils/version.js +1 -1
  143. package/dist/writeContract-BatuNuTe.cjs.map +1 -1
  144. package/dist/writeContract-CjcOEtWX.js.map +1 -1
  145. package/package.json +2 -2
  146. package/dist/contracts/abis/holesky/PufferDepositor.cjs +0 -2
  147. package/dist/contracts/abis/holesky/PufferDepositor.cjs.map +0 -1
  148. package/dist/contracts/abis/holesky/PufferDepositor.d.ts +0 -283
  149. package/dist/contracts/abis/holesky/PufferDepositor.js +0 -377
  150. package/dist/contracts/abis/holesky/PufferDepositor.js.map +0 -1
  151. package/dist/contracts/abis/holesky/PufferVaultV2.cjs +0 -2
  152. package/dist/contracts/abis/holesky/PufferVaultV2.cjs.map +0 -1
  153. package/dist/contracts/abis/holesky/PufferVaultV2.d.ts +0 -1361
  154. package/dist/contracts/abis/holesky/PufferVaultV2.js +0 -1787
  155. package/dist/contracts/abis/holesky/PufferVaultV2.js.map +0 -1
  156. package/dist/contracts/abis/l1-reward-manager-abis.cjs +0 -2
  157. package/dist/contracts/abis/l1-reward-manager-abis.cjs.map +0 -1
  158. package/dist/contracts/abis/l1-reward-manager-abis.d.ts +0 -527
  159. package/dist/contracts/abis/l1-reward-manager-abis.js +0 -10
  160. package/dist/contracts/abis/l1-reward-manager-abis.js.map +0 -1
  161. package/dist/contracts/abis/l2-reward-manager-abis.cjs +0 -2
  162. package/dist/contracts/abis/l2-reward-manager-abis.cjs.map +0 -1
  163. package/dist/contracts/abis/l2-reward-manager-abis.d.ts +0 -709
  164. package/dist/contracts/abis/l2-reward-manager-abis.js +0 -11
  165. package/dist/contracts/abis/l2-reward-manager-abis.js.map +0 -1
  166. package/dist/contracts/abis/nucleus-accountant-abis.cjs +0 -2
  167. package/dist/contracts/abis/nucleus-accountant-abis.cjs.map +0 -1
  168. package/dist/contracts/abis/nucleus-accountant-abis.d.ts +0 -525
  169. package/dist/contracts/abis/nucleus-accountant-abis.js +0 -9
  170. package/dist/contracts/abis/nucleus-accountant-abis.js.map +0 -1
  171. package/dist/contracts/abis/nucleus-atomic-queue-abis.cjs +0 -2
  172. package/dist/contracts/abis/nucleus-atomic-queue-abis.cjs.map +0 -1
  173. package/dist/contracts/abis/nucleus-atomic-queue-abis.d.ts +0 -332
  174. package/dist/contracts/abis/nucleus-atomic-queue-abis.js +0 -9
  175. package/dist/contracts/abis/nucleus-atomic-queue-abis.js.map +0 -1
  176. package/dist/contracts/abis/nucleus-boring-vault-abis.cjs +0 -2
  177. package/dist/contracts/abis/nucleus-boring-vault-abis.cjs.map +0 -1
  178. package/dist/contracts/abis/nucleus-boring-vault-abis.d.ts +0 -626
  179. package/dist/contracts/abis/nucleus-boring-vault-abis.js +0 -9
  180. package/dist/contracts/abis/nucleus-boring-vault-abis.js.map +0 -1
  181. package/dist/contracts/abis/nucleus-teller-abis.cjs +0 -2
  182. package/dist/contracts/abis/nucleus-teller-abis.cjs.map +0 -1
  183. package/dist/contracts/abis/nucleus-teller-abis.d.ts +0 -545
  184. package/dist/contracts/abis/nucleus-teller-abis.js +0 -9
  185. package/dist/contracts/abis/nucleus-teller-abis.js.map +0 -1
  186. package/dist/contracts/abis/puf-locker-abis.cjs +0 -2
  187. package/dist/contracts/abis/puf-locker-abis.cjs.map +0 -1
  188. package/dist/contracts/abis/puf-locker-abis.d.ts +0 -484
  189. package/dist/contracts/abis/puf-locker-abis.js +0 -10
  190. package/dist/contracts/abis/puf-locker-abis.js.map +0 -1
  191. package/dist/contracts/abis/puffer-depositor-abis.cjs +0 -2
  192. package/dist/contracts/abis/puffer-depositor-abis.cjs.map +0 -1
  193. package/dist/contracts/abis/puffer-depositor-abis.d.ts +0 -664
  194. package/dist/contracts/abis/puffer-depositor-abis.js +0 -20
  195. package/dist/contracts/abis/puffer-depositor-abis.js.map +0 -1
  196. package/dist/contracts/abis/puffer-vault-abis.cjs +0 -2
  197. package/dist/contracts/abis/puffer-vault-abis.cjs.map +0 -1
  198. package/dist/contracts/abis/puffer-vault-abis.d.ts +0 -2787
  199. package/dist/contracts/abis/puffer-vault-abis.js +0 -15
  200. package/dist/contracts/abis/puffer-vault-abis.js.map +0 -1
  201. package/dist/contracts/abis/puffer-withdrawal-manager-abis.cjs +0 -2
  202. package/dist/contracts/abis/puffer-withdrawal-manager-abis.cjs.map +0 -1
  203. package/dist/contracts/abis/puffer-withdrawal-manager-abis.d.ts +0 -514
  204. package/dist/contracts/abis/puffer-withdrawal-manager-abis.js +0 -10
  205. package/dist/contracts/abis/puffer-withdrawal-manager-abis.js.map +0 -1
  206. package/dist/contracts/abis/tokens-abis.cjs +0 -2
  207. package/dist/contracts/abis/tokens-abis.cjs.map +0 -1
  208. package/dist/contracts/abis/tokens-abis.d.ts +0 -396
  209. package/dist/contracts/abis/tokens-abis.js +0 -6
  210. package/dist/contracts/abis/tokens-abis.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"puffer-client-helpers.cjs","sources":["../../node_modules/.pnpm/viem@2.23.6_typescript@5.7.3_zod@3.24.2/node_modules/viem/_esm/clients/transports/custom.js","../../node_modules/.pnpm/viem@2.23.6_typescript@5.7.3_zod@3.24.2/node_modules/viem/_esm/clients/transports/fallback.js","../../lib/api/puffer-client-helpers.ts"],"sourcesContent":["import { createTransport, } from './createTransport.js';\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom(provider, config = {}) {\n const { key = 'custom', methods, name = 'Custom Provider', retryDelay, } = config;\n return ({ retryCount: defaultRetryCount }) => createTransport({\n key,\n methods,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n });\n}\n//# sourceMappingURL=custom.js.map","import { ExecutionRevertedError } from '../../errors/node.js';\nimport { TransactionRejectedRpcError, UserRejectedRequestError, } from '../../errors/rpc.js';\nimport { wait } from '../../utils/wait.js';\nimport { createTransport, } from './createTransport.js';\nexport function fallback(transports_, config = {}) {\n const { key = 'fallback', name = 'Fallback', rank = false, retryCount, retryDelay, } = config;\n return (({ chain, pollingInterval = 4_000, timeout, ...rest }) => {\n let transports = transports_;\n let onResponse = () => { };\n const transport = createTransport({\n key,\n name,\n async request({ method, params }) {\n let includes;\n const fetch = async (i = 0) => {\n const transport = transports[i]({\n ...rest,\n chain,\n retryCount: 0,\n timeout,\n });\n try {\n const response = await transport.request({\n method,\n params,\n });\n onResponse({\n method,\n params: params,\n response,\n transport,\n status: 'success',\n });\n return response;\n }\n catch (err) {\n onResponse({\n error: err,\n method,\n params: params,\n transport,\n status: 'error',\n });\n if (shouldThrow(err))\n throw err;\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1)\n throw err;\n // Check if at least one other transport includes the method\n includes ??= transports.slice(i + 1).some((transport) => {\n const { include, exclude } = transport({ chain }).config.methods || {};\n if (include)\n return include.includes(method);\n if (exclude)\n return !exclude.includes(method);\n return true;\n });\n if (!includes)\n throw err;\n // Otherwise, try the next fallback.\n return fetch(i + 1);\n }\n };\n return fetch();\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n }, {\n onResponse: (fn) => (onResponse = fn),\n transports: transports.map((fn) => fn({ chain, retryCount: 0 })),\n });\n if (rank) {\n const rankOptions = (typeof rank === 'object' ? rank : {});\n rankTransports({\n chain,\n interval: rankOptions.interval ?? pollingInterval,\n onTransports: (transports_) => (transports = transports_),\n ping: rankOptions.ping,\n sampleCount: rankOptions.sampleCount,\n timeout: rankOptions.timeout,\n transports,\n weights: rankOptions.weights,\n });\n }\n return transport;\n });\n}\nfunction shouldThrow(error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === TransactionRejectedRpcError.code ||\n error.code === UserRejectedRequestError.code ||\n ExecutionRevertedError.nodeMessage.test(error.message) ||\n error.code === 5000 // CAIP UserRejectedRequestError\n )\n return true;\n }\n return false;\n}\n/** @internal */\nexport function rankTransports({ chain, interval = 4_000, onTransports, ping, sampleCount = 10, timeout = 1_000, transports, weights = {}, }) {\n const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } = weights;\n const samples = [];\n const rankTransports_ = async () => {\n // 1. Take a sample from each Transport.\n const sample = await Promise.all(transports.map(async (transport) => {\n const transport_ = transport({ chain, retryCount: 0, timeout });\n const start = Date.now();\n let end;\n let success;\n try {\n await (ping\n ? ping({ transport: transport_ })\n : transport_.request({ method: 'net_listening' }));\n success = 1;\n }\n catch {\n success = 0;\n }\n finally {\n end = Date.now();\n }\n const latency = end - start;\n return { latency, success };\n }));\n // 2. Store the sample. If we have more than `sampleCount` samples, remove\n // the oldest sample.\n samples.push(sample);\n if (samples.length > sampleCount)\n samples.shift();\n // 3. Calculate the max latency from samples.\n const maxLatency = Math.max(...samples.map((sample) => Math.max(...sample.map(({ latency }) => latency))));\n // 4. Calculate the score for each Transport.\n const scores = transports\n .map((_, i) => {\n const latencies = samples.map((sample) => sample[i].latency);\n const meanLatency = latencies.reduce((acc, latency) => acc + latency, 0) /\n latencies.length;\n const latencyScore = 1 - meanLatency / maxLatency;\n const successes = samples.map((sample) => sample[i].success);\n const stabilityScore = successes.reduce((acc, success) => acc + success, 0) /\n successes.length;\n if (stabilityScore === 0)\n return [0, i];\n return [\n latencyWeight * latencyScore + stabilityWeight * stabilityScore,\n i,\n ];\n })\n .sort((a, b) => b[0] - a[0]);\n // 5. Sort the Transports by score.\n onTransports(scores.map(([, i]) => transports[i]));\n // 6. Wait, and then rank again.\n await wait(interval);\n rankTransports_();\n };\n rankTransports_();\n}\n//# sourceMappingURL=fallback.js.map","import {\n CustomTransportConfig,\n createPublicClient as createPublicClientViem,\n createWalletClient as createWalletClientViem,\n http,\n fallback,\n custom,\n Transport,\n PublicClient,\n WalletClient,\n} from 'viem';\nimport { Chain, VIEM_CHAINS } from '../chains/constants';\nimport { TransportProvider } from '../utils/types';\n\nexport type ClientConfig = {\n chain: Chain;\n} & (\n | { rpcUrls: string[] }\n | { provider: TransportProvider; config?: CustomTransportConfig }\n);\n\n/**\n * Helper methods for the main `PufferClient`.\n */\nexport class PufferClientHelpers {\n /**\n * Helper method for creating a public client based on the\n * configuration\n *\n * @param config Configuration for the public client.\n * @returns The public client created with viem.\n */\n public static createPublicClient(config: ClientConfig): PublicClient {\n return createPublicClientViem({\n chain: VIEM_CHAINS[config.chain],\n transport: PufferClientHelpers.extractTransportConfig(config),\n });\n }\n\n /**\n * Helper method for creating a wallet client based on the\n * configuration\n *\n * @param config Configuration for the wallet client.\n * @returns The wallet client created with viem.\n */\n public static createWalletClient(config: ClientConfig): WalletClient {\n return createWalletClientViem({\n chain: VIEM_CHAINS[config.chain],\n transport: PufferClientHelpers.extractTransportConfig(config),\n });\n }\n\n private static extractTransportConfig(config: ClientConfig): Transport {\n if ('rpcUrls' in config) {\n return fallback(config.rpcUrls.map((url) => http(url)));\n } else {\n return custom(config.provider, config.config);\n }\n }\n}\n"],"names":["custom","provider","config","key","methods","name","retryDelay","defaultRetryCount","createTransport","fallback","transports_","rank","retryCount","chain","pollingInterval","timeout","rest","transports","onResponse","transport","method","params","includes","fetch","response","err","shouldThrow","include","exclude","fn","rankOptions","rankTransports","error","TransactionRejectedRpcError","UserRejectedRequestError","ExecutionRevertedError","interval","onTransports","ping","sampleCount","weights","stabilityWeight","latencyWeight","samples","rankTransports_","sample","transport_","start","end","success","maxLatency","latency","scores","_","i","latencies","latencyScore","acc","successes","stabilityScore","a","b","wait","PufferClientHelpers","createPublicClientViem","VIEM_CHAINS","createWalletClientViem","url","http"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"puffer-client-helpers.cjs","sources":["../../node_modules/.pnpm/viem@2.23.6_typescript@5.8.2_zod@3.24.2/node_modules/viem/_esm/clients/transports/custom.js","../../node_modules/.pnpm/viem@2.23.6_typescript@5.8.2_zod@3.24.2/node_modules/viem/_esm/clients/transports/fallback.js","../../lib/api/puffer-client-helpers.ts"],"sourcesContent":["import { createTransport, } from './createTransport.js';\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom(provider, config = {}) {\n const { key = 'custom', methods, name = 'Custom Provider', retryDelay, } = config;\n return ({ retryCount: defaultRetryCount }) => createTransport({\n key,\n methods,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n });\n}\n//# sourceMappingURL=custom.js.map","import { ExecutionRevertedError } from '../../errors/node.js';\nimport { TransactionRejectedRpcError, UserRejectedRequestError, } from '../../errors/rpc.js';\nimport { wait } from '../../utils/wait.js';\nimport { createTransport, } from './createTransport.js';\nexport function fallback(transports_, config = {}) {\n const { key = 'fallback', name = 'Fallback', rank = false, retryCount, retryDelay, } = config;\n return (({ chain, pollingInterval = 4_000, timeout, ...rest }) => {\n let transports = transports_;\n let onResponse = () => { };\n const transport = createTransport({\n key,\n name,\n async request({ method, params }) {\n let includes;\n const fetch = async (i = 0) => {\n const transport = transports[i]({\n ...rest,\n chain,\n retryCount: 0,\n timeout,\n });\n try {\n const response = await transport.request({\n method,\n params,\n });\n onResponse({\n method,\n params: params,\n response,\n transport,\n status: 'success',\n });\n return response;\n }\n catch (err) {\n onResponse({\n error: err,\n method,\n params: params,\n transport,\n status: 'error',\n });\n if (shouldThrow(err))\n throw err;\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1)\n throw err;\n // Check if at least one other transport includes the method\n includes ??= transports.slice(i + 1).some((transport) => {\n const { include, exclude } = transport({ chain }).config.methods || {};\n if (include)\n return include.includes(method);\n if (exclude)\n return !exclude.includes(method);\n return true;\n });\n if (!includes)\n throw err;\n // Otherwise, try the next fallback.\n return fetch(i + 1);\n }\n };\n return fetch();\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n }, {\n onResponse: (fn) => (onResponse = fn),\n transports: transports.map((fn) => fn({ chain, retryCount: 0 })),\n });\n if (rank) {\n const rankOptions = (typeof rank === 'object' ? rank : {});\n rankTransports({\n chain,\n interval: rankOptions.interval ?? pollingInterval,\n onTransports: (transports_) => (transports = transports_),\n ping: rankOptions.ping,\n sampleCount: rankOptions.sampleCount,\n timeout: rankOptions.timeout,\n transports,\n weights: rankOptions.weights,\n });\n }\n return transport;\n });\n}\nfunction shouldThrow(error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === TransactionRejectedRpcError.code ||\n error.code === UserRejectedRequestError.code ||\n ExecutionRevertedError.nodeMessage.test(error.message) ||\n error.code === 5000 // CAIP UserRejectedRequestError\n )\n return true;\n }\n return false;\n}\n/** @internal */\nexport function rankTransports({ chain, interval = 4_000, onTransports, ping, sampleCount = 10, timeout = 1_000, transports, weights = {}, }) {\n const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } = weights;\n const samples = [];\n const rankTransports_ = async () => {\n // 1. Take a sample from each Transport.\n const sample = await Promise.all(transports.map(async (transport) => {\n const transport_ = transport({ chain, retryCount: 0, timeout });\n const start = Date.now();\n let end;\n let success;\n try {\n await (ping\n ? ping({ transport: transport_ })\n : transport_.request({ method: 'net_listening' }));\n success = 1;\n }\n catch {\n success = 0;\n }\n finally {\n end = Date.now();\n }\n const latency = end - start;\n return { latency, success };\n }));\n // 2. Store the sample. If we have more than `sampleCount` samples, remove\n // the oldest sample.\n samples.push(sample);\n if (samples.length > sampleCount)\n samples.shift();\n // 3. Calculate the max latency from samples.\n const maxLatency = Math.max(...samples.map((sample) => Math.max(...sample.map(({ latency }) => latency))));\n // 4. Calculate the score for each Transport.\n const scores = transports\n .map((_, i) => {\n const latencies = samples.map((sample) => sample[i].latency);\n const meanLatency = latencies.reduce((acc, latency) => acc + latency, 0) /\n latencies.length;\n const latencyScore = 1 - meanLatency / maxLatency;\n const successes = samples.map((sample) => sample[i].success);\n const stabilityScore = successes.reduce((acc, success) => acc + success, 0) /\n successes.length;\n if (stabilityScore === 0)\n return [0, i];\n return [\n latencyWeight * latencyScore + stabilityWeight * stabilityScore,\n i,\n ];\n })\n .sort((a, b) => b[0] - a[0]);\n // 5. Sort the Transports by score.\n onTransports(scores.map(([, i]) => transports[i]));\n // 6. Wait, and then rank again.\n await wait(interval);\n rankTransports_();\n };\n rankTransports_();\n}\n//# sourceMappingURL=fallback.js.map","import {\n CustomTransportConfig,\n createPublicClient as createPublicClientViem,\n createWalletClient as createWalletClientViem,\n http,\n fallback,\n custom,\n Transport,\n PublicClient,\n WalletClient,\n} from 'viem';\nimport { Chain, VIEM_CHAINS } from '../chains/constants';\nimport { TransportProvider } from '../utils/types';\n\nexport type ClientConfig = {\n chain: Chain;\n} & (\n | { rpcUrls: string[] }\n | { provider: TransportProvider; config?: CustomTransportConfig }\n);\n\n/**\n * Helper methods for the main `PufferClient`.\n */\nexport class PufferClientHelpers {\n /**\n * Helper method for creating a public client based on the\n * configuration\n *\n * @param config Configuration for the public client.\n * @returns The public client created with viem.\n */\n public static createPublicClient(config: ClientConfig): PublicClient {\n return createPublicClientViem({\n chain: VIEM_CHAINS[config.chain],\n transport: PufferClientHelpers.extractTransportConfig(config),\n });\n }\n\n /**\n * Helper method for creating a wallet client based on the\n * configuration\n *\n * @param config Configuration for the wallet client.\n * @returns The wallet client created with viem.\n */\n public static createWalletClient(config: ClientConfig): WalletClient {\n return createWalletClientViem({\n chain: VIEM_CHAINS[config.chain],\n transport: PufferClientHelpers.extractTransportConfig(config),\n });\n }\n\n private static extractTransportConfig(config: ClientConfig): Transport {\n if ('rpcUrls' in config) {\n return fallback(config.rpcUrls.map((url) => http(url)));\n } else {\n return custom(config.provider, config.config);\n }\n }\n}\n"],"names":["custom","provider","config","key","methods","name","retryDelay","defaultRetryCount","createTransport","fallback","transports_","rank","retryCount","chain","pollingInterval","timeout","rest","transports","onResponse","transport","method","params","includes","fetch","response","err","shouldThrow","include","exclude","fn","rankOptions","rankTransports","error","TransactionRejectedRpcError","UserRejectedRequestError","ExecutionRevertedError","interval","onTransports","ping","sampleCount","weights","stabilityWeight","latencyWeight","samples","rankTransports_","sample","transport_","start","end","success","maxLatency","latency","scores","_","i","latencies","latencyScore","acc","successes","stabilityScore","a","b","wait","PufferClientHelpers","createPublicClientViem","VIEM_CHAINS","createWalletClientViem","url","http"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1 +1 @@
1
- {"version":3,"file":"puffer-client-helpers.js","sources":["../../node_modules/.pnpm/viem@2.23.6_typescript@5.7.3_zod@3.24.2/node_modules/viem/_esm/clients/transports/custom.js","../../node_modules/.pnpm/viem@2.23.6_typescript@5.7.3_zod@3.24.2/node_modules/viem/_esm/clients/transports/fallback.js","../../lib/api/puffer-client-helpers.ts"],"sourcesContent":["import { createTransport, } from './createTransport.js';\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom(provider, config = {}) {\n const { key = 'custom', methods, name = 'Custom Provider', retryDelay, } = config;\n return ({ retryCount: defaultRetryCount }) => createTransport({\n key,\n methods,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n });\n}\n//# sourceMappingURL=custom.js.map","import { ExecutionRevertedError } from '../../errors/node.js';\nimport { TransactionRejectedRpcError, UserRejectedRequestError, } from '../../errors/rpc.js';\nimport { wait } from '../../utils/wait.js';\nimport { createTransport, } from './createTransport.js';\nexport function fallback(transports_, config = {}) {\n const { key = 'fallback', name = 'Fallback', rank = false, retryCount, retryDelay, } = config;\n return (({ chain, pollingInterval = 4_000, timeout, ...rest }) => {\n let transports = transports_;\n let onResponse = () => { };\n const transport = createTransport({\n key,\n name,\n async request({ method, params }) {\n let includes;\n const fetch = async (i = 0) => {\n const transport = transports[i]({\n ...rest,\n chain,\n retryCount: 0,\n timeout,\n });\n try {\n const response = await transport.request({\n method,\n params,\n });\n onResponse({\n method,\n params: params,\n response,\n transport,\n status: 'success',\n });\n return response;\n }\n catch (err) {\n onResponse({\n error: err,\n method,\n params: params,\n transport,\n status: 'error',\n });\n if (shouldThrow(err))\n throw err;\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1)\n throw err;\n // Check if at least one other transport includes the method\n includes ??= transports.slice(i + 1).some((transport) => {\n const { include, exclude } = transport({ chain }).config.methods || {};\n if (include)\n return include.includes(method);\n if (exclude)\n return !exclude.includes(method);\n return true;\n });\n if (!includes)\n throw err;\n // Otherwise, try the next fallback.\n return fetch(i + 1);\n }\n };\n return fetch();\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n }, {\n onResponse: (fn) => (onResponse = fn),\n transports: transports.map((fn) => fn({ chain, retryCount: 0 })),\n });\n if (rank) {\n const rankOptions = (typeof rank === 'object' ? rank : {});\n rankTransports({\n chain,\n interval: rankOptions.interval ?? pollingInterval,\n onTransports: (transports_) => (transports = transports_),\n ping: rankOptions.ping,\n sampleCount: rankOptions.sampleCount,\n timeout: rankOptions.timeout,\n transports,\n weights: rankOptions.weights,\n });\n }\n return transport;\n });\n}\nfunction shouldThrow(error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === TransactionRejectedRpcError.code ||\n error.code === UserRejectedRequestError.code ||\n ExecutionRevertedError.nodeMessage.test(error.message) ||\n error.code === 5000 // CAIP UserRejectedRequestError\n )\n return true;\n }\n return false;\n}\n/** @internal */\nexport function rankTransports({ chain, interval = 4_000, onTransports, ping, sampleCount = 10, timeout = 1_000, transports, weights = {}, }) {\n const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } = weights;\n const samples = [];\n const rankTransports_ = async () => {\n // 1. Take a sample from each Transport.\n const sample = await Promise.all(transports.map(async (transport) => {\n const transport_ = transport({ chain, retryCount: 0, timeout });\n const start = Date.now();\n let end;\n let success;\n try {\n await (ping\n ? ping({ transport: transport_ })\n : transport_.request({ method: 'net_listening' }));\n success = 1;\n }\n catch {\n success = 0;\n }\n finally {\n end = Date.now();\n }\n const latency = end - start;\n return { latency, success };\n }));\n // 2. Store the sample. If we have more than `sampleCount` samples, remove\n // the oldest sample.\n samples.push(sample);\n if (samples.length > sampleCount)\n samples.shift();\n // 3. Calculate the max latency from samples.\n const maxLatency = Math.max(...samples.map((sample) => Math.max(...sample.map(({ latency }) => latency))));\n // 4. Calculate the score for each Transport.\n const scores = transports\n .map((_, i) => {\n const latencies = samples.map((sample) => sample[i].latency);\n const meanLatency = latencies.reduce((acc, latency) => acc + latency, 0) /\n latencies.length;\n const latencyScore = 1 - meanLatency / maxLatency;\n const successes = samples.map((sample) => sample[i].success);\n const stabilityScore = successes.reduce((acc, success) => acc + success, 0) /\n successes.length;\n if (stabilityScore === 0)\n return [0, i];\n return [\n latencyWeight * latencyScore + stabilityWeight * stabilityScore,\n i,\n ];\n })\n .sort((a, b) => b[0] - a[0]);\n // 5. Sort the Transports by score.\n onTransports(scores.map(([, i]) => transports[i]));\n // 6. Wait, and then rank again.\n await wait(interval);\n rankTransports_();\n };\n rankTransports_();\n}\n//# sourceMappingURL=fallback.js.map","import {\n CustomTransportConfig,\n createPublicClient as createPublicClientViem,\n createWalletClient as createWalletClientViem,\n http,\n fallback,\n custom,\n Transport,\n PublicClient,\n WalletClient,\n} from 'viem';\nimport { Chain, VIEM_CHAINS } from '../chains/constants';\nimport { TransportProvider } from '../utils/types';\n\nexport type ClientConfig = {\n chain: Chain;\n} & (\n | { rpcUrls: string[] }\n | { provider: TransportProvider; config?: CustomTransportConfig }\n);\n\n/**\n * Helper methods for the main `PufferClient`.\n */\nexport class PufferClientHelpers {\n /**\n * Helper method for creating a public client based on the\n * configuration\n *\n * @param config Configuration for the public client.\n * @returns The public client created with viem.\n */\n public static createPublicClient(config: ClientConfig): PublicClient {\n return createPublicClientViem({\n chain: VIEM_CHAINS[config.chain],\n transport: PufferClientHelpers.extractTransportConfig(config),\n });\n }\n\n /**\n * Helper method for creating a wallet client based on the\n * configuration\n *\n * @param config Configuration for the wallet client.\n * @returns The wallet client created with viem.\n */\n public static createWalletClient(config: ClientConfig): WalletClient {\n return createWalletClientViem({\n chain: VIEM_CHAINS[config.chain],\n transport: PufferClientHelpers.extractTransportConfig(config),\n });\n }\n\n private static extractTransportConfig(config: ClientConfig): Transport {\n if ('rpcUrls' in config) {\n return fallback(config.rpcUrls.map((url) => http(url)));\n } else {\n return custom(config.provider, config.config);\n }\n }\n}\n"],"names":["custom","provider","config","key","methods","name","retryDelay","defaultRetryCount","createTransport","fallback","transports_","rank","retryCount","chain","pollingInterval","timeout","rest","transports","onResponse","transport","method","params","includes","fetch","response","err","shouldThrow","include","exclude","fn","rankOptions","rankTransports","error","TransactionRejectedRpcError","UserRejectedRequestError","ExecutionRevertedError","interval","onTransports","ping","sampleCount","weights","stabilityWeight","latencyWeight","samples","rankTransports_","sample","transport_","start","end","success","maxLatency","latency","scores","_","i","latencies","latencyScore","acc","successes","stabilityScore","a","b","wait","PufferClientHelpers","createPublicClientViem","VIEM_CHAINS","createWalletClientViem","url","http"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"puffer-client-helpers.js","sources":["../../node_modules/.pnpm/viem@2.23.6_typescript@5.8.2_zod@3.24.2/node_modules/viem/_esm/clients/transports/custom.js","../../node_modules/.pnpm/viem@2.23.6_typescript@5.8.2_zod@3.24.2/node_modules/viem/_esm/clients/transports/fallback.js","../../lib/api/puffer-client-helpers.ts"],"sourcesContent":["import { createTransport, } from './createTransport.js';\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom(provider, config = {}) {\n const { key = 'custom', methods, name = 'Custom Provider', retryDelay, } = config;\n return ({ retryCount: defaultRetryCount }) => createTransport({\n key,\n methods,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n });\n}\n//# sourceMappingURL=custom.js.map","import { ExecutionRevertedError } from '../../errors/node.js';\nimport { TransactionRejectedRpcError, UserRejectedRequestError, } from '../../errors/rpc.js';\nimport { wait } from '../../utils/wait.js';\nimport { createTransport, } from './createTransport.js';\nexport function fallback(transports_, config = {}) {\n const { key = 'fallback', name = 'Fallback', rank = false, retryCount, retryDelay, } = config;\n return (({ chain, pollingInterval = 4_000, timeout, ...rest }) => {\n let transports = transports_;\n let onResponse = () => { };\n const transport = createTransport({\n key,\n name,\n async request({ method, params }) {\n let includes;\n const fetch = async (i = 0) => {\n const transport = transports[i]({\n ...rest,\n chain,\n retryCount: 0,\n timeout,\n });\n try {\n const response = await transport.request({\n method,\n params,\n });\n onResponse({\n method,\n params: params,\n response,\n transport,\n status: 'success',\n });\n return response;\n }\n catch (err) {\n onResponse({\n error: err,\n method,\n params: params,\n transport,\n status: 'error',\n });\n if (shouldThrow(err))\n throw err;\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1)\n throw err;\n // Check if at least one other transport includes the method\n includes ??= transports.slice(i + 1).some((transport) => {\n const { include, exclude } = transport({ chain }).config.methods || {};\n if (include)\n return include.includes(method);\n if (exclude)\n return !exclude.includes(method);\n return true;\n });\n if (!includes)\n throw err;\n // Otherwise, try the next fallback.\n return fetch(i + 1);\n }\n };\n return fetch();\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n }, {\n onResponse: (fn) => (onResponse = fn),\n transports: transports.map((fn) => fn({ chain, retryCount: 0 })),\n });\n if (rank) {\n const rankOptions = (typeof rank === 'object' ? rank : {});\n rankTransports({\n chain,\n interval: rankOptions.interval ?? pollingInterval,\n onTransports: (transports_) => (transports = transports_),\n ping: rankOptions.ping,\n sampleCount: rankOptions.sampleCount,\n timeout: rankOptions.timeout,\n transports,\n weights: rankOptions.weights,\n });\n }\n return transport;\n });\n}\nfunction shouldThrow(error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === TransactionRejectedRpcError.code ||\n error.code === UserRejectedRequestError.code ||\n ExecutionRevertedError.nodeMessage.test(error.message) ||\n error.code === 5000 // CAIP UserRejectedRequestError\n )\n return true;\n }\n return false;\n}\n/** @internal */\nexport function rankTransports({ chain, interval = 4_000, onTransports, ping, sampleCount = 10, timeout = 1_000, transports, weights = {}, }) {\n const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } = weights;\n const samples = [];\n const rankTransports_ = async () => {\n // 1. Take a sample from each Transport.\n const sample = await Promise.all(transports.map(async (transport) => {\n const transport_ = transport({ chain, retryCount: 0, timeout });\n const start = Date.now();\n let end;\n let success;\n try {\n await (ping\n ? ping({ transport: transport_ })\n : transport_.request({ method: 'net_listening' }));\n success = 1;\n }\n catch {\n success = 0;\n }\n finally {\n end = Date.now();\n }\n const latency = end - start;\n return { latency, success };\n }));\n // 2. Store the sample. If we have more than `sampleCount` samples, remove\n // the oldest sample.\n samples.push(sample);\n if (samples.length > sampleCount)\n samples.shift();\n // 3. Calculate the max latency from samples.\n const maxLatency = Math.max(...samples.map((sample) => Math.max(...sample.map(({ latency }) => latency))));\n // 4. Calculate the score for each Transport.\n const scores = transports\n .map((_, i) => {\n const latencies = samples.map((sample) => sample[i].latency);\n const meanLatency = latencies.reduce((acc, latency) => acc + latency, 0) /\n latencies.length;\n const latencyScore = 1 - meanLatency / maxLatency;\n const successes = samples.map((sample) => sample[i].success);\n const stabilityScore = successes.reduce((acc, success) => acc + success, 0) /\n successes.length;\n if (stabilityScore === 0)\n return [0, i];\n return [\n latencyWeight * latencyScore + stabilityWeight * stabilityScore,\n i,\n ];\n })\n .sort((a, b) => b[0] - a[0]);\n // 5. Sort the Transports by score.\n onTransports(scores.map(([, i]) => transports[i]));\n // 6. Wait, and then rank again.\n await wait(interval);\n rankTransports_();\n };\n rankTransports_();\n}\n//# sourceMappingURL=fallback.js.map","import {\n CustomTransportConfig,\n createPublicClient as createPublicClientViem,\n createWalletClient as createWalletClientViem,\n http,\n fallback,\n custom,\n Transport,\n PublicClient,\n WalletClient,\n} from 'viem';\nimport { Chain, VIEM_CHAINS } from '../chains/constants';\nimport { TransportProvider } from '../utils/types';\n\nexport type ClientConfig = {\n chain: Chain;\n} & (\n | { rpcUrls: string[] }\n | { provider: TransportProvider; config?: CustomTransportConfig }\n);\n\n/**\n * Helper methods for the main `PufferClient`.\n */\nexport class PufferClientHelpers {\n /**\n * Helper method for creating a public client based on the\n * configuration\n *\n * @param config Configuration for the public client.\n * @returns The public client created with viem.\n */\n public static createPublicClient(config: ClientConfig): PublicClient {\n return createPublicClientViem({\n chain: VIEM_CHAINS[config.chain],\n transport: PufferClientHelpers.extractTransportConfig(config),\n });\n }\n\n /**\n * Helper method for creating a wallet client based on the\n * configuration\n *\n * @param config Configuration for the wallet client.\n * @returns The wallet client created with viem.\n */\n public static createWalletClient(config: ClientConfig): WalletClient {\n return createWalletClientViem({\n chain: VIEM_CHAINS[config.chain],\n transport: PufferClientHelpers.extractTransportConfig(config),\n });\n }\n\n private static extractTransportConfig(config: ClientConfig): Transport {\n if ('rpcUrls' in config) {\n return fallback(config.rpcUrls.map((url) => http(url)));\n } else {\n return custom(config.provider, config.config);\n }\n }\n}\n"],"names":["custom","provider","config","key","methods","name","retryDelay","defaultRetryCount","createTransport","fallback","transports_","rank","retryCount","chain","pollingInterval","timeout","rest","transports","onResponse","transport","method","params","includes","fetch","response","err","shouldThrow","include","exclude","fn","rankOptions","rankTransports","error","TransactionRejectedRpcError","UserRejectedRequestError","ExecutionRevertedError","interval","onTransports","ping","sampleCount","weights","stabilityWeight","latencyWeight","samples","rankTransports_","sample","transport_","start","end","success","maxLatency","latency","scores","_","i","latencies","latencyScore","acc","successes","stabilityScore","a","b","wait","PufferClientHelpers","createPublicClientViem","VIEM_CHAINS","createWalletClientViem","url","http"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1 +1 @@
1
- {"version":3,"file":"ccip-C0xwQhXU.cjs","sources":["../node_modules/.pnpm/viem@2.23.6_typescript@5.7.3_zod@3.24.2/node_modules/viem/_esm/errors/ccip.js","../node_modules/.pnpm/viem@2.23.6_typescript@5.7.3_zod@3.24.2/node_modules/viem/_esm/utils/ccip.js"],"sourcesContent":["import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nimport { getUrl } from './utils.js';\nexport class OffchainLookupError extends BaseError {\n constructor({ callbackSelector, cause, data, extraData, sender, urls, }) {\n super(cause.shortMessage ||\n 'An error occurred while fetching for an offchain result.', {\n cause,\n metaMessages: [\n ...(cause.metaMessages || []),\n cause.metaMessages?.length ? '' : [],\n 'Offchain Gateway Call:',\n urls && [\n ' Gateway URL(s):',\n ...urls.map((url) => ` ${getUrl(url)}`),\n ],\n ` Sender: ${sender}`,\n ` Data: ${data}`,\n ` Callback selector: ${callbackSelector}`,\n ` Extra data: ${extraData}`,\n ].flat(),\n name: 'OffchainLookupError',\n });\n }\n}\nexport class OffchainLookupResponseMalformedError extends BaseError {\n constructor({ result, url }) {\n super('Offchain gateway response is malformed. Response data must be a hex value.', {\n metaMessages: [\n `Gateway URL: ${getUrl(url)}`,\n `Response: ${stringify(result)}`,\n ],\n name: 'OffchainLookupResponseMalformedError',\n });\n }\n}\nexport class OffchainLookupSenderMismatchError extends BaseError {\n constructor({ sender, to }) {\n super('Reverted sender address does not match target contract address (`to`).', {\n metaMessages: [\n `Contract address: ${to}`,\n `OffchainLookup sender address: ${sender}`,\n ],\n name: 'OffchainLookupSenderMismatchError',\n });\n }\n}\n//# sourceMappingURL=ccip.js.map","import { call } from '../actions/public/call.js';\nimport { OffchainLookupError, OffchainLookupResponseMalformedError, OffchainLookupSenderMismatchError, } from '../errors/ccip.js';\nimport { HttpRequestError, } from '../errors/request.js';\nimport { decodeErrorResult } from './abi/decodeErrorResult.js';\nimport { encodeAbiParameters } from './abi/encodeAbiParameters.js';\nimport { isAddressEqual } from './address/isAddressEqual.js';\nimport { concat } from './data/concat.js';\nimport { isHex } from './data/isHex.js';\nimport { stringify } from './stringify.js';\nexport const offchainLookupSignature = '0x556f1830';\nexport const offchainLookupAbiItem = {\n name: 'OffchainLookup',\n type: 'error',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'urls',\n type: 'string[]',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n {\n name: 'callbackFunction',\n type: 'bytes4',\n },\n {\n name: 'extraData',\n type: 'bytes',\n },\n ],\n};\nexport async function offchainLookup(client, { blockNumber, blockTag, data, to, }) {\n const { args } = decodeErrorResult({\n data,\n abi: [offchainLookupAbiItem],\n });\n const [sender, urls, callData, callbackSelector, extraData] = args;\n const { ccipRead } = client;\n const ccipRequest_ = ccipRead && typeof ccipRead?.request === 'function'\n ? ccipRead.request\n : ccipRequest;\n try {\n if (!isAddressEqual(to, sender))\n throw new OffchainLookupSenderMismatchError({ sender, to });\n const result = await ccipRequest_({ data: callData, sender, urls });\n const { data: data_ } = await call(client, {\n blockNumber,\n blockTag,\n data: concat([\n callbackSelector,\n encodeAbiParameters([{ type: 'bytes' }, { type: 'bytes' }], [result, extraData]),\n ]),\n to,\n });\n return data_;\n }\n catch (err) {\n throw new OffchainLookupError({\n callbackSelector,\n cause: err,\n data,\n extraData,\n sender,\n urls,\n });\n }\n}\nexport async function ccipRequest({ data, sender, urls, }) {\n let error = new Error('An unknown error occurred.');\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n const method = url.includes('{data}') ? 'GET' : 'POST';\n const body = method === 'POST' ? { data, sender } : undefined;\n const headers = method === 'POST' ? { 'Content-Type': 'application/json' } : {};\n try {\n const response = await fetch(url.replace('{sender}', sender).replace('{data}', data), {\n body: JSON.stringify(body),\n headers,\n method,\n });\n let result;\n if (response.headers.get('Content-Type')?.startsWith('application/json')) {\n result = (await response.json()).data;\n }\n else {\n result = (await response.text());\n }\n if (!response.ok) {\n error = new HttpRequestError({\n body,\n details: result?.error\n ? stringify(result.error)\n : response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n continue;\n }\n if (!isHex(result)) {\n error = new OffchainLookupResponseMalformedError({\n result,\n url,\n });\n continue;\n }\n return result;\n }\n catch (err) {\n error = new HttpRequestError({\n body,\n details: err.message,\n url,\n });\n }\n }\n throw error;\n}\n//# sourceMappingURL=ccip.js.map"],"names":["OffchainLookupError","BaseError","callbackSelector","cause","data","extraData","sender","urls","_a","url","getUrl","OffchainLookupResponseMalformedError","result","stringify","OffchainLookupSenderMismatchError","to","offchainLookupSignature","offchainLookupAbiItem","offchainLookup","client","blockNumber","blockTag","args","decodeErrorResult","callData","ccipRead","ccipRequest_","ccipRequest","isAddressEqual","data_","call","concat","encodeAbiParameters","err","error","i","method","body","headers","response","HttpRequestError","isHex"],"mappings":"sKAGO,MAAMA,UAA4BC,EAAAA,SAAU,CAC/C,YAAY,CAAE,iBAAAC,EAAkB,MAAAC,EAAO,KAAAC,EAAM,UAAAC,EAAW,OAAAC,EAAQ,KAAAC,GAAS,OACrE,MAAMJ,EAAM,cACR,2DAA4D,CAC5D,MAAAA,EACA,aAAc,CACV,GAAIA,EAAM,cAAgB,IAC1BK,EAAAL,EAAM,eAAN,MAAAK,EAAoB,OAAS,GAAK,CAAE,EACpC,yBACAD,GAAQ,CACJ,oBACA,GAAGA,EAAK,IAAKE,GAAQ,OAAOC,EAAM,OAACD,CAAG,CAAC,EAAE,CAC5C,EACD,aAAaH,CAAM,GACnB,WAAWF,CAAI,GACf,wBAAwBF,CAAgB,GACxC,iBAAiBG,CAAS,EAC7B,EAAC,KAAM,EACR,KAAM,qBAClB,CAAS,CACT,CACA,CACO,MAAMM,UAA6CV,EAAAA,SAAU,CAChE,YAAY,CAAE,OAAAW,EAAQ,IAAAH,GAAO,CACzB,MAAM,6EAA8E,CAChF,aAAc,CACV,gBAAgBC,EAAAA,OAAOD,CAAG,CAAC,GAC3B,aAAaI,EAAAA,UAAUD,CAAM,CAAC,EACjC,EACD,KAAM,sCAClB,CAAS,CACT,CACA,CACO,MAAME,UAA0Cb,EAAAA,SAAU,CAC7D,YAAY,CAAE,OAAAK,EAAQ,GAAAS,GAAM,CACxB,MAAM,yEAA0E,CAC5E,aAAc,CACV,qBAAqBA,CAAE,GACvB,kCAAkCT,CAAM,EAC3C,EACD,KAAM,mCAClB,CAAS,CACT,CACA,CCrCY,MAACU,EAA0B,aAC1BC,EAAwB,CACjC,KAAM,iBACN,KAAM,QACN,OAAQ,CACJ,CACI,KAAM,SACN,KAAM,SACT,EACD,CACI,KAAM,OACN,KAAM,UACT,EACD,CACI,KAAM,WACN,KAAM,OACT,EACD,CACI,KAAM,mBACN,KAAM,QACT,EACD,CACI,KAAM,YACN,KAAM,OACT,CACJ,CACL,EACO,eAAeC,EAAeC,EAAQ,CAAE,YAAAC,EAAa,SAAAC,EAAU,KAAAjB,EAAM,GAAAW,GAAO,CAC/E,KAAM,CAAE,KAAAO,CAAM,EAAGC,oBAAkB,CAC/B,KAAAnB,EACA,IAAK,CAACa,CAAqB,CACnC,CAAK,EACK,CAACX,EAAQC,EAAMiB,EAAUtB,EAAkBG,CAAS,EAAIiB,EACxD,CAAE,SAAAG,CAAQ,EAAKN,EACfO,EAAeD,GAAY,OAAOA,GAAA,YAAAA,EAAU,UAAY,WACxDA,EAAS,QACTE,EACN,GAAI,CACA,GAAI,CAACC,EAAAA,eAAeb,EAAIT,CAAM,EAC1B,MAAM,IAAIQ,EAAkC,CAAE,OAAAR,EAAQ,GAAAS,CAAE,CAAE,EAC9D,MAAMH,EAAS,MAAMc,EAAa,CAAE,KAAMF,EAAU,OAAAlB,EAAQ,KAAAC,EAAM,EAC5D,CAAE,KAAMsB,CAAO,EAAG,MAAMC,EAAAA,KAAKX,EAAQ,CACvC,YAAAC,EACA,SAAAC,EACA,KAAMU,EAAAA,OAAO,CACT7B,EACA8B,EAAAA,oBAAoB,CAAC,CAAE,KAAM,SAAW,CAAE,KAAM,QAAS,EAAG,CAACpB,EAAQP,CAAS,CAAC,CAC/F,CAAa,EACD,GAAAU,CACZ,CAAS,EACD,OAAOc,CACf,OACWI,EAAK,CACR,MAAM,IAAIjC,EAAoB,CAC1B,iBAAAE,EACA,MAAO+B,EACP,KAAA7B,EACA,UAAAC,EACA,OAAAC,EACA,KAAAC,CACZ,CAAS,CACT,CACA,CACO,eAAeoB,EAAY,CAAE,KAAAvB,EAAM,OAAAE,EAAQ,KAAAC,CAAI,EAAK,OACvD,IAAI2B,EAAQ,IAAI,MAAM,4BAA4B,EAClD,QAASC,EAAI,EAAGA,EAAI5B,EAAK,OAAQ4B,IAAK,CAClC,MAAM1B,EAAMF,EAAK4B,CAAC,EACZC,EAAS3B,EAAI,SAAS,QAAQ,EAAI,MAAQ,OAC1C4B,EAAOD,IAAW,OAAS,CAAE,KAAAhC,EAAM,OAAAE,CAAM,EAAK,OAC9CgC,EAAUF,IAAW,OAAS,CAAE,eAAgB,kBAAkB,EAAK,CAAE,EAC/E,GAAI,CACA,MAAMG,EAAW,MAAM,MAAM9B,EAAI,QAAQ,WAAYH,CAAM,EAAE,QAAQ,SAAUF,CAAI,EAAG,CAClF,KAAM,KAAK,UAAUiC,CAAI,EACzB,QAAAC,EACA,OAAAF,CAChB,CAAa,EACD,IAAIxB,EAOJ,IANIJ,EAAA+B,EAAS,QAAQ,IAAI,cAAc,IAAnC,MAAA/B,EAAsC,WAAW,oBACjDI,GAAU,MAAM2B,EAAS,KAAM,GAAE,KAGjC3B,EAAU,MAAM2B,EAAS,OAEzB,CAACA,EAAS,GAAI,CACdL,EAAQ,IAAIM,EAAAA,iBAAiB,CACzB,KAAAH,EACA,QAASzB,GAAA,MAAAA,EAAQ,MACXC,EAAS,UAACD,EAAO,KAAK,EACtB2B,EAAS,WACf,QAASA,EAAS,QAClB,OAAQA,EAAS,OACjB,IAAA9B,CACpB,CAAiB,EACD,QAChB,CACY,GAAI,CAACgC,EAAAA,MAAM7B,CAAM,EAAG,CAChBsB,EAAQ,IAAIvB,EAAqC,CAC7C,OAAAC,EACA,IAAAH,CACpB,CAAiB,EACD,QAChB,CACY,OAAOG,CACnB,OACeqB,EAAK,CACRC,EAAQ,IAAIM,EAAAA,iBAAiB,CACzB,KAAAH,EACA,QAASJ,EAAI,QACb,IAAAxB,CAChB,CAAa,CACb,CACA,CACI,MAAMyB,CACV","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"ccip-C0xwQhXU.cjs","sources":["../node_modules/.pnpm/viem@2.23.6_typescript@5.8.2_zod@3.24.2/node_modules/viem/_esm/errors/ccip.js","../node_modules/.pnpm/viem@2.23.6_typescript@5.8.2_zod@3.24.2/node_modules/viem/_esm/utils/ccip.js"],"sourcesContent":["import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nimport { getUrl } from './utils.js';\nexport class OffchainLookupError extends BaseError {\n constructor({ callbackSelector, cause, data, extraData, sender, urls, }) {\n super(cause.shortMessage ||\n 'An error occurred while fetching for an offchain result.', {\n cause,\n metaMessages: [\n ...(cause.metaMessages || []),\n cause.metaMessages?.length ? '' : [],\n 'Offchain Gateway Call:',\n urls && [\n ' Gateway URL(s):',\n ...urls.map((url) => ` ${getUrl(url)}`),\n ],\n ` Sender: ${sender}`,\n ` Data: ${data}`,\n ` Callback selector: ${callbackSelector}`,\n ` Extra data: ${extraData}`,\n ].flat(),\n name: 'OffchainLookupError',\n });\n }\n}\nexport class OffchainLookupResponseMalformedError extends BaseError {\n constructor({ result, url }) {\n super('Offchain gateway response is malformed. Response data must be a hex value.', {\n metaMessages: [\n `Gateway URL: ${getUrl(url)}`,\n `Response: ${stringify(result)}`,\n ],\n name: 'OffchainLookupResponseMalformedError',\n });\n }\n}\nexport class OffchainLookupSenderMismatchError extends BaseError {\n constructor({ sender, to }) {\n super('Reverted sender address does not match target contract address (`to`).', {\n metaMessages: [\n `Contract address: ${to}`,\n `OffchainLookup sender address: ${sender}`,\n ],\n name: 'OffchainLookupSenderMismatchError',\n });\n }\n}\n//# sourceMappingURL=ccip.js.map","import { call } from '../actions/public/call.js';\nimport { OffchainLookupError, OffchainLookupResponseMalformedError, OffchainLookupSenderMismatchError, } from '../errors/ccip.js';\nimport { HttpRequestError, } from '../errors/request.js';\nimport { decodeErrorResult } from './abi/decodeErrorResult.js';\nimport { encodeAbiParameters } from './abi/encodeAbiParameters.js';\nimport { isAddressEqual } from './address/isAddressEqual.js';\nimport { concat } from './data/concat.js';\nimport { isHex } from './data/isHex.js';\nimport { stringify } from './stringify.js';\nexport const offchainLookupSignature = '0x556f1830';\nexport const offchainLookupAbiItem = {\n name: 'OffchainLookup',\n type: 'error',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'urls',\n type: 'string[]',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n {\n name: 'callbackFunction',\n type: 'bytes4',\n },\n {\n name: 'extraData',\n type: 'bytes',\n },\n ],\n};\nexport async function offchainLookup(client, { blockNumber, blockTag, data, to, }) {\n const { args } = decodeErrorResult({\n data,\n abi: [offchainLookupAbiItem],\n });\n const [sender, urls, callData, callbackSelector, extraData] = args;\n const { ccipRead } = client;\n const ccipRequest_ = ccipRead && typeof ccipRead?.request === 'function'\n ? ccipRead.request\n : ccipRequest;\n try {\n if (!isAddressEqual(to, sender))\n throw new OffchainLookupSenderMismatchError({ sender, to });\n const result = await ccipRequest_({ data: callData, sender, urls });\n const { data: data_ } = await call(client, {\n blockNumber,\n blockTag,\n data: concat([\n callbackSelector,\n encodeAbiParameters([{ type: 'bytes' }, { type: 'bytes' }], [result, extraData]),\n ]),\n to,\n });\n return data_;\n }\n catch (err) {\n throw new OffchainLookupError({\n callbackSelector,\n cause: err,\n data,\n extraData,\n sender,\n urls,\n });\n }\n}\nexport async function ccipRequest({ data, sender, urls, }) {\n let error = new Error('An unknown error occurred.');\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n const method = url.includes('{data}') ? 'GET' : 'POST';\n const body = method === 'POST' ? { data, sender } : undefined;\n const headers = method === 'POST' ? { 'Content-Type': 'application/json' } : {};\n try {\n const response = await fetch(url.replace('{sender}', sender).replace('{data}', data), {\n body: JSON.stringify(body),\n headers,\n method,\n });\n let result;\n if (response.headers.get('Content-Type')?.startsWith('application/json')) {\n result = (await response.json()).data;\n }\n else {\n result = (await response.text());\n }\n if (!response.ok) {\n error = new HttpRequestError({\n body,\n details: result?.error\n ? stringify(result.error)\n : response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n continue;\n }\n if (!isHex(result)) {\n error = new OffchainLookupResponseMalformedError({\n result,\n url,\n });\n continue;\n }\n return result;\n }\n catch (err) {\n error = new HttpRequestError({\n body,\n details: err.message,\n url,\n });\n }\n }\n throw error;\n}\n//# sourceMappingURL=ccip.js.map"],"names":["OffchainLookupError","BaseError","callbackSelector","cause","data","extraData","sender","urls","_a","url","getUrl","OffchainLookupResponseMalformedError","result","stringify","OffchainLookupSenderMismatchError","to","offchainLookupSignature","offchainLookupAbiItem","offchainLookup","client","blockNumber","blockTag","args","decodeErrorResult","callData","ccipRead","ccipRequest_","ccipRequest","isAddressEqual","data_","call","concat","encodeAbiParameters","err","error","i","method","body","headers","response","HttpRequestError","isHex"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1 +1 @@
1
- {"version":3,"file":"ccip-K-z2PL4P.js","sources":["../node_modules/.pnpm/viem@2.23.6_typescript@5.7.3_zod@3.24.2/node_modules/viem/_esm/errors/ccip.js","../node_modules/.pnpm/viem@2.23.6_typescript@5.7.3_zod@3.24.2/node_modules/viem/_esm/utils/ccip.js"],"sourcesContent":["import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nimport { getUrl } from './utils.js';\nexport class OffchainLookupError extends BaseError {\n constructor({ callbackSelector, cause, data, extraData, sender, urls, }) {\n super(cause.shortMessage ||\n 'An error occurred while fetching for an offchain result.', {\n cause,\n metaMessages: [\n ...(cause.metaMessages || []),\n cause.metaMessages?.length ? '' : [],\n 'Offchain Gateway Call:',\n urls && [\n ' Gateway URL(s):',\n ...urls.map((url) => ` ${getUrl(url)}`),\n ],\n ` Sender: ${sender}`,\n ` Data: ${data}`,\n ` Callback selector: ${callbackSelector}`,\n ` Extra data: ${extraData}`,\n ].flat(),\n name: 'OffchainLookupError',\n });\n }\n}\nexport class OffchainLookupResponseMalformedError extends BaseError {\n constructor({ result, url }) {\n super('Offchain gateway response is malformed. Response data must be a hex value.', {\n metaMessages: [\n `Gateway URL: ${getUrl(url)}`,\n `Response: ${stringify(result)}`,\n ],\n name: 'OffchainLookupResponseMalformedError',\n });\n }\n}\nexport class OffchainLookupSenderMismatchError extends BaseError {\n constructor({ sender, to }) {\n super('Reverted sender address does not match target contract address (`to`).', {\n metaMessages: [\n `Contract address: ${to}`,\n `OffchainLookup sender address: ${sender}`,\n ],\n name: 'OffchainLookupSenderMismatchError',\n });\n }\n}\n//# sourceMappingURL=ccip.js.map","import { call } from '../actions/public/call.js';\nimport { OffchainLookupError, OffchainLookupResponseMalformedError, OffchainLookupSenderMismatchError, } from '../errors/ccip.js';\nimport { HttpRequestError, } from '../errors/request.js';\nimport { decodeErrorResult } from './abi/decodeErrorResult.js';\nimport { encodeAbiParameters } from './abi/encodeAbiParameters.js';\nimport { isAddressEqual } from './address/isAddressEqual.js';\nimport { concat } from './data/concat.js';\nimport { isHex } from './data/isHex.js';\nimport { stringify } from './stringify.js';\nexport const offchainLookupSignature = '0x556f1830';\nexport const offchainLookupAbiItem = {\n name: 'OffchainLookup',\n type: 'error',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'urls',\n type: 'string[]',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n {\n name: 'callbackFunction',\n type: 'bytes4',\n },\n {\n name: 'extraData',\n type: 'bytes',\n },\n ],\n};\nexport async function offchainLookup(client, { blockNumber, blockTag, data, to, }) {\n const { args } = decodeErrorResult({\n data,\n abi: [offchainLookupAbiItem],\n });\n const [sender, urls, callData, callbackSelector, extraData] = args;\n const { ccipRead } = client;\n const ccipRequest_ = ccipRead && typeof ccipRead?.request === 'function'\n ? ccipRead.request\n : ccipRequest;\n try {\n if (!isAddressEqual(to, sender))\n throw new OffchainLookupSenderMismatchError({ sender, to });\n const result = await ccipRequest_({ data: callData, sender, urls });\n const { data: data_ } = await call(client, {\n blockNumber,\n blockTag,\n data: concat([\n callbackSelector,\n encodeAbiParameters([{ type: 'bytes' }, { type: 'bytes' }], [result, extraData]),\n ]),\n to,\n });\n return data_;\n }\n catch (err) {\n throw new OffchainLookupError({\n callbackSelector,\n cause: err,\n data,\n extraData,\n sender,\n urls,\n });\n }\n}\nexport async function ccipRequest({ data, sender, urls, }) {\n let error = new Error('An unknown error occurred.');\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n const method = url.includes('{data}') ? 'GET' : 'POST';\n const body = method === 'POST' ? { data, sender } : undefined;\n const headers = method === 'POST' ? { 'Content-Type': 'application/json' } : {};\n try {\n const response = await fetch(url.replace('{sender}', sender).replace('{data}', data), {\n body: JSON.stringify(body),\n headers,\n method,\n });\n let result;\n if (response.headers.get('Content-Type')?.startsWith('application/json')) {\n result = (await response.json()).data;\n }\n else {\n result = (await response.text());\n }\n if (!response.ok) {\n error = new HttpRequestError({\n body,\n details: result?.error\n ? stringify(result.error)\n : response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n continue;\n }\n if (!isHex(result)) {\n error = new OffchainLookupResponseMalformedError({\n result,\n url,\n });\n continue;\n }\n return result;\n }\n catch (err) {\n error = new HttpRequestError({\n body,\n details: err.message,\n url,\n });\n }\n }\n throw error;\n}\n//# sourceMappingURL=ccip.js.map"],"names":["OffchainLookupError","BaseError","callbackSelector","cause","data","extraData","sender","urls","_a","url","getUrl","OffchainLookupResponseMalformedError","result","stringify","OffchainLookupSenderMismatchError","to","offchainLookupSignature","offchainLookupAbiItem","offchainLookup","client","blockNumber","blockTag","args","decodeErrorResult","callData","ccipRead","ccipRequest_","ccipRequest","isAddressEqual","data_","call","concat","encodeAbiParameters","err","error","i","method","body","headers","response","HttpRequestError","isHex"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"ccip-K-z2PL4P.js","sources":["../node_modules/.pnpm/viem@2.23.6_typescript@5.8.2_zod@3.24.2/node_modules/viem/_esm/errors/ccip.js","../node_modules/.pnpm/viem@2.23.6_typescript@5.8.2_zod@3.24.2/node_modules/viem/_esm/utils/ccip.js"],"sourcesContent":["import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nimport { getUrl } from './utils.js';\nexport class OffchainLookupError extends BaseError {\n constructor({ callbackSelector, cause, data, extraData, sender, urls, }) {\n super(cause.shortMessage ||\n 'An error occurred while fetching for an offchain result.', {\n cause,\n metaMessages: [\n ...(cause.metaMessages || []),\n cause.metaMessages?.length ? '' : [],\n 'Offchain Gateway Call:',\n urls && [\n ' Gateway URL(s):',\n ...urls.map((url) => ` ${getUrl(url)}`),\n ],\n ` Sender: ${sender}`,\n ` Data: ${data}`,\n ` Callback selector: ${callbackSelector}`,\n ` Extra data: ${extraData}`,\n ].flat(),\n name: 'OffchainLookupError',\n });\n }\n}\nexport class OffchainLookupResponseMalformedError extends BaseError {\n constructor({ result, url }) {\n super('Offchain gateway response is malformed. Response data must be a hex value.', {\n metaMessages: [\n `Gateway URL: ${getUrl(url)}`,\n `Response: ${stringify(result)}`,\n ],\n name: 'OffchainLookupResponseMalformedError',\n });\n }\n}\nexport class OffchainLookupSenderMismatchError extends BaseError {\n constructor({ sender, to }) {\n super('Reverted sender address does not match target contract address (`to`).', {\n metaMessages: [\n `Contract address: ${to}`,\n `OffchainLookup sender address: ${sender}`,\n ],\n name: 'OffchainLookupSenderMismatchError',\n });\n }\n}\n//# sourceMappingURL=ccip.js.map","import { call } from '../actions/public/call.js';\nimport { OffchainLookupError, OffchainLookupResponseMalformedError, OffchainLookupSenderMismatchError, } from '../errors/ccip.js';\nimport { HttpRequestError, } from '../errors/request.js';\nimport { decodeErrorResult } from './abi/decodeErrorResult.js';\nimport { encodeAbiParameters } from './abi/encodeAbiParameters.js';\nimport { isAddressEqual } from './address/isAddressEqual.js';\nimport { concat } from './data/concat.js';\nimport { isHex } from './data/isHex.js';\nimport { stringify } from './stringify.js';\nexport const offchainLookupSignature = '0x556f1830';\nexport const offchainLookupAbiItem = {\n name: 'OffchainLookup',\n type: 'error',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'urls',\n type: 'string[]',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n {\n name: 'callbackFunction',\n type: 'bytes4',\n },\n {\n name: 'extraData',\n type: 'bytes',\n },\n ],\n};\nexport async function offchainLookup(client, { blockNumber, blockTag, data, to, }) {\n const { args } = decodeErrorResult({\n data,\n abi: [offchainLookupAbiItem],\n });\n const [sender, urls, callData, callbackSelector, extraData] = args;\n const { ccipRead } = client;\n const ccipRequest_ = ccipRead && typeof ccipRead?.request === 'function'\n ? ccipRead.request\n : ccipRequest;\n try {\n if (!isAddressEqual(to, sender))\n throw new OffchainLookupSenderMismatchError({ sender, to });\n const result = await ccipRequest_({ data: callData, sender, urls });\n const { data: data_ } = await call(client, {\n blockNumber,\n blockTag,\n data: concat([\n callbackSelector,\n encodeAbiParameters([{ type: 'bytes' }, { type: 'bytes' }], [result, extraData]),\n ]),\n to,\n });\n return data_;\n }\n catch (err) {\n throw new OffchainLookupError({\n callbackSelector,\n cause: err,\n data,\n extraData,\n sender,\n urls,\n });\n }\n}\nexport async function ccipRequest({ data, sender, urls, }) {\n let error = new Error('An unknown error occurred.');\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n const method = url.includes('{data}') ? 'GET' : 'POST';\n const body = method === 'POST' ? { data, sender } : undefined;\n const headers = method === 'POST' ? { 'Content-Type': 'application/json' } : {};\n try {\n const response = await fetch(url.replace('{sender}', sender).replace('{data}', data), {\n body: JSON.stringify(body),\n headers,\n method,\n });\n let result;\n if (response.headers.get('Content-Type')?.startsWith('application/json')) {\n result = (await response.json()).data;\n }\n else {\n result = (await response.text());\n }\n if (!response.ok) {\n error = new HttpRequestError({\n body,\n details: result?.error\n ? stringify(result.error)\n : response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n continue;\n }\n if (!isHex(result)) {\n error = new OffchainLookupResponseMalformedError({\n result,\n url,\n });\n continue;\n }\n return result;\n }\n catch (err) {\n error = new HttpRequestError({\n body,\n details: err.message,\n url,\n });\n }\n }\n throw error;\n}\n//# sourceMappingURL=ccip.js.map"],"names":["OffchainLookupError","BaseError","callbackSelector","cause","data","extraData","sender","urls","_a","url","getUrl","OffchainLookupResponseMalformedError","result","stringify","OffchainLookupSenderMismatchError","to","offchainLookupSignature","offchainLookupAbiItem","offchainLookup","client","blockNumber","blockTag","args","decodeErrorResult","callData","ccipRead","ccipRequest_","ccipRequest","isAddressEqual","data_","call","concat","encodeAbiParameters","err","error","i","method","body","headers","response","HttpRequestError","isHex"],"mappings":"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","x_google_ignoreList":[0,1]}