@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.
Files changed (60) hide show
  1. package/dist/AaveClient-C-OkXfVz.d.ts +85 -0
  2. package/dist/AaveClient-PHUEzt7l.d.cts +85 -0
  3. package/dist/actions/index.cjs +1 -1
  4. package/dist/actions/index.cjs.map +1 -1
  5. package/dist/actions/index.d.cts +41 -11
  6. package/dist/actions/index.d.ts +41 -11
  7. package/dist/actions/index.js +1 -1
  8. package/dist/chunk-BLZHGYNH.js +2 -0
  9. package/dist/chunk-BLZHGYNH.js.map +1 -0
  10. package/dist/chunk-QQSK6HIZ.js +3 -0
  11. package/dist/chunk-QQSK6HIZ.js.map +1 -0
  12. package/dist/chunk-V4DWF6LT.js +3 -0
  13. package/dist/chunk-V4DWF6LT.js.map +1 -0
  14. package/dist/ethers.cjs +1 -2
  15. package/dist/ethers.cjs.map +1 -1
  16. package/dist/ethers.d.cts +2 -2
  17. package/dist/ethers.d.ts +2 -2
  18. package/dist/ethers.js +1 -1
  19. package/dist/ethers.js.map +1 -1
  20. package/dist/index.cjs +2 -3
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.cts +6 -238
  23. package/dist/index.d.ts +6 -238
  24. package/dist/index.js +1 -1
  25. package/dist/privy.cjs +2 -3
  26. package/dist/privy.cjs.map +1 -1
  27. package/dist/privy.d.cts +2 -2
  28. package/dist/privy.d.ts +2 -2
  29. package/dist/privy.js +1 -1
  30. package/dist/privy.js.map +1 -1
  31. package/dist/test-utils.cjs +78 -78
  32. package/dist/test-utils.cjs.map +1 -1
  33. package/dist/test-utils.d.cts +7 -5
  34. package/dist/test-utils.d.ts +7 -5
  35. package/dist/test-utils.js +49 -49
  36. package/dist/test-utils.js.map +1 -1
  37. package/dist/thirdweb.cjs +2 -3
  38. package/dist/thirdweb.cjs.map +1 -1
  39. package/dist/thirdweb.d.cts +2 -2
  40. package/dist/thirdweb.d.ts +2 -2
  41. package/dist/thirdweb.js +1 -1
  42. package/dist/thirdweb.js.map +1 -1
  43. package/dist/types-ieyj0UmJ.d.cts +16 -0
  44. package/dist/types-ieyj0UmJ.d.ts +16 -0
  45. package/dist/viem.cjs +2 -3
  46. package/dist/viem.cjs.map +1 -1
  47. package/dist/viem.d.cts +2 -2
  48. package/dist/viem.d.ts +2 -2
  49. package/dist/viem.js +1 -1
  50. package/package.json +4 -3
  51. package/dist/chunk-2U2ENVQ6.js +0 -3
  52. package/dist/chunk-2U2ENVQ6.js.map +0 -1
  53. package/dist/chunk-G5WP6QBY.js +0 -3
  54. package/dist/chunk-G5WP6QBY.js.map +0 -1
  55. package/dist/chunk-M6NMMOPY.js +0 -2
  56. package/dist/chunk-M6NMMOPY.js.map +0 -1
  57. package/dist/chunk-QYPBLR6B.js +0 -3
  58. package/dist/chunk-QYPBLR6B.js.map +0 -1
  59. package/dist/types-DwXCLJq5.d.cts +0 -72
  60. 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 i=class extends types.ResultAwareError{name="SigningError"},p=class e extends types.ResultAwareError{name="TransactionError";constructor(n,r){super(n,{cause:r});}static new(n){let{txHash:r,request:t,link:o}=n,c=o?`Transaction failed: ${r}
2
- \u2192 View on explorer: ${o}`:`Transaction failed: ${r}`;return new e(c,t)}};var s=class e extends types.ResultAwareError{constructor(r){super(r.__typename);this.cause=r;}name="ValidationError";static fromGqlNode(r){return new e(r)}};var D=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"}}}),I=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"}}}),d={[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(D.id)]:D,[types.chainId(I.id)]:I};function N(e,n,r){let t=e?.blockExplorers?.default?.url,o=t&&`${t.replace(/\/+$/,"")}/tx/${n}`;return p.new({txHash:n,request:r,link:o})}async function $(e,n,r){let{hash:t}=await e.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 types.txHash(t)}function l(e,n,r){let t=viem.createPublicClient({chain:d[n.chainId],transport:viem.http()});return types.ResultAsync.fromPromise($(e,n,r),o=>i.from(o)).map(async o=>actions.waitForTransactionReceipt(t,{hash:o,pollingInterval:100,retryCount:20,retryDelay:50})).andThen(o=>{let c=types.txHash(o.transactionHash);return o.status==="reverted"?types.errAsync(N(d[n.chainId],c,n)):types.okAsync({txHash:c,operation:n.operation})})}function pn(e,n){return r=>{switch(r.__typename){case "TransactionRequest":return l(e,r,n);case "ApprovalRequired":return l(e,r.approval,n).andThen(()=>l(e,r.originalTransaction,n));case "InsufficientBalanceError":return types.errAsync(s.fromGqlNode(r))}}}function mn(e,n){return r=>types.ResultAsync.fromPromise(e.walletApi.ethereum.signTypedData({walletId:n,typedData:{domain:r.domain,types:r.types,message:r.message,primaryType:r.primaryType}}),t=>i.from(t)).map(t=>({deadline:r.message.deadline,value:types.signatureFrom(t.signature)}))}
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
@@ -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-DwXCLJq5.cjs';
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-DwXCLJq5.js';
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-G5WP6QBY.js';import {g,d}from'./chunk-QYPBLR6B.js';import'./chunk-FW4363Y4.js';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 s(a$1,n,r){let t=createPublicClient({chain:a[n.chainId],transport:http()});return ResultAsync.fromPromise(E(a$1,n,r),i=>d.from(i)).map(async i=>waitForTransactionReceipt(t,{hash:i,pollingInterval:100,retryCount:20,retryDelay:50})).andThen(i=>{let c=txHash(i.transactionHash);return i.status==="reverted"?errAsync(b(a[n.chainId],c,n)):okAsync({txHash:c,operation:n.operation})})}function A(a,n){return r=>{switch(r.__typename){case "TransactionRequest":return s(a,r,n);case "ApprovalRequired":return s(a,r.approval,n).andThen(()=>s(a,r.originalTransaction,n));case "InsufficientBalanceError":return errAsync(g.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=>d.from(t)).map(t=>({deadline:r.message.deadline,value:signatureFrom(t.signature)}))}export{A as sendWith,H as signERC20PermitWith};//# sourceMappingURL=privy.js.map
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":"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","file":"privy.js","sourcesContent":["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/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":"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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 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"]}