@aave/client 4.0.0-next.2 → 4.0.0-next.21

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 (61) hide show
  1. package/README.md +6 -3
  2. package/dist/{AaveClient-L3v8kWvn.d.cts → AaveClient-BIfAdE-4.d.cts} +2 -1
  3. package/dist/{AaveClient-CgHY2iS9.d.ts → AaveClient-C36zcfbL.d.ts} +2 -1
  4. package/dist/actions/index.cjs +1 -1
  5. package/dist/actions/index.cjs.map +1 -1
  6. package/dist/actions/index.d.cts +228 -135
  7. package/dist/actions/index.d.ts +228 -135
  8. package/dist/actions/index.js +1 -1
  9. package/dist/chunk-3HZQC3YV.js +3 -0
  10. package/dist/chunk-3HZQC3YV.js.map +1 -0
  11. package/dist/chunk-MKZBFAXA.js +2 -0
  12. package/dist/chunk-MKZBFAXA.js.map +1 -0
  13. package/dist/ethers.cjs +1 -1
  14. package/dist/ethers.cjs.map +1 -1
  15. package/dist/ethers.d.cts +5 -7
  16. package/dist/ethers.d.ts +5 -7
  17. package/dist/ethers.js +1 -1
  18. package/dist/ethers.js.map +1 -1
  19. package/dist/index.cjs +2 -2
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +3 -3
  22. package/dist/index.d.ts +3 -3
  23. package/dist/index.js +2 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/{options-vB2peXdE.d.cts → options-BX6n3sbh.d.cts} +17 -1
  26. package/dist/{options-vB2peXdE.d.ts → options-BX6n3sbh.d.ts} +17 -1
  27. package/dist/privy.cjs +2 -2
  28. package/dist/privy.cjs.map +1 -1
  29. package/dist/privy.d.cts +3 -5
  30. package/dist/privy.d.ts +3 -5
  31. package/dist/privy.js +1 -1
  32. package/dist/privy.js.map +1 -1
  33. package/dist/testing.d.ts +3840 -0
  34. package/dist/testing.js +546 -0
  35. package/dist/testing.js.map +1 -0
  36. package/dist/thirdweb.cjs +1 -2
  37. package/dist/thirdweb.cjs.map +1 -1
  38. package/dist/thirdweb.d.cts +15 -11
  39. package/dist/thirdweb.d.ts +15 -11
  40. package/dist/thirdweb.js +1 -2
  41. package/dist/thirdweb.js.map +1 -1
  42. package/dist/{types-Bu63z0x6.d.cts → types-CQvue0x0.d.cts} +4 -4
  43. package/dist/{types-Bu63z0x6.d.ts → types-CQvue0x0.d.ts} +4 -4
  44. package/dist/viem.cjs +2 -2
  45. package/dist/viem.cjs.map +1 -1
  46. package/dist/viem.d.cts +23 -10
  47. package/dist/viem.d.ts +23 -10
  48. package/dist/viem.js +1 -1
  49. package/package.json +11 -12
  50. package/dist/chunk-2TNQ52OQ.js +0 -3
  51. package/dist/chunk-2TNQ52OQ.js.map +0 -1
  52. package/dist/chunk-BQFM5RT3.js +0 -2
  53. package/dist/chunk-BQFM5RT3.js.map +0 -1
  54. package/dist/chunk-BQNVAUS6.js +0 -3
  55. package/dist/chunk-BQNVAUS6.js.map +0 -1
  56. package/dist/test-utils.cjs +0 -3
  57. package/dist/test-utils.cjs.map +0 -1
  58. package/dist/test-utils.d.cts +0 -49
  59. package/dist/test-utils.d.ts +0 -49
  60. package/dist/test-utils.js +0 -3
  61. package/dist/test-utils.js.map +0 -1
package/dist/privy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/privy.ts"],"names":["sendTransaction","privy","request","walletId","hash","txHash","sendTransactionAndWait","publicClient","createPublicClient","supportedChains","http","ResultAsync","err","SigningError","waitForTransactionReceipt","receipt","errAsync","transactionError","okAsync","executePlan","result","ValidationError","sendWith","signERC20Permit","response","signatureFrom","signERC20PermitWith","signSwapTypedData","message","signSwapTypedDataWith"],"mappings":"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","file":"privy.js","sourcesContent":["import {\n SigningError,\n type TransactionError,\n ValidationError,\n} from '@aave/core';\nimport type {\n CancelSwapTypedData,\n ExecutionPlan,\n PermitTypedDataResponse,\n SwapByIntentTypedData,\n TransactionRequest,\n} from '@aave/graphql';\nimport {\n errAsync,\n okAsync,\n ResultAsync,\n signatureFrom,\n type TxHash,\n txHash,\n} from '@aave/types';\nimport type { PrivyClient } from '@privy-io/server-auth';\nimport { createPublicClient, http } from 'viem';\nimport { waitForTransactionReceipt } from 'viem/actions';\nimport type {\n ERC20PermitHandler,\n ExecutionPlanHandler,\n SwapSignatureHandler,\n TransactionResult,\n} from './types';\nimport { supportedChains, transactionError } from './viem';\n\nasync function sendTransaction(\n privy: PrivyClient,\n request: TransactionRequest,\n walletId: string,\n): Promise<TxHash> {\n const { hash } = await privy.walletApi.ethereum.sendTransaction({\n walletId,\n caip2: `eip155:${request.chainId}`,\n transaction: {\n from: request.from,\n to: request.to,\n value: `0x${BigInt(request.value).toString(16)}`,\n chainId: request.chainId,\n data: request.data,\n },\n });\n return txHash(hash);\n}\n\nfunction sendTransactionAndWait(\n privy: PrivyClient,\n request: TransactionRequest,\n walletId: string,\n): ResultAsync<TransactionResult, SigningError | TransactionError> {\n // TODO: verify it's on the correct chain, ask to switch if possible\n // TODO: verify if wallet account is correct, switch if possible\n const publicClient = createPublicClient({\n chain: supportedChains[request.chainId],\n transport: http(),\n });\n\n return ResultAsync.fromPromise(\n sendTransaction(privy, request, walletId),\n (err) => SigningError.from(err),\n )\n .map(async (hash) =>\n waitForTransactionReceipt(publicClient, {\n hash,\n pollingInterval: 100,\n retryCount: 20,\n retryDelay: 50,\n }),\n )\n .andThen((receipt) => {\n const hash = txHash(receipt.transactionHash);\n\n if (receipt.status === 'reverted') {\n return errAsync(\n transactionError(supportedChains[request.chainId], hash, request),\n );\n }\n return okAsync({\n txHash: hash,\n operations: request.operations,\n });\n });\n}\n\nfunction executePlan(\n privy: PrivyClient,\n walletId: string,\n result: ExecutionPlan,\n): ReturnType<ExecutionPlanHandler> {\n switch (result.__typename) {\n case 'TransactionRequest':\n return sendTransactionAndWait(privy, result, walletId);\n\n case 'Erc20ApprovalRequired':\n case 'PreContractActionRequired':\n return sendTransactionAndWait(\n privy,\n result.transaction,\n walletId,\n ).andThen(() =>\n sendTransactionAndWait(privy, result.originalTransaction, walletId),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n}\n\n/**\n * Creates an execution plan handler that sends transactions using the specified Privy wallet.\n */\nexport function sendWith<T extends ExecutionPlan = ExecutionPlan>(\n privy: PrivyClient,\n walletId: string,\n): ExecutionPlanHandler<T>;\n/**\n * Sends execution plan transactions using the specified Privy wallet.\n */\nexport function sendWith<T extends ExecutionPlan = ExecutionPlan>(\n privy: PrivyClient,\n walletId: string,\n result: T,\n): ReturnType<ExecutionPlanHandler<T>>;\nexport function sendWith<T extends ExecutionPlan = ExecutionPlan>(\n privy: PrivyClient,\n walletId: string,\n result?: T,\n): ExecutionPlanHandler<T> | ReturnType<ExecutionPlanHandler<T>> {\n return result\n ? executePlan(privy, walletId, result)\n : executePlan.bind(null, privy, walletId);\n}\n\nfunction signERC20Permit(\n privy: PrivyClient,\n walletId: string,\n result: PermitTypedDataResponse,\n): ReturnType<ERC20PermitHandler> {\n return ResultAsync.fromPromise(\n privy.walletApi.ethereum.signTypedData({\n walletId,\n typedData: {\n domain: result.domain,\n types: result.types,\n message: result.message,\n primaryType: result.primaryType,\n },\n }),\n (err) => SigningError.from(err),\n ).map((response) => ({\n deadline: result.message.deadline,\n value: signatureFrom(response.signature),\n }));\n}\n\n/**\n * Creates an ERC20 permit handler that signs ERC20 permits using the specified Privy wallet.\n */\nexport function signERC20PermitWith(\n privy: PrivyClient,\n walletId: string,\n): ERC20PermitHandler {\n return signERC20Permit.bind(null, privy, walletId);\n}\n\nfunction signSwapTypedData(\n privy: PrivyClient,\n walletId: string,\n result: SwapByIntentTypedData | CancelSwapTypedData,\n): ReturnType<SwapSignatureHandler> {\n const message = JSON.parse(result.message);\n return ResultAsync.fromPromise(\n privy.walletApi.ethereum.signTypedData({\n walletId,\n typedData: {\n domain: result.domain,\n types: result.types,\n message,\n primaryType: result.primaryType,\n },\n }),\n (err) => SigningError.from(err),\n ).map((response) => ({\n deadline: message.deadline,\n value: signatureFrom(response.signature),\n }));\n}\n\n/**\n * @internal\n * Creates a swap signature handler that signs swap typed data using the specified Privy wallet.\n */\nexport function signSwapTypedDataWith(\n privy: PrivyClient,\n walletId: string,\n): SwapSignatureHandler;\n/**\n * @internal\n * Signs swap typed data using the specified Privy wallet.\n */\nexport function signSwapTypedDataWith(\n privy: PrivyClient,\n walletId: string,\n result: SwapByIntentTypedData | CancelSwapTypedData,\n): ReturnType<SwapSignatureHandler>;\nexport function signSwapTypedDataWith(\n privy: PrivyClient,\n walletId: string,\n result?: SwapByIntentTypedData | CancelSwapTypedData,\n): SwapSignatureHandler | ReturnType<SwapSignatureHandler> {\n return result\n ? signSwapTypedData(privy, walletId, result)\n : signSwapTypedData.bind(null, privy, walletId);\n}\n"]}
1
+ {"version":3,"sources":["../src/privy.ts"],"names":["sendTransaction","privy","request","walletId","hash","txHash","sendTransactionAndWait","publicClient","createPublicClient","supportedChains","http","ResultAsync","err","SigningError","waitForTransactionReceipt","receipt","errAsync","transactionError","okAsync","executePlan","result","ValidationError","sendWith","signERC20Permit","response","signatureFrom","signERC20PermitWith","signSwapTypedData","signature","signSwapTypedDataWith"],"mappings":"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","file":"privy.js","sourcesContent":["import {\n SigningError,\n type TransactionError,\n ValidationError,\n} from '@aave/core';\nimport type {\n ExecutionPlan,\n PermitTypedDataResponse,\n SwapTypedData,\n TransactionRequest,\n} from '@aave/graphql';\nimport {\n errAsync,\n okAsync,\n ResultAsync,\n signatureFrom,\n type TxHash,\n txHash,\n} from '@aave/types';\nimport type { PrivyClient } from '@privy-io/server-auth';\nimport { createPublicClient, http } from 'viem';\nimport { waitForTransactionReceipt } from 'viem/actions';\nimport type {\n ERC20PermitHandler,\n ExecutionPlanHandler,\n SwapSignatureHandler,\n TransactionResult,\n} from './types';\nimport { supportedChains, transactionError } from './viem';\n\nasync function sendTransaction(\n privy: PrivyClient,\n request: TransactionRequest,\n walletId: string,\n): Promise<TxHash> {\n const { hash } = await privy.walletApi.ethereum.sendTransaction({\n walletId,\n caip2: `eip155:${request.chainId}`,\n transaction: {\n from: request.from,\n to: request.to,\n value: `0x${BigInt(request.value).toString(16)}`,\n chainId: request.chainId,\n data: request.data,\n },\n });\n return txHash(hash);\n}\n\nfunction sendTransactionAndWait(\n privy: PrivyClient,\n request: TransactionRequest,\n walletId: string,\n): ResultAsync<TransactionResult, SigningError | TransactionError> {\n // TODO: verify it's on the correct chain, ask to switch if possible\n // TODO: verify if wallet account is correct, switch if possible\n const publicClient = createPublicClient({\n chain: supportedChains[request.chainId],\n transport: http(),\n });\n\n return ResultAsync.fromPromise(\n sendTransaction(privy, request, walletId),\n (err) => SigningError.from(err),\n )\n .map(async (hash) =>\n waitForTransactionReceipt(publicClient, {\n hash,\n pollingInterval: 100,\n retryCount: 20,\n retryDelay: 50,\n }),\n )\n .andThen((receipt) => {\n const hash = txHash(receipt.transactionHash);\n\n if (receipt.status === 'reverted') {\n return errAsync(\n transactionError(supportedChains[request.chainId], hash, request),\n );\n }\n return okAsync({\n txHash: hash,\n operations: request.operations,\n });\n });\n}\n\nfunction executePlan(\n privy: PrivyClient,\n walletId: string,\n result: ExecutionPlan,\n): ReturnType<ExecutionPlanHandler> {\n switch (result.__typename) {\n case 'TransactionRequest':\n return sendTransactionAndWait(privy, result, walletId);\n\n case 'Erc20ApprovalRequired':\n case 'PreContractActionRequired':\n return sendTransactionAndWait(\n privy,\n result.transaction,\n walletId,\n ).andThen(() =>\n sendTransactionAndWait(privy, result.originalTransaction, walletId),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n}\n\n/**\n * Creates an execution plan handler that sends transactions using the specified Privy wallet.\n */\nexport function sendWith<T extends ExecutionPlan = ExecutionPlan>(\n privy: PrivyClient,\n walletId: string,\n): ExecutionPlanHandler<T>;\n/**\n * Sends execution plan transactions using the specified Privy wallet.\n */\nexport function sendWith<T extends ExecutionPlan = ExecutionPlan>(\n privy: PrivyClient,\n walletId: string,\n result: T,\n): ReturnType<ExecutionPlanHandler<T>>;\nexport function sendWith<T extends ExecutionPlan = ExecutionPlan>(\n privy: PrivyClient,\n walletId: string,\n result?: T,\n): ExecutionPlanHandler<T> | ReturnType<ExecutionPlanHandler<T>> {\n return result\n ? executePlan(privy, walletId, result)\n : executePlan.bind(null, privy, walletId);\n}\n\nfunction signERC20Permit(\n privy: PrivyClient,\n walletId: string,\n result: PermitTypedDataResponse,\n): ReturnType<ERC20PermitHandler> {\n return ResultAsync.fromPromise(\n privy.walletApi.ethereum.signTypedData({\n walletId,\n typedData: {\n domain: result.domain,\n types: result.types,\n message: result.message,\n primaryType: result.primaryType,\n },\n }),\n (err) => SigningError.from(err),\n ).map((response) => ({\n deadline: result.message.deadline,\n value: signatureFrom(response.signature),\n }));\n}\n\n/**\n * Creates an ERC20 permit handler that signs ERC20 permits using the specified Privy wallet.\n */\nexport function signERC20PermitWith(\n privy: PrivyClient,\n walletId: string,\n): ERC20PermitHandler {\n return signERC20Permit.bind(null, privy, walletId);\n}\n\nfunction signSwapTypedData(\n privy: PrivyClient,\n walletId: string,\n result: SwapTypedData,\n): ReturnType<SwapSignatureHandler> {\n return ResultAsync.fromPromise(\n privy.walletApi.ethereum.signTypedData({\n walletId,\n typedData: {\n domain: result.domain,\n types: result.types,\n message: result.message,\n primaryType: result.primaryType,\n },\n }),\n (err) => SigningError.from(err),\n ).map(({ signature }) => signatureFrom(signature));\n}\n\n/**\n * Creates a swap signature handler that signs swap typed data using the specified Privy wallet.\n */\nexport function signSwapTypedDataWith(\n privy: PrivyClient,\n walletId: string,\n): SwapSignatureHandler;\n/**\n * Signs swap typed data using the specified Privy wallet.\n */\nexport function signSwapTypedDataWith(\n privy: PrivyClient,\n walletId: string,\n result: SwapTypedData,\n): ReturnType<SwapSignatureHandler>;\nexport function signSwapTypedDataWith(\n privy: PrivyClient,\n walletId: string,\n result?: SwapTypedData,\n): SwapSignatureHandler | ReturnType<SwapSignatureHandler> {\n return result\n ? signSwapTypedData(privy, walletId, result)\n : signSwapTypedData.bind(null, privy, walletId);\n}\n"]}