@gauntlet-xyz/sdk 1.0.5 → 2.0.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 (89) hide show
  1. package/dist/constants.d.ts +16 -0
  2. package/dist/constants.d.ts.map +1 -0
  3. package/dist/constants.js +28 -0
  4. package/dist/constants.js.map +1 -0
  5. package/dist/errors.d.ts +18 -3
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/errors.js +20 -2
  8. package/dist/errors.js.map +1 -1
  9. package/dist/evm/abis/priceAndFeeCalculatorV2.d.ts +233 -0
  10. package/dist/evm/abis/priceAndFeeCalculatorV2.d.ts.map +1 -0
  11. package/dist/evm/abis/priceAndFeeCalculatorV2.js +119 -0
  12. package/dist/evm/abis/priceAndFeeCalculatorV2.js.map +1 -0
  13. package/dist/evm/abis/provisionerV2.d.ts +460 -0
  14. package/dist/evm/abis/provisionerV2.d.ts.map +1 -0
  15. package/dist/evm/abis/provisionerV2.js +203 -0
  16. package/dist/evm/abis/provisionerV2.js.map +1 -0
  17. package/dist/evm/adapters/aera.d.ts +3 -3
  18. package/dist/evm/adapters/aera.d.ts.map +1 -1
  19. package/dist/evm/adapters/aera.js +179 -103
  20. package/dist/evm/adapters/aera.js.map +1 -1
  21. package/dist/evm/adapters/types.d.ts +12 -1
  22. package/dist/evm/adapters/types.d.ts.map +1 -1
  23. package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts +41 -0
  24. package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts.map +1 -0
  25. package/dist/evm/aeraContracts/priceAndFeeCalculator.js +140 -0
  26. package/dist/evm/aeraContracts/priceAndFeeCalculator.js.map +1 -0
  27. package/dist/evm/aeraContracts/v1.d.ts +2317 -0
  28. package/dist/evm/aeraContracts/v1.d.ts.map +1 -0
  29. package/dist/evm/aeraContracts/v1.js +59 -0
  30. package/dist/evm/aeraContracts/v1.js.map +1 -0
  31. package/dist/evm/aeraContracts/v2.d.ts +2802 -0
  32. package/dist/evm/aeraContracts/v2.d.ts.map +1 -0
  33. package/dist/evm/aeraContracts/v2.js +217 -0
  34. package/dist/evm/aeraContracts/v2.js.map +1 -0
  35. package/dist/evm/aeraContracts.d.ts +23 -2316
  36. package/dist/evm/aeraContracts.d.ts.map +1 -1
  37. package/dist/evm/aeraContracts.js +117 -24
  38. package/dist/evm/aeraContracts.js.map +1 -1
  39. package/dist/evm/deposit.d.ts +5 -1
  40. package/dist/evm/deposit.d.ts.map +1 -1
  41. package/dist/evm/deposit.js +28 -14
  42. package/dist/evm/deposit.js.map +1 -1
  43. package/dist/evm/depositReceiverApproval.d.ts +17 -0
  44. package/dist/evm/depositReceiverApproval.d.ts.map +1 -0
  45. package/dist/evm/depositReceiverApproval.js +32 -0
  46. package/dist/evm/depositReceiverApproval.js.map +1 -0
  47. package/dist/evm/index.d.ts +8 -1
  48. package/dist/evm/index.d.ts.map +1 -1
  49. package/dist/evm/index.js +4 -0
  50. package/dist/evm/index.js.map +1 -1
  51. package/dist/evm/operationMode.d.ts +9 -0
  52. package/dist/evm/operationMode.d.ts.map +1 -0
  53. package/dist/evm/operationMode.js +41 -0
  54. package/dist/evm/operationMode.js.map +1 -0
  55. package/dist/evm/types.d.ts +7 -3
  56. package/dist/evm/types.d.ts.map +1 -1
  57. package/dist/evm/types.js +4 -1
  58. package/dist/evm/types.js.map +1 -1
  59. package/dist/evm/userCurrentBalance.d.ts.map +1 -1
  60. package/dist/evm/userCurrentBalance.js +68 -58
  61. package/dist/evm/userCurrentBalance.js.map +1 -1
  62. package/dist/evm/withdraw.d.ts +5 -1
  63. package/dist/evm/withdraw.d.ts.map +1 -1
  64. package/dist/evm/withdraw.js +25 -13
  65. package/dist/evm/withdraw.js.map +1 -1
  66. package/dist/index.d.ts +8 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +5 -1
  69. package/dist/index.js.map +1 -1
  70. package/manifest/vaults.json +31 -139
  71. package/package.json +1 -1
  72. package/src/constants.ts +32 -0
  73. package/src/errors.ts +44 -5
  74. package/src/evm/abis/priceAndFeeCalculatorV2.ts +118 -0
  75. package/src/evm/abis/provisionerV2.ts +202 -0
  76. package/src/evm/adapters/aera.ts +419 -137
  77. package/src/evm/adapters/types.ts +19 -1
  78. package/src/evm/aeraContracts/priceAndFeeCalculator.ts +223 -0
  79. package/src/evm/aeraContracts/v1.ts +157 -0
  80. package/src/evm/aeraContracts/v2.ts +466 -0
  81. package/src/evm/aeraContracts.ts +173 -52
  82. package/src/evm/deposit.ts +48 -16
  83. package/src/evm/depositReceiverApproval.ts +51 -0
  84. package/src/evm/index.ts +23 -1
  85. package/src/evm/operationMode.ts +60 -0
  86. package/src/evm/types.ts +9 -3
  87. package/src/evm/userCurrentBalance.ts +80 -55
  88. package/src/evm/withdraw.ts +42 -15
  89. package/src/index.ts +19 -0
@@ -1,6 +1,6 @@
1
1
  import type { EvmProtocolAdapter } from './types';
2
- import { PublicClient, type Address } from 'viem';
3
- export declare const getAeraV3VaultUnits: (publicClient: PublicClient, tokenUnits: bigint, vaultAddress: Address, tokenAddress: Address) => Promise<bigint | undefined>;
4
- export declare const getAeraV3TokenUnits: (publicClient: PublicClient, vaultUnits: bigint, vaultAddress: Address, tokenAddress: Address) => Promise<bigint | undefined>;
2
+ import type { Address, PublicClient } from 'viem';
3
+ export declare const convertTokenAmountToUnits: (publicClient: PublicClient, tokenAmount: bigint, vaultAddress: Address, tokenAddress: Address) => Promise<bigint | undefined>;
4
+ export declare const convertUnitsToTokenAmount: (publicClient: PublicClient, unitsAmount: bigint, vaultAddress: Address, tokenAddress: Address) => Promise<bigint | undefined>;
5
5
  export declare const aeraAdapter: EvmProtocolAdapter;
6
6
  //# sourceMappingURL=aera.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aera.d.ts","sourceRoot":"","sources":["../../../src/evm/adapters/aera.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,kBAAkB,EAMnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAQlD,eAAO,MAAM,mBAAmB,iBAChB,YAAY,cACd,MAAM,gBACJ,OAAO,gBACP,OAAO,gCAmBtB,CAAC;AAEF,eAAO,MAAM,mBAAmB,iBAChB,YAAY,cACd,MAAM,gBACJ,OAAO,gBACP,OAAO,gCAWtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,kBAsLzB,CAAC"}
1
+ {"version":3,"file":"aera.d.ts","sourceRoot":"","sources":["../../../src/evm/adapters/aera.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,kBAAkB,EAMnB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAWlD,eAAO,MAAM,yBAAyB,iBACtB,YAAY,eACb,MAAM,gBACL,OAAO,gBACP,OAAO,gCAmBtB,CAAC;AAEF,eAAO,MAAM,yBAAyB,iBACtB,YAAY,eACb,MAAM,gBACL,OAAO,gBACP,OAAO,gCAiBtB,CAAC;AAiIF,eAAO,MAAM,WAAW,EAAE,kBAoUzB,CAAC"}
@@ -1,153 +1,229 @@
1
1
  import { erc20Abi } from '../abis/erc20';
2
- import { requestDepositTxRequest, requestRedeemTxRequest, getMultiDepositorVault, getPriceAndFeeCalculator, } from '../aeraContracts';
3
- import { InvalidWithdrawParamsError, UnimplementedFeatureError, UnitConversionError, UnsupportedFeatureError, } from '../../errors';
2
+ import { getMultiDepositorVault, applySlippageDown, applySlippageUp, resolveContractVersion, } from '../aeraContracts';
3
+ import { convertTokenToUnits, convertUnitsToToken } from '../aeraContracts/priceAndFeeCalculator';
4
+ import * as provisionerV1 from '../aeraContracts/v1';
5
+ import * as provisionerV2 from '../aeraContracts/v2';
6
+ import { InvalidWithdrawParamsError, InvalidSolverTipError, UnimplementedFeatureError, UnsupportedFeatureError, } from '../../errors';
4
7
  import { multiDepositorVaultAbi } from '../abis/multiDepositorVault';
5
- const SECOND = 1;
6
- const MINUTE = SECOND * 60;
7
- const HOUR = MINUTE * 60;
8
- const DAY = HOUR * 24;
9
- export const getAeraV3VaultUnits = async (publicClient, tokenUnits, vaultAddress, tokenAddress) => {
8
+ import { DEFAULT_BPS, DAY, DEFAULT_MAX_PRICE_AGE, DEFAULT_REQUEST_DEADLINE_BUFFER, DEFAULT_SOLVER_TIP, } from '../../constants';
9
+ import { ContractVersion } from '../types';
10
+ export const convertTokenAmountToUnits = async (publicClient, tokenAmount, vaultAddress, tokenAddress) => {
10
11
  const vaultContract = getMultiDepositorVault(publicClient, vaultAddress);
11
12
  if (vaultContract === undefined)
12
13
  return;
13
14
  const calculatorAddress = await vaultContract.read.feeCalculator();
14
15
  if (!calculatorAddress)
15
16
  return;
16
- const calculatorContract = getPriceAndFeeCalculator(publicClient, calculatorAddress);
17
- const vaultUnits = await calculatorContract.read.convertTokenToUnits([
18
- vaultAddress,
19
- tokenAddress,
20
- tokenUnits,
21
- ]);
22
- return vaultUnits;
17
+ const calculatorVersion = await resolveContractVersion(publicClient, calculatorAddress);
18
+ const unitsAmount = await convertTokenToUnits(publicClient, calculatorAddress, calculatorVersion, vaultAddress, tokenAddress, tokenAmount);
19
+ return unitsAmount;
23
20
  };
24
- export const getAeraV3TokenUnits = async (publicClient, vaultUnits, vaultAddress, tokenAddress) => {
21
+ export const convertUnitsToTokenAmount = async (publicClient, unitsAmount, vaultAddress, tokenAddress) => {
25
22
  const vaultContract = getMultiDepositorVault(publicClient, vaultAddress);
26
23
  if (vaultContract === undefined)
27
24
  return;
28
25
  const calculatorAddress = await vaultContract.read.feeCalculator();
29
26
  if (!calculatorAddress)
30
27
  return;
31
- const calculatorContract = getPriceAndFeeCalculator(publicClient, calculatorAddress);
32
- return calculatorContract.read.convertUnitsToToken([vaultAddress, tokenAddress, vaultUnits]);
28
+ const calculatorVersion = await resolveContractVersion(publicClient, calculatorAddress);
29
+ return convertUnitsToToken(publicClient, calculatorAddress, calculatorVersion, vaultAddress, tokenAddress, unitsAmount);
33
30
  };
31
+ function subtractSolverTip(tokenAmount, solverTip) {
32
+ if (solverTip === 0n)
33
+ return tokenAmount;
34
+ if (solverTip >= tokenAmount) {
35
+ throw new InvalidSolverTipError(solverTip, tokenAmount);
36
+ }
37
+ return tokenAmount - solverTip;
38
+ }
39
+ function getRequestDeadline(expirationDays) {
40
+ const deadlineBuffer = expirationDays === undefined ? DEFAULT_REQUEST_DEADLINE_BUFFER : DAY * expirationDays;
41
+ return BigInt(Math.ceil(new Date().getTime() / 1000) + deadlineBuffer);
42
+ }
43
+ async function getDepositUnitsOut({ publicClient, runtime, vault, token, tokensIn, isAsync, }) {
44
+ if (runtime.provisioner.version === ContractVersion.V2) {
45
+ return isAsync
46
+ ? provisionerV2.getAsyncDepositUnitsOut(publicClient, runtime.provisioner.address, runtime.feeCalculator.address, runtime.feeCalculator.version, vault, token, tokensIn)
47
+ : provisionerV2.getSyncDepositUnitsOut(publicClient, runtime.provisioner.address, runtime.feeCalculator.address, runtime.feeCalculator.version, vault, token, tokensIn);
48
+ }
49
+ return provisionerV1.getAsyncDepositUnitsOut(publicClient, runtime.provisioner.address, runtime.feeCalculator.address, runtime.feeCalculator.version, vault, token, tokensIn);
50
+ }
51
+ function getAsyncRedeemTokenOut(publicClient, runtime, vault, token, unitsIn) {
52
+ return runtime.provisioner.version === ContractVersion.V2
53
+ ? provisionerV2.getAsyncRedeemTokenOut(publicClient, runtime.provisioner.address, runtime.feeCalculator.address, runtime.feeCalculator.version, vault, token, unitsIn)
54
+ : provisionerV1.getAsyncRedeemTokenOut(publicClient, runtime.provisioner.address, runtime.feeCalculator.address, runtime.feeCalculator.version, vault, token, unitsIn);
55
+ }
56
+ function getAsyncWithdrawUnitsIn(publicClient, runtime, vault, token, tokensOut) {
57
+ return runtime.provisioner.version === ContractVersion.V2
58
+ ? provisionerV2.getAsyncWithdrawUnitsIn(publicClient, runtime.provisioner.address, runtime.feeCalculator.address, runtime.feeCalculator.version, vault, token, tokensOut)
59
+ : provisionerV1.getAsyncWithdrawUnitsIn(publicClient, runtime.provisioner.address, runtime.feeCalculator.address, runtime.feeCalculator.version, vault, token, tokensOut);
60
+ }
61
+ function requireAeraRuntime(runtime) {
62
+ if (!runtime) {
63
+ throw new UnsupportedFeatureError('Aera: runtime contracts were not resolved');
64
+ }
65
+ return runtime;
66
+ }
34
67
  export const aeraAdapter = {
35
68
  async buildDeposit(params) {
36
- const { vault, receiver, amount, account, publicClient, asset, async: isAsync, slippageBps = 100 } = params;
37
- if (receiver !== account) {
38
- throw new UnsupportedFeatureError('Aera: separate receiver address');
69
+ const { vault, receiver, amount, account, publicClient, asset, async: isAsync, slippageBps = DEFAULT_BPS, solverTip = DEFAULT_SOLVER_TIP, maxPriceAge = DEFAULT_MAX_PRICE_AGE, aeraRuntime, } = params;
70
+ const runtime = requireAeraRuntime(aeraRuntime);
71
+ const provisionerAddress = runtime.provisioner.address;
72
+ const isContractV2 = runtime.provisioner.version === ContractVersion.V2;
73
+ if (receiver !== account && !isContractV2) {
74
+ throw new UnsupportedFeatureError('Aera: separate receiver address on V1');
39
75
  }
40
- if (!vault.provisionerAddress) {
41
- // Not implemented because untested and clients won't need in V1
42
- throw new UnimplementedFeatureError('Aera: single depositor vaults');
43
- // single-depositor vault
44
- /*return [
45
- {
46
- type: 'deposit',
47
- // SDK only supports single asset deposit
48
- ...depositTxRequest(vault.vaultAddress, [{ asset: asset.address, amount }], account),
49
- },
50
- ];*/
76
+ if (!isAsync && !isContractV2) {
77
+ throw new UnsupportedFeatureError('Aera: sync operations on V1');
51
78
  }
79
+ const tokensInForUnits = isAsync ? subtractSolverTip(amount, solverTip) : amount;
80
+ const vaultUnits = await getDepositUnitsOut({
81
+ publicClient,
82
+ runtime,
83
+ vault: vault.vaultAddress,
84
+ token: asset.address,
85
+ tokensIn: tokensInForUnits,
86
+ isAsync,
87
+ });
88
+ const minUnitsOut = applySlippageDown(vaultUnits, slippageBps);
52
89
  if (isAsync) {
53
- const vaultUnits = await getAeraV3VaultUnits(publicClient, amount, vault.vaultAddress, asset.address);
54
- if (vaultUnits === undefined) {
55
- throw new UnitConversionError(vault.vaultAddress);
56
- }
57
- const deadline = BigInt(Math.ceil(new Date().getTime() / 1000) + DAY * 3);
58
- // Request deposit
90
+ const deadline = getRequestDeadline(vault.expirationDays);
59
91
  return [
60
92
  {
61
93
  type: 'requestDeposit',
62
- ...requestDepositTxRequest(vault.provisionerAddress, asset.address, amount, (vaultUnits * BigInt(10000 - slippageBps)) / 10000n, // minUnitsOut
63
- 0n, // solvertip
64
- deadline, BigInt(DAY * 10), false, account),
94
+ ...(isContractV2
95
+ ? provisionerV2.requestDepositTxRequest(provisionerAddress, asset.address, amount, minUnitsOut, solverTip, deadline, maxPriceAge, false, receiver, account)
96
+ : provisionerV1.requestDepositTxRequest(provisionerAddress, asset.address, amount, minUnitsOut, solverTip, deadline, maxPriceAge, false, account)),
97
+ },
98
+ ];
99
+ }
100
+ if (isContractV2) {
101
+ return [
102
+ {
103
+ type: 'deposit',
104
+ ...provisionerV2.depositTxRequest(provisionerAddress, asset.address, amount, minUnitsOut, receiver, account),
65
105
  },
66
106
  ];
67
107
  }
68
108
  throw new UnimplementedFeatureError('Aera Sync Operations');
69
109
  },
70
110
  async buildWithdraw(params) {
71
- const { vault, receiver, account, asset, publicClient, async: isAsync, slippageBps = 100 } = params;
72
- if (receiver !== account) {
73
- throw new UnsupportedFeatureError('Aera: separate receiver address');
111
+ const { vault, receiver, account, asset, publicClient, async: isAsync, slippageBps = DEFAULT_BPS, solverTip = DEFAULT_SOLVER_TIP, maxPriceAge = DEFAULT_MAX_PRICE_AGE, aeraRuntime, } = params;
112
+ const runtime = requireAeraRuntime(aeraRuntime);
113
+ const provisionerAddress = runtime.provisioner.address;
114
+ const isContractV2 = runtime.provisioner.version === ContractVersion.V2;
115
+ if (receiver !== account && !isContractV2) {
116
+ throw new UnsupportedFeatureError('Aera: separate receiver address on V1');
74
117
  }
75
- let shares;
76
- let amount;
77
- if ('entireAmount' in params && params.entireAmount) {
78
- shares = await publicClient.readContract({
79
- address: vault.vaultAddress,
80
- abi: multiDepositorVaultAbi,
81
- functionName: 'balanceOf',
82
- args: [account],
83
- });
84
- amount = await getAeraV3TokenUnits(publicClient, shares, vault.vaultAddress, asset.address);
118
+ if (!isAsync && !isContractV2) {
119
+ throw new UnsupportedFeatureError('Aera: sync operations on V1');
85
120
  }
86
- else if ('amount' in params && params.amount != null) {
87
- const tempShares = await getAeraV3VaultUnits(publicClient, params.amount, vault.vaultAddress, asset.address);
88
- amount = params.amount;
89
- if (tempShares === undefined) {
90
- throw new UnitConversionError(vault.vaultAddress);
121
+ const isV2ExactTokenWithdraw = isContractV2 && !isAsync && 'amount' in params && params.amount != null;
122
+ let minTokenOut;
123
+ let maxUnitsIn;
124
+ let shares;
125
+ if (isContractV2 && !isAsync) {
126
+ if ('entireAmount' in params && params.entireAmount) {
127
+ shares = await publicClient.readContract({
128
+ address: vault.vaultAddress,
129
+ abi: multiDepositorVaultAbi,
130
+ functionName: 'balanceOf',
131
+ args: [account],
132
+ });
133
+ }
134
+ else if ('shares' in params && params.shares != null) {
135
+ shares = params.shares;
136
+ }
137
+ else if (!('amount' in params && params.amount != null)) {
138
+ throw new InvalidWithdrawParamsError();
139
+ }
140
+ if (isV2ExactTokenWithdraw) {
141
+ minTokenOut = applySlippageDown(params.amount, slippageBps);
142
+ maxUnitsIn = applySlippageUp(await provisionerV2.getSyncWithdrawUnitsIn(publicClient, provisionerAddress, runtime.feeCalculator.address, runtime.feeCalculator.version, vault.vaultAddress, asset.address, params.amount), slippageBps);
143
+ }
144
+ else {
145
+ if (shares === undefined) {
146
+ throw new InvalidWithdrawParamsError();
147
+ }
148
+ minTokenOut = applySlippageDown(await provisionerV2.getSyncRedeemTokenOut(publicClient, provisionerAddress, runtime.feeCalculator.address, runtime.feeCalculator.version, vault.vaultAddress, asset.address, shares), slippageBps);
149
+ maxUnitsIn = applySlippageUp(shares, slippageBps);
91
150
  }
92
- shares = tempShares;
93
- }
94
- else if ('shares' in params && params.shares != null) {
95
- shares = params.shares;
96
- amount = await getAeraV3TokenUnits(publicClient, shares, vault.vaultAddress, asset.address);
97
151
  }
98
152
  else {
99
- throw new InvalidWithdrawParamsError();
100
- }
101
- if (!vault.provisionerAddress) {
102
- // Not implemented because untested and clients won't need in V1
103
- throw new UnimplementedFeatureError('Aera: single depositor vaults');
104
- //single-depositer vault
105
- // TODO shares or amount ??
106
- /*return [
107
- {
108
- type: 'withdraw',
109
- // SDK only supports single asset deposit
110
- ...withdrawTxRequest(
111
- vault.vaultAddress,
112
- [{ asset: asset.address, amount: shares }],
113
- account
114
- ),
115
- },
116
- ];*/
153
+ if ('entireAmount' in params && params.entireAmount) {
154
+ shares = await publicClient.readContract({
155
+ address: vault.vaultAddress,
156
+ abi: multiDepositorVaultAbi,
157
+ functionName: 'balanceOf',
158
+ args: [account],
159
+ });
160
+ }
161
+ else if ('amount' in params && params.amount != null) {
162
+ shares = await getAsyncWithdrawUnitsIn(publicClient, runtime, vault.vaultAddress, asset.address, params.amount + solverTip);
163
+ }
164
+ else if ('shares' in params && params.shares != null) {
165
+ shares = params.shares;
166
+ }
167
+ else {
168
+ throw new InvalidWithdrawParamsError();
169
+ }
170
+ const tokenOutBeforeTip = await getAsyncRedeemTokenOut(publicClient, runtime, vault.vaultAddress, asset.address, shares);
171
+ minTokenOut = applySlippageDown(subtractSolverTip(tokenOutBeforeTip, solverTip), slippageBps);
172
+ maxUnitsIn = shares;
117
173
  }
118
- const { sufficient } = await this.checkAllowance({
119
- publicClient,
120
- token: vault.vaultAddress,
121
- owner: account,
122
- spender: vault.provisionerAddress,
123
- amount: shares,
124
- });
125
174
  const steps = [];
126
- if (!sufficient) {
127
- steps.push(this.buildApproval({
175
+ if (isAsync) {
176
+ if (shares === undefined) {
177
+ throw new InvalidWithdrawParamsError();
178
+ }
179
+ // Only async requestRedeem needs a vault unit allowance: the provisioner
180
+ // pulls units from the user. V2 sync redeem/withdraw exits through the
181
+ // vault and burns the caller's units directly, so no approval is needed.
182
+ const { sufficient } = await this.checkAllowance({
183
+ publicClient,
128
184
  token: vault.vaultAddress,
129
- spender: vault.provisionerAddress,
185
+ owner: account,
186
+ spender: provisionerAddress,
130
187
  amount: shares,
131
- account,
132
- }));
133
- }
134
- if (isAsync) {
135
- // Request redeem
136
- const deadline = BigInt(Math.ceil(new Date().getTime() / 1000) + DAY * 3);
137
- if (amount === undefined) {
138
- throw new UnitConversionError(vault.vaultAddress);
188
+ });
189
+ if (!sufficient) {
190
+ steps.push(this.buildApproval({
191
+ token: vault.vaultAddress,
192
+ spender: provisionerAddress,
193
+ amount: shares,
194
+ account,
195
+ }));
139
196
  }
197
+ const deadline = getRequestDeadline(vault.expirationDays);
140
198
  return [
141
199
  ...steps,
142
200
  {
143
201
  type: 'requestRedeem',
144
- ...requestRedeemTxRequest(vault.provisionerAddress, asset.address, shares, (amount * BigInt(10000 - slippageBps)) / 10000n, // minUnitsOut
145
- 0n, // solvertip
146
- deadline, BigInt(DAY * 10), false, account),
202
+ ...(isContractV2
203
+ ? provisionerV2.requestRedeemTxRequest(provisionerAddress, asset.address, shares, minTokenOut, solverTip, deadline, maxPriceAge, false, receiver, account)
204
+ : provisionerV1.requestRedeemTxRequest(provisionerAddress, asset.address, shares, minTokenOut, solverTip, deadline, maxPriceAge, false, account)),
147
205
  },
148
206
  ];
149
207
  }
150
- throw new UnimplementedFeatureError('Aera Sync Operations');
208
+ if ('amount' in params && params.amount != null) {
209
+ return [
210
+ ...steps,
211
+ {
212
+ type: 'withdraw',
213
+ ...provisionerV2.withdrawTxRequest(provisionerAddress, asset.address, params.amount, maxUnitsIn, receiver, account),
214
+ },
215
+ ];
216
+ }
217
+ if (shares === undefined) {
218
+ throw new InvalidWithdrawParamsError();
219
+ }
220
+ return [
221
+ ...steps,
222
+ {
223
+ type: 'redeem',
224
+ ...provisionerV2.redeemTxRequest(provisionerAddress, asset.address, shares, minTokenOut, receiver, account),
225
+ },
226
+ ];
151
227
  },
152
228
  async checkAllowance(params) {
153
229
  const { publicClient, token, owner, spender, amount } = params;
@@ -1 +1 @@
1
- {"version":3,"file":"aera.js","sourceRoot":"","sources":["../../../src/evm/adapters/aera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aera.js","sourceRoot":"","sources":["../../../src/evm/adapters/aera.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import type { Abi, Address, Hex, PublicClient } from 'viem';
2
+ import type { AeraRuntimeContracts } from '../aeraContracts';
2
3
  import type { TokenInfo, VaultDeployment } from '../types';
3
4
  export interface EvmTxStep<TAbi extends Abi = Abi, TFunctionName extends string = string> {
4
- type: 'approve' | 'deposit' | 'requestDeposit' | 'redeem' | 'requestRedeem' | 'withdraw';
5
+ type: 'approve' | 'deposit' | 'requestDeposit' | 'redeem' | 'requestRedeem' | 'setDepositReceiverApproval' | 'withdraw';
5
6
  address: Address;
6
7
  abi: TAbi;
7
8
  functionName: TFunctionName;
@@ -21,6 +22,11 @@ export interface AdapterDepositParams {
21
22
  publicClient: PublicClient;
22
23
  /** Slippage tolerance in basis points (e.g. 100 = 1%). Defaults to 100. */
23
24
  slippageBps?: number;
25
+ /** Solver tip passed to async Aera provisioner requests. Defaults to 0. */
26
+ solverTip?: bigint;
27
+ /** Maximum price age passed to async Aera provisioner requests. Defaults to 10 days. */
28
+ maxPriceAge?: bigint;
29
+ aeraRuntime?: AeraRuntimeContracts;
24
30
  }
25
31
  export type AdapterWithdrawParams = {
26
32
  vault: VaultDeployment;
@@ -31,6 +37,11 @@ export type AdapterWithdrawParams = {
31
37
  publicClient: PublicClient;
32
38
  /** Slippage tolerance in basis points (e.g. 100 = 1%). Defaults to 100. */
33
39
  slippageBps?: number;
40
+ /** Solver tip passed to async Aera provisioner requests. Defaults to 0. */
41
+ solverTip?: bigint;
42
+ /** Maximum price age passed to async Aera provisioner requests. Defaults to 10 days. */
43
+ maxPriceAge?: bigint;
44
+ aeraRuntime?: AeraRuntimeContracts;
34
45
  } & ({
35
46
  shares: bigint;
36
47
  amount?: never;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/evm/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3D,MAAM,WAAW,SAAS,CAAC,IAAI,SAAS,GAAG,GAAG,GAAG,EAAE,aAAa,SAAS,MAAM,GAAG,MAAM;IACtF,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,GAAG,UAAU,CAAC;IACzF,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,IAAI,CAAC;IACV,YAAY,EAAE,aAAa,CAAC;IAC5B,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC;AAE/B,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,qGAAqG;IACrG,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,CACA;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,GACxD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,GACxD;IAAE,YAAY,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CACzD,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACjE,aAAa,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACnE,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3F,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;CAClD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/evm/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3D,MAAM,WAAW,SAAS,CAAC,IAAI,SAAS,GAAG,GAAG,GAAG,EAAE,aAAa,SAAS,MAAM,GAAG,MAAM;IACtF,IAAI,EACA,SAAS,GACT,SAAS,GACT,gBAAgB,GAChB,QAAQ,GACR,eAAe,GACf,4BAA4B,GAC5B,UAAU,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,IAAI,CAAC;IACV,YAAY,EAAE,aAAa,CAAC;IAC5B,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC;AAE/B,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,qGAAqG;IACrG,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC,GAAG,CACA;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,GACxD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,GACxD;IAAE,YAAY,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CACzD,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACjE,aAAa,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACnE,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3F,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;CAClD"}
@@ -0,0 +1,41 @@
1
+ import type { Address, PublicClient } from 'viem';
2
+ import { ContractVersion } from '../types';
3
+ declare const ROUNDING_FLOOR = 0;
4
+ declare const ROUNDING_CEIL = 1;
5
+ export interface NormalizedVaultPriceState {
6
+ paused: boolean;
7
+ unitPrice: bigint;
8
+ timestamp: number;
9
+ }
10
+ export declare function convertTokenToUnitsIfActive(client: PublicClient, feeCalculator: Address, feeCalculatorVersion: ContractVersion, vault: Address, token: Address, tokenAmount: bigint, rounding: typeof ROUNDING_FLOOR | typeof ROUNDING_CEIL): Promise<bigint>;
11
+ export declare function convertUnitsToTokenIfActive(client: PublicClient, feeCalculator: Address, feeCalculatorVersion: ContractVersion, vault: Address, token: Address, unitsAmount: bigint, rounding: typeof ROUNDING_FLOOR | typeof ROUNDING_CEIL): Promise<bigint>;
12
+ export declare function convertTokenToUnits(client: PublicClient, feeCalculator: Address, feeCalculatorVersion: ContractVersion, vault: Address, token: Address, tokenAmount: bigint): Promise<bigint>;
13
+ export declare function convertUnitsToToken(client: PublicClient, feeCalculator: Address, feeCalculatorVersion: ContractVersion, vault: Address, token: Address, unitsAmount: bigint): Promise<bigint>;
14
+ export declare function getAnchorTimestamp(client: PublicClient, feeCalculator: Address, feeCalculatorVersion: ContractVersion, vault: Address): Promise<number>;
15
+ export declare function getVaultState(client: PublicClient, feeCalculator: Address, feeCalculatorVersion: ContractVersion, vault: Address): Promise<readonly [{
16
+ paused: boolean;
17
+ maxPriceAge: number;
18
+ minUpdateIntervalMinutes: number;
19
+ maxPriceToleranceRatio: number;
20
+ minPriceToleranceRatio: number;
21
+ maxUpdateDelayDays: number;
22
+ timestamp: number;
23
+ accrualLag: number;
24
+ unitPrice: bigint;
25
+ highestPrice: bigint;
26
+ lastTotalSupply: bigint;
27
+ } & NormalizedVaultPriceState, {
28
+ fees: {
29
+ tvl: number;
30
+ performance: number;
31
+ };
32
+ accruedFees: bigint;
33
+ accruedProtocolFees: bigint;
34
+ }]>;
35
+ export declare function isVaultPaused(client: PublicClient, feeCalculator: Address, feeCalculatorVersion: ContractVersion, vault: Address): Promise<boolean>;
36
+ export declare const Rounding: {
37
+ readonly Floor: 0;
38
+ readonly Ceil: 1;
39
+ };
40
+ export {};
41
+ //# sourceMappingURL=priceAndFeeCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceAndFeeCalculator.d.ts","sourceRoot":"","sources":["../../../src/evm/aeraContracts/priceAndFeeCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAIlD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,QAAA,MAAM,cAAc,IAAI,CAAC;AACzB,QAAA,MAAM,aAAa,IAAI,CAAC;AAExB,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAoCD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,eAAe,EACrC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,cAAc,GAAG,OAAO,aAAa,GACrD,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,eAAe,EACrC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,cAAc,GAAG,OAAO,aAAa,GACrD,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,eAAe,EACrC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,eAAe,EACrC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,eAAe,EACrC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,eAAe,EACrC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;IAqBf;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,eAAe,EACrC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,eAAO,MAAM,QAAQ;;;CAGX,CAAC"}
@@ -0,0 +1,140 @@
1
+ import { UnsupportedFeatureError } from '../../errors';
2
+ import { priceAndFeeCalculatorAbi } from '../abis/priceAndFeeCalculator';
3
+ import { priceAndFeeCalculatorV2Abi } from '../abis/priceAndFeeCalculatorV2';
4
+ import { ContractVersion } from '../types';
5
+ const ROUNDING_FLOOR = 0;
6
+ const ROUNDING_CEIL = 1;
7
+ function toNumber(value) {
8
+ return typeof value === 'bigint' ? Number(value) : value;
9
+ }
10
+ function normalizeVaultPriceState(priceState) {
11
+ if ('unitPrice' in priceState) {
12
+ return {
13
+ ...priceState,
14
+ unitPrice: priceState.unitPrice,
15
+ timestamp: toNumber(priceState.timestamp),
16
+ };
17
+ }
18
+ const anchorTimestamp = toNumber(priceState.anchorTimestamp);
19
+ const driftTimestamp = toNumber(priceState.driftTimestamp);
20
+ const useDriftPrice = driftTimestamp >= anchorTimestamp;
21
+ return {
22
+ ...priceState,
23
+ unitPrice: useDriftPrice ? priceState.driftPrice : priceState.anchorPrice,
24
+ timestamp: useDriftPrice ? driftTimestamp : anchorTimestamp,
25
+ };
26
+ }
27
+ export async function convertTokenToUnitsIfActive(client, feeCalculator, feeCalculatorVersion, vault, token, tokenAmount, rounding) {
28
+ if (feeCalculatorVersion === ContractVersion.V2) {
29
+ return client.readContract({
30
+ address: feeCalculator,
31
+ abi: priceAndFeeCalculatorV2Abi,
32
+ functionName: 'convertTokenToUnitsIfActive',
33
+ args: [vault, token, tokenAmount, rounding],
34
+ });
35
+ }
36
+ return client.readContract({
37
+ address: feeCalculator,
38
+ abi: priceAndFeeCalculatorAbi,
39
+ functionName: 'convertTokenToUnitsIfActive',
40
+ args: [vault, token, tokenAmount, rounding],
41
+ });
42
+ }
43
+ export async function convertUnitsToTokenIfActive(client, feeCalculator, feeCalculatorVersion, vault, token, unitsAmount, rounding) {
44
+ if (feeCalculatorVersion === ContractVersion.V2) {
45
+ return client.readContract({
46
+ address: feeCalculator,
47
+ abi: priceAndFeeCalculatorV2Abi,
48
+ functionName: 'convertUnitsToTokenIfActive',
49
+ args: [vault, token, unitsAmount, rounding],
50
+ });
51
+ }
52
+ return client.readContract({
53
+ address: feeCalculator,
54
+ abi: priceAndFeeCalculatorAbi,
55
+ functionName: 'convertUnitsToTokenIfActive',
56
+ args: [vault, token, unitsAmount, rounding],
57
+ });
58
+ }
59
+ export async function convertTokenToUnits(client, feeCalculator, feeCalculatorVersion, vault, token, tokenAmount) {
60
+ if (feeCalculatorVersion === ContractVersion.V2) {
61
+ return client.readContract({
62
+ address: feeCalculator,
63
+ abi: priceAndFeeCalculatorV2Abi,
64
+ functionName: 'convertTokenToUnits',
65
+ args: [vault, token, tokenAmount],
66
+ });
67
+ }
68
+ return client.readContract({
69
+ address: feeCalculator,
70
+ abi: priceAndFeeCalculatorAbi,
71
+ functionName: 'convertTokenToUnits',
72
+ args: [vault, token, tokenAmount],
73
+ });
74
+ }
75
+ export async function convertUnitsToToken(client, feeCalculator, feeCalculatorVersion, vault, token, unitsAmount) {
76
+ if (feeCalculatorVersion === ContractVersion.V2) {
77
+ return client.readContract({
78
+ address: feeCalculator,
79
+ abi: priceAndFeeCalculatorV2Abi,
80
+ functionName: 'convertUnitsToToken',
81
+ args: [vault, token, unitsAmount],
82
+ });
83
+ }
84
+ return client.readContract({
85
+ address: feeCalculator,
86
+ abi: priceAndFeeCalculatorAbi,
87
+ functionName: 'convertUnitsToToken',
88
+ args: [vault, token, unitsAmount],
89
+ });
90
+ }
91
+ export async function getAnchorTimestamp(client, feeCalculator, feeCalculatorVersion, vault) {
92
+ if (feeCalculatorVersion !== ContractVersion.V2) {
93
+ throw new UnsupportedFeatureError('Aera: sync redeem requires V2 price and fee calculator');
94
+ }
95
+ return client.readContract({
96
+ address: feeCalculator,
97
+ abi: priceAndFeeCalculatorV2Abi,
98
+ functionName: 'getAnchorTimestamp',
99
+ args: [vault],
100
+ });
101
+ }
102
+ export async function getVaultState(client, feeCalculator, feeCalculatorVersion, vault) {
103
+ if (feeCalculatorVersion === ContractVersion.V2) {
104
+ const [priceState, accruals] = await client.readContract({
105
+ address: feeCalculator,
106
+ abi: priceAndFeeCalculatorV2Abi,
107
+ functionName: 'getVaultState',
108
+ args: [vault],
109
+ });
110
+ return [normalizeVaultPriceState(priceState), accruals];
111
+ }
112
+ const [priceState, accruals] = await client.readContract({
113
+ address: feeCalculator,
114
+ abi: priceAndFeeCalculatorAbi,
115
+ functionName: 'getVaultState',
116
+ args: [vault],
117
+ });
118
+ return [normalizeVaultPriceState(priceState), accruals];
119
+ }
120
+ export async function isVaultPaused(client, feeCalculator, feeCalculatorVersion, vault) {
121
+ if (feeCalculatorVersion === ContractVersion.V2) {
122
+ return client.readContract({
123
+ address: feeCalculator,
124
+ abi: priceAndFeeCalculatorV2Abi,
125
+ functionName: 'isVaultPaused',
126
+ args: [vault],
127
+ });
128
+ }
129
+ return client.readContract({
130
+ address: feeCalculator,
131
+ abi: priceAndFeeCalculatorAbi,
132
+ functionName: 'isVaultPaused',
133
+ args: [vault],
134
+ });
135
+ }
136
+ export const Rounding = {
137
+ Floor: ROUNDING_FLOOR,
138
+ Ceil: ROUNDING_CEIL,
139
+ };
140
+ //# sourceMappingURL=priceAndFeeCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceAndFeeCalculator.js","sourceRoot":"","sources":["../../../src/evm/aeraContracts/priceAndFeeCalculator.ts"],"names":[],"mappings":"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"}