@augustdigital/sdk 4.24.8 → 4.24.10-alpha-3

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 (145) hide show
  1. package/lib/abis/RwaRedeem.d.ts +76 -0
  2. package/lib/abis/RwaRedeem.js +55 -0
  3. package/lib/abis/RwaRedeem.js.map +1 -0
  4. package/lib/abis/TokenizedVaultV2WithDepositWithPermit.d.ts +85 -0
  5. package/lib/abis/TokenizedVaultV2WithDepositWithPermit.js +1878 -0
  6. package/lib/abis/TokenizedVaultV2WithDepositWithPermit.js.map +1 -0
  7. package/lib/adapters/solana/getters.d.ts +2 -2
  8. package/lib/adapters/solana/getters.js +36 -100
  9. package/lib/adapters/solana/getters.js.map +1 -1
  10. package/lib/adapters/solana/index.d.ts +2 -2
  11. package/lib/adapters/solana/utils.d.ts +2 -2
  12. package/lib/adapters/solana/utils.js +1 -8
  13. package/lib/adapters/solana/utils.js.map +1 -1
  14. package/lib/adapters/stellar/actions.d.ts +3 -0
  15. package/lib/adapters/stellar/actions.js +11 -0
  16. package/lib/adapters/stellar/actions.js.map +1 -0
  17. package/lib/adapters/stellar/constants.d.ts +10 -0
  18. package/lib/adapters/stellar/constants.js +16 -0
  19. package/lib/adapters/stellar/constants.js.map +1 -0
  20. package/lib/adapters/stellar/getters.d.ts +4 -0
  21. package/lib/adapters/stellar/getters.js +51 -0
  22. package/lib/adapters/stellar/getters.js.map +1 -0
  23. package/lib/adapters/stellar/index.d.ts +24 -0
  24. package/lib/adapters/stellar/index.js +68 -0
  25. package/lib/adapters/stellar/index.js.map +1 -0
  26. package/lib/adapters/stellar/types.d.ts +15 -0
  27. package/lib/adapters/stellar/types.js +3 -0
  28. package/lib/adapters/stellar/types.js.map +1 -0
  29. package/lib/adapters/stellar/utils.d.ts +12 -0
  30. package/lib/adapters/stellar/utils.js +31 -0
  31. package/lib/adapters/stellar/utils.js.map +1 -0
  32. package/lib/adapters/sui/transformer.js +4 -9
  33. package/lib/adapters/sui/transformer.js.map +1 -1
  34. package/lib/core/base.class.d.ts +3 -2
  35. package/lib/core/base.class.js +14 -7
  36. package/lib/core/base.class.js.map +1 -1
  37. package/lib/core/constants/core.d.ts +6 -3
  38. package/lib/core/constants/core.js +3 -0
  39. package/lib/core/constants/core.js.map +1 -1
  40. package/lib/core/constants/hardcoded-vaults.d.ts +7 -0
  41. package/lib/core/constants/hardcoded-vaults.js +179 -0
  42. package/lib/core/constants/hardcoded-vaults.js.map +1 -0
  43. package/lib/core/constants/ovault.d.ts +13 -0
  44. package/lib/core/constants/ovault.js +160 -0
  45. package/lib/core/constants/ovault.js.map +1 -0
  46. package/lib/core/constants/rwa-vaults.d.ts +4 -0
  47. package/lib/core/constants/rwa-vaults.js +27 -0
  48. package/lib/core/constants/rwa-vaults.js.map +1 -0
  49. package/lib/core/constants/web3.d.ts +5 -0
  50. package/lib/core/constants/web3.js +9 -0
  51. package/lib/core/constants/web3.js.map +1 -1
  52. package/lib/core/constants.adapters.d.ts +117 -0
  53. package/lib/core/constants.adapters.js +160 -0
  54. package/lib/core/constants.adapters.js.map +1 -0
  55. package/lib/core/constants.core.d.ts +78 -0
  56. package/lib/core/constants.core.js +75 -0
  57. package/lib/core/constants.core.js.map +1 -0
  58. package/lib/core/constants.vaults.d.ts +64 -0
  59. package/lib/core/constants.vaults.js +156 -0
  60. package/lib/core/constants.vaults.js.map +1 -0
  61. package/lib/core/constants.web3.d.ts +31 -0
  62. package/lib/core/constants.web3.js +100 -0
  63. package/lib/core/constants.web3.js.map +1 -0
  64. package/lib/core/fetcher.d.ts +4 -4
  65. package/lib/core/fetcher.js +9 -2
  66. package/lib/core/fetcher.js.map +1 -1
  67. package/lib/core/helpers/address-utils.d.ts +3 -0
  68. package/lib/core/helpers/address-utils.js +18 -0
  69. package/lib/core/helpers/address-utils.js.map +1 -0
  70. package/lib/core/helpers/vaults.js +37 -29
  71. package/lib/core/helpers/vaults.js.map +1 -1
  72. package/lib/core/helpers/web3.d.ts +3 -2
  73. package/lib/core/helpers/web3.js +17 -1
  74. package/lib/core/helpers/web3.js.map +1 -1
  75. package/lib/core/helpers.adapters.d.ts +9 -0
  76. package/lib/core/helpers.adapters.js +28 -0
  77. package/lib/core/helpers.adapters.js.map +1 -0
  78. package/lib/core/helpers.core.d.ts +48 -0
  79. package/lib/core/helpers.core.js +210 -0
  80. package/lib/core/helpers.core.js.map +1 -0
  81. package/lib/core/helpers.signer.d.ts +9 -0
  82. package/lib/core/helpers.signer.js +54 -0
  83. package/lib/core/helpers.signer.js.map +1 -0
  84. package/lib/core/helpers.vaults.d.ts +36 -0
  85. package/lib/core/helpers.vaults.js +145 -0
  86. package/lib/core/helpers.vaults.js.map +1 -0
  87. package/lib/core/helpers.web3.d.ts +95 -0
  88. package/lib/core/helpers.web3.js +376 -0
  89. package/lib/core/helpers.web3.js.map +1 -0
  90. package/lib/index.d.ts +1 -0
  91. package/lib/index.js +1 -0
  92. package/lib/index.js.map +1 -1
  93. package/lib/main.d.ts +5 -0
  94. package/lib/main.js +7 -2
  95. package/lib/main.js.map +1 -1
  96. package/lib/modules/vaults/getters.d.ts +29 -2
  97. package/lib/modules/vaults/getters.js +516 -83
  98. package/lib/modules/vaults/getters.js.map +1 -1
  99. package/lib/modules/vaults/main.d.ts +6 -0
  100. package/lib/modules/vaults/main.js +117 -34
  101. package/lib/modules/vaults/main.js.map +1 -1
  102. package/lib/modules/vaults/utils/call-data-decoder.d.ts +14 -0
  103. package/lib/modules/vaults/utils/call-data-decoder.js +138 -0
  104. package/lib/modules/vaults/utils/call-data-decoder.js.map +1 -0
  105. package/lib/modules/vaults/utils/date-utils.d.ts +11 -0
  106. package/lib/modules/vaults/utils/date-utils.js +39 -0
  107. package/lib/modules/vaults/utils/date-utils.js.map +1 -0
  108. package/lib/modules/vaults/utils.d.ts +2 -0
  109. package/lib/modules/vaults/utils.js +117 -1
  110. package/lib/modules/vaults/utils.js.map +1 -1
  111. package/lib/modules/vaults/write.actions.js +15 -2
  112. package/lib/modules/vaults/write.actions.js.map +1 -1
  113. package/lib/services/layerzero/builder.d.ts +7 -0
  114. package/lib/services/layerzero/builder.js +251 -0
  115. package/lib/services/layerzero/builder.js.map +1 -0
  116. package/lib/services/layerzero/deposits.js +2 -8
  117. package/lib/services/layerzero/deposits.js.map +1 -1
  118. package/lib/services/layerzero/ovault-deposit.d.ts +6 -0
  119. package/lib/services/layerzero/ovault-deposit.js +73 -0
  120. package/lib/services/layerzero/ovault-deposit.js.map +1 -0
  121. package/lib/services/layerzero/ovault-redeem.d.ts +4 -0
  122. package/lib/services/layerzero/ovault-redeem.js +46 -0
  123. package/lib/services/layerzero/ovault-redeem.js.map +1 -0
  124. package/lib/services/layerzero/redeems.d.ts +10 -0
  125. package/lib/services/layerzero/redeems.js +79 -0
  126. package/lib/services/layerzero/redeems.js.map +1 -0
  127. package/lib/services/layerzero/utils.d.ts +1 -0
  128. package/lib/services/layerzero/utils.js +11 -0
  129. package/lib/services/layerzero/utils.js.map +1 -0
  130. package/lib/types/ovault.d.ts +78 -0
  131. package/lib/types/ovault.js +3 -0
  132. package/lib/types/ovault.js.map +1 -0
  133. package/lib/types/rwa-redemption.d.ts +12 -0
  134. package/lib/types/rwa-redemption.js +3 -0
  135. package/lib/types/rwa-redemption.js.map +1 -0
  136. package/lib/types/vaults.d.ts +41 -9
  137. package/lib/types/vaults.js.map +1 -1
  138. package/lib/types/web3.d.ts +5 -0
  139. package/lib/types/web3.js +10 -0
  140. package/lib/types/web3.js.map +1 -1
  141. package/lib/types/webserver.d.ts +11 -2
  142. package/lib/verify.d.ts +2 -0
  143. package/lib/verify.js +33 -0
  144. package/lib/verify.js.map +1 -0
  145. package/package.json +1 -1
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.buildOVaultTx = buildOVaultTx;
37
+ exports.estimateOVaultFees = estimateOVaultFees;
38
+ const ovault_evm_1 = require("@layerzerolabs/ovault-evm");
39
+ const core_1 = require("../../core/helpers/core");
40
+ const ovault_1 = require("../../core/constants/ovault");
41
+ const MULTI_ASSET_PREVIEW_ABI = [
42
+ {
43
+ type: 'function',
44
+ name: 'previewDeposit',
45
+ inputs: [
46
+ { name: 'assetIn', type: 'address' },
47
+ { name: 'amountIn', type: 'uint256' },
48
+ ],
49
+ outputs: [
50
+ { name: '', type: 'uint256' },
51
+ { name: '', type: 'uint256' },
52
+ ],
53
+ stateMutability: 'view',
54
+ },
55
+ ];
56
+ let patchLock = Promise.resolve();
57
+ function buildChainObject(chainId, rpcUrl) {
58
+ return {
59
+ id: chainId,
60
+ name: `chain-${chainId}`,
61
+ nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 },
62
+ rpcUrls: {
63
+ default: { http: [rpcUrl] },
64
+ },
65
+ };
66
+ }
67
+ async function generateOVaultInputsWithOverride(input, ovaultConfig) {
68
+ if (!ovaultConfig.multiAsset) {
69
+ return ovault_evm_1.OVaultSyncMessageBuilder.generateOVaultInputs(input);
70
+ }
71
+ const prev = patchLock;
72
+ let unlock;
73
+ patchLock = new Promise((r) => {
74
+ unlock = r;
75
+ });
76
+ await prev;
77
+ const { hubAssetAddress } = ovaultConfig.multiAsset;
78
+ const Builder = ovault_evm_1.OVaultSyncMessageBuilder;
79
+ const originalQuote = Builder.quoteOVaultOutput;
80
+ const originalBuildSendParams = Builder.buildSendParams;
81
+ Builder.quoteOVaultOutput = async (quoteInput) => {
82
+ const { createPublicClient, http } = await Promise.resolve().then(() => __importStar(require('viem')));
83
+ const hubRpc = quoteInput.hubChain?.rpcUrls?.default?.http?.[0];
84
+ const client = createPublicClient({
85
+ chain: quoteInput.hubChain,
86
+ transport: http(hubRpc),
87
+ });
88
+ const sourceAmount = await Builder.getOutputAmount({
89
+ ...quoteInput,
90
+ dstAmount: 0n,
91
+ minDstAmount: 0n,
92
+ dstAddress: quoteInput.walletAddress,
93
+ tokenAddress: quoteInput.tokenAddress ?? quoteInput.oftAddress,
94
+ });
95
+ const [outputAmount] = (await client.readContract({
96
+ address: ovaultConfig.vaultAddress,
97
+ abi: MULTI_ASSET_PREVIEW_ABI,
98
+ functionName: 'previewDeposit',
99
+ args: [hubAssetAddress, sourceAmount],
100
+ }));
101
+ const { slippage } = quoteInput;
102
+ if (slippage < 0.001) {
103
+ throw new Error('Slippage must be greater than 0.1%');
104
+ }
105
+ const slippageAmount = (outputAmount * BigInt(Number(slippage.toFixed(3)) * 1000)) / 1000n;
106
+ return {
107
+ dstAmount: outputAmount,
108
+ minDstAmount: outputAmount - slippageAmount,
109
+ };
110
+ };
111
+ Builder.buildSendParams = async (spInput) => {
112
+ const result = await originalBuildSendParams.call(Builder, spInput);
113
+ if (result.composeMsg && result.composeMsg !== '0x') {
114
+ const opts = result.extraOptions;
115
+ if (opts && opts.length >= 6 && opts.startsWith('0x0003')) {
116
+ const body = opts.slice(6);
117
+ const hasLzReceive = body.startsWith('01001101');
118
+ if (!hasLzReceive) {
119
+ result.extraOptions = `0x0003${ovault_1.LZ_RECEIVE_OPTION_HEX}${body}`;
120
+ }
121
+ }
122
+ }
123
+ return result;
124
+ };
125
+ try {
126
+ return await ovault_evm_1.OVaultSyncMessageBuilder.generateOVaultInputs(input);
127
+ }
128
+ finally {
129
+ Builder.quoteOVaultOutput = originalQuote;
130
+ Builder.buildSendParams = originalBuildSendParams;
131
+ unlock();
132
+ }
133
+ }
134
+ async function buildOVaultTx(props, providers) {
135
+ try {
136
+ const ovaultConfig = (0, ovault_1.getOVaultConfig)(props.vaultAddress);
137
+ if (!ovaultConfig) {
138
+ return {
139
+ success: false,
140
+ error: `OVault not configured for vault: ${props.vaultAddress}`,
141
+ };
142
+ }
143
+ const { hubChainId } = ovaultConfig;
144
+ const hubRpcUrl = providers[hubChainId];
145
+ if (!hubRpcUrl) {
146
+ return {
147
+ success: false,
148
+ error: `No RPC provider configured for hub chain ${hubChainId}. Pass it via providers config.`,
149
+ };
150
+ }
151
+ const hubChain = buildChainObject(hubChainId, hubRpcUrl);
152
+ const userRpcUrl = providers[props.userChainId];
153
+ if (!userRpcUrl) {
154
+ return {
155
+ success: false,
156
+ error: `No RPC provider configured for source chain ${props.userChainId}. Pass it via providers config.`,
157
+ };
158
+ }
159
+ const userChain = buildChainObject(props.userChainId, userRpcUrl);
160
+ let srcEid;
161
+ let dstEid;
162
+ let tokenAddress;
163
+ let oftAddress;
164
+ switch (props.operation) {
165
+ case 'DEPOSIT':
166
+ srcEid =
167
+ ovaultConfig.layerZeroEids.spokes[props.userChainId] ||
168
+ ovaultConfig.layerZeroEids.hub;
169
+ dstEid = props.destinationChainId
170
+ ? ovaultConfig.layerZeroEids.spokes[props.destinationChainId] ||
171
+ ovaultConfig.layerZeroEids.hub
172
+ : srcEid;
173
+ tokenAddress = ovaultConfig.contracts.assetToken[props.userChainId];
174
+ oftAddress = ovaultConfig.contracts.assetOFT[props.userChainId];
175
+ if (!tokenAddress || !oftAddress) {
176
+ return {
177
+ success: false,
178
+ error: `Chain ${props.userChainId} is not configured for deposits on this vault`,
179
+ };
180
+ }
181
+ break;
182
+ case 'REDEEM':
183
+ srcEid = ovaultConfig.layerZeroEids.hub;
184
+ dstEid = props.destinationChainId
185
+ ? ovaultConfig.layerZeroEids.spokes[props.destinationChainId] ||
186
+ ovaultConfig.layerZeroEids.hub
187
+ : ovaultConfig.layerZeroEids.spokes[props.userChainId] ||
188
+ ovaultConfig.layerZeroEids.hub;
189
+ tokenAddress = ovaultConfig.vaultAddress;
190
+ oftAddress = ovaultConfig.contracts.shareOFTAdapter;
191
+ break;
192
+ default:
193
+ throw new Error(`Invalid operation: ${props.operation}`);
194
+ }
195
+ const normalizedAmount = (0, core_1.toNormalizedBn)(props.amount, props.decimals);
196
+ const input = {
197
+ srcEid,
198
+ hubEid: ovaultConfig.layerZeroEids.hub,
199
+ dstEid,
200
+ dstAddress: props.recipientAddress || props.walletAddress,
201
+ walletAddress: props.walletAddress,
202
+ vaultAddress: ovaultConfig.vaultAddress,
203
+ composerAddress: ovaultConfig.contracts.composerSync,
204
+ hubChain: hubChain,
205
+ sourceChain: userChain,
206
+ operation: props.operation === 'DEPOSIT'
207
+ ? ovault_evm_1.OVaultSyncOperations.DEPOSIT
208
+ : ovault_evm_1.OVaultSyncOperations.REDEEM,
209
+ amount: BigInt(normalizedAmount.raw),
210
+ slippage: (props.slippageBps || ovault_1.DEFAULT_SLIPPAGE_BPS) / 10000,
211
+ tokenAddress,
212
+ oftAddress,
213
+ hubLzComposeGasLimit: ovault_1.DEFAULT_HUB_LZ_COMPOSE_GAS,
214
+ };
215
+ const inputs = await generateOVaultInputsWithOverride(input, ovaultConfig);
216
+ const rawNativeFee = inputs.messageFee.nativeFee;
217
+ const rawMessageValue = inputs.messageValue;
218
+ const feeBuffer = (rawNativeFee * BigInt(ovault_1.DEFAULT_FEE_BUFFER_BPS)) / 10000n;
219
+ inputs.messageFee.nativeFee = rawNativeFee + feeBuffer;
220
+ inputs.messageValue = rawMessageValue + feeBuffer;
221
+ if (inputs.contractFunctionName === 'send') {
222
+ inputs.txArgs[1].nativeFee = inputs.messageFee.nativeFee;
223
+ }
224
+ return { success: true, data: inputs };
225
+ }
226
+ catch (error) {
227
+ console.error('[buildOVaultTx] Error:', error);
228
+ return {
229
+ success: false,
230
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
231
+ };
232
+ }
233
+ }
234
+ async function estimateOVaultFees(props, providers) {
235
+ try {
236
+ const result = await buildOVaultTx(props, providers);
237
+ if (!result.success || !result.data) {
238
+ console.error('[estimateOVaultFees] Failed:', result.error);
239
+ return null;
240
+ }
241
+ return {
242
+ nativeFee: result.data.messageFee.nativeFee,
243
+ lzFee: result.data.messageFee.nativeFee,
244
+ };
245
+ }
246
+ catch (error) {
247
+ console.error('[estimateOVaultFees] Error:', error);
248
+ return null;
249
+ }
250
+ }
251
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src.ts/services/layerzero/builder.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ exports.LAYERZERO_VAULTS = void 0;
4
4
  exports.isLayerZeroVault = isLayerZeroVault;
5
5
  exports.queryLayerZeroDeposits = queryLayerZeroDeposits;
6
6
  const fetcher_1 = require("../subgraph/fetcher");
7
+ const utils_1 = require("./utils");
7
8
  exports.LAYERZERO_VAULTS = {
8
9
  coreUSDC: {
9
10
  address: '0xE9B725010A9E419412ed67d0fA5f3A5f40159D32',
@@ -31,13 +32,6 @@ exports.LAYERZERO_VAULTS = {
31
32
  ],
32
33
  },
33
34
  };
34
- function addressToBytes32(address) {
35
- if (!address.match(/^0x[a-fA-F0-9]{40}$/)) {
36
- throw new Error(`Invalid Ethereum address format: ${address}. Expected format: 0x followed by 40 hexadecimal characters.`);
37
- }
38
- const cleanAddress = address.replace(/^0x/i, '').toLowerCase();
39
- return '0x' + '0'.repeat(24) + cleanAddress;
40
- }
41
35
  function isLayerZeroVault(vaultAddressOrSymbol) {
42
36
  const normalized = vaultAddressOrSymbol.toLowerCase();
43
37
  if (normalized === exports.LAYERZERO_VAULTS.coreUSDC.address.toLowerCase() ||
@@ -82,7 +76,7 @@ async function queryLayerZeroDeposits(vaultKey, wallet) {
82
76
  }
83
77
  }`;
84
78
  if (wallet) {
85
- const senderBytes32 = addressToBytes32(wallet);
79
+ const senderBytes32 = (0, utils_1.addressToBytes32)(wallet);
86
80
  query = `GetDeposits {
87
81
  depositeds(where: { sender: "${senderBytes32}" }) {
88
82
  assetAmt
@@ -1 +1 @@
1
- {"version":3,"file":"deposits.js","sourceRoot":"","sources":["../../../src.ts/services/layerzero/deposits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deposits.js","sourceRoot":"","sources":["../../../src.ts/services/layerzero/deposits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Signer, Wallet } from 'ethers';
2
+ import { IAddress, IProvidersConfig } from '../../types';
3
+ import { IOVaultDepositOptions } from '../../types/ovault';
4
+ export declare function needsOVaultApproval(tokenAddress: IAddress, spenderAddress: IAddress, walletAddress: IAddress, amount: bigint, signer: Signer | Wallet): Promise<boolean>;
5
+ export declare function approveOVault(tokenAddress: IAddress, spenderAddress: IAddress, amount: bigint, signer: Signer | Wallet): Promise<string>;
6
+ export declare function executeOVaultDeposit(signer: Signer | Wallet, options: IOVaultDepositOptions, providers: IProvidersConfig): Promise<string>;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.needsOVaultApproval = needsOVaultApproval;
4
+ exports.approveOVault = approveOVault;
5
+ exports.executeOVaultDeposit = executeOVaultDeposit;
6
+ const ethers_1 = require("ethers");
7
+ const ovault_1 = require("../../core/constants/ovault");
8
+ const core_1 = require("../../core/helpers/core");
9
+ const builder_1 = require("./builder");
10
+ const ERC20_ABI = [
11
+ 'function allowance(address owner, address spender) view returns (uint256)',
12
+ 'function approve(address spender, uint256 amount) returns (bool)',
13
+ ];
14
+ async function needsOVaultApproval(tokenAddress, spenderAddress, walletAddress, amount, signer) {
15
+ try {
16
+ const provider = signer.provider;
17
+ if (!provider)
18
+ throw new Error('Signer has no provider attached');
19
+ const contract = new ethers_1.Contract(tokenAddress, ERC20_ABI, provider);
20
+ const allowance = await contract.allowance(walletAddress, spenderAddress);
21
+ return allowance < amount;
22
+ }
23
+ catch (error) {
24
+ console.error('[needsOVaultApproval] Error checking allowance:', error);
25
+ return true;
26
+ }
27
+ }
28
+ async function approveOVault(tokenAddress, spenderAddress, amount, signer) {
29
+ const contract = new ethers_1.Contract(tokenAddress, ERC20_ABI, signer);
30
+ const tx = await contract.approve(spenderAddress, amount);
31
+ const receipt = await tx.wait();
32
+ return receipt.hash;
33
+ }
34
+ async function executeOVaultDeposit(signer, options, providers) {
35
+ const signerAddress = await signer.getAddress();
36
+ const ovaultConfig = (0, ovault_1.getOVaultConfig)(options.vault);
37
+ if (!ovaultConfig) {
38
+ throw new Error('Vault does not support OVault operations');
39
+ }
40
+ const buildProps = {
41
+ vaultAddress: options.vault,
42
+ operation: 'DEPOSIT',
43
+ amount: options.amount,
44
+ decimals: options.decimals,
45
+ userChainId: options.sourceChainId,
46
+ destinationChainId: options.destinationChainId,
47
+ walletAddress: signerAddress,
48
+ slippageBps: options.slippageBps || ovault_1.DEFAULT_SLIPPAGE_BPS,
49
+ };
50
+ const result = await (0, builder_1.buildOVaultTx)(buildProps, providers);
51
+ if (!result.success || !result.data) {
52
+ throw new Error(result.error || 'Failed to build transaction');
53
+ }
54
+ const txInputs = result.data;
55
+ if (!options.skipApproval) {
56
+ const tokenAddr = txInputs.approval?.tokenAddress ??
57
+ ovaultConfig.contracts.assetToken[options.sourceChainId];
58
+ const spenderAddr = txInputs.approval?.spender ?? txInputs.contractAddress;
59
+ const approvalAmount = txInputs.approval?.amount ??
60
+ BigInt((0, core_1.toNormalizedBn)(options.amount, options.decimals).raw);
61
+ const needsApproval = await needsOVaultApproval(tokenAddr, spenderAddr, signerAddress, approvalAmount, signer);
62
+ if (needsApproval) {
63
+ await approveOVault(tokenAddr, spenderAddr, approvalAmount, signer);
64
+ }
65
+ }
66
+ const contract = new ethers_1.Contract(txInputs.contractAddress, txInputs.abi, signer);
67
+ const tx = await contract[txInputs.contractFunctionName](...txInputs.txArgs, {
68
+ value: txInputs.messageValue,
69
+ });
70
+ const receipt = await tx.wait();
71
+ return receipt.hash;
72
+ }
73
+ //# sourceMappingURL=ovault-deposit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ovault-deposit.js","sourceRoot":"","sources":["../../../src.ts/services/layerzero/ovault-deposit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Signer, Wallet } from 'ethers';
2
+ import { IProvidersConfig } from '../../types';
3
+ import { IOVaultRedeemOptions } from '../../types/ovault';
4
+ export declare function executeOVaultRedeem(signer: Signer | Wallet, options: IOVaultRedeemOptions, providers: IProvidersConfig): Promise<string>;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeOVaultRedeem = executeOVaultRedeem;
4
+ const ethers_1 = require("ethers");
5
+ const ovault_1 = require("../../core/constants/ovault");
6
+ const builder_1 = require("./builder");
7
+ const ovault_deposit_1 = require("./ovault-deposit");
8
+ async function executeOVaultRedeem(signer, options, providers) {
9
+ const signerAddress = await signer.getAddress();
10
+ const ovaultConfig = (0, ovault_1.getOVaultConfig)(options.vault);
11
+ if (!ovaultConfig) {
12
+ throw new Error('Vault does not support OVault operations');
13
+ }
14
+ if (options.sourceChainId !== ovaultConfig.hubChainId) {
15
+ throw new Error(`Redemptions must be executed from hub chain (${ovaultConfig.hubChainId}). ` +
16
+ `Please switch to the hub chain first.`);
17
+ }
18
+ const buildProps = {
19
+ vaultAddress: options.vault,
20
+ operation: 'REDEEM',
21
+ amount: options.amount,
22
+ decimals: options.decimals,
23
+ userChainId: options.sourceChainId,
24
+ destinationChainId: options.destinationChainId || options.sourceChainId,
25
+ walletAddress: signerAddress,
26
+ slippageBps: options.slippageBps || ovault_1.DEFAULT_SLIPPAGE_BPS,
27
+ };
28
+ const result = await (0, builder_1.buildOVaultTx)(buildProps, providers);
29
+ if (!result.success || !result.data) {
30
+ throw new Error(result.error || 'Failed to build transaction');
31
+ }
32
+ const txInputs = result.data;
33
+ if (!options.skipApproval && txInputs.approval) {
34
+ const needsApprovalResult = await (0, ovault_deposit_1.needsOVaultApproval)(txInputs.approval.tokenAddress, txInputs.approval.spender, signerAddress, txInputs.approval.amount, signer);
35
+ if (needsApprovalResult) {
36
+ await (0, ovault_deposit_1.approveOVault)(txInputs.approval.tokenAddress, txInputs.approval.spender, txInputs.approval.amount, signer);
37
+ }
38
+ }
39
+ const contract = new ethers_1.Contract(txInputs.contractAddress, txInputs.abi, signer);
40
+ const tx = await contract[txInputs.contractFunctionName](...txInputs.txArgs, {
41
+ value: txInputs.messageValue,
42
+ });
43
+ const receipt = await tx.wait();
44
+ return receipt.hash;
45
+ }
46
+ //# sourceMappingURL=ovault-redeem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ovault-redeem.js","sourceRoot":"","sources":["../../../src.ts/services/layerzero/ovault-redeem.ts"],"names":[],"mappings":";;AAiCA,kDAqEC;AA/FD,mCAAkD;AAGlD,wDAGqC;AACrC,uCAA0C;AAC1C,qDAAsE;AAkB/D,KAAK,UAAU,mBAAmB,CACvC,MAAuB,EACvB,OAA6B,EAC7B,SAA2B;IAE3B,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAGhD,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAGD,IAAI,OAAO,CAAC,aAAa,KAAK,YAAY,CAAC,UAAU,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,gDAAgD,YAAY,CAAC,UAAU,KAAK;YAC1E,uCAAuC,CAC1C,CAAC;IACJ,CAAC;IAGD,MAAM,UAAU,GAAsB;QACpC,YAAY,EAAE,OAAO,CAAC,KAAK;QAC3B,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,aAAa;QAClC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,aAAa;QACvE,aAAa,EAAE,aAAyB;QACxC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,6BAAoB;KACzD,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAa,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,6BAA6B,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;IAG7B,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,mBAAmB,GAAG,MAAM,IAAA,oCAAmB,EACnD,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAC9B,QAAQ,CAAC,QAAQ,CAAC,OAAO,EACzB,aAAyB,EACzB,QAAQ,CAAC,QAAQ,CAAC,MAAM,EACxB,MAAM,CACP,CAAC;QAEF,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,IAAA,8BAAa,EACjB,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAC9B,QAAQ,CAAC,QAAQ,CAAC,OAAO,EACzB,QAAQ,CAAC,QAAQ,CAAC,MAAM,EACxB,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC;IAGD,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAE9E,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE;QAC3E,KAAK,EAAE,QAAQ,CAAC,YAAY;KAC7B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { IAddress } from '../../types';
2
+ export interface ILayerZeroRedeem {
3
+ id: string;
4
+ recipient: string;
5
+ sender: string;
6
+ shareAmt: string;
7
+ transactionHash_: string;
8
+ timestamp_: string;
9
+ }
10
+ export declare function queryLayerZeroRedeems(wallet?: IAddress): Promise<ILayerZeroRedeem[]>;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.queryLayerZeroRedeems = queryLayerZeroRedeems;
4
+ const fetcher_1 = require("../subgraph/fetcher");
5
+ const deposits_1 = require("./deposits");
6
+ const utils_1 = require("./utils");
7
+ function validateRedeemResponse(result) {
8
+ if (!result || typeof result !== 'object') {
9
+ return false;
10
+ }
11
+ const r = result;
12
+ if (!r.data || typeof r.data !== 'object') {
13
+ return false;
14
+ }
15
+ const data = r.data;
16
+ if (!Array.isArray(data.redeemeds)) {
17
+ return false;
18
+ }
19
+ return true;
20
+ }
21
+ async function queryLayerZeroRedeems(wallet) {
22
+ const vaultConfig = deposits_1.LAYERZERO_VAULTS.earnAUSD;
23
+ let query = `GetRedeems {
24
+ redeemeds {
25
+ id
26
+ recipient
27
+ sender
28
+ shareAmt
29
+ transactionHash_
30
+ timestamp_
31
+ }
32
+ }`;
33
+ if (wallet) {
34
+ const senderBytes32 = (0, utils_1.addressToBytes32)(wallet);
35
+ query = `GetRedeems {
36
+ redeemeds(where: { sender: "${senderBytes32}" }) {
37
+ id
38
+ recipient
39
+ sender
40
+ shareAmt
41
+ transactionHash_
42
+ timestamp_
43
+ }
44
+ }`;
45
+ }
46
+ const endpoints = vaultConfig.subgraphEndpoints;
47
+ let lastError;
48
+ for (let i = 0; i < endpoints.length; i++) {
49
+ try {
50
+ const response = await (0, fetcher_1.fetchSubgraph)(endpoints[i], query);
51
+ if (response.status === 404 && i < endpoints.length - 1) {
52
+ continue;
53
+ }
54
+ if (!response.ok) {
55
+ throw new Error(`GraphQL request failed with status ${response.status}: ${response.statusText}`);
56
+ }
57
+ const result = await response.json();
58
+ if (result.errors) {
59
+ throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
60
+ }
61
+ if (!validateRedeemResponse(result)) {
62
+ throw new Error(`Invalid response structure from LayerZero subgraph. Expected data.redeemeds array, got: ${JSON.stringify(result)}`);
63
+ }
64
+ return result.data.redeemeds;
65
+ }
66
+ catch (error) {
67
+ lastError = error;
68
+ if (i >= endpoints.length - 1)
69
+ break;
70
+ }
71
+ }
72
+ if (lastError instanceof Error) {
73
+ const enhancedError = new Error(`Failed to fetch LayerZero redeems for earnAUSD: ${lastError.message}`);
74
+ enhancedError.stack = lastError.stack;
75
+ throw enhancedError;
76
+ }
77
+ throw new Error(`Failed to fetch LayerZero redeems for earnAUSD: ${String(lastError)}`);
78
+ }
79
+ //# sourceMappingURL=redeems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redeems.js","sourceRoot":"","sources":["../../../src.ts/services/layerzero/redeems.ts"],"names":[],"mappings":";;AA6CA,sDA6EC;AApHD,iDAAoD;AACpD,yCAA8C;AAC9C,mCAA2C;AAc3C,SAAS,sBAAsB,CAC7B,MAAe;IAEf,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,GAAG,MAAiC,CAAC;IAC5C,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,IAA+B,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAQM,KAAK,UAAU,qBAAqB,CACzC,MAAiB;IAEjB,MAAM,WAAW,GAAG,2BAAgB,CAAC,QAAQ,CAAC;IAE9C,IAAI,KAAK,GAAG;;;;;;;;;MASR,CAAC;IAEL,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,aAAa,GAAG,IAAA,wBAAgB,EAAC,MAAM,CAAC,CAAC;QAC/C,KAAK,GAAG;sCAC0B,aAAa;;;;;;;;QAQ3C,CAAC;IACP,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAEhD,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAa,EAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAE1D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxD,SAAS;YACX,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CACb,sCAAsC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAChF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAErC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACb,2FAA2F,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CACpH,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM;QACvC,CAAC;IACH,CAAC;IAED,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,KAAK,CAC7B,mDAAmD,SAAS,CAAC,OAAO,EAAE,CACvE,CAAC;QACF,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACtC,MAAM,aAAa,CAAC;IACtB,CAAC;IACD,MAAM,IAAI,KAAK,CACb,mDAAmD,MAAM,CAAC,SAAS,CAAC,EAAE,CACvE,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function addressToBytes32(address: string): string;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addressToBytes32 = addressToBytes32;
4
+ function addressToBytes32(address) {
5
+ if (!address.match(/^0x[a-fA-F0-9]{40}$/)) {
6
+ throw new Error(`Invalid Ethereum address format: ${address}. Expected format: 0x followed by 40 hexadecimal characters.`);
7
+ }
8
+ const cleanAddress = address.replace(/^0x/i, '').toLowerCase();
9
+ return '0x' + '0'.repeat(24) + cleanAddress;
10
+ }
11
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src.ts/services/layerzero/utils.ts"],"names":[],"mappings":";;AASA,4CAWC;AAXD,SAAgB,gBAAgB,CAAC,OAAe;IAE9C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,oCAAoC,OAAO,8DAA8D,CAC1G,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE/D,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { IAddress } from './web3';
2
+ export interface IOVaultConfig {
3
+ vaultName: string;
4
+ vaultSymbol: string;
5
+ hubChainId: number;
6
+ vaultAddress: IAddress;
7
+ spokeChainIds: number[];
8
+ contracts: {
9
+ assetToken: Record<number, IAddress>;
10
+ assetOFT: Record<number, IAddress>;
11
+ shareOFTAdapter: IAddress;
12
+ composerSync: IAddress;
13
+ shareOFT: Record<number, IAddress>;
14
+ };
15
+ layerZeroEids: {
16
+ hub: number;
17
+ spokes: Record<number, number>;
18
+ };
19
+ multiAsset?: {
20
+ hubAssetAddress: IAddress;
21
+ };
22
+ }
23
+ export interface IOVaultDepositOptions {
24
+ vault: IAddress;
25
+ amount: string;
26
+ decimals: number;
27
+ sourceChainId: number;
28
+ destinationChainId?: number;
29
+ slippageBps?: number;
30
+ skipApproval?: boolean;
31
+ }
32
+ export interface IOVaultRedeemOptions {
33
+ vault: IAddress;
34
+ amount: string;
35
+ decimals: number;
36
+ sourceChainId: number;
37
+ destinationChainId?: number;
38
+ slippageBps?: number;
39
+ skipApproval?: boolean;
40
+ }
41
+ export interface IOVaultFeeEstimateOptions {
42
+ vault: IAddress;
43
+ operation: 'DEPOSIT' | 'REDEEM';
44
+ amount: string;
45
+ decimals: number;
46
+ sourceChainId: number;
47
+ destinationChainId?: number;
48
+ wallet: IAddress;
49
+ slippageBps?: number;
50
+ }
51
+ export interface IOVaultFeeEstimate {
52
+ nativeFee: bigint;
53
+ lzFee: bigint;
54
+ }
55
+ export interface IOVaultApprovalOptions {
56
+ vault: IAddress;
57
+ operation: 'DEPOSIT' | 'REDEEM';
58
+ amount: string;
59
+ decimals: number;
60
+ chainId: number;
61
+ wallet: IAddress;
62
+ }
63
+ export interface IOVaultBuildResult {
64
+ success: boolean;
65
+ data?: any;
66
+ error?: string;
67
+ }
68
+ export interface IOVaultBuildProps {
69
+ vaultAddress: IAddress;
70
+ operation: 'DEPOSIT' | 'REDEEM';
71
+ amount: string | number | bigint;
72
+ decimals: number;
73
+ userChainId: number;
74
+ destinationChainId?: number;
75
+ walletAddress: IAddress;
76
+ recipientAddress?: IAddress;
77
+ slippageBps?: number;
78
+ }