@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/thirdweb.cjs CHANGED
@@ -1,4 +1,3 @@
1
- 'use strict';var types=require('@aave/types'),thirdweb=require('thirdweb');var o=class extends types.ResultAwareError{name="SigningError"},s=class e extends types.ResultAwareError{name="TransactionError";constructor(n,a){super(n,{cause:a});}static new(n){let{txHash:a,request:r,link:t}=n,u=t?`Transaction failed: ${a}
2
- \u2192 View on explorer: ${t}`:`Transaction failed: ${a}`;return new e(u,r)}};var i=class e extends types.ResultAwareError{constructor(a){super(a.__typename);this.cause=a;}name="ValidationError";static fromGqlNode(a){return new e(a)}};async function h(e,n){let a=await e.sendTransaction({type:"eip1559",chainId:n.chainId,to:n.to,value:BigInt(n.value),data:n.data});return types.txHash(a.transactionHash)}function d(e,n){let a=thirdweb.Engine.serverWallet({client:e,address:n.from});return types.ResultAsync.fromPromise(h(a,n),r=>o.from(r)).map(async r=>thirdweb.waitForReceipt({client:e,chain:{id:n.chainId,rpc:`https://${n.chainId}.rpc.thirdweb.com/${e.clientId}`},transactionHash:r})).andThen(r=>{let t=types.txHash(r.transactionHash);return r.status==="reverted"?types.errAsync(s.new({txHash:t,request:n})):types.okAsync({txHash:t,operation:n.operation})})}function I(e){return n=>{switch(n.__typename){case "TransactionRequest":return d(e,n);case "ApprovalRequired":return d(e,n.approval).andThen(()=>d(e,n.originalTransaction));case "InsufficientBalanceError":return types.errAsync(i.fromGqlNode(n))}}}async function f(e,n){let r=await thirdweb.Engine.serverWallet({client:e,chain:thirdweb.defineChain({id:n.domain.chainId}),address:n.message.owner}).signTypedData({types:n.types,domain:n.domain,primaryType:n.primaryType,message:n.message});return types.signatureFrom(r)}function S(e){return n=>types.ResultAsync.fromPromise(f(e,n),a=>o.from(a)).map(a=>({deadline:n.message.deadline,value:a}))}
3
- exports.sendWith=I;exports.signERC20PermitWith=S;//# sourceMappingURL=thirdweb.cjs.map
1
+ 'use strict';var core=require('@aave/core'),types=require('@aave/types'),thirdweb=require('thirdweb');async function f(a,n){let r=await a.sendTransaction({type:"eip1559",chainId:n.chainId,to:n.to,value:BigInt(n.value),data:n.data});return types.txHash(r.transactionHash)}function i(a,n){let r=thirdweb.Engine.serverWallet({client:a,address:n.from});return types.ResultAsync.fromPromise(f(r,n),e=>core.SigningError.from(e)).map(async e=>thirdweb.waitForReceipt({client:a,chain:{id:n.chainId,rpc:`https://${n.chainId}.rpc.thirdweb.com/${a.clientId}`},transactionHash:e})).andThen(e=>{let t=types.txHash(e.transactionHash);return e.status==="reverted"?types.errAsync(core.TransactionError.new({txHash:t,request:n})):types.okAsync({txHash:t,operation:n.operation})})}function x(a){return n=>{switch(n.__typename){case "TransactionRequest":return i(a,n);case "ApprovalRequired":return i(a,n.approval).andThen(()=>i(a,n.originalTransaction));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(n))}}}async function g(a,n){let e=await thirdweb.Engine.serverWallet({client:a,chain:thirdweb.defineChain({id:n.domain.chainId}),address:n.message.owner}).signTypedData({types:n.types,domain:n.domain,primaryType:n.primaryType,message:n.message});return types.signatureFrom(e)}function P(a){return n=>types.ResultAsync.fromPromise(g(a,n),r=>core.SigningError.from(r)).map(r=>({deadline:n.message.deadline,value:r}))}
2
+ exports.sendWith=x;exports.signERC20PermitWith=P;//# sourceMappingURL=thirdweb.cjs.map
4
3
  //# sourceMappingURL=thirdweb.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/thirdweb.ts"],"names":["SigningError","ResultAwareError","TransactionError","_TransactionError","message","cause","args","txHash","request","link","ValidationError","_ValidationError","error","sendTransaction","wallet","txResponse","sendTransactionAndWait","client","Engine","ResultAsync","err","hash","waitForReceipt","receipt","errAsync","okAsync","sendWith","result","signTypedData","signature","defineChain","signatureFrom","signERC20PermitWith","value"],"mappings":"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","file":"thirdweb.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 errAsync,\n okAsync,\n ResultAsync,\n type Signature,\n signatureFrom,\n type TxHash,\n txHash,\n} from '@aave/types';\nimport {\n defineChain,\n Engine,\n type ThirdwebClient,\n waitForReceipt,\n} from 'thirdweb';\nimport { SigningError, TransactionError, ValidationError } from './errors';\nimport type {\n ExecutionPlanHandler,\n PermitHandler,\n TransactionExecutionResult,\n} from './types';\n\nasync function sendTransaction(\n wallet: Engine.ServerWallet,\n request: TransactionRequest,\n): Promise<TxHash> {\n const txResponse = await wallet.sendTransaction({\n type: 'eip1559',\n chainId: request.chainId,\n to: request.to,\n value: BigInt(request.value),\n data: request.data,\n });\n return txHash(txResponse.transactionHash);\n}\n\nfunction sendTransactionAndWait(\n client: ThirdwebClient,\n request: TransactionRequest,\n): ResultAsync<TransactionExecutionResult, SigningError | TransactionError> {\n const wallet = Engine.serverWallet({\n client,\n address: request.from,\n });\n\n return ResultAsync.fromPromise(sendTransaction(wallet, request), (err) =>\n SigningError.from(err),\n )\n .map(async (hash) =>\n waitForReceipt({\n client,\n chain: {\n id: request.chainId,\n rpc: `https://${request.chainId}.rpc.thirdweb.com/${client.clientId}`,\n },\n transactionHash: hash,\n }),\n )\n .andThen((receipt) => {\n const hash = txHash(receipt.transactionHash);\n\n if (receipt.status === 'reverted') {\n return errAsync(\n TransactionError.new({\n txHash: hash,\n request,\n }),\n );\n }\n return okAsync({\n txHash: hash,\n operation: request.operation,\n });\n });\n}\n\n/**\n * Sends transactions using the provided Thirdweb client and account.\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(client: ThirdwebClient): 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(client, result);\n\n case 'ApprovalRequired':\n return sendTransactionAndWait(client, result.approval).andThen(() =>\n sendTransactionAndWait(client, result.originalTransaction),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n };\n}\n\nasync function signTypedData(\n client: ThirdwebClient,\n result: PermitTypedDataResponse,\n): Promise<Signature> {\n const wallet = Engine.serverWallet({\n client,\n chain: defineChain({ id: result.domain.chainId }),\n address: result.message.owner,\n });\n\n const signature = await wallet.signTypedData({\n // silence the rest of the type inference\n types: result.types as Record<string, unknown>,\n domain: result.domain,\n primaryType: result.primaryType,\n message: result.message,\n });\n\n return signatureFrom(signature);\n}\n\n/**\n * Signs an ERC20 permit using the provided Thirdweb client and account.\n */\nexport function signERC20PermitWith(client: ThirdwebClient): PermitHandler {\n return (result: PermitTypedDataResponse) => {\n return ResultAsync.fromPromise(signTypedData(client, result), (err) =>\n SigningError.from(err),\n ).map((value) => ({\n deadline: result.message.deadline,\n value,\n }));\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/thirdweb.ts"],"names":["sendTransaction","wallet","request","txResponse","txHash","sendTransactionAndWait","client","Engine","ResultAsync","err","SigningError","hash","waitForReceipt","receipt","errAsync","TransactionError","okAsync","sendWith","result","ValidationError","signTypedData","signature","defineChain","signatureFrom","signERC20PermitWith","value"],"mappings":"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","file":"thirdweb.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 errAsync,\n okAsync,\n ResultAsync,\n type Signature,\n signatureFrom,\n type TxHash,\n txHash,\n} from '@aave/types';\nimport {\n defineChain,\n Engine,\n type ThirdwebClient,\n waitForReceipt,\n} from 'thirdweb';\nimport type {\n ExecutionPlanHandler,\n PermitHandler,\n TransactionExecutionResult,\n} from './types';\n\nasync function sendTransaction(\n wallet: Engine.ServerWallet,\n request: TransactionRequest,\n): Promise<TxHash> {\n const txResponse = await wallet.sendTransaction({\n type: 'eip1559',\n chainId: request.chainId,\n to: request.to,\n value: BigInt(request.value),\n data: request.data,\n });\n return txHash(txResponse.transactionHash);\n}\n\nfunction sendTransactionAndWait(\n client: ThirdwebClient,\n request: TransactionRequest,\n): ResultAsync<TransactionExecutionResult, SigningError | TransactionError> {\n const wallet = Engine.serverWallet({\n client,\n address: request.from,\n });\n\n return ResultAsync.fromPromise(sendTransaction(wallet, request), (err) =>\n SigningError.from(err),\n )\n .map(async (hash) =>\n waitForReceipt({\n client,\n chain: {\n id: request.chainId,\n rpc: `https://${request.chainId}.rpc.thirdweb.com/${client.clientId}`,\n },\n transactionHash: hash,\n }),\n )\n .andThen((receipt) => {\n const hash = txHash(receipt.transactionHash);\n\n if (receipt.status === 'reverted') {\n return errAsync(\n TransactionError.new({\n txHash: hash,\n request,\n }),\n );\n }\n return okAsync({\n txHash: hash,\n operation: request.operation,\n });\n });\n}\n\n/**\n * Sends transactions using the provided Thirdweb client and account.\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(client: ThirdwebClient): 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(client, result);\n\n case 'ApprovalRequired':\n return sendTransactionAndWait(client, result.approval).andThen(() =>\n sendTransactionAndWait(client, result.originalTransaction),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n };\n}\n\nasync function signTypedData(\n client: ThirdwebClient,\n result: PermitTypedDataResponse,\n): Promise<Signature> {\n const wallet = Engine.serverWallet({\n client,\n chain: defineChain({ id: result.domain.chainId }),\n address: result.message.owner,\n });\n\n const signature = await wallet.signTypedData({\n // silence the rest of the type inference\n types: result.types as Record<string, unknown>,\n domain: result.domain,\n primaryType: result.primaryType,\n message: result.message,\n });\n\n return signatureFrom(signature);\n}\n\n/**\n * Signs an ERC20 permit using the provided Thirdweb client and account.\n */\nexport function signERC20PermitWith(client: ThirdwebClient): PermitHandler {\n return (result: PermitTypedDataResponse) => {\n return ResultAsync.fromPromise(signTypedData(client, result), (err) =>\n SigningError.from(err),\n ).map((value) => ({\n deadline: result.message.deadline,\n value,\n }));\n };\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { ThirdwebClient } from 'thirdweb';
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 Thirdweb client and account.
@@ -1,8 +1,8 @@
1
1
  import { ThirdwebClient } from 'thirdweb';
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 Thirdweb client and account.
package/dist/thirdweb.js CHANGED
@@ -1,3 +1,3 @@
1
- import {g as g$1,d,e}from'./chunk-QYPBLR6B.js';import'./chunk-FW4363Y4.js';import {errAsync,ResultAsync,txHash,okAsync,signatureFrom}from'@aave/types';import {Engine,waitForReceipt,defineChain}from'thirdweb';async function f(a,n){let r=await a.sendTransaction({type:"eip1559",chainId:n.chainId,to:n.to,value:BigInt(n.value),data:n.data});return txHash(r.transactionHash)}function t(a,n){let r=Engine.serverWallet({client:a,address:n.from});return ResultAsync.fromPromise(f(r,n),e=>d.from(e)).map(async e=>waitForReceipt({client:a,chain:{id:n.chainId,rpc:`https://${n.chainId}.rpc.thirdweb.com/${a.clientId}`},transactionHash:e})).andThen(e$1=>{let o=txHash(e$1.transactionHash);return e$1.status==="reverted"?errAsync(e.new({txHash:o,request:n})):okAsync({txHash:o,operation:n.operation})})}function x(a){return n=>{switch(n.__typename){case "TransactionRequest":return t(a,n);case "ApprovalRequired":return t(a,n.approval).andThen(()=>t(a,n.originalTransaction));case "InsufficientBalanceError":return errAsync(g$1.fromGqlNode(n))}}}async function g(a,n){let e=await Engine.serverWallet({client:a,chain:defineChain({id:n.domain.chainId}),address:n.message.owner}).signTypedData({types:n.types,domain:n.domain,primaryType:n.primaryType,message:n.message});return signatureFrom(e)}function P(a){return n=>ResultAsync.fromPromise(g(a,n),r=>d.from(r)).map(r=>({deadline:n.message.deadline,value:r}))}
1
+ import'./chunk-FW4363Y4.js';import {ValidationError,SigningError,TransactionError}from'@aave/core';import {errAsync,ResultAsync,txHash,okAsync,signatureFrom}from'@aave/types';import {Engine,waitForReceipt,defineChain}from'thirdweb';async function f(a,n){let r=await a.sendTransaction({type:"eip1559",chainId:n.chainId,to:n.to,value:BigInt(n.value),data:n.data});return txHash(r.transactionHash)}function i(a,n){let r=Engine.serverWallet({client:a,address:n.from});return ResultAsync.fromPromise(f(r,n),e=>SigningError.from(e)).map(async e=>waitForReceipt({client:a,chain:{id:n.chainId,rpc:`https://${n.chainId}.rpc.thirdweb.com/${a.clientId}`},transactionHash:e})).andThen(e=>{let t=txHash(e.transactionHash);return e.status==="reverted"?errAsync(TransactionError.new({txHash:t,request:n})):okAsync({txHash:t,operation:n.operation})})}function x(a){return n=>{switch(n.__typename){case "TransactionRequest":return i(a,n);case "ApprovalRequired":return i(a,n.approval).andThen(()=>i(a,n.originalTransaction));case "InsufficientBalanceError":return errAsync(ValidationError.fromGqlNode(n))}}}async function g(a,n){let e=await Engine.serverWallet({client:a,chain:defineChain({id:n.domain.chainId}),address:n.message.owner}).signTypedData({types:n.types,domain:n.domain,primaryType:n.primaryType,message:n.message});return signatureFrom(e)}function P(a){return n=>ResultAsync.fromPromise(g(a,n),r=>SigningError.from(r)).map(r=>({deadline:n.message.deadline,value:r}))}
2
2
  export{x as sendWith,P as signERC20PermitWith};//# sourceMappingURL=thirdweb.js.map
3
3
  //# sourceMappingURL=thirdweb.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/thirdweb.ts"],"names":["sendTransaction","wallet","request","txResponse","txHash","sendTransactionAndWait","client","Engine","ResultAsync","err","SigningError","hash","waitForReceipt","receipt","errAsync","TransactionError","okAsync","sendWith","result","ValidationError","signTypedData","signature","defineChain","signatureFrom","signERC20PermitWith","value"],"mappings":"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","file":"thirdweb.js","sourcesContent":["import type {\n ExecutionPlan,\n InsufficientBalanceError,\n PermitTypedDataResponse,\n TransactionRequest,\n} from '@aave/graphql';\nimport {\n errAsync,\n okAsync,\n ResultAsync,\n type Signature,\n signatureFrom,\n type TxHash,\n txHash,\n} from '@aave/types';\nimport {\n defineChain,\n Engine,\n type ThirdwebClient,\n waitForReceipt,\n} from 'thirdweb';\nimport { SigningError, TransactionError, ValidationError } from './errors';\nimport type {\n ExecutionPlanHandler,\n PermitHandler,\n TransactionExecutionResult,\n} from './types';\n\nasync function sendTransaction(\n wallet: Engine.ServerWallet,\n request: TransactionRequest,\n): Promise<TxHash> {\n const txResponse = await wallet.sendTransaction({\n type: 'eip1559',\n chainId: request.chainId,\n to: request.to,\n value: BigInt(request.value),\n data: request.data,\n });\n return txHash(txResponse.transactionHash);\n}\n\nfunction sendTransactionAndWait(\n client: ThirdwebClient,\n request: TransactionRequest,\n): ResultAsync<TransactionExecutionResult, SigningError | TransactionError> {\n const wallet = Engine.serverWallet({\n client,\n address: request.from,\n });\n\n return ResultAsync.fromPromise(sendTransaction(wallet, request), (err) =>\n SigningError.from(err),\n )\n .map(async (hash) =>\n waitForReceipt({\n client,\n chain: {\n id: request.chainId,\n rpc: `https://${request.chainId}.rpc.thirdweb.com/${client.clientId}`,\n },\n transactionHash: hash,\n }),\n )\n .andThen((receipt) => {\n const hash = txHash(receipt.transactionHash);\n\n if (receipt.status === 'reverted') {\n return errAsync(\n TransactionError.new({\n txHash: hash,\n request,\n }),\n );\n }\n return okAsync({\n txHash: hash,\n operation: request.operation,\n });\n });\n}\n\n/**\n * Sends transactions using the provided Thirdweb client and account.\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(client: ThirdwebClient): 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(client, result);\n\n case 'ApprovalRequired':\n return sendTransactionAndWait(client, result.approval).andThen(() =>\n sendTransactionAndWait(client, result.originalTransaction),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n };\n}\n\nasync function signTypedData(\n client: ThirdwebClient,\n result: PermitTypedDataResponse,\n): Promise<Signature> {\n const wallet = Engine.serverWallet({\n client,\n chain: defineChain({ id: result.domain.chainId }),\n address: result.message.owner,\n });\n\n const signature = await wallet.signTypedData({\n // silence the rest of the type inference\n types: result.types as Record<string, unknown>,\n domain: result.domain,\n primaryType: result.primaryType,\n message: result.message,\n });\n\n return signatureFrom(signature);\n}\n\n/**\n * Signs an ERC20 permit using the provided Thirdweb client and account.\n */\nexport function signERC20PermitWith(client: ThirdwebClient): PermitHandler {\n return (result: PermitTypedDataResponse) => {\n return ResultAsync.fromPromise(signTypedData(client, result), (err) =>\n SigningError.from(err),\n ).map((value) => ({\n deadline: result.message.deadline,\n value,\n }));\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/thirdweb.ts"],"names":["sendTransaction","wallet","request","txResponse","txHash","sendTransactionAndWait","client","Engine","ResultAsync","err","SigningError","hash","waitForReceipt","receipt","errAsync","TransactionError","okAsync","sendWith","result","ValidationError","signTypedData","signature","defineChain","signatureFrom","signERC20PermitWith","value"],"mappings":"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","file":"thirdweb.js","sourcesContent":["import { SigningError, TransactionError, ValidationError } 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 type Signature,\n signatureFrom,\n type TxHash,\n txHash,\n} from '@aave/types';\nimport {\n defineChain,\n Engine,\n type ThirdwebClient,\n waitForReceipt,\n} from 'thirdweb';\nimport type {\n ExecutionPlanHandler,\n PermitHandler,\n TransactionExecutionResult,\n} from './types';\n\nasync function sendTransaction(\n wallet: Engine.ServerWallet,\n request: TransactionRequest,\n): Promise<TxHash> {\n const txResponse = await wallet.sendTransaction({\n type: 'eip1559',\n chainId: request.chainId,\n to: request.to,\n value: BigInt(request.value),\n data: request.data,\n });\n return txHash(txResponse.transactionHash);\n}\n\nfunction sendTransactionAndWait(\n client: ThirdwebClient,\n request: TransactionRequest,\n): ResultAsync<TransactionExecutionResult, SigningError | TransactionError> {\n const wallet = Engine.serverWallet({\n client,\n address: request.from,\n });\n\n return ResultAsync.fromPromise(sendTransaction(wallet, request), (err) =>\n SigningError.from(err),\n )\n .map(async (hash) =>\n waitForReceipt({\n client,\n chain: {\n id: request.chainId,\n rpc: `https://${request.chainId}.rpc.thirdweb.com/${client.clientId}`,\n },\n transactionHash: hash,\n }),\n )\n .andThen((receipt) => {\n const hash = txHash(receipt.transactionHash);\n\n if (receipt.status === 'reverted') {\n return errAsync(\n TransactionError.new({\n txHash: hash,\n request,\n }),\n );\n }\n return okAsync({\n txHash: hash,\n operation: request.operation,\n });\n });\n}\n\n/**\n * Sends transactions using the provided Thirdweb client and account.\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(client: ThirdwebClient): 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(client, result);\n\n case 'ApprovalRequired':\n return sendTransactionAndWait(client, result.approval).andThen(() =>\n sendTransactionAndWait(client, result.originalTransaction),\n );\n\n case 'InsufficientBalanceError':\n return errAsync(ValidationError.fromGqlNode(result));\n }\n };\n}\n\nasync function signTypedData(\n client: ThirdwebClient,\n result: PermitTypedDataResponse,\n): Promise<Signature> {\n const wallet = Engine.serverWallet({\n client,\n chain: defineChain({ id: result.domain.chainId }),\n address: result.message.owner,\n });\n\n const signature = await wallet.signTypedData({\n // silence the rest of the type inference\n types: result.types as Record<string, unknown>,\n domain: result.domain,\n primaryType: result.primaryType,\n message: result.message,\n });\n\n return signatureFrom(signature);\n}\n\n/**\n * Signs an ERC20 permit using the provided Thirdweb client and account.\n */\nexport function signERC20PermitWith(client: ThirdwebClient): PermitHandler {\n return (result: PermitTypedDataResponse) => {\n return ResultAsync.fromPromise(signTypedData(client, result), (err) =>\n SigningError.from(err),\n ).map((value) => ({\n deadline: result.message.deadline,\n value,\n }));\n };\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { SigningError, TransactionError, ValidationError } from '@aave/core';
2
+ import { OperationType, ExecutionPlan, InsufficientBalanceError, PermitTypedDataResponse, ERC712Signature, HasProcessedKnownTransactionRequest } from '@aave/graphql';
3
+ import { TxHash, ResultAsync } from '@aave/types';
4
+
5
+ type TransactionExecutionResult = {
6
+ txHash: TxHash;
7
+ operation: OperationType | null;
8
+ };
9
+ /**
10
+ * @internal
11
+ */
12
+ declare function isHasProcessedKnownTransactionRequest(result: TransactionExecutionResult): result is HasProcessedKnownTransactionRequest;
13
+ type ExecutionPlanHandler<T extends ExecutionPlan = ExecutionPlan> = (result: T) => ResultAsync<TransactionExecutionResult, SigningError | TransactionError | ValidationError<InsufficientBalanceError>>;
14
+ type PermitHandler = (result: PermitTypedDataResponse) => ResultAsync<ERC712Signature, SigningError>;
15
+
16
+ export { type ExecutionPlanHandler as E, type PermitHandler as P, type TransactionExecutionResult as T, isHasProcessedKnownTransactionRequest as i };
@@ -0,0 +1,16 @@
1
+ import { SigningError, TransactionError, ValidationError } from '@aave/core';
2
+ import { OperationType, ExecutionPlan, InsufficientBalanceError, PermitTypedDataResponse, ERC712Signature, HasProcessedKnownTransactionRequest } from '@aave/graphql';
3
+ import { TxHash, ResultAsync } from '@aave/types';
4
+
5
+ type TransactionExecutionResult = {
6
+ txHash: TxHash;
7
+ operation: OperationType | null;
8
+ };
9
+ /**
10
+ * @internal
11
+ */
12
+ declare function isHasProcessedKnownTransactionRequest(result: TransactionExecutionResult): result is HasProcessedKnownTransactionRequest;
13
+ type ExecutionPlanHandler<T extends ExecutionPlan = ExecutionPlan> = (result: T) => ResultAsync<TransactionExecutionResult, SigningError | TransactionError | ValidationError<InsufficientBalanceError>>;
14
+ type PermitHandler = (result: PermitTypedDataResponse) => ResultAsync<ERC712Signature, SigningError>;
15
+
16
+ export { type ExecutionPlanHandler as E, type PermitHandler as P, type TransactionExecutionResult as T, isHasProcessedKnownTransactionRequest as i };
package/dist/viem.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 o=class extends types.ResultAwareError{name="SigningError"},i=class e extends types.ResultAwareError{name="TransactionError";constructor(n,t){super(n,{cause:t});}static new(n){let{txHash:t,request:r,link:s}=n,P=s?`Transaction failed: ${t}
2
- \u2192 View on explorer: ${s}`:`Transaction failed: ${t}`;return new e(P,r)}};var c=class e extends types.ResultAwareError{constructor(t){super(t.__typename);this.cause=t;}name="ValidationError";static fromGqlNode(t){return new e(t)}};var N=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"}}}),q=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"}}}),K={[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(N.id)]:N,[types.chainId(q.id)]:q};async function V(e,n){return actions.sendTransaction(e,{account:n.from,data:n.data,to:n.to,value:BigInt(n.value),chain:e.chain})}function $(e,n,t){let r=e?.blockExplorers?.default?.url,s=r&&`${r.replace(/\/+$/,"")}/tx/${n}`;return i.new({txHash:n,request:t,link:s})}function d(e,n){return types.ResultAsync.fromPromise(V(e,n),t=>o.from(t)).map(async t=>actions.waitForTransactionReceipt(e,{hash:t,pollingInterval:100,retryCount:20,retryDelay:50})).andThen(t=>{let r=types.txHash(t.transactionHash);return t.status==="reverted"?types.errAsync($(e.chain,r,n)):types.okAsync({txHash:r,operation:n.operation})})}function M(e){return n=>{switch(n.__typename){case "TransactionRequest":return d(e,n);case "ApprovalRequired":return d(e,n.approval).andThen(()=>d(e,n.originalTransaction));case "InsufficientBalanceError":return types.errAsync(c.fromGqlNode(n))}}}function X(e){return n=>(types.invariant(e.account,"Wallet account is required"),types.ResultAsync.fromPromise(actions.signTypedData(e,{account:e.account,domain:n.domain,types:n.types,primaryType:n.primaryType,message:n.message}),t=>o.from(t)).map(t=>({deadline:n.message.deadline,value:types.signatureFrom(t)})))}
3
- exports.sendTransactionAndWait=d;exports.sendWith=M;exports.signERC20PermitWith=X;exports.supportedChains=K;exports.transactionError=$;//# sourceMappingURL=viem.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 x=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"}}}),R=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"}}}),j={[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(x.id)]:x,[types.chainId(R.id)]:R};async function $(a,n){return actions.sendTransaction(a,{account:n.from,data:n.data,to:n.to,value:BigInt(n.value),chain:a.chain})}function F(a,n,e){let t=a?.blockExplorers?.default?.url,H=t&&`${t.replace(/\/+$/,"")}/tx/${n}`;return core.TransactionError.new({txHash:n,request:e,link:H})}function i(a,n){return types.ResultAsync.fromPromise($(a,n),e=>core.SigningError.from(e)).map(async e=>actions.waitForTransactionReceipt(a,{hash:e,pollingInterval:100,retryCount:20,retryDelay:50})).andThen(e=>{let t=types.txHash(e.transactionHash);return e.status==="reverted"?types.errAsync(F(a.chain,t,n)):types.okAsync({txHash:t,operation:n.operation})})}function J(a){return n=>{switch(n.__typename){case "TransactionRequest":return i(a,n);case "ApprovalRequired":return i(a,n.approval).andThen(()=>i(a,n.originalTransaction));case "InsufficientBalanceError":return types.errAsync(core.ValidationError.fromGqlNode(n))}}}function K(a){return n=>(types.invariant(a.account,"Wallet account is required"),types.ResultAsync.fromPromise(actions.signTypedData(a,{account:a.account,domain:n.domain,types:n.types,primaryType:n.primaryType,message:n.message}),e=>core.SigningError.from(e)).map(e=>({deadline:n.message.deadline,value:types.signatureFrom(e)})))}
2
+ exports.sendTransactionAndWait=i;exports.sendWith=J;exports.signERC20PermitWith=K;exports.supportedChains=j;exports.transactionError=F;//# sourceMappingURL=viem.cjs.map
4
3
  //# sourceMappingURL=viem.cjs.map
package/dist/viem.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/viem.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","sendTransaction","walletClient","sendEip1559Transaction","transactionError","chain","baseUrl","sendTransactionAndWait","ResultAsync","err","hash","waitForTransactionReceipt","receipt","errAsync","okAsync","sendWith","result","signERC20PermitWith","invariant","signTypedData","hex","signatureFrom"],"mappings":"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","file":"viem.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"]}
1
+ {"version":3,"sources":["../src/viem.ts"],"names":["sonic","defineChain","soneium","supportedChains","chainId","mainnet","arbitrum","avalanche","base","baseSepolia","bsc","celo","gnosis","linea","metis","optimism","polygon","scroll","zksync","sendTransaction","walletClient","request","sendEip1559Transaction","transactionError","chain","txHash","baseUrl","link","TransactionError","sendTransactionAndWait","ResultAsync","err","SigningError","hash","waitForTransactionReceipt","receipt","errAsync","okAsync","sendWith","result","ValidationError","signERC20PermitWith","invariant","signTypedData","hex","signatureFrom"],"mappings":"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","file":"viem.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"]}
package/dist/viem.d.cts CHANGED
@@ -1,8 +1,8 @@
1
+ import { TransactionError, SigningError } from '@aave/core';
1
2
  import { TransactionRequest } from '@aave/graphql';
2
3
  import { ChainId, TxHash, ResultAsync } from '@aave/types';
3
4
  import { defineChain, Chain, WalletClient } from 'viem';
4
- import { a as TransactionError, T as TransactionExecutionResult, S as SigningError, E as ExecutionPlanHandler, P as PermitHandler } from './types-DwXCLJq5.cjs';
5
- import '@urql/core';
5
+ import { T as TransactionExecutionResult, E as ExecutionPlanHandler, P as PermitHandler } from './types-ieyj0UmJ.cjs';
6
6
 
7
7
  /**
8
8
  * @internal
package/dist/viem.d.ts CHANGED
@@ -1,8 +1,8 @@
1
+ import { TransactionError, SigningError } from '@aave/core';
1
2
  import { TransactionRequest } from '@aave/graphql';
2
3
  import { ChainId, TxHash, ResultAsync } from '@aave/types';
3
4
  import { defineChain, Chain, WalletClient } from 'viem';
4
- import { a as TransactionError, T as TransactionExecutionResult, S as SigningError, E as ExecutionPlanHandler, P as PermitHandler } from './types-DwXCLJq5.js';
5
- import '@urql/core';
5
+ import { T as TransactionExecutionResult, E as ExecutionPlanHandler, P as PermitHandler } from './types-ieyj0UmJ.js';
6
6
 
7
7
  /**
8
8
  * @internal
package/dist/viem.js CHANGED
@@ -1,2 +1,2 @@
1
- export{c as sendTransactionAndWait,d as sendWith,e as signERC20PermitWith,a as supportedChains,b as transactionError}from'./chunk-G5WP6QBY.js';import'./chunk-QYPBLR6B.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=viem.js.map
1
+ export{c as sendTransactionAndWait,d as sendWith,e as signERC20PermitWith,a as supportedChains,b as transactionError}from'./chunk-QQSK6HIZ.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=viem.js.map
2
2
  //# sourceMappingURL=viem.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aave/client",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
4
4
  "description": "The official JavaScript client for the Aave API",
5
5
  "repository": {
6
6
  "directory": "packages/client",
@@ -70,8 +70,9 @@
70
70
  "dependencies": {
71
71
  "@urql/core": "^5.2.0",
72
72
  "graphql": "^16.11.0",
73
- "@aave/graphql": "0.6.1",
74
- "@aave/types": "0.1.1"
73
+ "@aave/graphql": "0.7.0",
74
+ "@aave/core": "0.1.0",
75
+ "@aave/types": "0.2.0"
75
76
  },
76
77
  "devDependencies": {
77
78
  "@bgd-labs/aave-address-book": "^4.25.3",
@@ -1,3 +0,0 @@
1
- import {c,f as f$1}from'./chunk-QYPBLR6B.js';import {l}from'./chunk-M6NMMOPY.js';import {ResultAsync,invariant,okAsync,errAsync,Deferred,never}from'@aave/types';import {createClient,fetchExchange}from'@urql/core';import {Kind,visit,OperationTypeNode}from'graphql';var V={name:"production",backend:"https://api.v3.aave.com/graphql",indexingTimeout:6e4,pollingInterval:100},Y={name:"staging",backend:"https://api.v3.staging.aave.com/graphql",indexingTimeout:6e4,pollingInterval:100},z={name:"local",backend:"http://localhost:3011/graphql",indexingTimeout:6e4,pollingInterval:1e3};var p=class{queries=[];addQuery=(e,t)=>{invariant(this.queries.length<10,"Batch queries supports a maximum of 10 queries");let n=`value_${this.queries.length}`,r=new Deferred;return this.queries.push({alias:n,document:e,variables:t,deferred:r}),ResultAsync.fromPromise(r.promise,o=>c.is(o)?o:c.from(o))};build(){let e=new Map,t=[],n=[],r={},o=0;for(let{alias:u,document:y,variables:P}of this.queries){let[v,_]=K(y);for(let a of _){let c=a.name.value;e.has(c)||e.set(c,a);}let D=new Map,H=v.variableDefinitions?.map(a=>{let c=`${a.variable.name.value}_${o++}`;return D.set(a.variable.name.value,c),r[c]=P[a.variable.name.value]??never(),{...a,variable:{...a.variable,name:{kind:Kind.NAME,value:c}}}})??[];n.push(...H);let U=visit(v.selectionSet,{Variable(a){let c=D.get(a.name.value);return c?{...a,name:{kind:Kind.NAME,value:c}}:a},Field(a){return {...a,alias:{kind:Kind.NAME,value:u}}}});t.push(...U.selections);}let i={kind:Kind.OPERATION_DEFINITION,operation:OperationTypeNode.QUERY,variableDefinitions:n,selectionSet:{kind:Kind.SELECTION_SET,selections:t}};return [{kind:Kind.DOCUMENT,definitions:[i,...e.values()]},r]}resolve(e){for(let{alias:t,deferred:n}of this.queries)Object.hasOwn(e,t)&&e[t]!==void 0?n.resolve(e[t]):n.reject(c.from(`Missing response data for query alias "${t}". Please report this issue to the Avara team.`));}};function K(s){let e,t=[];for(let n of s.definitions)switch(n.kind){case Kind.OPERATION_DEFINITION:invariant(n.operation===OperationTypeNode.QUERY,"Only query operations are supported"),invariant(e===void 0,"Only one operation definition is supported"),e=n;break;case Kind.FRAGMENT_DEFINITION:t.push(n);break;default:never(`Unexpected definition kind: ${n.kind}`);}return invariant(e,"No operation definition found in the document"),[e,t]}var R=class{constructor(e){this.document=e;this._fragmentSpreads=new Map,this._recursivelyReferencedFragments=new Map;}_fragments;_fragmentSpreads;_recursivelyReferencedFragments;dedupe(){let e=[],t=[],n=[];return visit(this.document,{OperationDefinition:r=>(e.push(r),false),FragmentDefinition:r=>(t.push(r),false),Document:{leave:()=>{let r=Object.create(null);for(let o of e)for(let i of this.getRecursivelyReferencedFragments(o))r[i.name.value]=true;for(let o of t){let i=o.name.value;r[i]!==true&&n.push(o);}}}}),visit(this.document,{FragmentDefinition:r=>n.indexOf(r)!==-1?null:r})}getRecursivelyReferencedFragments(e){let t=this._recursivelyReferencedFragments.get(e);if(!t){t=[];let n=Object.create(null),r=[e.selectionSet],o;for(;o=r.pop();)for(let i of this.getFragmentSpreads(o)){let E=i.name.value;if(n[E]!==true){n[E]=true;let u=this.getFragment(E);u&&(t.push(u),r.push(u.selectionSet));}}this._recursivelyReferencedFragments.set(e,t);}return t}getFragmentSpreads(e){let t=this._fragmentSpreads.get(e);if(!t){t=[];let n=[e],r;for(;r=n.pop();)for(let o of r.selections)o.kind===Kind.FRAGMENT_SPREAD?t.push(o):o.selectionSet&&n.push(o.selectionSet);this._fragmentSpreads.set(e,t);}return t}getFragment(e){let t;if(this._fragments)t=this._fragments;else {t=Object.create(null);for(let n of this.document.definitions)n.kind===Kind.FRAGMENT_DEFINITION&&(t[n.name.value]=n);this._fragments=t;}return t[e]}},m=class s{constructor(e){this.fragments=e;}static from(e){let t=new Map;for(let n of e)for(let r of n.definitions)invariant(r.kind==="FragmentDefinition",`expected a fragment definition, got ${n.definitions[0]?.kind}`),invariant(!t.has(r.name.value),`Duplicate fragment detected. A fragment named "${r.name.value}" has already been provided, either directly or as part of another fragment document.`),t.set(r.name.value,r);return new s(t)}replaceFrom(e){let t=visit(e,{FragmentDefinition:n=>this.fragments.has(n.name.value)?null:n,Document:{leave:n=>({...n,definitions:[...n.definitions,...this.fragments.values()]})}});return new R(t).dedupe()}};function q(s){return {environment:s.environment??V,headers:s.headers,cache:s.cache??false,debug:s.debug??false,fragments:m.from(s.fragments??[])}}var f=class s{level;name;constructor(e,t=3){this.name=e,this.level=t,this.replaceMethods();}static named(e,t=3){return new s(e,t)}trace=()=>{};debug=()=>{};info=()=>{};warn=()=>{};error=()=>{};log=()=>{};replaceMethods(){["trace","debug","info","warn","error"].forEach((e,t)=>{t>=this.level?this[e]=()=>{}:this[e]=(...n)=>console[e==="debug"?"log":e](`[${this.name}]`,...n);}),this.log=this.debug;}};function x(s){return s.operation!==null}function M(s){return new Promise(e=>setTimeout(e,s))}function C({data:s,error:e}){return invariant(s,`Expected a value, got: ${e?.message}`),s.value}var I=class s{constructor(e){this.context=e;this.logger=f.named(this.constructor.name,e.debug?1:5),this.urql=createClient({url:e.environment.backend,fetchOptions:{credentials:"omit",headers:e.headers},exchanges:this.exchanges()});}urql;logger;static create(e){return new s(q(e??{}))}query(e,t){let n=this.context.fragments.replaceFrom(e);return this.resultFrom(this.urql.query(n,t)).map(C)}mutation(e,t){return this.resultFrom(this.urql.mutation(e,t)).map(C)}batch(e){let t=new p,n=Object.create(this,{query:{value:t.addQuery}}),r=ResultAsync.combine(e(n)),[o,i]=t.build(),E=this.context.fragments.replaceFrom(o);return this.resultFrom(this.urql.query(E,i)).andTee(({data:u,error:y})=>{invariant(u,`Expected a value, got: ${y?.message}`),t.resolve(u);}).andThen(()=>r)}waitForSupportedTransaction=e=>x(e)?this.waitForTransaction(e):okAsync(e.txHash);waitForTransaction=e=>(invariant(x(e),"Received a transaction result for an untracked operation. Make sure you're following the instructions in the docs."),ResultAsync.fromPromise(this.pollTransactionStatus(e),t=>t instanceof f$1||t instanceof c?t:c.from(t)));async pollTransactionStatus(e){let t=Date.now();for(;Date.now()-t<this.context.environment.indexingTimeout;){if(await l(this,e).match(r=>r,r=>{throw r}))return e.txHash;await M(this.context.environment.pollingInterval);}throw f$1.from(`Timeout waiting for transaction ${e.txHash} to be processed.`)}exchanges(){return [fetchExchange]}resultFrom(e){return ResultAsync.fromPromise(e.toPromise(),t=>(this.logger.error(t),console.log(t),c.from(t))).andThen(t=>t.error?.networkError?errAsync(c.from(t.error.networkError)):okAsync(t))}};
2
- export{V as a,Y as b,z as c,I as d};//# sourceMappingURL=chunk-2U2ENVQ6.js.map
3
- //# sourceMappingURL=chunk-2U2ENVQ6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/environments.ts","../src/batch.ts","../src/fragments.ts","../src/context.ts","../src/logger.ts","../src/types.ts","../src/utils.ts","../src/client.ts"],"names":["production","staging","local","BatchQueryBuilder","document","variables","invariant","alias","deferred","Deferred","ResultAsync","err","UnexpectedError","allFragments","selections","variableDefinitions","mergedVariables","varId","operation","fragments","extractQueryParts","fragment","name","varMapping","localDefs","v","newVarName","never","Kind","rewritten","visit","node","renamed","mergedOperation","OperationTypeNode","data","definition","FragmentDeduplicator","operationDefs","fragmentDefs","toRemove","fragmentNameUsed","fragmentDef","fragName","collectedNames","nodesToVisit","spread","spreads","setsToVisit","set","selection","defNode","FragmentResolver","_FragmentResolver","nodes","injected","configureContext","from","Logger","_Logger","level","methodName","index","args","isHasProcessedKnownTransactionRequest","result","delay","ms","resolve","takeValue","error","AaveClient","_AaveClient","context","createClient","options","query","cb","builder","client","combined","okAsync","TimeoutError","request","startedAt","hasProcessedKnownTransaction","ok","fetchExchange","source","errAsync"],"mappings":"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","file":"chunk-2U2ENVQ6.js","sourcesContent":["/**\n * The environment configuration type.\n */\nexport type EnvironmentConfig = {\n name: string;\n backend: string;\n indexingTimeout: number;\n pollingInterval: number;\n};\n\n/**\n * The production environment configuration.\n */\nexport const production: EnvironmentConfig = {\n name: 'production',\n backend: 'https://api.v3.aave.com/graphql',\n indexingTimeout: 60_000,\n pollingInterval: 100,\n};\n\n/**\n * @internal\n */\nexport const staging: EnvironmentConfig = {\n name: 'staging',\n backend: 'https://api.v3.staging.aave.com/graphql',\n indexingTimeout: 60_000,\n pollingInterval: 100,\n};\n\n/**\n * @internal\n */\nexport const local: EnvironmentConfig = {\n name: 'local',\n backend: 'http://localhost:3011/graphql',\n indexingTimeout: 60_000,\n pollingInterval: 1000,\n};\n","import type { AnyVariables, StandardData } from '@aave/graphql';\nimport { Deferred, invariant, never, ResultAsync } from '@aave/types';\nimport type { TypedDocumentNode } from '@urql/core';\nimport {\n type DocumentNode,\n type FieldNode,\n type FragmentDefinitionNode,\n Kind,\n type OperationDefinitionNode,\n OperationTypeNode,\n type VariableDefinitionNode,\n visit,\n} from 'graphql';\n\nimport { UnexpectedError } from './errors';\n\ninterface StoredQuery<TValue, TVariables extends AnyVariables> {\n alias: string;\n document: TypedDocumentNode<StandardData<TValue>, TVariables>;\n variables: AnyVariables;\n deferred: Deferred<TValue>;\n}\n\nexport type BatchQueryData = Record<string, unknown>;\n\nexport class BatchQueryBuilder {\n // biome-ignore lint/suspicious/noExplicitAny: intentional due to the etherogenous nature of the queries\n private queries: StoredQuery<any, any>[] = [];\n\n addQuery = <TValue, TVariables extends AnyVariables>(\n document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n variables: TVariables,\n ): ResultAsync<TValue, UnexpectedError> => {\n invariant(\n this.queries.length < 10,\n 'Batch queries supports a maximum of 10 queries',\n );\n\n const alias = `value_${this.queries.length}`;\n const deferred = new Deferred<TValue>();\n\n this.queries.push({ alias, document, variables, deferred });\n\n return ResultAsync.fromPromise(deferred.promise, (err) => {\n if (UnexpectedError.is(err)) {\n return err;\n }\n return UnexpectedError.from(err);\n });\n };\n\n build<TVariables extends AnyVariables>(): [\n TypedDocumentNode<BatchQueryData, TVariables>,\n TVariables,\n ] {\n const allFragments: Map<string, FragmentDefinitionNode> = new Map();\n const selections: FieldNode[] = [];\n const variableDefinitions: VariableDefinitionNode[] = [];\n const mergedVariables: AnyVariables = {};\n\n let varId = 0;\n for (const { alias, document, variables } of this.queries) {\n const [operation, fragments] = extractQueryParts(document);\n\n for (const fragment of fragments) {\n const name = fragment.name.value;\n if (!allFragments.has(name)) {\n allFragments.set(name, fragment);\n }\n }\n\n const varMapping = new Map<string, string>();\n const localDefs =\n operation.variableDefinitions?.map((v): VariableDefinitionNode => {\n const newVarName = `${v.variable.name.value}_${varId++}`;\n varMapping.set(v.variable.name.value, newVarName);\n\n mergedVariables[newVarName] =\n variables[v.variable.name.value] ?? never();\n\n return {\n ...v,\n variable: {\n ...v.variable,\n name: { kind: Kind.NAME, value: newVarName },\n },\n };\n }) ?? [];\n\n variableDefinitions.push(...localDefs);\n\n const rewritten = visit(operation.selectionSet, {\n Variable(node) {\n const renamed = varMapping.get(node.name.value);\n if (!renamed) return node;\n return {\n ...node,\n name: { kind: Kind.NAME, value: renamed },\n };\n },\n Field(node) {\n return {\n ...node,\n alias: { kind: Kind.NAME, value: alias },\n };\n },\n });\n\n selections.push(...(rewritten.selections as FieldNode[]));\n }\n\n const mergedOperation: OperationDefinitionNode = {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n variableDefinitions,\n selectionSet: {\n kind: Kind.SELECTION_SET,\n selections,\n },\n };\n\n const mergedDocument: DocumentNode = {\n kind: Kind.DOCUMENT,\n definitions: [mergedOperation, ...allFragments.values()],\n };\n return [mergedDocument, mergedVariables as TVariables];\n }\n\n resolve(data: BatchQueryData) {\n for (const { alias, deferred } of this.queries) {\n if (Object.hasOwn(data, alias) && data[alias] !== undefined) {\n deferred.resolve(data[alias]);\n } else {\n deferred.reject(\n UnexpectedError.from(\n `Missing response data for query alias \"${alias}\". Please report this issue to the Avara team.`,\n ),\n );\n }\n }\n }\n}\n\nfunction extractQueryParts(\n document: TypedDocumentNode<StandardData<unknown>>,\n): [OperationDefinitionNode, FragmentDefinitionNode[]] {\n let operation: OperationDefinitionNode | undefined;\n const fragments: FragmentDefinitionNode[] = [];\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n invariant(\n definition.operation === OperationTypeNode.QUERY,\n 'Only query operations are supported',\n );\n invariant(\n operation === undefined,\n 'Only one operation definition is supported',\n );\n\n operation = definition;\n break;\n\n case Kind.FRAGMENT_DEFINITION:\n fragments.push(definition);\n break;\n\n default:\n never(`Unexpected definition kind: ${definition.kind}`);\n }\n }\n\n invariant(operation, 'No operation definition found in the document');\n\n return [operation, fragments];\n}\n","import { invariant } from '@aave/types';\nimport type { AnyVariables, TypedDocumentNode } from '@urql/core';\nimport {\n type FragmentDefinitionNode,\n type FragmentSpreadNode,\n Kind,\n type OperationDefinitionNode,\n type SelectionSetNode,\n visit,\n} from 'graphql';\nimport type { Maybe } from 'graphql/jsutils/Maybe';\nimport type { ObjMap } from 'graphql/jsutils/ObjMap';\n\nclass FragmentDeduplicator<TResult, TVariables extends AnyVariables> {\n private _fragments: ObjMap<FragmentDefinitionNode> | undefined;\n private _fragmentSpreads: Map<SelectionSetNode, Array<FragmentSpreadNode>>;\n private _recursivelyReferencedFragments: Map<\n OperationDefinitionNode,\n Array<FragmentDefinitionNode>\n >;\n\n constructor(\n private readonly document: TypedDocumentNode<TResult, TVariables>,\n ) {\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n }\n\n dedupe(): TypedDocumentNode<TResult, TVariables> {\n const operationDefs: Array<OperationDefinitionNode> = [];\n const fragmentDefs: Array<FragmentDefinitionNode> = [];\n\n const toRemove: Array<FragmentDefinitionNode> = [];\n\n visit(this.document, {\n OperationDefinition: (node) => {\n operationDefs.push(node);\n return false;\n },\n FragmentDefinition: (node) => {\n fragmentDefs.push(node);\n return false;\n },\n Document: {\n leave: () => {\n const fragmentNameUsed = Object.create(null);\n for (const operation of operationDefs) {\n for (const fragment of this.getRecursivelyReferencedFragments(\n operation,\n )) {\n fragmentNameUsed[fragment.name.value] = true;\n }\n }\n\n for (const fragmentDef of fragmentDefs) {\n const fragName = fragmentDef.name.value;\n if (fragmentNameUsed[fragName] !== true) {\n toRemove.push(fragmentDef);\n }\n }\n },\n },\n });\n\n return visit(this.document, {\n FragmentDefinition: (node) => {\n if (toRemove.indexOf(node) !== -1) {\n return null;\n }\n return node;\n },\n });\n }\n\n private getRecursivelyReferencedFragments(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<FragmentDefinitionNode> {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n if (!fragments) {\n fragments = [];\n const collectedNames = Object.create(null);\n const nodesToVisit: Array<SelectionSetNode> = [operation.selectionSet];\n let node: SelectionSetNode | undefined;\n // biome-ignore lint/suspicious/noAssignInExpressions: for now\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n const fragment = this.getFragment(fragName);\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n return fragments;\n }\n\n private getFragmentSpreads(\n node: SelectionSetNode,\n ): ReadonlyArray<FragmentSpreadNode> {\n let spreads = this._fragmentSpreads.get(node);\n if (!spreads) {\n spreads = [];\n const setsToVisit: Array<SelectionSetNode> = [node];\n let set: SelectionSetNode | undefined;\n // biome-ignore lint/suspicious/noAssignInExpressions: safe\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n this._fragmentSpreads.set(node, spreads);\n }\n return spreads;\n }\n\n private getFragment(name: string): Maybe<FragmentDefinitionNode> {\n let fragments: ObjMap<FragmentDefinitionNode>;\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n for (const defNode of this.document.definitions) {\n if (defNode.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n this._fragments = fragments;\n }\n return fragments[name];\n }\n}\n\n/**\n * @internal\n */\nexport class FragmentResolver {\n private constructor(\n private readonly fragments: Map<string, FragmentDefinitionNode>,\n ) {}\n\n static from(nodes: TypedDocumentNode[]): FragmentResolver {\n const fragments = new Map<string, FragmentDefinitionNode>();\n\n for (const fragment of nodes) {\n for (const definition of fragment.definitions) {\n invariant(\n definition.kind === 'FragmentDefinition',\n `expected a fragment definition, got ${fragment.definitions[0]?.kind}`,\n );\n invariant(\n !fragments.has(definition.name.value),\n `Duplicate fragment detected. A fragment named \"${definition.name.value}\" has already been provided, either directly or as part of another fragment document.`,\n );\n fragments.set(definition.name.value, definition);\n }\n }\n\n return new FragmentResolver(fragments);\n }\n\n replaceFrom<TResult, TVariables extends AnyVariables>(\n document: TypedDocumentNode<TResult, TVariables>,\n ): TypedDocumentNode<TResult, TVariables> {\n const injected = visit(document, {\n FragmentDefinition: (node) => {\n if (this.fragments.has(node.name.value)) {\n return null;\n }\n return node;\n },\n Document: {\n leave: (node) => {\n return {\n ...node,\n definitions: [...node.definitions, ...this.fragments.values()],\n };\n },\n },\n });\n\n return new FragmentDeduplicator(injected).dedupe();\n }\n}\n","import type { ClientConfig } from './config';\nimport { type EnvironmentConfig, production } from './environments';\nimport { FragmentResolver } from './fragments';\n\n/**\n * @internal\n */\nexport type Context = {\n environment: EnvironmentConfig;\n headers?: Record<string, string>;\n cache: boolean;\n debug: boolean;\n fragments: FragmentResolver;\n};\n\n/**\n * @internal\n */\nexport function configureContext(from: ClientConfig): Context {\n return {\n environment: from.environment ?? production,\n headers: from.headers,\n cache: from.cache ?? false,\n debug: from.debug ?? false,\n fragments: FragmentResolver.from(from.fragments ?? []),\n };\n}\n","type LogMethod = (...args: unknown[]) => void;\n\nexport enum LogLevel {\n TRACE = 0,\n DEBUG = 1,\n INFO = 2,\n WARN = 3,\n ERROR = 4,\n SILENT = 5,\n}\n\nexport class Logger {\n private level: LogLevel;\n private name: string;\n\n private constructor(name: string, level: LogLevel = LogLevel.WARN) {\n this.name = name;\n this.level = level;\n this.replaceMethods();\n }\n\n static named(name: string, level: LogLevel = LogLevel.WARN): Logger {\n return new Logger(name, level);\n }\n\n trace: LogMethod = () => {};\n debug: LogMethod = () => {};\n info: LogMethod = () => {};\n warn: LogMethod = () => {};\n error: LogMethod = () => {};\n log: LogMethod = () => {}; // alias for debug\n\n private replaceMethods() {\n (['trace', 'debug', 'info', 'warn', 'error'] as const).forEach(\n (methodName, index) => {\n if (index >= this.level) {\n this[methodName] = () => {};\n } else {\n this[methodName] = (...args) =>\n console[methodName === 'debug' ? 'log' : methodName](\n `[${this.name}]`,\n ...args,\n );\n }\n },\n );\n this.log = this.debug;\n }\n}\n","import type {\n ERC712Signature,\n ExecutionPlan,\n HasProcessedKnownTransactionRequest,\n InsufficientBalanceError,\n OperationType,\n PermitTypedDataResponse,\n} from '@aave/graphql';\nimport type { ResultAsync, TxHash } from '@aave/types';\nimport type { SigningError, TransactionError, ValidationError } from './errors';\n\nexport type TransactionExecutionResult = {\n txHash: TxHash;\n operation: OperationType | null;\n};\n\n/**\n * @internal\n */\nexport function isHasProcessedKnownTransactionRequest(\n result: TransactionExecutionResult,\n): result is HasProcessedKnownTransactionRequest {\n return result.operation !== null;\n}\n\nexport type ExecutionPlanHandler<T extends ExecutionPlan = ExecutionPlan> = (\n result: T,\n) => ResultAsync<\n TransactionExecutionResult,\n SigningError | TransactionError | ValidationError<InsufficientBalanceError>\n>;\n\nexport type PermitHandler = (\n result: PermitTypedDataResponse,\n) => ResultAsync<ERC712Signature, SigningError>;\n","/**\n * @internal\n */\nexport function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type {\n HasProcessedKnownTransactionRequest,\n StandardData,\n} from '@aave/graphql';\nimport {\n errAsync,\n invariant,\n okAsync,\n ResultAsync,\n type TxHash,\n} from '@aave/types';\nimport {\n type AnyVariables,\n createClient,\n type Exchange,\n fetchExchange,\n type OperationResult,\n type OperationResultSource,\n type TypedDocumentNode,\n type Client as UrqlClient,\n} from '@urql/core';\nimport { hasProcessedKnownTransaction } from './actions';\nimport { BatchQueryBuilder } from './batch';\nimport type { ClientConfig } from './config';\nimport { type Context, configureContext } from './context';\nimport { TimeoutError, UnexpectedError } from './errors';\nimport { Logger, LogLevel } from './logger';\nimport {\n isHasProcessedKnownTransactionRequest,\n type TransactionExecutionResult,\n} from './types';\nimport { delay } from './utils';\n\nfunction takeValue<T>({\n data,\n error,\n}: OperationResult<StandardData<T> | undefined, AnyVariables>): T {\n invariant(data, `Expected a value, got: ${error?.message}`);\n return data.value;\n}\n\nexport class AaveClient {\n /**\n * @internal\n */\n public readonly urql: UrqlClient;\n\n private readonly logger: Logger;\n\n private constructor(private readonly context: Context) {\n this.logger = Logger.named(\n this.constructor.name,\n context.debug ? LogLevel.DEBUG : LogLevel.SILENT,\n );\n\n this.urql = createClient({\n url: context.environment.backend,\n fetchOptions: {\n credentials: 'omit',\n headers: context.headers,\n },\n exchanges: this.exchanges(),\n });\n }\n\n /**\n * Create a new instance of the {@link AaveClient}.\n *\n * ```ts\n * const client = AaveClient.create({\n * environment: production,\n * origin: 'http://example.com',\n * });\n * ```\n *\n * @param options - The options to configure the client.\n * @returns The new instance of the client.\n */\n static create(options?: ClientConfig): AaveClient {\n return new AaveClient(configureContext(options ?? {}));\n }\n\n /**\n * Execute a GraphQL query operation.\n *\n * @param document - The GraphQL document to execute.\n * @param variables - The variables to pass to the operation.\n * @returns The result of the operation.\n */\n public query<TValue, TVariables extends AnyVariables>(\n document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n variables: TVariables,\n ): ResultAsync<TValue, UnexpectedError> {\n const query = this.context.fragments.replaceFrom(document);\n return this.resultFrom(this.urql.query(query, variables)).map(takeValue);\n }\n\n /**\n * Execute a GraphQL mutation operation.\n *\n * @param document - The GraphQL document to execute.\n * @param variables - The variables to pass to the operation.\n * @returns The result of the operation.\n */\n public mutation<TValue, TVariables extends AnyVariables>(\n document: TypedDocumentNode<StandardData<TValue>, TVariables>,\n variables: TVariables,\n ): ResultAsync<TValue, UnexpectedError> {\n return this.resultFrom(this.urql.mutation(document, variables)).map(\n takeValue,\n );\n }\n\n // TODO update example below\n /**\n * Execute a batch of GraphQL query operations.\n *\n * @alpha This is an alpha API and may be subject to breaking changes.\n *\n * ```ts\n * const result = await client.batch((c) => [\n * fetchAccount(c, { address: evmAddress('0x1234…') }).map(nonNullable),\n * fetchBalancesBulk(c, {\n * includeNative: true,\n * tokens: [\n * evmAddress(\"0x5678…\"),\n * evmAddress(\"0x9012…\"),\n * ],\n * }),\n * ]);\n *\n * // const result: Result<\n * // [\n * // Account,\n * // AnyAccountBalance[],\n * // ],\n * // UnauthenticatedError | UnexpectedError\n * // >\n * ```\n *\n * @param cb - The callback with the scoped client to execute the actions with.\n * @returns The results of all queries in the same order as they were added.\n */\n batch<T1, T2, E1 extends Error, E2 extends Error>(\n cb: (client: this) => [ResultAsync<T1, E1>, ResultAsync<T2, E2>],\n ): ResultAsync<[T1, T2], E1 | E2>;\n batch<T1, T2, T3, E1 extends Error, E2 extends Error, E3 extends Error>(\n cb: (\n client: this,\n ) => [ResultAsync<T1, E1>, ResultAsync<T2, E2>, ResultAsync<T3, E3>],\n ): ResultAsync<[T1, T2, T3], E1 | E2 | E3>;\n batch<\n T1,\n T2,\n T3,\n T4,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ],\n ): ResultAsync<[T1, T2, T3, T4], E1 | E2 | E3 | E4>;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ],\n ): ResultAsync<[T1, T2, T3, T4, T5], E1 | E2 | E3 | E4 | E5>;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ],\n ): ResultAsync<[T1, T2, T3, T4, T5, T6], E1 | E2 | E3 | E4 | E5 | E6>;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7],\n E1 | E2 | E3 | E4 | E5 | E6 | E7\n >;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n E8 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ResultAsync<T8, E8>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7, T8],\n E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8\n >;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n E8 extends Error,\n E9 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ResultAsync<T8, E8>,\n ResultAsync<T9, E9>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7, T8, T9],\n E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9\n >;\n batch<\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n E1 extends Error,\n E2 extends Error,\n E3 extends Error,\n E4 extends Error,\n E5 extends Error,\n E6 extends Error,\n E7 extends Error,\n E8 extends Error,\n E9 extends Error,\n E10 extends Error,\n >(\n cb: (\n client: this,\n ) => [\n ResultAsync<T1, E1>,\n ResultAsync<T2, E2>,\n ResultAsync<T3, E3>,\n ResultAsync<T4, E4>,\n ResultAsync<T5, E5>,\n ResultAsync<T6, E6>,\n ResultAsync<T7, E7>,\n ResultAsync<T8, E8>,\n ResultAsync<T9, E9>,\n ResultAsync<T10, E10>,\n ],\n ): ResultAsync<\n [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10],\n E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | E9 | E10\n >;\n batch<T, E extends Error>(\n cb: (client: this) => ResultAsync<T, E>[],\n ): ResultAsync<T[], E>;\n batch(\n cb: (client: this) => ResultAsync<unknown[], unknown>[],\n ): ResultAsync<unknown[], unknown> {\n const builder = new BatchQueryBuilder();\n\n const client: this = Object.create(this, {\n query: {\n value: builder.addQuery,\n },\n });\n\n const combined = ResultAsync.combine(cb(client));\n const [document, variables] = builder.build();\n\n const query = this.context.fragments.replaceFrom(document);\n\n return this.resultFrom(this.urql.query(query, variables))\n .andTee(({ data, error }) => {\n invariant(data, `Expected a value, got: ${error?.message}`);\n builder.resolve(data);\n })\n .andThen(() => combined);\n }\n\n /**\n * @internal\n */\n readonly waitForSupportedTransaction = (\n result: TransactionExecutionResult,\n ): ResultAsync<TxHash, TimeoutError | UnexpectedError> => {\n if (isHasProcessedKnownTransactionRequest(result)) {\n return this.waitForTransaction(result);\n }\n return okAsync(result.txHash);\n };\n\n /**\n * Given the transaction hash of an Aave protocol transaction, wait for the transaction to be\n * processed by the Aave v3 API.\n *\n * Returns a {@link TimeoutError} if the transaction is not processed within the expected timeout period.\n *\n * @param result - The transaction execution result to wait for.\n * @returns The transaction hash or a TimeoutError\n */\n readonly waitForTransaction = (\n result: TransactionExecutionResult,\n ): ResultAsync<TxHash, TimeoutError | UnexpectedError> => {\n invariant(\n isHasProcessedKnownTransactionRequest(result),\n `Received a transaction result for an untracked operation. Make sure you're following the instructions in the docs.`,\n );\n\n return ResultAsync.fromPromise(\n this.pollTransactionStatus(result),\n (err) => {\n if (err instanceof TimeoutError || err instanceof UnexpectedError) {\n return err;\n }\n return UnexpectedError.from(err);\n },\n );\n };\n\n protected async pollTransactionStatus(\n request: HasProcessedKnownTransactionRequest,\n ): Promise<TxHash> {\n const startedAt = Date.now();\n\n while (Date.now() - startedAt < this.context.environment.indexingTimeout) {\n const processed = await hasProcessedKnownTransaction(this, request).match(\n (ok) => ok,\n (err) => {\n throw err;\n },\n );\n\n if (processed) {\n return request.txHash;\n }\n\n await delay(this.context.environment.pollingInterval);\n }\n throw TimeoutError.from(\n `Timeout waiting for transaction ${request.txHash} to be processed.`,\n );\n }\n\n protected exchanges(): Exchange[] {\n return [fetchExchange];\n }\n\n protected resultFrom<TData, TVariables extends AnyVariables>(\n source: OperationResultSource<OperationResult<TData, TVariables>>,\n ): ResultAsync<OperationResult<TData, TVariables>, UnexpectedError> {\n return ResultAsync.fromPromise(source.toPromise(), (err: unknown) => {\n this.logger.error(err);\n console.log(err);\n return UnexpectedError.from(err);\n }).andThen((result) => {\n if (result.error?.networkError) {\n return errAsync(UnexpectedError.from(result.error.networkError));\n }\n return okAsync(result);\n });\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- import {e,d,g}from'./chunk-QYPBLR6B.js';import {chainId,ResultAsync,txHash,errAsync,okAsync,invariant,signatureFrom}from'@aave/types';import {defineChain}from'viem';import {waitForTransactionReceipt,signTypedData,sendTransaction}from'viem/actions';import {zksync,scroll,polygon,optimism,metis,linea,gnosis,celo,bsc,baseSepolia,base,avalanche,arbitrum,mainnet}from'viem/chains';var v=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"}}}),P=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"}}}),j={[chainId(mainnet.id)]:mainnet,[chainId(arbitrum.id)]:arbitrum,[chainId(avalanche.id)]:avalanche,[chainId(base.id)]:base,[chainId(baseSepolia.id)]:baseSepolia,[chainId(bsc.id)]:bsc,[chainId(celo.id)]:celo,[chainId(gnosis.id)]:gnosis,[chainId(linea.id)]:linea,[chainId(metis.id)]:metis,[chainId(optimism.id)]:optimism,[chainId(polygon.id)]:polygon,[chainId(scroll.id)]:scroll,[chainId(zksync.id)]:zksync,[chainId(v.id)]:v,[chainId(P.id)]:P};async function $(a,n){return sendTransaction(a,{account:n.from,data:n.data,to:n.to,value:BigInt(n.value),chain:a.chain})}function F(a,n,e$1){let t=a?.blockExplorers?.default?.url,D=t&&`${t.replace(/\/+$/,"")}/tx/${n}`;return e.new({txHash:n,request:e$1,link:D})}function o(a,n){return ResultAsync.fromPromise($(a,n),e=>d.from(e)).map(async e=>waitForTransactionReceipt(a,{hash:e,pollingInterval:100,retryCount:20,retryDelay:50})).andThen(e=>{let t=txHash(e.transactionHash);return e.status==="reverted"?errAsync(F(a.chain,t,n)):okAsync({txHash:t,operation:n.operation})})}function J(a){return n=>{switch(n.__typename){case "TransactionRequest":return o(a,n);case "ApprovalRequired":return o(a,n.approval).andThen(()=>o(a,n.originalTransaction));case "InsufficientBalanceError":return errAsync(g.fromGqlNode(n))}}}function K(a){return n=>(invariant(a.account,"Wallet account is required"),ResultAsync.fromPromise(signTypedData(a,{account:a.account,domain:n.domain,types:n.types,primaryType:n.primaryType,message:n.message}),e=>d.from(e)).map(e=>({deadline:n.message.deadline,value:signatureFrom(e)})))}
2
- export{j as a,F as b,o as c,J as d,K as e};//# sourceMappingURL=chunk-G5WP6QBY.js.map
3
- //# sourceMappingURL=chunk-G5WP6QBY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/viem.ts"],"names":["sonic","defineChain","soneium","supportedChains","chainId","mainnet","arbitrum","avalanche","base","baseSepolia","bsc","celo","gnosis","linea","metis","optimism","polygon","scroll","zksync","sendTransaction","walletClient","request","sendEip1559Transaction","transactionError","chain","txHash","baseUrl","link","TransactionError","sendTransactionAndWait","ResultAsync","err","SigningError","hash","waitForTransactionReceipt","receipt","errAsync","okAsync","sendWith","result","ValidationError","signERC20PermitWith","invariant","signTypedData","hex","signatureFrom"],"mappings":"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","file":"chunk-G5WP6QBY.js","sourcesContent":["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"]}
@@ -1,2 +0,0 @@
1
- import {OrderDirection,ChainsFilter,SavingsGhoBalanceQuery,SavingsGhoWithdrawQuery,SavingsGhoDepositQuery,UserMeritRewardsQuery,MarketsQuery,MarketQuery,UserMarketStateQuery,HealthQuery,ChainsQuery,UsdExchangeRatesQuery,HasProcessedKnownTransactionQuery,HealthFactorPreviewQuery,PermitTypedDataQuery,ReserveQuery,BorrowAPYHistoryQuery,SupplyAPYHistoryQuery,BorrowQuery,SupplyQuery,RepayQuery,WithdrawQuery,UserSetEmodeQuery,VaultDepositQuery,VaultRedeemSharesQuery,VaultDeployQuery,VaultSetFeeQuery,VaultWithdrawFeesQuery,VaultWithdrawQuery,VaultMintSharesQuery,CollateralToggleQuery,LiquidateQuery,ApproveBorrowCreditDelegationQuery,CreditDelegateeAllowanceQuery,UserSuppliesQuery,UserBorrowsQuery,UserTransactionHistoryQuery,VaultQuery,VaultsQuery,UserVaultsQuery,VaultPreviewDepositQuery,VaultPreviewMintQuery,VaultPreviewWithdrawQuery,VaultPreviewRedeemQuery,VaultUserTransactionHistoryQuery,VaultUserActivityQuery}from'@aave/graphql';function ee(e,t){return e.query(SavingsGhoBalanceQuery,{request:t})}function te(e,t){return e.query(SavingsGhoWithdrawQuery,{request:t})}function re(e,t){return e.query(SavingsGhoDepositQuery,{request:t})}function ne(e,t){return e.query(UserMeritRewardsQuery,{request:t})}var r={tokenName:OrderDirection.Asc};function ie(e,{chainIds:t,borrowsOrderBy:s=r,suppliesOrderBy:u=r,user:n}){return e.query(MarketsQuery,{request:{chainIds:t,user:n},borrowsOrderBy:s,suppliesOrderBy:u})}function pe(e,{address:t,chainId:s,user:u,borrowsOrderBy:n=r,suppliesOrderBy:o=r}){return e.query(MarketQuery,{request:{address:t,chainId:s,user:u},borrowsOrderBy:n,suppliesOrderBy:o})}function ye(e,t){return e.query(UserMarketStateQuery,{request:t})}function Re(e){return e.query(HealthQuery,{})}function de(e,t=ChainsFilter.ALL){return e.query(ChainsQuery,{filter:t})}function qe(e,t){return e.query(UsdExchangeRatesQuery,{request:t})}function Ae(e,t){return e.query(HasProcessedKnownTransactionQuery,{request:t})}function ve(e,t){return e.query(HealthFactorPreviewQuery,{request:t})}function Ue(e,t){return e.query(PermitTypedDataQuery,{request:t})}function we(e,t){return e.query(ReserveQuery,{request:t})}function Ce(e,t){return e.query(BorrowAPYHistoryQuery,{request:t})}function he(e,t){return e.query(SupplyAPYHistoryQuery,{request:t})}function Se(e,t){return e.query(BorrowQuery,{request:t})}function Qe(e,t){return e.query(SupplyQuery,{request:t})}function Te(e,t){return e.query(RepayQuery,{request:t})}function ge(e,t){return e.query(WithdrawQuery,{request:t})}function ke(e,t){return e.query(UserSetEmodeQuery,{request:t})}function Me(e,t){return e.query(VaultDepositQuery,{request:t})}function Be(e,t){return e.query(VaultRedeemSharesQuery,{request:t})}function De(e,t){return e.query(VaultDeployQuery,{request:t})}function He(e,t){return e.query(VaultSetFeeQuery,{request:t})}function We(e,t){return e.query(VaultWithdrawFeesQuery,{request:t})}function Fe(e,t){return e.query(VaultWithdrawQuery,{request:t})}function Ge(e,t){return e.query(VaultMintSharesQuery,{request:t})}function Oe(e,t){return e.query(CollateralToggleQuery,{request:t})}function Ye(e,t){return e.query(LiquidateQuery,{request:t})}function be(e,t){return e.query(ApproveBorrowCreditDelegationQuery,{request:t})}function Ie(e,t){return e.query(CreditDelegateeAllowanceQuery,{request:t})}function Ne(e,t){return e.query(UserSuppliesQuery,{request:t})}function je(e,t){return e.query(UserBorrowsQuery,{request:t})}function ze(e,t){return e.query(UserTransactionHistoryQuery,{request:t})}function Ze(e,t){return e.query(VaultQuery,{request:t})}function _e(e,t){return e.query(VaultsQuery,{request:t})}function $e(e,t){return e.query(UserVaultsQuery,{request:t})}function et(e,t){return e.query(VaultPreviewDepositQuery,{request:t})}function tt(e,t){return e.query(VaultPreviewMintQuery,{request:t})}function rt(e,t){return e.query(VaultPreviewWithdrawQuery,{request:t})}function st(e,t){return e.query(VaultPreviewRedeemQuery,{request:t})}function ut(e,t){return e.query(VaultUserTransactionHistoryQuery,{request:t})}function nt(e,t){return e.query(VaultUserActivityQuery,{request:t})}export{We as A,Fe as B,Ge as C,Oe as D,Ye as E,be as F,Ie as G,Ne as H,je as I,ze as J,Ze as K,_e as L,$e as M,et as N,tt as O,rt as P,st as Q,ut as R,nt as S,ee as a,te as b,re as c,ne as d,r as e,ie as f,pe as g,ye as h,Re as i,de as j,qe as k,Ae as l,ve as m,Ue as n,we as o,Ce as p,he as q,Se as r,Qe as s,Te as t,ge as u,ke as v,Me as w,Be as x,De as y,He as z};//# sourceMappingURL=chunk-M6NMMOPY.js.map
2
- //# sourceMappingURL=chunk-M6NMMOPY.js.map