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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +6 -3
  2. package/dist/{AaveClient-L3v8kWvn.d.cts → AaveClient-BIfAdE-4.d.cts} +2 -1
  3. package/dist/{AaveClient-CgHY2iS9.d.ts → AaveClient-C36zcfbL.d.ts} +2 -1
  4. package/dist/actions/index.cjs +1 -1
  5. package/dist/actions/index.cjs.map +1 -1
  6. package/dist/actions/index.d.cts +228 -135
  7. package/dist/actions/index.d.ts +228 -135
  8. package/dist/actions/index.js +1 -1
  9. package/dist/chunk-3HZQC3YV.js +3 -0
  10. package/dist/chunk-3HZQC3YV.js.map +1 -0
  11. package/dist/chunk-MKZBFAXA.js +2 -0
  12. package/dist/chunk-MKZBFAXA.js.map +1 -0
  13. package/dist/ethers.cjs +1 -1
  14. package/dist/ethers.cjs.map +1 -1
  15. package/dist/ethers.d.cts +5 -7
  16. package/dist/ethers.d.ts +5 -7
  17. package/dist/ethers.js +1 -1
  18. package/dist/ethers.js.map +1 -1
  19. package/dist/index.cjs +2 -2
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +3 -3
  22. package/dist/index.d.ts +3 -3
  23. package/dist/index.js +2 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/{options-vB2peXdE.d.cts → options-BX6n3sbh.d.cts} +17 -1
  26. package/dist/{options-vB2peXdE.d.ts → options-BX6n3sbh.d.ts} +17 -1
  27. package/dist/privy.cjs +2 -2
  28. package/dist/privy.cjs.map +1 -1
  29. package/dist/privy.d.cts +3 -5
  30. package/dist/privy.d.ts +3 -5
  31. package/dist/privy.js +1 -1
  32. package/dist/privy.js.map +1 -1
  33. package/dist/testing.d.ts +3840 -0
  34. package/dist/testing.js +546 -0
  35. package/dist/testing.js.map +1 -0
  36. package/dist/thirdweb.cjs +1 -2
  37. package/dist/thirdweb.cjs.map +1 -1
  38. package/dist/thirdweb.d.cts +15 -11
  39. package/dist/thirdweb.d.ts +15 -11
  40. package/dist/thirdweb.js +1 -2
  41. package/dist/thirdweb.js.map +1 -1
  42. package/dist/{types-Bu63z0x6.d.cts → types-CQvue0x0.d.cts} +4 -4
  43. package/dist/{types-Bu63z0x6.d.ts → types-CQvue0x0.d.ts} +4 -4
  44. package/dist/viem.cjs +2 -2
  45. package/dist/viem.cjs.map +1 -1
  46. package/dist/viem.d.cts +23 -10
  47. package/dist/viem.d.ts +23 -10
  48. package/dist/viem.js +1 -1
  49. package/package.json +11 -12
  50. package/dist/chunk-2TNQ52OQ.js +0 -3
  51. package/dist/chunk-2TNQ52OQ.js.map +0 -1
  52. package/dist/chunk-BQFM5RT3.js +0 -2
  53. package/dist/chunk-BQFM5RT3.js.map +0 -1
  54. package/dist/chunk-BQNVAUS6.js +0 -3
  55. package/dist/chunk-BQNVAUS6.js.map +0 -1
  56. package/dist/test-utils.cjs +0 -3
  57. package/dist/test-utils.cjs.map +0 -1
  58. package/dist/test-utils.d.cts +0 -49
  59. package/dist/test-utils.d.ts +0 -49
  60. package/dist/test-utils.js +0 -3
  61. package/dist/test-utils.js.map +0 -1
@@ -1,49 +0,0 @@
1
- import * as _aave_graphql from '@aave/graphql';
2
- import * as _aave_types from '@aave/types';
3
- import { EvmAddress, BigDecimal, ResultAsync } from '@aave/types';
4
- import * as _aave_core from '@aave/core';
5
- import { UnexpectedError, GraphQLErrorCode } from '@aave/core';
6
- import { WalletClient, Transport, Chain, Account } from 'viem';
7
- import { A as AaveClient } from './AaveClient-L3v8kWvn.cjs';
8
- import '@urql/core';
9
- import './types-Bu63z0x6.cjs';
10
-
11
- declare const environment: _aave_core.EnvironmentConfig;
12
- declare const ETHEREUM_FORK_ID: _aave_types.ChainId;
13
- declare const ETHEREUM_GHO_ADDRESS: EvmAddress;
14
- declare const ETHEREUM_WETH_ADDRESS: EvmAddress;
15
- declare const ETHEREUM_USDC_ADDRESS: EvmAddress;
16
- declare const ETHEREUM_USDS_ADDRESS: EvmAddress;
17
- declare const ETHEREUM_WSTETH_ADDRESS: EvmAddress;
18
- declare const ETHEREUM_1INCH_ADDRESS: EvmAddress;
19
- declare const ETHEREUM_SPOKE_CORE_ADDRESS: EvmAddress;
20
- declare const ETHEREUM_SPOKE_CORE_ID: _aave_graphql.SpokeId;
21
- declare const ETHEREUM_SPOKE_ETHENA_ADDRESS: EvmAddress;
22
- declare const ETHEREUM_SPOKE_FRONTIER_ADDRESS: EvmAddress;
23
- declare const ETHEREUM_SPOKE_LST_ADDRESS: EvmAddress;
24
- declare const ETHEREUM_SPOKE_ISO_STABLE_ID: _aave_graphql.SpokeId;
25
- declare const ETHEREUM_HUB_CORE_ADDRESS: EvmAddress;
26
- declare const ETHEREUM_HUB_CORE_ID: _aave_graphql.HubId;
27
- declare const ETHEREUM_FORK_RPC_URL: string;
28
- declare const ETHEREUM_FORK_RPC_URL_ADMIN: string;
29
- declare const client: AaveClient;
30
- declare function createNewWallet(privateKey?: `0x${string}`): Promise<WalletClient<Transport, Chain, Account>>;
31
- declare function fundNativeAddress(address: EvmAddress, amount?: BigDecimal): ResultAsync<string, UnexpectedError>;
32
- declare function fundErc20Address(address: EvmAddress, token: {
33
- address: EvmAddress;
34
- amount: BigDecimal;
35
- decimals?: number;
36
- }): ResultAsync<string, Error>;
37
- declare function createGraphQLErrorObject(code: GraphQLErrorCode): {
38
- message: string;
39
- locations: never[];
40
- path: never[];
41
- extensions: {
42
- code: GraphQLErrorCode;
43
- };
44
- };
45
- declare function wait(ms: number): Promise<unknown>;
46
- declare function getBalance(address: EvmAddress, tokenAddress: EvmAddress): Promise<BigDecimal>;
47
- declare function getNativeBalance(address: EvmAddress): Promise<BigDecimal>;
48
-
49
- export { ETHEREUM_1INCH_ADDRESS, ETHEREUM_FORK_ID, ETHEREUM_FORK_RPC_URL, ETHEREUM_FORK_RPC_URL_ADMIN, ETHEREUM_GHO_ADDRESS, ETHEREUM_HUB_CORE_ADDRESS, ETHEREUM_HUB_CORE_ID, ETHEREUM_SPOKE_CORE_ADDRESS, ETHEREUM_SPOKE_CORE_ID, ETHEREUM_SPOKE_ETHENA_ADDRESS, ETHEREUM_SPOKE_FRONTIER_ADDRESS, ETHEREUM_SPOKE_ISO_STABLE_ID, ETHEREUM_SPOKE_LST_ADDRESS, ETHEREUM_USDC_ADDRESS, ETHEREUM_USDS_ADDRESS, ETHEREUM_WETH_ADDRESS, ETHEREUM_WSTETH_ADDRESS, client, createGraphQLErrorObject, createNewWallet, environment, fundErc20Address, fundNativeAddress, getBalance, getNativeBalance, wait };
@@ -1,49 +0,0 @@
1
- import * as _aave_graphql from '@aave/graphql';
2
- import * as _aave_types from '@aave/types';
3
- import { EvmAddress, BigDecimal, ResultAsync } from '@aave/types';
4
- import * as _aave_core from '@aave/core';
5
- import { UnexpectedError, GraphQLErrorCode } from '@aave/core';
6
- import { WalletClient, Transport, Chain, Account } from 'viem';
7
- import { A as AaveClient } from './AaveClient-CgHY2iS9.js';
8
- import '@urql/core';
9
- import './types-Bu63z0x6.js';
10
-
11
- declare const environment: _aave_core.EnvironmentConfig;
12
- declare const ETHEREUM_FORK_ID: _aave_types.ChainId;
13
- declare const ETHEREUM_GHO_ADDRESS: EvmAddress;
14
- declare const ETHEREUM_WETH_ADDRESS: EvmAddress;
15
- declare const ETHEREUM_USDC_ADDRESS: EvmAddress;
16
- declare const ETHEREUM_USDS_ADDRESS: EvmAddress;
17
- declare const ETHEREUM_WSTETH_ADDRESS: EvmAddress;
18
- declare const ETHEREUM_1INCH_ADDRESS: EvmAddress;
19
- declare const ETHEREUM_SPOKE_CORE_ADDRESS: EvmAddress;
20
- declare const ETHEREUM_SPOKE_CORE_ID: _aave_graphql.SpokeId;
21
- declare const ETHEREUM_SPOKE_ETHENA_ADDRESS: EvmAddress;
22
- declare const ETHEREUM_SPOKE_FRONTIER_ADDRESS: EvmAddress;
23
- declare const ETHEREUM_SPOKE_LST_ADDRESS: EvmAddress;
24
- declare const ETHEREUM_SPOKE_ISO_STABLE_ID: _aave_graphql.SpokeId;
25
- declare const ETHEREUM_HUB_CORE_ADDRESS: EvmAddress;
26
- declare const ETHEREUM_HUB_CORE_ID: _aave_graphql.HubId;
27
- declare const ETHEREUM_FORK_RPC_URL: string;
28
- declare const ETHEREUM_FORK_RPC_URL_ADMIN: string;
29
- declare const client: AaveClient;
30
- declare function createNewWallet(privateKey?: `0x${string}`): Promise<WalletClient<Transport, Chain, Account>>;
31
- declare function fundNativeAddress(address: EvmAddress, amount?: BigDecimal): ResultAsync<string, UnexpectedError>;
32
- declare function fundErc20Address(address: EvmAddress, token: {
33
- address: EvmAddress;
34
- amount: BigDecimal;
35
- decimals?: number;
36
- }): ResultAsync<string, Error>;
37
- declare function createGraphQLErrorObject(code: GraphQLErrorCode): {
38
- message: string;
39
- locations: never[];
40
- path: never[];
41
- extensions: {
42
- code: GraphQLErrorCode;
43
- };
44
- };
45
- declare function wait(ms: number): Promise<unknown>;
46
- declare function getBalance(address: EvmAddress, tokenAddress: EvmAddress): Promise<BigDecimal>;
47
- declare function getNativeBalance(address: EvmAddress): Promise<BigDecimal>;
48
-
49
- export { ETHEREUM_1INCH_ADDRESS, ETHEREUM_FORK_ID, ETHEREUM_FORK_RPC_URL, ETHEREUM_FORK_RPC_URL_ADMIN, ETHEREUM_GHO_ADDRESS, ETHEREUM_HUB_CORE_ADDRESS, ETHEREUM_HUB_CORE_ID, ETHEREUM_SPOKE_CORE_ADDRESS, ETHEREUM_SPOKE_CORE_ID, ETHEREUM_SPOKE_ETHENA_ADDRESS, ETHEREUM_SPOKE_FRONTIER_ADDRESS, ETHEREUM_SPOKE_ISO_STABLE_ID, ETHEREUM_SPOKE_LST_ADDRESS, ETHEREUM_USDC_ADDRESS, ETHEREUM_USDS_ADDRESS, ETHEREUM_WETH_ADDRESS, ETHEREUM_WSTETH_ADDRESS, client, createGraphQLErrorObject, createNewWallet, environment, fundErc20Address, fundNativeAddress, getBalance, getNativeBalance, wait };
@@ -1,3 +0,0 @@
1
- import {c,b,d as d$1}from'./chunk-BQNVAUS6.js';import {a}from'./chunk-2TNQ52OQ.js';import'./chunk-BQFM5RT3.js';import {GraphQLErrorCode,UnexpectedError}from'@aave/core';import {encodeSpokeId,encodeHubId}from'@aave/graphql';import {chainId,evmAddress,bigDecimal,ResultAsync}from'@aave/types';import {createWalletClient,http,createPublicClient,parseEther,parseUnits}from'viem';import {generatePrivateKey,privateKeyToAccount}from'viem/accounts';var g=import.meta.env.ENVIRONMENT==="local"?c:b,E=chainId(Number.parseInt("123456789",10)),q=evmAddress("0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f"),G=evmAddress("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"),Q=evmAddress("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"),Y=evmAddress("0xdC035D45d973E3EC169d2276DDab16f1e407384F"),$=evmAddress("0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"),V=evmAddress("0x111111111117dC0aa78b770fA6A738034120C302"),B=evmAddress("0xBa97c5E52cd5BC3D7950Ae70779F8FfE92d40CdC"),j=encodeSpokeId({chainId:E,address:B}),z=evmAddress("0x2559E4E04F2cA7180e5f20C2872d22EC89601b56"),X=evmAddress("0x5738d9cB82d6a1617973C257D05A387bF5568F47"),I=evmAddress("0x4D4a7b3Ce709b4362D7095a4A0105bDFDb5dA2a7"),J=encodeSpokeId({chainId:E,address:I}),M=evmAddress("0xaD905aD5EA5B98cD50AE40Cfe368344686a21366"),Z=encodeHubId({chainId:E,address:M}),x="https://virtual.mainnet-aave.us-east.rpc.tenderly.co/dbaa58ab-597b-4bcd-ae6a-b8e50f716146",d=import.meta.env.ETHEREUM_TENDERLY_ADMIN_RPC,ee=d$1.create({environment:g,headers:{"x-e2e-tests":import.meta.env.API_X_E2E_TESTS_HEADER}});async function te(e){if(!e){let t=generatePrivateKey(),n=createWalletClient({account:privateKeyToAccount(t),chain:a,transport:http()});return await P(evmAddress(n.account.address)),n}return createWalletClient({account:privateKeyToAccount(e),chain:a,transport:http()})}function P(e,t=bigDecimal("1.0")){let n=createPublicClient({chain:{id:E,name:"Tenderly Fork",network:"tenderly-fork",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:[d]}}},transport:http(d)}),o=`0x${parseEther(t.toString()).toString(16)}`;return ResultAsync.fromPromise(n.request({method:"tenderly_setBalance",params:[[e],o]}).then(async a=>(await y(500),a)),a=>UnexpectedError.from(a))}function re(e,t){let n=createPublicClient({chain:{id:E,name:"Tenderly Fork",network:"tenderly-fork",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:[d]}}},transport:http(d)}),o=`0x${parseUnits(t.amount.toString(),t.decimals??18).toString(16)}`;return ResultAsync.fromPromise(n.request({method:"tenderly_setErc20Balance",params:[t.address,e,o]}).then(async a=>(await y(500),a)),a=>UnexpectedError.from(a))}var v={[GraphQLErrorCode.UNAUTHENTICATED]:"Unauthenticated - Authentication is required to access '<operation>'",[GraphQLErrorCode.FORBIDDEN]:"Forbidden - You are not authorized to access '<operation>'",[GraphQLErrorCode.INTERNAL_SERVER_ERROR]:"Internal server error - Please try again later",[GraphQLErrorCode.BAD_USER_INPUT]:"Bad user input - Please check the input and try again",[GraphQLErrorCode.BAD_REQUEST]:"Bad request - Please check the request and try again"};function ne(e){return {message:v[e],locations:[],path:[],extensions:{code:e}}}function y(e){return new Promise(t=>setTimeout(t,e))}async function ae(e,t){let n=createPublicClient({chain:a,transport:http(x)}),[m,o]=await Promise.all([n.readContract({address:t,abi:[{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],functionName:"balanceOf",args:[e]}),n.readContract({address:t,abi:[{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"}],functionName:"decimals"})]);return bigDecimal(m).rescale(-o)}async function se(e){let n=await createPublicClient({chain:a,transport:http(x)}).getBalance({address:e});return bigDecimal(n).rescale(-18)}
2
- export{V as ETHEREUM_1INCH_ADDRESS,E as ETHEREUM_FORK_ID,x as ETHEREUM_FORK_RPC_URL,d as ETHEREUM_FORK_RPC_URL_ADMIN,q as ETHEREUM_GHO_ADDRESS,M as ETHEREUM_HUB_CORE_ADDRESS,Z as ETHEREUM_HUB_CORE_ID,B as ETHEREUM_SPOKE_CORE_ADDRESS,j as ETHEREUM_SPOKE_CORE_ID,z as ETHEREUM_SPOKE_ETHENA_ADDRESS,X as ETHEREUM_SPOKE_FRONTIER_ADDRESS,J as ETHEREUM_SPOKE_ISO_STABLE_ID,I as ETHEREUM_SPOKE_LST_ADDRESS,Q as ETHEREUM_USDC_ADDRESS,Y as ETHEREUM_USDS_ADDRESS,G as ETHEREUM_WETH_ADDRESS,$ as ETHEREUM_WSTETH_ADDRESS,ee as client,ne as createGraphQLErrorObject,te as createNewWallet,g as environment,re as fundErc20Address,P as fundNativeAddress,ae as getBalance,se as getNativeBalance,y as wait};//# sourceMappingURL=test-utils.js.map
3
- //# sourceMappingURL=test-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/test-utils.ts"],"names":["environment","local","staging","ETHEREUM_FORK_ID","chainId","ETHEREUM_GHO_ADDRESS","evmAddress","ETHEREUM_WETH_ADDRESS","ETHEREUM_USDC_ADDRESS","ETHEREUM_USDS_ADDRESS","ETHEREUM_WSTETH_ADDRESS","ETHEREUM_1INCH_ADDRESS","ETHEREUM_SPOKE_CORE_ADDRESS","ETHEREUM_SPOKE_CORE_ID","encodeSpokeId","ETHEREUM_SPOKE_ETHENA_ADDRESS","ETHEREUM_SPOKE_FRONTIER_ADDRESS","ETHEREUM_SPOKE_LST_ADDRESS","ETHEREUM_SPOKE_ISO_STABLE_ID","ETHEREUM_HUB_CORE_ADDRESS","ETHEREUM_HUB_CORE_ID","encodeHubId","ETHEREUM_FORK_RPC_URL","ETHEREUM_FORK_RPC_URL_ADMIN","client","AaveClient","createNewWallet","privateKey","generatePrivateKey","wallet","createWalletClient","privateKeyToAccount","devnetChain","http","fundNativeAddress","address","amount","bigDecimal","publicClient","createPublicClient","amountHex","parseEther","ResultAsync","res","wait","err","UnexpectedError","fundErc20Address","token","parseUnits","messages","GraphQLErrorCode","createGraphQLErrorObject","code","ms","resolve","getBalance","tokenAddress","balance","decimals","getNativeBalance"],"mappings":"0bA4BO,IAAMA,CAAAA,CACX,YAAY,GAAA,CAAI,WAAA,GAAgB,OAAA,CAAUC,CAAAA,CAAQC,CAAAA,CAEvCC,CAAAA,CAAmBC,OAAAA,CAC9B,MAAA,CAAO,SAAS,WAAA,CAA2C,EAAE,CAC/D,CAAA,CAGaC,CAAAA,CAAuBC,UAAAA,CAClC,4CACF,CAAA,CACaC,EAAwBD,UAAAA,CACnC,4CACF,CAAA,CACaE,CAAAA,CAAwBF,WACnC,4CACF,CAAA,CACaG,CAAAA,CAAwBH,UAAAA,CACnC,4CACF,CAAA,CACaI,CAAAA,CAA0BJ,UAAAA,CACrC,4CACF,CAAA,CACaK,CAAAA,CAAyBL,UAAAA,CACpC,4CACF,EAGaM,CAAAA,CAA8BN,UAAAA,CACzC,4CACF,CAAA,CACaO,CAAAA,CAAyBC,aAAAA,CAAc,CAClD,OAAA,CAASX,EACT,OAAA,CAASS,CACX,CAAC,CAAA,CAEYG,CAAAA,CAAgCT,UAAAA,CAC3C,4CACF,CAAA,CAEaU,EAAkCV,UAAAA,CAC7C,4CACF,CAAA,CAEaW,CAAAA,CAA6BX,WACxC,4CACF,CAAA,CACaY,CAAAA,CAA+BJ,aAAAA,CAAc,CACxD,OAAA,CAASX,CAAAA,CACT,OAAA,CAASc,CACX,CAAC,CAAA,CAGYE,CAAAA,CAA4Bb,UAAAA,CACvC,4CACF,CAAA,CACac,CAAAA,CAAuBC,WAAAA,CAAY,CAC9C,OAAA,CAASlB,CAAAA,CACT,OAAA,CAASgB,CACX,CAAC,CAAA,CAEYG,CAAAA,CAAwB,2FAAA,CAGxBC,CAAAA,CAA8B,MAAA,CAAA,IAAA,CAAY,GAAA,CACpD,2BAAA,CAEUC,EAAAA,CAASC,IAAW,MAAA,CAAO,CACtC,WAAA,CAAAzB,CAAAA,CACA,QAAS,CACP,aAAA,CAAe,MAAA,CAAA,IAAA,CAAY,GAAA,CAAI,sBACjC,CACF,CAAC,EAED,eAAsB0B,EAAAA,CACpBC,CAAAA,CACkD,CAClD,GAAI,CAACA,CAAAA,CAAY,CACf,IAAMA,CAAAA,CAAaC,kBAAAA,EAAmB,CAChCC,CAAAA,CAASC,kBAAAA,CAAmB,CAChC,OAAA,CAASC,mBAAAA,CAAoBJ,CAAU,CAAA,CACvC,KAAA,CAAOK,CAAAA,CACP,SAAA,CAAWC,IAAAA,EACb,CAAC,CAAA,CAED,OAAA,MAAMC,CAAAA,CAAkB5B,WAAWuB,CAAAA,CAAO,OAAA,CAAQ,OAAO,CAAC,EAEnDA,CACT,CACA,OAAOC,kBAAAA,CAAmB,CACxB,OAAA,CAASC,mBAAAA,CAAoBJ,CAAU,EACvC,KAAA,CAAOK,CAAAA,CACP,SAAA,CAAWC,IAAAA,EACb,CAAC,CACH,CAgBO,SAASC,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CAAqBC,UAAAA,CAAW,KAAK,CAAA,CACC,CAEtC,IAAMC,EAAeC,kBAAAA,CAAmB,CACtC,KAAA,CAAO,CACL,GAAIpC,CAAAA,CACJ,IAAA,CAAM,eAAA,CACN,OAAA,CAAS,gBACT,cAAA,CAAgB,CAAE,IAAA,CAAM,OAAA,CAAS,MAAA,CAAQ,KAAA,CAAO,QAAA,CAAU,EAAG,EAC7D,OAAA,CAAS,CACP,OAAA,CAAS,CAAE,IAAA,CAAM,CAACoB,CAA2B,CAAE,CACjD,CACF,CAAA,CACA,SAAA,CAAWU,IAAAA,CAAKV,CAA2B,CAC7C,CAAC,CAAA,CAGKiB,EAAY,CAAA,EAAA,EADEC,UAAAA,CAAWL,CAAAA,CAAO,QAAA,EAAU,CAAA,CACb,QAAA,CAAS,EAAE,CAAC,GAE/C,OAAOM,WAAAA,CAAY,WAAA,CACjBJ,CAAAA,CACG,OAAA,CAAwB,CACvB,MAAA,CAAQ,qBAAA,CACR,OAAQ,CAAC,CAACH,CAAO,CAAA,CAAGK,CAAS,CAC/B,CAAC,CAAA,CACA,IAAA,CAAK,MAAOG,CAAAA,GACX,MAAMC,CAAAA,CAAK,GAAG,CAAA,CACPD,CAAAA,CACR,CAAA,CACFE,CAAAA,EAAQC,gBAAgB,IAAA,CAAKD,CAAG,CACnC,CACF,CAEO,SAASE,EAAAA,CACdZ,CAAAA,CACAa,CAAAA,CAK4B,CAC5B,IAAMV,CAAAA,CAAeC,kBAAAA,CAAmB,CACtC,KAAA,CAAO,CACL,EAAA,CAAIpC,CAAAA,CACJ,KAAM,eAAA,CACN,OAAA,CAAS,eAAA,CACT,cAAA,CAAgB,CAAE,IAAA,CAAM,OAAA,CAAS,MAAA,CAAQ,MAAO,QAAA,CAAU,EAAG,CAAA,CAC7D,OAAA,CAAS,CACP,OAAA,CAAS,CAAE,IAAA,CAAM,CAACoB,CAA2B,CAAE,CACjD,CACF,EACA,SAAA,CAAWU,IAAAA,CAAKV,CAA2B,CAC7C,CAAC,CAAA,CAOKiB,CAAAA,CAAY,CAAA,EAAA,EAJWS,UAAAA,CAC3BD,CAAAA,CAAM,MAAA,CAAO,QAAA,EAAS,CACtBA,EAAM,QAAA,EAAY,EACpB,CAAA,CAC4C,QAAA,CAAS,EAAE,CAAC,CAAA,CAAA,CAExD,OAAON,YAAY,WAAA,CACjBJ,CAAAA,CACG,OAAA,CAA6B,CAC5B,MAAA,CAAQ,0BAAA,CACR,MAAA,CAAQ,CAACU,EAAM,OAAA,CAASb,CAAAA,CAASK,CAAS,CAC5C,CAAC,CAAA,CACA,IAAA,CAAK,MAAOG,CAAAA,GACX,MAAMC,CAAAA,CAAK,GAAG,CAAA,CACPD,CAAAA,CACR,CAAA,CACFE,CAAAA,EAAQC,eAAAA,CAAgB,IAAA,CAAKD,CAAG,CACnC,CACF,CAEA,IAAMK,CAAAA,CAA6C,CACjD,CAACC,gBAAAA,CAAiB,eAAe,EAC/B,sEAAA,CACF,CAACA,gBAAAA,CAAiB,SAAS,EACzB,4DAAA,CACF,CAACA,iBAAiB,qBAAqB,EACrC,gDAAA,CACF,CAACA,iBAAiB,cAAc,EAC9B,uDAAA,CACF,CAACA,iBAAiB,WAAW,EAC3B,sDACJ,CAAA,CAEO,SAASC,EAAAA,CAAyBC,CAAAA,CAAwB,CAC/D,OAAO,CACL,OAAA,CAASH,CAAAA,CAASG,CAAI,CAAA,CACtB,SAAA,CAAW,EAAC,CACZ,KAAM,EAAC,CACP,UAAA,CAAY,CACV,IAAA,CAAMA,CACR,CACF,CACF,CAEO,SAAST,CAAAA,CAAKU,CAAAA,CAAY,CAC/B,OAAO,IAAI,OAAA,CAASC,CAAAA,EAAY,UAAA,CAAWA,EAASD,CAAE,CAAC,CACzD,CAGA,eAAsBE,EAAAA,CACpBrB,CAAAA,CACAsB,CAAAA,CACqB,CACrB,IAAMnB,CAAAA,CAAeC,kBAAAA,CAAmB,CACtC,KAAA,CAAOP,CAAAA,CACP,SAAA,CAAWC,IAAAA,CAAKX,CAAqB,CACvC,CAAC,CAAA,CAEK,CAACoC,CAAAA,CAASC,CAAQ,CAAA,CAAI,MAAM,QAAQ,GAAA,CAAI,CAC5CrB,CAAAA,CAAa,YAAA,CAAa,CACxB,OAAA,CAASmB,CAAAA,CACT,GAAA,CAAK,CACH,CACE,MAAA,CAAQ,CACN,CAAE,YAAA,CAAc,SAAA,CAAW,IAAA,CAAM,SAAA,CAAW,IAAA,CAAM,SAAU,CAC9D,CAAA,CACA,IAAA,CAAM,WAAA,CACN,OAAA,CAAS,CAAC,CAAE,YAAA,CAAc,UAAW,IAAA,CAAM,EAAA,CAAI,IAAA,CAAM,SAAU,CAAC,CAAA,CAChE,eAAA,CAAiB,MAAA,CACjB,KAAM,UACR,CACF,CAAA,CACA,YAAA,CAAc,YACd,IAAA,CAAM,CAACtB,CAAO,CAChB,CAAC,CAAA,CACDG,CAAAA,CAAa,YAAA,CAAa,CACxB,OAAA,CAASmB,CAAAA,CACT,GAAA,CAAK,CACH,CACE,MAAA,CAAQ,EAAC,CACT,IAAA,CAAM,UAAA,CACN,OAAA,CAAS,CAAC,CAAE,aAAc,OAAA,CAAS,IAAA,CAAM,EAAA,CAAI,IAAA,CAAM,OAAQ,CAAC,CAAA,CAC5D,eAAA,CAAiB,OACjB,IAAA,CAAM,UACR,CACF,CAAA,CACA,aAAc,UAChB,CAAC,CACH,CAAC,EAED,OAAOpB,UAAAA,CAAWqB,CAAO,CAAA,CAAE,OAAA,CAAQ,CAACC,CAAQ,CAC9C,CAGA,eAAsBC,EAAAA,CACpBzB,CAAAA,CACqB,CAMrB,IAAMuB,CAAAA,CAAU,MALKnB,kBAAAA,CAAmB,CACtC,MAAOP,CAAAA,CACP,SAAA,CAAWC,IAAAA,CAAKX,CAAqB,CACvC,CAAC,CAAA,CAEkC,UAAA,CAAW,CAC5C,OAAA,CAASa,CACX,CAAC,CAAA,CAGD,OAAOE,UAAAA,CAAWqB,CAAO,CAAA,CAAE,OAAA,CAAQ,GAAG,CACxC","file":"test-utils.js","sourcesContent":["/// <reference path=\"../../../vite-env.d.ts\" />\n\nimport { GraphQLErrorCode, UnexpectedError } from '@aave/core';\nimport { encodeHubId, encodeSpokeId } from '@aave/graphql';\nimport {\n type BigDecimal,\n bigDecimal,\n chainId,\n type EvmAddress,\n evmAddress,\n ResultAsync,\n} from '@aave/types';\nimport {\n type Account,\n type Chain,\n createPublicClient,\n createWalletClient,\n http,\n parseEther,\n parseUnits,\n type Transport,\n type WalletClient,\n} from 'viem';\nimport { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';\nimport { AaveClient } from './AaveClient';\nimport { local, staging } from './environments';\nimport { devnetChain } from './viem';\n\nexport const environment =\n import.meta.env.ENVIRONMENT === 'local' ? local : staging;\n\nexport const ETHEREUM_FORK_ID = chainId(\n Number.parseInt(import.meta.env.ETHEREUM_TENDERLY_FORK_ID, 10),\n);\n\n// Token addresses\nexport const ETHEREUM_GHO_ADDRESS = evmAddress(\n '0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f',\n);\nexport const ETHEREUM_WETH_ADDRESS = evmAddress(\n '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n);\nexport const ETHEREUM_USDC_ADDRESS = evmAddress(\n '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n);\nexport const ETHEREUM_USDS_ADDRESS = evmAddress(\n '0xdC035D45d973E3EC169d2276DDab16f1e407384F',\n);\nexport const ETHEREUM_WSTETH_ADDRESS = evmAddress(\n '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',\n);\nexport const ETHEREUM_1INCH_ADDRESS = evmAddress(\n '0x111111111117dC0aa78b770fA6A738034120C302',\n);\n\n// Spoke addresses and ids\nexport const ETHEREUM_SPOKE_CORE_ADDRESS = evmAddress(\n '0xBa97c5E52cd5BC3D7950Ae70779F8FfE92d40CdC',\n);\nexport const ETHEREUM_SPOKE_CORE_ID = encodeSpokeId({\n chainId: ETHEREUM_FORK_ID,\n address: ETHEREUM_SPOKE_CORE_ADDRESS,\n});\n\nexport const ETHEREUM_SPOKE_ETHENA_ADDRESS = evmAddress(\n '0x2559E4E04F2cA7180e5f20C2872d22EC89601b56',\n);\n\nexport const ETHEREUM_SPOKE_FRONTIER_ADDRESS = evmAddress(\n '0x5738d9cB82d6a1617973C257D05A387bF5568F47',\n);\n\nexport const ETHEREUM_SPOKE_LST_ADDRESS = evmAddress(\n '0x4D4a7b3Ce709b4362D7095a4A0105bDFDb5dA2a7',\n);\nexport const ETHEREUM_SPOKE_ISO_STABLE_ID = encodeSpokeId({\n chainId: ETHEREUM_FORK_ID,\n address: ETHEREUM_SPOKE_LST_ADDRESS,\n});\n\n// Hub addresses\nexport const ETHEREUM_HUB_CORE_ADDRESS = evmAddress(\n '0xaD905aD5EA5B98cD50AE40Cfe368344686a21366',\n);\nexport const ETHEREUM_HUB_CORE_ID = encodeHubId({\n chainId: ETHEREUM_FORK_ID,\n address: ETHEREUM_HUB_CORE_ADDRESS,\n});\n\nexport const ETHEREUM_FORK_RPC_URL = import.meta.env\n .ETHEREUM_TENDERLY_PUBLIC_RPC;\n\nexport const ETHEREUM_FORK_RPC_URL_ADMIN = import.meta.env\n .ETHEREUM_TENDERLY_ADMIN_RPC;\n\nexport const client = AaveClient.create({\n environment,\n headers: {\n 'x-e2e-tests': import.meta.env.API_X_E2E_TESTS_HEADER,\n },\n});\n\nexport async function createNewWallet(\n privateKey?: `0x${string}`,\n): Promise<WalletClient<Transport, Chain, Account>> {\n if (!privateKey) {\n const privateKey = generatePrivateKey();\n const wallet = createWalletClient({\n account: privateKeyToAccount(privateKey),\n chain: devnetChain,\n transport: http(),\n });\n\n await fundNativeAddress(evmAddress(wallet.account.address));\n\n return wallet;\n }\n return createWalletClient({\n account: privateKeyToAccount(privateKey),\n chain: devnetChain,\n transport: http(),\n });\n}\n\n// Tenderly RPC type for setBalance\ntype TSetBalanceRpc = {\n Method: 'tenderly_setBalance';\n Parameters: [addresses: string[], amount: string];\n ReturnType: string;\n};\n\n// Tenderly RPC type for set ERC20 balance\ntype TSetErc20BalanceRpc = {\n Method: 'tenderly_setErc20Balance';\n Parameters: [tokenAddress: string, address: string, amount: string];\n ReturnType: string;\n};\n\nexport function fundNativeAddress(\n address: EvmAddress,\n amount: BigDecimal = bigDecimal('1.0'), // 1 ETH\n): ResultAsync<string, UnexpectedError> {\n // Create client with fork chain - you'll need to replace this with your actual fork chain config\n const publicClient = createPublicClient({\n chain: {\n id: ETHEREUM_FORK_ID,\n name: 'Tenderly Fork',\n network: 'tenderly-fork',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: { http: [ETHEREUM_FORK_RPC_URL_ADMIN] },\n },\n },\n transport: http(ETHEREUM_FORK_RPC_URL_ADMIN),\n });\n\n const amountInWei = parseEther(amount.toString());\n const amountHex = `0x${amountInWei.toString(16)}`;\n\n return ResultAsync.fromPromise(\n publicClient\n .request<TSetBalanceRpc>({\n method: 'tenderly_setBalance',\n params: [[address], amountHex],\n })\n .then(async (res) => {\n await wait(500); // Temporal fix to avoid tenderly issues with the balance not being set\n return res;\n }),\n (err) => UnexpectedError.from(err),\n );\n}\n\nexport function fundErc20Address(\n address: EvmAddress,\n token: {\n address: EvmAddress;\n amount: BigDecimal;\n decimals?: number;\n },\n): ResultAsync<string, Error> {\n const publicClient = createPublicClient({\n chain: {\n id: ETHEREUM_FORK_ID,\n name: 'Tenderly Fork',\n network: 'tenderly-fork',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: { http: [ETHEREUM_FORK_RPC_URL_ADMIN] },\n },\n },\n transport: http(ETHEREUM_FORK_RPC_URL_ADMIN),\n });\n\n // Convert amount to the smallest unit (e.g., wei for 18 decimals)\n const amountInSmallestUnit = parseUnits(\n token.amount.toString(),\n token.decimals ?? 18,\n );\n const amountHex = `0x${amountInSmallestUnit.toString(16)}`;\n\n return ResultAsync.fromPromise(\n publicClient\n .request<TSetErc20BalanceRpc>({\n method: 'tenderly_setErc20Balance',\n params: [token.address, address, amountHex],\n })\n .then(async (res) => {\n await wait(500); // Temporal fix to avoid tenderly issues with the balance not being set\n return res;\n }),\n (err) => UnexpectedError.from(err),\n );\n}\n\nconst messages: Record<GraphQLErrorCode, string> = {\n [GraphQLErrorCode.UNAUTHENTICATED]:\n \"Unauthenticated - Authentication is required to access '<operation>'\",\n [GraphQLErrorCode.FORBIDDEN]:\n \"Forbidden - You are not authorized to access '<operation>'\",\n [GraphQLErrorCode.INTERNAL_SERVER_ERROR]:\n 'Internal server error - Please try again later',\n [GraphQLErrorCode.BAD_USER_INPUT]:\n 'Bad user input - Please check the input and try again',\n [GraphQLErrorCode.BAD_REQUEST]:\n 'Bad request - Please check the request and try again',\n};\n\nexport function createGraphQLErrorObject(code: GraphQLErrorCode) {\n return {\n message: messages[code],\n locations: [],\n path: [],\n extensions: {\n code: code,\n },\n };\n}\n\nexport function wait(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n// Function to get balance ERC20 token\nexport async function getBalance(\n address: EvmAddress,\n tokenAddress: EvmAddress,\n): Promise<BigDecimal> {\n const publicClient = createPublicClient({\n chain: devnetChain,\n transport: http(ETHEREUM_FORK_RPC_URL),\n });\n\n const [balance, decimals] = await Promise.all([\n publicClient.readContract({\n address: tokenAddress,\n abi: [\n {\n inputs: [\n { internalType: 'address', name: 'account', type: 'address' },\n ],\n name: 'balanceOf',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n ] as const,\n functionName: 'balanceOf',\n args: [address],\n }),\n publicClient.readContract({\n address: tokenAddress,\n abi: [\n {\n inputs: [],\n name: 'decimals',\n outputs: [{ internalType: 'uint8', name: '', type: 'uint8' }],\n stateMutability: 'pure',\n type: 'function',\n },\n ] as const,\n functionName: 'decimals',\n }),\n ]);\n\n return bigDecimal(balance).rescale(-decimals);\n}\n\n// Function to get native token (ETH) balance\nexport async function getNativeBalance(\n address: EvmAddress,\n): Promise<BigDecimal> {\n const publicClient = createPublicClient({\n chain: devnetChain,\n transport: http(ETHEREUM_FORK_RPC_URL),\n });\n\n const balance = await publicClient.getBalance({\n address: address,\n });\n\n // Convert from wei to ETH (18 decimals)\n return bigDecimal(balance).rescale(-18);\n}\n"]}