@aave/client 0.6.1 → 0.7.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.
- package/dist/AaveClient-C-OkXfVz.d.ts +85 -0
- package/dist/AaveClient-PHUEzt7l.d.cts +85 -0
- package/dist/actions/index.cjs +1 -1
- package/dist/actions/index.cjs.map +1 -1
- package/dist/actions/index.d.cts +41 -11
- package/dist/actions/index.d.ts +41 -11
- package/dist/actions/index.js +1 -1
- package/dist/chunk-BLZHGYNH.js +2 -0
- package/dist/chunk-BLZHGYNH.js.map +1 -0
- package/dist/chunk-QQSK6HIZ.js +3 -0
- package/dist/chunk-QQSK6HIZ.js.map +1 -0
- package/dist/chunk-V4DWF6LT.js +3 -0
- package/dist/chunk-V4DWF6LT.js.map +1 -0
- package/dist/ethers.cjs +1 -2
- package/dist/ethers.cjs.map +1 -1
- package/dist/ethers.d.cts +2 -2
- package/dist/ethers.d.ts +2 -2
- package/dist/ethers.js +1 -1
- package/dist/ethers.js.map +1 -1
- package/dist/index.cjs +2 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -238
- package/dist/index.d.ts +6 -238
- package/dist/index.js +1 -1
- package/dist/privy.cjs +2 -3
- package/dist/privy.cjs.map +1 -1
- package/dist/privy.d.cts +2 -2
- package/dist/privy.d.ts +2 -2
- package/dist/privy.js +1 -1
- package/dist/privy.js.map +1 -1
- package/dist/test-utils.cjs +78 -78
- package/dist/test-utils.cjs.map +1 -1
- package/dist/test-utils.d.cts +7 -5
- package/dist/test-utils.d.ts +7 -5
- package/dist/test-utils.js +49 -49
- package/dist/test-utils.js.map +1 -1
- package/dist/thirdweb.cjs +2 -3
- package/dist/thirdweb.cjs.map +1 -1
- package/dist/thirdweb.d.cts +2 -2
- package/dist/thirdweb.d.ts +2 -2
- package/dist/thirdweb.js +1 -1
- package/dist/thirdweb.js.map +1 -1
- package/dist/types-ieyj0UmJ.d.cts +16 -0
- package/dist/types-ieyj0UmJ.d.ts +16 -0
- package/dist/viem.cjs +2 -3
- package/dist/viem.cjs.map +1 -1
- package/dist/viem.d.cts +2 -2
- package/dist/viem.d.ts +2 -2
- package/dist/viem.js +1 -1
- package/package.json +4 -3
- package/dist/chunk-2U2ENVQ6.js +0 -3
- package/dist/chunk-2U2ENVQ6.js.map +0 -1
- package/dist/chunk-G5WP6QBY.js +0 -3
- package/dist/chunk-G5WP6QBY.js.map +0 -1
- package/dist/chunk-M6NMMOPY.js +0 -2
- package/dist/chunk-M6NMMOPY.js.map +0 -1
- package/dist/chunk-QYPBLR6B.js +0 -3
- package/dist/chunk-QYPBLR6B.js.map +0 -1
- package/dist/types-DwXCLJq5.d.cts +0 -72
- package/dist/types-DwXCLJq5.d.ts +0 -72
package/dist/privy.cjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';var types=require('@aave/types'),viem=require('viem'),actions=require('viem/actions'),chains=require('viem/chains');var
|
|
2
|
-
|
|
3
|
-
exports.sendWith=pn;exports.signERC20PermitWith=mn;//# sourceMappingURL=privy.cjs.map
|
|
1
|
+
'use strict';var core=require('@aave/core'),types=require('@aave/types'),viem=require('viem'),actions=require('viem/actions'),chains=require('viem/chains');var v=viem.defineChain({id:146,name:"Sonic",nativeCurrency:{name:"Sonic",symbol:"S",decimals:18},rpcUrls:{default:{http:["https://sonicscan.org"]}},blockExplorers:{default:{name:"SonicScan",url:"https://sonicscan.org"}}}),C=viem.defineChain({id:1868,name:"Soneium",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://soneium.blockscout.com"]}},blockExplorers:{default:{name:"Blockscout",url:"https://soneium.blockscout.com"}}}),o={[types.chainId(chains.mainnet.id)]:chains.mainnet,[types.chainId(chains.arbitrum.id)]:chains.arbitrum,[types.chainId(chains.avalanche.id)]:chains.avalanche,[types.chainId(chains.base.id)]:chains.base,[types.chainId(chains.baseSepolia.id)]:chains.baseSepolia,[types.chainId(chains.bsc.id)]:chains.bsc,[types.chainId(chains.celo.id)]:chains.celo,[types.chainId(chains.gnosis.id)]:chains.gnosis,[types.chainId(chains.linea.id)]:chains.linea,[types.chainId(chains.metis.id)]:chains.metis,[types.chainId(chains.optimism.id)]:chains.optimism,[types.chainId(chains.polygon.id)]:chains.polygon,[types.chainId(chains.scroll.id)]:chains.scroll,[types.chainId(chains.zksync.id)]:chains.zksync,[types.chainId(v.id)]:v,[types.chainId(C.id)]:C};function A(t,n,a){let i=t?.blockExplorers?.default?.url,e=i&&`${i.replace(/\/+$/,"")}/tx/${n}`;return core.TransactionError.new({txHash:n,request:a,link:e})}async function U(t,n,a){let{hash:i}=await t.walletApi.ethereum.sendTransaction({walletId:a,caip2:`eip155:${n.chainId}`,transaction:{from:n.from,to:n.to,value:`0x${BigInt(n.value).toString(16)}`,chainId:n.chainId,data:n.data}});return types.txHash(i)}function s(t,n,a){let i=viem.createPublicClient({chain:o[n.chainId],transport:viem.http()});return types.ResultAsync.fromPromise(U(t,n,a),e=>core.SigningError.from(e)).map(async e=>actions.waitForTransactionReceipt(i,{hash:e,pollingInterval:100,retryCount:20,retryDelay:50})).andThen(e=>{let c=types.txHash(e.transactionHash);return e.status==="reverted"?types.errAsync(A(o[n.chainId],c,n)):types.okAsync({txHash:c,operation:n.operation})})}function cn(t,n){return a=>{switch(a.__typename){case "TransactionRequest":return s(t,a,n);case "ApprovalRequired":return s(t,a.approval,n).andThen(()=>s(t,a.originalTransaction,n));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(a))}}}function pn(t,n){return a=>types.ResultAsync.fromPromise(t.walletApi.ethereum.signTypedData({walletId:n,typedData:{domain:a.domain,types:a.types,message:a.message,primaryType:a.primaryType}}),i=>core.SigningError.from(i)).map(i=>({deadline:a.message.deadline,value:types.signatureFrom(i.signature)}))}
|
|
2
|
+
exports.sendWith=cn;exports.signERC20PermitWith=pn;//# sourceMappingURL=privy.cjs.map
|
|
4
3
|
//# sourceMappingURL=privy.cjs.map
|
package/dist/privy.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/viem.ts","../src/privy.ts"],"names":["SigningError","ResultAwareError","TransactionError","_TransactionError","message","cause","args","txHash","request","link","ValidationError","_ValidationError","error","sonic","defineChain","soneium","supportedChains","chainId","mainnet","arbitrum","avalanche","base","baseSepolia","bsc","celo","gnosis","linea","metis","optimism","polygon","scroll","zksync","transactionError","chain","baseUrl","sendTransaction","privy","walletId","hash","sendTransactionAndWait","publicClient","createPublicClient","http","ResultAsync","err","waitForTransactionReceipt","receipt","errAsync","okAsync","sendWith","result","signERC20PermitWith","response","signatureFrom"],"mappings":"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","file":"privy.cjs","sourcesContent":["import type { TransactionRequest, TypedSelectionSet } from '@aave/graphql';\nimport { ResultAwareError, type TxHash } from '@aave/types';\nimport type { CombinedError } from '@urql/core';\n\n/**\n * @internal\n */\nexport enum GraphQLErrorCode {\n UNAUTHENTICATED = 'UNAUTHENTICATED',\n FORBIDDEN = 'FORBIDDEN',\n INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR',\n BAD_USER_INPUT = 'BAD_USER_INPUT',\n BAD_REQUEST = 'BAD_REQUEST',\n}\n/**\n * @internal\n */\nexport function hasExtensionCode(\n error: CombinedError,\n code: GraphQLErrorCode,\n): boolean {\n return error.graphQLErrors.some((gqlError) => {\n return gqlError.extensions?.code === code;\n });\n}\n\n/**\n * Error indicating an unexpected condition occurred.\n */\nexport class UnexpectedError extends ResultAwareError {\n name = 'UnexpectedError' as const;\n}\n\n/**\n * Error indicating an error occurred while signing.\n */\nexport class SigningError extends ResultAwareError {\n name = 'SigningError' as const;\n}\n\nexport type TransactionErrorArgs = {\n txHash: TxHash;\n request: TransactionRequest;\n link?: string;\n};\n\n/**\n * Error indicating a transaction failed.\n */\nexport class TransactionError extends ResultAwareError {\n name = 'TransactionError' as const;\n\n protected constructor(message: string, cause: TransactionRequest) {\n super(message, { cause });\n }\n\n static new(args: TransactionErrorArgs) {\n const { txHash, request, link } = args;\n const message = link\n ? `Transaction failed: ${txHash}\\n→ View on explorer: ${link}`\n : `Transaction failed: ${txHash}`;\n return new TransactionError(message, request);\n }\n}\n\n/**\n * Error indicating a timeout occurred.\n */\nexport class TimeoutError extends ResultAwareError {\n name = 'TimeoutError' as const;\n}\n\n/**\n * Error indicating an operation was not executed due to a validation error.\n * See the `cause` property for more information.\n */\nexport class ValidationError<\n TGqlNode extends TypedSelectionSet,\n> extends ResultAwareError {\n name = 'ValidationError' as const;\n\n constructor(public readonly cause: TGqlNode) {\n super(cause.__typename);\n }\n\n static fromGqlNode<TGqlNode extends TypedSelectionSet>(\n error: TGqlNode,\n ): ValidationError<TGqlNode> {\n return new ValidationError(error);\n }\n}\n","import type {\n ExecutionPlan,\n InsufficientBalanceError,\n PermitTypedDataResponse,\n TransactionRequest,\n} from '@aave/graphql';\nimport {\n type ChainId,\n chainId,\n errAsync,\n invariant,\n okAsync,\n ResultAsync,\n signatureFrom,\n type TxHash,\n txHash,\n} from '@aave/types';\nimport {\n type Chain,\n defineChain,\n type Hash,\n type TypedData,\n type TypedDataDomain,\n type WalletClient,\n} from 'viem';\nimport {\n sendTransaction as sendEip1559Transaction,\n signTypedData,\n waitForTransactionReceipt,\n} from 'viem/actions';\n// chains.ts\nimport {\n arbitrum,\n avalanche,\n base,\n baseSepolia,\n bsc,\n celo,\n gnosis,\n linea,\n mainnet,\n metis,\n optimism,\n polygon,\n scroll,\n zksync,\n} from 'viem/chains';\nimport { SigningError, TransactionError, ValidationError } from './errors';\nimport type {\n ExecutionPlanHandler,\n PermitHandler,\n TransactionExecutionResult,\n} from './types';\n\n// Other chains\nconst sonic: Chain = defineChain({\n id: 146,\n name: 'Sonic',\n nativeCurrency: { name: 'Sonic', symbol: 'S', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://sonicscan.org'], // Replace with actual RPC URL if needed\n },\n },\n blockExplorers: {\n default: {\n name: 'SonicScan',\n url: 'https://sonicscan.org',\n },\n },\n});\n\nconst soneium: Chain = defineChain({\n id: 1868,\n name: 'Soneium',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://soneium.blockscout.com'], // Replace with actual RPC URL if needed\n },\n },\n blockExplorers: {\n default: {\n name: 'Blockscout',\n url: 'https://soneium.blockscout.com',\n },\n },\n});\n\n/**\n * @internal\n */\nexport const supportedChains: Record<\n ChainId,\n ReturnType<typeof defineChain>\n> = {\n [chainId(mainnet.id)]: mainnet,\n [chainId(arbitrum.id)]: arbitrum,\n [chainId(avalanche.id)]: avalanche,\n [chainId(base.id)]: base,\n [chainId(baseSepolia.id)]: baseSepolia,\n [chainId(bsc.id)]: bsc,\n [chainId(celo.id)]: celo,\n [chainId(gnosis.id)]: gnosis,\n [chainId(linea.id)]: linea,\n [chainId(metis.id)]: metis,\n [chainId(optimism.id)]: optimism,\n [chainId(polygon.id)]: polygon,\n [chainId(scroll.id)]: scroll,\n [chainId(zksync.id)]: zksync,\n [chainId(sonic.id)]: sonic,\n [chainId(soneium.id)]: soneium,\n};\n\nasync function sendTransaction(\n walletClient: WalletClient,\n request: TransactionRequest,\n): Promise<Hash> {\n return sendEip1559Transaction(walletClient, {\n account: request.from,\n data: request.data,\n to: request.to,\n value: BigInt(request.value),\n chain: walletClient.chain,\n });\n}\n\n/**\n * @internal\n */\nexport function transactionError(\n chain: Chain | undefined,\n txHash: TxHash,\n request: TransactionRequest,\n): TransactionError {\n const baseUrl = chain?.blockExplorers?.default?.url;\n const link = baseUrl && `${baseUrl.replace(/\\/+$/, '')}/tx/${txHash}`;\n\n return TransactionError.new({ txHash, request, link });\n}\n\n/**\n * @internal\n */\nexport function sendTransactionAndWait(\n walletClient: WalletClient,\n request: TransactionRequest,\n): ResultAsync<TransactionExecutionResult, 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\n return ResultAsync.fromPromise(\n sendTransaction(walletClient, request),\n (err) => SigningError.from(err),\n )\n .map(async (hash) =>\n waitForTransactionReceipt(walletClient, {\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(transactionError(walletClient.chain, hash, request));\n }\n return okAsync({\n txHash: hash,\n operation: request.operation,\n });\n });\n}\n\n/**\n * Sends transactions using the provided wallet client.\n *\n * Handles {@link TransactionRequest} by signing and sending, {@link ApprovalRequired} by sending both approval and original transactions, and returns validation errors for {@link InsufficientBalanceError}.\n */\nexport function sendWith(walletClient: WalletClient): ExecutionPlanHandler {\n return (\n result: ExecutionPlan,\n ): ResultAsync<\n TransactionExecutionResult,\n SigningError | TransactionError | ValidationError<InsufficientBalanceError>\n > => {\n switch (result.__typename) {\n case 'TransactionRequest':\n return sendTransactionAndWait(walletClient, result);\n\n case 'ApprovalRequired':\n return sendTransactionAndWait(walletClient, result.approval).andThen(\n () =>\n sendTransactionAndWait(walletClient, result.originalTransaction),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n };\n}\n\n/**\n * Signs an ERC20 permit using the provided wallet client.\n */\nexport function signERC20PermitWith(walletClient: WalletClient): PermitHandler {\n return (result: PermitTypedDataResponse) => {\n invariant(walletClient.account, 'Wallet account is required');\n\n return ResultAsync.fromPromise(\n signTypedData(walletClient, {\n account: walletClient.account,\n domain: result.domain as TypedDataDomain,\n types: result.types as TypedData,\n primaryType: result.primaryType as keyof typeof result.types,\n message: result.message,\n }),\n (err) => SigningError.from(err),\n ).map((hex) => ({\n deadline: result.message.deadline,\n value: signatureFrom(hex),\n }));\n };\n}\n","import type {\n ExecutionPlan,\n InsufficientBalanceError,\n PermitTypedDataResponse,\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 { SigningError, type TransactionError, ValidationError } from './errors';\nimport type {\n ExecutionPlanHandler,\n PermitHandler,\n TransactionExecutionResult,\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<TransactionExecutionResult, 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 operation: request.operation,\n });\n });\n}\n\n/**\n * Sends transactions using the provided Privy client.\n *\n * Handles {@link TransactionRequest} by signing and sending, {@link ApprovalRequired} by sending both approval and original transactions, and returns validation errors for {@link InsufficientBalanceError}.\n */\nexport function sendWith(\n privy: PrivyClient,\n walletId: string,\n): ExecutionPlanHandler {\n return (\n result: ExecutionPlan,\n ): ResultAsync<\n TransactionExecutionResult,\n SigningError | TransactionError | ValidationError<InsufficientBalanceError>\n > => {\n switch (result.__typename) {\n case 'TransactionRequest':\n return sendTransactionAndWait(privy, result, walletId);\n\n case 'ApprovalRequired':\n return sendTransactionAndWait(privy, result.approval, walletId).andThen(\n () =>\n sendTransactionAndWait(privy, result.originalTransaction, walletId),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n };\n}\n\n/**\n * Signs an ERC20 permit using the provided Privy client.\n */\nexport function signERC20PermitWith(\n privy: PrivyClient,\n walletId: string,\n): PermitHandler {\n return (result: PermitTypedDataResponse) => {\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/viem.ts","../src/privy.ts"],"names":["sonic","defineChain","soneium","supportedChains","chainId","mainnet","arbitrum","avalanche","base","baseSepolia","bsc","celo","gnosis","linea","metis","optimism","polygon","scroll","zksync","transactionError","chain","txHash","request","baseUrl","link","TransactionError","sendTransaction","privy","walletId","hash","sendTransactionAndWait","publicClient","createPublicClient","http","ResultAsync","err","SigningError","waitForTransactionReceipt","receipt","errAsync","okAsync","sendWith","result","ValidationError","signERC20PermitWith","response","signatureFrom"],"mappings":"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","file":"privy.cjs","sourcesContent":["import { SigningError, TransactionError, ValidationError } from '@aave/core';\nimport type {\n ExecutionPlan,\n InsufficientBalanceError,\n PermitTypedDataResponse,\n TransactionRequest,\n} from '@aave/graphql';\nimport {\n type ChainId,\n chainId,\n errAsync,\n invariant,\n okAsync,\n ResultAsync,\n signatureFrom,\n type TxHash,\n txHash,\n} from '@aave/types';\nimport {\n type Chain,\n defineChain,\n type Hash,\n type TypedData,\n type TypedDataDomain,\n type WalletClient,\n} from 'viem';\nimport {\n sendTransaction as sendEip1559Transaction,\n signTypedData,\n waitForTransactionReceipt,\n} from 'viem/actions';\n// chains.ts\nimport {\n arbitrum,\n avalanche,\n base,\n baseSepolia,\n bsc,\n celo,\n gnosis,\n linea,\n mainnet,\n metis,\n optimism,\n polygon,\n scroll,\n zksync,\n} from 'viem/chains';\nimport type {\n ExecutionPlanHandler,\n PermitHandler,\n TransactionExecutionResult,\n} from './types';\n\n// Other chains\nconst sonic: Chain = defineChain({\n id: 146,\n name: 'Sonic',\n nativeCurrency: { name: 'Sonic', symbol: 'S', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://sonicscan.org'], // Replace with actual RPC URL if needed\n },\n },\n blockExplorers: {\n default: {\n name: 'SonicScan',\n url: 'https://sonicscan.org',\n },\n },\n});\n\nconst soneium: Chain = defineChain({\n id: 1868,\n name: 'Soneium',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://soneium.blockscout.com'], // Replace with actual RPC URL if needed\n },\n },\n blockExplorers: {\n default: {\n name: 'Blockscout',\n url: 'https://soneium.blockscout.com',\n },\n },\n});\n\n/**\n * @internal\n */\nexport const supportedChains: Record<\n ChainId,\n ReturnType<typeof defineChain>\n> = {\n [chainId(mainnet.id)]: mainnet,\n [chainId(arbitrum.id)]: arbitrum,\n [chainId(avalanche.id)]: avalanche,\n [chainId(base.id)]: base,\n [chainId(baseSepolia.id)]: baseSepolia,\n [chainId(bsc.id)]: bsc,\n [chainId(celo.id)]: celo,\n [chainId(gnosis.id)]: gnosis,\n [chainId(linea.id)]: linea,\n [chainId(metis.id)]: metis,\n [chainId(optimism.id)]: optimism,\n [chainId(polygon.id)]: polygon,\n [chainId(scroll.id)]: scroll,\n [chainId(zksync.id)]: zksync,\n [chainId(sonic.id)]: sonic,\n [chainId(soneium.id)]: soneium,\n};\n\nasync function sendTransaction(\n walletClient: WalletClient,\n request: TransactionRequest,\n): Promise<Hash> {\n return sendEip1559Transaction(walletClient, {\n account: request.from,\n data: request.data,\n to: request.to,\n value: BigInt(request.value),\n chain: walletClient.chain,\n });\n}\n\n/**\n * @internal\n */\nexport function transactionError(\n chain: Chain | undefined,\n txHash: TxHash,\n request: TransactionRequest,\n): TransactionError {\n const baseUrl = chain?.blockExplorers?.default?.url;\n const link = baseUrl && `${baseUrl.replace(/\\/+$/, '')}/tx/${txHash}`;\n\n return TransactionError.new({ txHash, request, link });\n}\n\n/**\n * @internal\n */\nexport function sendTransactionAndWait(\n walletClient: WalletClient,\n request: TransactionRequest,\n): ResultAsync<TransactionExecutionResult, 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\n return ResultAsync.fromPromise(\n sendTransaction(walletClient, request),\n (err) => SigningError.from(err),\n )\n .map(async (hash) =>\n waitForTransactionReceipt(walletClient, {\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(transactionError(walletClient.chain, hash, request));\n }\n return okAsync({\n txHash: hash,\n operation: request.operation,\n });\n });\n}\n\n/**\n * Sends transactions using the provided wallet client.\n *\n * Handles {@link TransactionRequest} by signing and sending, {@link ApprovalRequired} by sending both approval and original transactions, and returns validation errors for {@link InsufficientBalanceError}.\n */\nexport function sendWith(walletClient: WalletClient): ExecutionPlanHandler {\n return (\n result: ExecutionPlan,\n ): ResultAsync<\n TransactionExecutionResult,\n SigningError | TransactionError | ValidationError<InsufficientBalanceError>\n > => {\n switch (result.__typename) {\n case 'TransactionRequest':\n return sendTransactionAndWait(walletClient, result);\n\n case 'ApprovalRequired':\n return sendTransactionAndWait(walletClient, result.approval).andThen(\n () =>\n sendTransactionAndWait(walletClient, result.originalTransaction),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n };\n}\n\n/**\n * Signs an ERC20 permit using the provided wallet client.\n */\nexport function signERC20PermitWith(walletClient: WalletClient): PermitHandler {\n return (result: PermitTypedDataResponse) => {\n invariant(walletClient.account, 'Wallet account is required');\n\n return ResultAsync.fromPromise(\n signTypedData(walletClient, {\n account: walletClient.account,\n domain: result.domain as TypedDataDomain,\n types: result.types as TypedData,\n primaryType: result.primaryType as keyof typeof result.types,\n message: result.message,\n }),\n (err) => SigningError.from(err),\n ).map((hex) => ({\n deadline: result.message.deadline,\n value: signatureFrom(hex),\n }));\n };\n}\n","import {\n SigningError,\n type TransactionError,\n ValidationError,\n} from '@aave/core';\nimport type {\n ExecutionPlan,\n InsufficientBalanceError,\n PermitTypedDataResponse,\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 ExecutionPlanHandler,\n PermitHandler,\n TransactionExecutionResult,\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<TransactionExecutionResult, 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 operation: request.operation,\n });\n });\n}\n\n/**\n * Sends transactions using the provided Privy client.\n *\n * Handles {@link TransactionRequest} by signing and sending, {@link ApprovalRequired} by sending both approval and original transactions, and returns validation errors for {@link InsufficientBalanceError}.\n */\nexport function sendWith(\n privy: PrivyClient,\n walletId: string,\n): ExecutionPlanHandler {\n return (\n result: ExecutionPlan,\n ): ResultAsync<\n TransactionExecutionResult,\n SigningError | TransactionError | ValidationError<InsufficientBalanceError>\n > => {\n switch (result.__typename) {\n case 'TransactionRequest':\n return sendTransactionAndWait(privy, result, walletId);\n\n case 'ApprovalRequired':\n return sendTransactionAndWait(privy, result.approval, walletId).andThen(\n () =>\n sendTransactionAndWait(privy, result.originalTransaction, walletId),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n };\n}\n\n/**\n * Signs an ERC20 permit using the provided Privy client.\n */\nexport function signERC20PermitWith(\n privy: PrivyClient,\n walletId: string,\n): PermitHandler {\n return (result: PermitTypedDataResponse) => {\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"]}
|
package/dist/privy.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PrivyClient } from '@privy-io/server-auth';
|
|
2
|
-
import { E as ExecutionPlanHandler, P as PermitHandler } from './types-
|
|
2
|
+
import { E as ExecutionPlanHandler, P as PermitHandler } from './types-ieyj0UmJ.cjs';
|
|
3
|
+
import '@aave/core';
|
|
3
4
|
import '@aave/graphql';
|
|
4
5
|
import '@aave/types';
|
|
5
|
-
import '@urql/core';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Sends transactions using the provided Privy client.
|
package/dist/privy.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PrivyClient } from '@privy-io/server-auth';
|
|
2
|
-
import { E as ExecutionPlanHandler, P as PermitHandler } from './types-
|
|
2
|
+
import { E as ExecutionPlanHandler, P as PermitHandler } from './types-ieyj0UmJ.js';
|
|
3
|
+
import '@aave/core';
|
|
3
4
|
import '@aave/graphql';
|
|
4
5
|
import '@aave/types';
|
|
5
|
-
import '@urql/core';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Sends transactions using the provided Privy client.
|
package/dist/privy.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a,b}from'./chunk-
|
|
1
|
+
import {a,b}from'./chunk-QQSK6HIZ.js';import'./chunk-FW4363Y4.js';import {ValidationError,SigningError}from'@aave/core';import {errAsync,ResultAsync,signatureFrom,txHash,okAsync}from'@aave/types';import {createPublicClient,http}from'viem';import {waitForTransactionReceipt}from'viem/actions';async function E(a,n,r){let{hash:t}=await a.walletApi.ethereum.sendTransaction({walletId:r,caip2:`eip155:${n.chainId}`,transaction:{from:n.from,to:n.to,value:`0x${BigInt(n.value).toString(16)}`,chainId:n.chainId,data:n.data}});return txHash(t)}function o(a$1,n,r){let t=createPublicClient({chain:a[n.chainId],transport:http()});return ResultAsync.fromPromise(E(a$1,n,r),i=>SigningError.from(i)).map(async i=>waitForTransactionReceipt(t,{hash:i,pollingInterval:100,retryCount:20,retryDelay:50})).andThen(i=>{let s=txHash(i.transactionHash);return i.status==="reverted"?errAsync(b(a[n.chainId],s,n)):okAsync({txHash:s,operation:n.operation})})}function A(a,n){return r=>{switch(r.__typename){case "TransactionRequest":return o(a,r,n);case "ApprovalRequired":return o(a,r.approval,n).andThen(()=>o(a,r.originalTransaction,n));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(r))}}}function H(a,n){return r=>ResultAsync.fromPromise(a.walletApi.ethereum.signTypedData({walletId:n,typedData:{domain:r.domain,types:r.types,message:r.message,primaryType:r.primaryType}}),t=>SigningError.from(t)).map(t=>({deadline:r.message.deadline,value:signatureFrom(t.signature)}))}export{A as sendWith,H as signERC20PermitWith};//# sourceMappingURL=privy.js.map
|
|
2
2
|
//# sourceMappingURL=privy.js.map
|
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","sendWith","result","ValidationError","signERC20PermitWith","response","signatureFrom"],"mappings":"
|
|
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","sendWith","result","ValidationError","signERC20PermitWith","response","signatureFrom"],"mappings":"oSA6BA,eAAeA,CAAAA,CACbC,EACAC,CAAAA,CACAC,CAAAA,CACiB,CACjB,GAAM,CAAE,IAAA,CAAAC,CAAK,CAAA,CAAI,MAAMH,CAAAA,CAAM,SAAA,CAAU,QAAA,CAAS,eAAA,CAAgB,CAC9D,QAAA,CAAAE,CAAAA,CACA,MAAO,CAAA,OAAA,EAAUD,CAAAA,CAAQ,OAAO,CAAA,CAAA,CAChC,WAAA,CAAa,CACX,IAAA,CAAMA,CAAAA,CAAQ,IAAA,CACd,EAAA,CAAIA,CAAAA,CAAQ,EAAA,CACZ,KAAA,CAAO,CAAA,EAAA,EAAK,MAAA,CAAOA,CAAAA,CAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,EAAE,CAAC,CAAA,CAAA,CAC9C,OAAA,CAASA,CAAAA,CAAQ,OAAA,CACjB,IAAA,CAAMA,CAAAA,CAAQ,IAChB,CACF,CAAC,CAAA,CACD,OAAOG,MAAAA,CAAOD,CAAI,CACpB,CAEA,SAASE,CAAAA,CACPL,GAAAA,CACAC,CAAAA,CACAC,CAAAA,CAC0E,CAG1E,IAAMI,CAAAA,CAAeC,kBAAAA,CAAmB,CACtC,KAAA,CAAOC,CAAAA,CAAgBP,CAAAA,CAAQ,OAAO,EACtC,SAAA,CAAWQ,IAAAA,EACb,CAAC,CAAA,CAED,OAAOC,WAAAA,CAAY,WAAA,CACjBX,CAAAA,CAAgBC,GAAAA,CAAOC,CAAAA,CAASC,CAAQ,CAAA,CACvCS,CAAAA,EAAQC,YAAAA,CAAa,IAAA,CAAKD,CAAG,CAChC,CAAA,CACG,GAAA,CAAI,MAAOR,CAAAA,EACVU,yBAAAA,CAA0BP,CAAAA,CAAc,CACtC,KAAAH,CAAAA,CACA,eAAA,CAAiB,GAAA,CACjB,UAAA,CAAY,EAAA,CACZ,UAAA,CAAY,EACd,CAAC,CACH,CAAA,CACC,OAAA,CAASW,CAAAA,EAAY,CACpB,IAAMX,CAAAA,CAAOC,MAAAA,CAAOU,CAAAA,CAAQ,eAAe,CAAA,CAE3C,OAAIA,CAAAA,CAAQ,MAAA,GAAW,UAAA,CACdC,QAAAA,CACLC,CAAAA,CAAiBR,EAAgBP,CAAAA,CAAQ,OAAO,CAAA,CAAGE,CAAAA,CAAMF,CAAO,CAClE,CAAA,CAEKgB,OAAAA,CAAQ,CACb,MAAA,CAAQd,CAAAA,CACR,SAAA,CAAWF,CAAAA,CAAQ,SACrB,CAAC,CACH,CAAC,CACL,CAOO,SAASiB,CAAAA,CACdlB,CAAAA,CACAE,CAAAA,CACsB,CACtB,OACEiB,CAAAA,EAIG,CACH,OAAQA,CAAAA,CAAO,UAAA,EACb,KAAK,oBAAA,CACH,OAAOd,CAAAA,CAAuBL,CAAAA,CAAOmB,CAAAA,CAAQjB,CAAQ,CAAA,CAEvD,KAAK,kBAAA,CACH,OAAOG,EAAuBL,CAAAA,CAAOmB,CAAAA,CAAO,QAAA,CAAUjB,CAAQ,CAAA,CAAE,OAAA,CAC9D,IACEG,CAAAA,CAAuBL,EAAOmB,CAAAA,CAAO,mBAAA,CAAqBjB,CAAQ,CACtE,CAAA,CAEF,KAAK,0BAAA,CACH,OAAOa,QAAAA,CAASK,eAAAA,CAAgB,WAAA,CAAYD,CAAM,CAAC,CACvD,CACF,CACF,CAKO,SAASE,CAAAA,CACdrB,CAAAA,CACAE,CAAAA,CACe,CACf,OAAQiB,CAAAA,EACCT,WAAAA,CAAY,WAAA,CACjBV,CAAAA,CAAM,SAAA,CAAU,QAAA,CAAS,aAAA,CAAc,CACrC,QAAA,CAAAE,CAAAA,CACA,UAAW,CACT,MAAA,CAAQiB,CAAAA,CAAO,MAAA,CACf,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,OAAA,CAASA,CAAAA,CAAO,OAAA,CAChB,WAAA,CAAaA,CAAAA,CAAO,WACtB,CACF,CAAC,CAAA,CACAR,GAAQC,YAAAA,CAAa,IAAA,CAAKD,CAAG,CAChC,CAAA,CAAE,GAAA,CAAKW,CAAAA,GAAc,CACnB,SAAUH,CAAAA,CAAO,OAAA,CAAQ,QAAA,CACzB,KAAA,CAAOI,aAAAA,CAAcD,CAAAA,CAAS,SAAS,CACzC,EAAE,CAEN","file":"privy.js","sourcesContent":["import {\n SigningError,\n type TransactionError,\n ValidationError,\n} from '@aave/core';\nimport type {\n ExecutionPlan,\n InsufficientBalanceError,\n PermitTypedDataResponse,\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 ExecutionPlanHandler,\n PermitHandler,\n TransactionExecutionResult,\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<TransactionExecutionResult, 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 operation: request.operation,\n });\n });\n}\n\n/**\n * Sends transactions using the provided Privy client.\n *\n * Handles {@link TransactionRequest} by signing and sending, {@link ApprovalRequired} by sending both approval and original transactions, and returns validation errors for {@link InsufficientBalanceError}.\n */\nexport function sendWith(\n privy: PrivyClient,\n walletId: string,\n): ExecutionPlanHandler {\n return (\n result: ExecutionPlan,\n ): ResultAsync<\n TransactionExecutionResult,\n SigningError | TransactionError | ValidationError<InsufficientBalanceError>\n > => {\n switch (result.__typename) {\n case 'TransactionRequest':\n return sendTransactionAndWait(privy, result, walletId);\n\n case 'ApprovalRequired':\n return sendTransactionAndWait(privy, result.approval, walletId).andThen(\n () =>\n sendTransactionAndWait(privy, result.originalTransaction, walletId),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n };\n}\n\n/**\n * Signs an ERC20 permit using the provided Privy client.\n */\nexport function signERC20PermitWith(\n privy: PrivyClient,\n walletId: string,\n): PermitHandler {\n return (result: PermitTypedDataResponse) => {\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"]}
|