@paxoslabs/amplify-sdk 0.1.1 → 0.2.0-alpha.1
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.
- package/CHANGELOG.md +0 -2
- package/README.md +42 -0
- package/dist/{chunk-REKEQLQA.mjs → chunk-4ORV7PFT.mjs} +3 -3
- package/dist/{chunk-REKEQLQA.mjs.map → chunk-4ORV7PFT.mjs.map} +1 -1
- package/dist/{chunk-GS7TDQXA.js → chunk-76SRRIGW.js} +8 -8
- package/dist/{chunk-GS7TDQXA.js.map → chunk-76SRRIGW.js.map} +1 -1
- package/dist/{chunk-XXHRCCZS.mjs → chunk-AQFFMJX7.mjs} +3 -3
- package/dist/chunk-AQFFMJX7.mjs.map +1 -0
- package/dist/{chunk-B2QCI6ET.js → chunk-EWJDKRSY.js} +308 -30
- package/dist/chunk-EWJDKRSY.js.map +1 -0
- package/dist/{chunk-HI44AMLC.mjs → chunk-LJPJWJ2Y.mjs} +24 -19
- package/dist/chunk-LJPJWJ2Y.mjs.map +1 -0
- package/dist/{chunk-ITB7FXG4.js → chunk-OJOKPBK7.js} +3 -3
- package/dist/chunk-OJOKPBK7.js.map +1 -0
- package/dist/{chunk-KYR6BFAE.js → chunk-SMIA4ULA.js} +38 -33
- package/dist/chunk-SMIA4ULA.js.map +1 -0
- package/dist/{chunk-DTFLXAZJ.js → chunk-TF3S7T6P.js} +147 -5
- package/dist/chunk-TF3S7T6P.js.map +1 -0
- package/dist/{chunk-VIULRHK6.mjs → chunk-UURNMLRT.mjs} +3 -3
- package/dist/{chunk-VIULRHK6.mjs.map → chunk-UURNMLRT.mjs.map} +1 -1
- package/dist/{chunk-LSNRG5Z2.js → chunk-WWTNCRXX.js} +4 -4
- package/dist/{chunk-LSNRG5Z2.js.map → chunk-WWTNCRXX.js.map} +1 -1
- package/dist/{chunk-ZILA73XN.mjs → chunk-Y3QNUDV6.mjs} +144 -4
- package/dist/chunk-Y3QNUDV6.mjs.map +1 -0
- package/dist/{chunk-CUGK4ZBJ.mjs → chunk-YDMFT2R7.mjs} +304 -30
- package/dist/chunk-YDMFT2R7.mjs.map +1 -0
- package/dist/core.js +16 -16
- package/dist/core.js.map +1 -1
- package/dist/core.mjs +6 -6
- package/dist/core.mjs.map +1 -1
- package/dist/display.d.mts +1 -1
- package/dist/display.d.ts +1 -1
- package/dist/display.js +12 -12
- package/dist/display.mjs +4 -4
- package/dist/{exchange-rate-BfPH_fQt.d.mts → exchange-rate-DCB2CY9v.d.mts} +5 -0
- package/dist/{exchange-rate-Cp1ddpw4.d.ts → exchange-rate-DOmoqut9.d.ts} +5 -0
- package/dist/index.d.mts +456 -8
- package/dist/index.d.ts +456 -8
- package/dist/index.js +402 -215
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +292 -123
- package/dist/index.mjs.map +1 -1
- package/dist/utils.js +5 -5
- package/dist/utils.mjs +2 -2
- package/package.json +2 -1
- package/dist/chunk-B2QCI6ET.js.map +0 -1
- package/dist/chunk-CUGK4ZBJ.mjs.map +0 -1
- package/dist/chunk-DTFLXAZJ.js.map +0 -1
- package/dist/chunk-HI44AMLC.mjs.map +0 -1
- package/dist/chunk-ITB7FXG4.js.map +0 -1
- package/dist/chunk-KYR6BFAE.js.map +0 -1
- package/dist/chunk-XXHRCCZS.mjs.map +0 -1
- package/dist/chunk-ZILA73XN.mjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkOJOKPBK7_js = require('./chunk-OJOKPBK7.js');
|
|
4
|
+
var chunkSMIA4ULA_js = require('./chunk-SMIA4ULA.js');
|
|
5
|
+
var chunkTF3S7T6P_js = require('./chunk-TF3S7T6P.js');
|
|
6
6
|
require('./chunk-ICKDAKVS.js');
|
|
7
7
|
var chunkRUIAH5HY_js = require('./chunk-RUIAH5HY.js');
|
|
8
|
-
var
|
|
8
|
+
var chunkWWTNCRXX_js = require('./chunk-WWTNCRXX.js');
|
|
9
9
|
var chunk3I3PYX2F_js = require('./chunk-3I3PYX2F.js');
|
|
10
|
-
var
|
|
10
|
+
var chunkEWJDKRSY_js = require('./chunk-EWJDKRSY.js');
|
|
11
11
|
var viem = require('viem');
|
|
12
12
|
|
|
13
13
|
async function prepareApproveDepositTokenTxData({
|
|
@@ -18,33 +18,33 @@ async function prepareApproveDepositTokenTxData({
|
|
|
18
18
|
}) {
|
|
19
19
|
const normalizedChainId = chunkRUIAH5HY_js.toChainId(chainId);
|
|
20
20
|
try {
|
|
21
|
-
const config = await
|
|
21
|
+
const config = await chunkEWJDKRSY_js.findVaultByConfig({
|
|
22
22
|
assetAddress: depositToken,
|
|
23
23
|
yieldType,
|
|
24
24
|
chainId: normalizedChainId
|
|
25
25
|
});
|
|
26
26
|
if (!config) {
|
|
27
|
-
throw new
|
|
27
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
28
28
|
`No vault found for token address ${depositToken} with yield type '${yieldType}' on chain ${normalizedChainId}. This combination may not be supported.`,
|
|
29
29
|
{ endpoint: "prepareApproveDepositToken" }
|
|
30
30
|
);
|
|
31
31
|
}
|
|
32
32
|
const boringVaultAddress = config.vault.boringVaultAddress;
|
|
33
33
|
if (!boringVaultAddress) {
|
|
34
|
-
throw new
|
|
34
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
35
35
|
`BoringVault contract address not configured for vault ${config.id}`,
|
|
36
36
|
{ endpoint: "prepareApproveDepositToken" }
|
|
37
37
|
);
|
|
38
38
|
}
|
|
39
|
-
const assets = await
|
|
39
|
+
const assets = await chunkEWJDKRSY_js.getAssetsFromCache({ address: depositToken });
|
|
40
40
|
if (assets.length === 0) {
|
|
41
|
-
throw new
|
|
41
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
42
42
|
`Asset metadata not found for token ${depositToken} on chain ${normalizedChainId}`,
|
|
43
43
|
{ endpoint: "prepareApproveDepositToken" }
|
|
44
44
|
);
|
|
45
45
|
}
|
|
46
46
|
const decimals = assets[0].decimals;
|
|
47
|
-
const amount = approvalAmount ? viem.parseUnits(approvalAmount, decimals) :
|
|
47
|
+
const amount = approvalAmount ? viem.parseUnits(approvalAmount, decimals) : chunkEWJDKRSY_js.DEFAULT_APPROVAL_AMOUNT;
|
|
48
48
|
return {
|
|
49
49
|
abi: viem.erc20Abi,
|
|
50
50
|
address: depositToken,
|
|
@@ -52,10 +52,10 @@ async function prepareApproveDepositTokenTxData({
|
|
|
52
52
|
args: [boringVaultAddress, amount]
|
|
53
53
|
};
|
|
54
54
|
} catch (error) {
|
|
55
|
-
if (error instanceof
|
|
55
|
+
if (error instanceof chunkEWJDKRSY_js.APIError) {
|
|
56
56
|
throw error;
|
|
57
57
|
}
|
|
58
|
-
throw new
|
|
58
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
59
59
|
`Failed to prepare approval transaction: ${error instanceof Error ? error.message : String(error)}`,
|
|
60
60
|
{
|
|
61
61
|
endpoint: "prepareApproveDepositToken",
|
|
@@ -296,7 +296,7 @@ var CommunityCodeDepositorAbi = [
|
|
|
296
296
|
|
|
297
297
|
// src/vaults/deposit/utils.ts
|
|
298
298
|
var calculateMinimumMint = (depositAmount, rate, vaultTokenDecimals, slippage) => {
|
|
299
|
-
const slippageValue = slippage ??
|
|
299
|
+
const slippageValue = slippage ?? chunkOJOKPBK7_js.DEFAULT_SLIPPAGE_BPS;
|
|
300
300
|
const slippageAsBigInt = BigInt(slippageValue) * chunk3I3PYX2F_js.WAD.bigint / BigInt(1e4);
|
|
301
301
|
const minimumMint = depositAmount * chunk3I3PYX2F_js.WAD.bigint / rate;
|
|
302
302
|
const slippageAmount = minimumMint * slippageAsBigInt / chunk3I3PYX2F_js.WAD.bigint;
|
|
@@ -313,7 +313,7 @@ async function prepareDepositTxData(params) {
|
|
|
313
313
|
depositToken,
|
|
314
314
|
depositAmount,
|
|
315
315
|
chainId,
|
|
316
|
-
slippage =
|
|
316
|
+
slippage = chunkOJOKPBK7_js.DEFAULT_SLIPPAGE_BPS,
|
|
317
317
|
recipientAddress,
|
|
318
318
|
partnerCode
|
|
319
319
|
} = params;
|
|
@@ -321,13 +321,13 @@ async function prepareDepositTxData(params) {
|
|
|
321
321
|
const normalizedChainId = chunkRUIAH5HY_js.toChainId(chainId);
|
|
322
322
|
let vault;
|
|
323
323
|
try {
|
|
324
|
-
vault = await
|
|
324
|
+
vault = await chunkEWJDKRSY_js.findVaultByConfig({
|
|
325
325
|
assetAddress: depositToken,
|
|
326
326
|
yieldType,
|
|
327
327
|
chainId: normalizedChainId
|
|
328
328
|
});
|
|
329
329
|
} catch (error) {
|
|
330
|
-
throw new
|
|
330
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
331
331
|
`Failed to resolve vault for token ${depositToken} with yield type ${yieldType} on chain ${normalizedChainId}: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
332
332
|
{
|
|
333
333
|
endpoint: "prepareDepositTransactionData",
|
|
@@ -336,7 +336,7 @@ async function prepareDepositTxData(params) {
|
|
|
336
336
|
);
|
|
337
337
|
}
|
|
338
338
|
if (!vault) {
|
|
339
|
-
throw new
|
|
339
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
340
340
|
`No vault found for token address ${depositToken} with yield type '${yieldType}' on chain ${normalizedChainId}. This combination may not be supported.`,
|
|
341
341
|
{
|
|
342
342
|
endpoint: "prepareDepositTransactionData"
|
|
@@ -344,12 +344,12 @@ async function prepareDepositTxData(params) {
|
|
|
344
344
|
);
|
|
345
345
|
}
|
|
346
346
|
let asset = null;
|
|
347
|
-
const assets = await
|
|
347
|
+
const assets = await chunkEWJDKRSY_js.getAssetsFromCache({ address: depositToken });
|
|
348
348
|
if (assets.length > 0) {
|
|
349
349
|
asset = assets.find((a) => a.chains.includes(normalizedChainId)) || assets[0] || null;
|
|
350
350
|
}
|
|
351
351
|
if (!asset) {
|
|
352
|
-
throw new
|
|
352
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
353
353
|
`Asset metadata not found for token ${depositToken} on chain ${normalizedChainId}`,
|
|
354
354
|
{
|
|
355
355
|
endpoint: "prepareDepositTransactionData"
|
|
@@ -359,13 +359,13 @@ async function prepareDepositTxData(params) {
|
|
|
359
359
|
const communityCodeDepositorAddress = vault.vault.communityCodeDepositorAddress;
|
|
360
360
|
const accountantAddress = vault.vault.accountantAddress;
|
|
361
361
|
const depositAssetAddress = asset.address;
|
|
362
|
-
const [depositAssetDecimalsResult, rateInQuoteResult] = await
|
|
362
|
+
const [depositAssetDecimalsResult, rateInQuoteResult] = await chunkTF3S7T6P_js.getRateInQuoteWithAssetDecimals({
|
|
363
363
|
assetAddress: depositAssetAddress,
|
|
364
364
|
accountantAddress,
|
|
365
365
|
chainId: normalizedChainId
|
|
366
366
|
});
|
|
367
367
|
if (depositAssetDecimalsResult.status === "failure") {
|
|
368
|
-
throw new
|
|
368
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
369
369
|
`Failed to get asset decimals: ${depositAssetDecimalsResult.error?.message || "Unknown error"}`,
|
|
370
370
|
{
|
|
371
371
|
endpoint: "prepareDepositTransactionData",
|
|
@@ -374,7 +374,7 @@ async function prepareDepositTxData(params) {
|
|
|
374
374
|
);
|
|
375
375
|
}
|
|
376
376
|
if (rateInQuoteResult.status === "failure") {
|
|
377
|
-
throw new
|
|
377
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
378
378
|
`Failed to get exchange rate: ${rateInQuoteResult.error?.message || "Unknown error"}`,
|
|
379
379
|
{
|
|
380
380
|
endpoint: "prepareDepositTransactionData",
|
|
@@ -386,11 +386,11 @@ async function prepareDepositTxData(params) {
|
|
|
386
386
|
depositAmount,
|
|
387
387
|
depositAssetDecimalsResult.result
|
|
388
388
|
);
|
|
389
|
-
const vaultSharesAssets = await
|
|
389
|
+
const vaultSharesAssets = await chunkEWJDKRSY_js.fetchSupportedAssets({
|
|
390
390
|
address: vault.vault.boringVaultAddress
|
|
391
391
|
});
|
|
392
392
|
if (vaultSharesAssets.length === 0) {
|
|
393
|
-
throw new
|
|
393
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
394
394
|
`Vault shares token not found in supported assets: ${vault.vault.boringVaultAddress}`,
|
|
395
395
|
{ endpoint: "prepareDepositTransactionData" }
|
|
396
396
|
);
|
|
@@ -402,7 +402,7 @@ async function prepareDepositTxData(params) {
|
|
|
402
402
|
slippage
|
|
403
403
|
);
|
|
404
404
|
if (!communityCodeDepositorAddress) {
|
|
405
|
-
throw new
|
|
405
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
406
406
|
`CommunityCodeDepositor contract address not found for vault ${vault.id}`,
|
|
407
407
|
{ endpoint: "prepareDepositTransactionData" }
|
|
408
408
|
);
|
|
@@ -421,10 +421,10 @@ async function prepareDepositTxData(params) {
|
|
|
421
421
|
chainId: normalizedChainId
|
|
422
422
|
};
|
|
423
423
|
} catch (error) {
|
|
424
|
-
if (error instanceof
|
|
424
|
+
if (error instanceof chunkEWJDKRSY_js.APIError) {
|
|
425
425
|
throw error;
|
|
426
426
|
}
|
|
427
|
-
throw new
|
|
427
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
428
428
|
`Failed to prepare deposit transaction: ${error instanceof Error ? error.message : String(error)}`,
|
|
429
429
|
{
|
|
430
430
|
endpoint: "prepareDepositTransactionData",
|
|
@@ -433,56 +433,6 @@ async function prepareDepositTxData(params) {
|
|
|
433
433
|
);
|
|
434
434
|
}
|
|
435
435
|
}
|
|
436
|
-
|
|
437
|
-
// src/abi/erc2612-abi.ts
|
|
438
|
-
var erc2612Abi = [
|
|
439
|
-
// Standard ERC20 functions (subset needed for permit flow)
|
|
440
|
-
{
|
|
441
|
-
constant: true,
|
|
442
|
-
inputs: [{ name: "_owner", type: "address" }],
|
|
443
|
-
name: "nonces",
|
|
444
|
-
outputs: [{ name: "", type: "uint256" }],
|
|
445
|
-
type: "function"
|
|
446
|
-
},
|
|
447
|
-
{
|
|
448
|
-
constant: true,
|
|
449
|
-
inputs: [],
|
|
450
|
-
name: "DOMAIN_SEPARATOR",
|
|
451
|
-
outputs: [{ name: "", type: "bytes32" }],
|
|
452
|
-
type: "function"
|
|
453
|
-
},
|
|
454
|
-
{
|
|
455
|
-
constant: false,
|
|
456
|
-
inputs: [
|
|
457
|
-
{ name: "owner", type: "address" },
|
|
458
|
-
{ name: "spender", type: "address" },
|
|
459
|
-
{ name: "value", type: "uint256" },
|
|
460
|
-
{ name: "deadline", type: "uint256" },
|
|
461
|
-
{ name: "v", type: "uint8" },
|
|
462
|
-
{ name: "r", type: "bytes32" },
|
|
463
|
-
{ name: "s", type: "bytes32" }
|
|
464
|
-
],
|
|
465
|
-
name: "permit",
|
|
466
|
-
outputs: [],
|
|
467
|
-
type: "function"
|
|
468
|
-
},
|
|
469
|
-
{
|
|
470
|
-
constant: true,
|
|
471
|
-
inputs: [],
|
|
472
|
-
name: "name",
|
|
473
|
-
outputs: [{ name: "", type: "string" }],
|
|
474
|
-
type: "function"
|
|
475
|
-
},
|
|
476
|
-
{
|
|
477
|
-
constant: true,
|
|
478
|
-
inputs: [],
|
|
479
|
-
name: "version",
|
|
480
|
-
outputs: [{ name: "", type: "string" }],
|
|
481
|
-
type: "function"
|
|
482
|
-
}
|
|
483
|
-
];
|
|
484
|
-
|
|
485
|
-
// src/vaults/deposit/deposit-with-permit.ts
|
|
486
436
|
var PERMIT_TYPES = {
|
|
487
437
|
Permit: [
|
|
488
438
|
{ name: "owner", type: "address" },
|
|
@@ -499,19 +449,24 @@ async function prepareDepositPermitSignature(params) {
|
|
|
499
449
|
depositAmount,
|
|
500
450
|
recipientAddress,
|
|
501
451
|
chainId,
|
|
502
|
-
deadline
|
|
452
|
+
deadline,
|
|
453
|
+
// Optional pre-fetched data to skip RPC calls
|
|
454
|
+
nonce: prefetchedNonce,
|
|
455
|
+
decimals: prefetchedDecimals,
|
|
456
|
+
tokenName: prefetchedTokenName,
|
|
457
|
+
tokenVersion: prefetchedTokenVersion
|
|
503
458
|
} = params;
|
|
504
459
|
try {
|
|
505
460
|
const normalizedChainId = chunkRUIAH5HY_js.toChainId(chainId);
|
|
506
461
|
let vault;
|
|
507
462
|
try {
|
|
508
|
-
vault = await
|
|
463
|
+
vault = await chunkEWJDKRSY_js.findVaultByConfig({
|
|
509
464
|
assetAddress: depositToken,
|
|
510
465
|
yieldType,
|
|
511
466
|
chainId: normalizedChainId
|
|
512
467
|
});
|
|
513
468
|
} catch (error) {
|
|
514
|
-
throw new
|
|
469
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
515
470
|
`Failed to resolve vault for token ${depositToken} with yield type ${yieldType} on chain ${normalizedChainId}: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
516
471
|
{
|
|
517
472
|
endpoint: "prepareDepositPermitSignature",
|
|
@@ -520,7 +475,7 @@ async function prepareDepositPermitSignature(params) {
|
|
|
520
475
|
);
|
|
521
476
|
}
|
|
522
477
|
if (!vault) {
|
|
523
|
-
throw new
|
|
478
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
524
479
|
`No vault found for token address ${depositToken} with yield type '${yieldType}' on chain ${normalizedChainId}. This combination may not be supported.`,
|
|
525
480
|
{
|
|
526
481
|
endpoint: "prepareDepositPermitSignature"
|
|
@@ -529,84 +484,107 @@ async function prepareDepositPermitSignature(params) {
|
|
|
529
484
|
}
|
|
530
485
|
const communityCodeDepositorAddress = vault.vault.communityCodeDepositorAddress;
|
|
531
486
|
if (!communityCodeDepositorAddress) {
|
|
532
|
-
throw new
|
|
487
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
533
488
|
`CommunityCodeDepositor contract address not found for vault ${vault.id}`,
|
|
534
489
|
{ endpoint: "prepareDepositPermitSignature" }
|
|
535
490
|
);
|
|
536
491
|
}
|
|
537
|
-
|
|
538
|
-
let
|
|
539
|
-
let
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
client.readContract({
|
|
550
|
-
address: depositToken,
|
|
551
|
-
abi: erc2612Abi,
|
|
552
|
-
functionName: "version"
|
|
553
|
-
}),
|
|
554
|
-
client.readContract({
|
|
555
|
-
address: depositToken,
|
|
556
|
-
abi: erc2612Abi,
|
|
557
|
-
functionName: "nonces",
|
|
558
|
-
args: [recipientAddress]
|
|
559
|
-
})
|
|
560
|
-
]
|
|
561
|
-
);
|
|
562
|
-
if (nameResult.status === "fulfilled") {
|
|
563
|
-
tokenName = nameResult.value;
|
|
564
|
-
} else {
|
|
565
|
-
throw new chunkB2QCI6ET_js.APIError(`Failed to read token name from ${depositToken}`, {
|
|
566
|
-
endpoint: "prepareDepositPermitSignature",
|
|
567
|
-
cause: nameResult.reason
|
|
568
|
-
});
|
|
569
|
-
}
|
|
570
|
-
if (versionResult.status === "fulfilled") {
|
|
571
|
-
tokenVersion = versionResult.value;
|
|
572
|
-
} else {
|
|
573
|
-
tokenVersion = "1";
|
|
574
|
-
}
|
|
575
|
-
if (nonceResult.status === "fulfilled") {
|
|
576
|
-
nonce = nonceResult.value;
|
|
577
|
-
} else {
|
|
578
|
-
throw new chunkB2QCI6ET_js.APIError(
|
|
579
|
-
`Token ${depositToken} does not support EIP-2612 permit. Missing required function: nonces()`,
|
|
492
|
+
let resolvedTokenName;
|
|
493
|
+
let resolvedTokenVersion;
|
|
494
|
+
let resolvedNonce;
|
|
495
|
+
const hasAllPrefetchedData = prefetchedTokenName !== void 0 && prefetchedTokenVersion !== void 0 && prefetchedNonce !== void 0;
|
|
496
|
+
if (hasAllPrefetchedData) {
|
|
497
|
+
resolvedTokenName = prefetchedTokenName;
|
|
498
|
+
resolvedTokenVersion = prefetchedTokenVersion;
|
|
499
|
+
resolvedNonce = prefetchedNonce;
|
|
500
|
+
} else {
|
|
501
|
+
const client = await chunkTF3S7T6P_js.getClient(normalizedChainId);
|
|
502
|
+
try {
|
|
503
|
+
const [nameResult, versionResult, nonceResult] = await client.multicall(
|
|
580
504
|
{
|
|
505
|
+
contracts: [
|
|
506
|
+
{
|
|
507
|
+
address: depositToken,
|
|
508
|
+
abi: chunkTF3S7T6P_js.erc2612Abi,
|
|
509
|
+
functionName: "name"
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
address: depositToken,
|
|
513
|
+
abi: chunkTF3S7T6P_js.erc2612Abi,
|
|
514
|
+
functionName: "version"
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
address: depositToken,
|
|
518
|
+
abi: chunkTF3S7T6P_js.erc2612Abi,
|
|
519
|
+
functionName: "nonces",
|
|
520
|
+
args: [recipientAddress]
|
|
521
|
+
}
|
|
522
|
+
]
|
|
523
|
+
}
|
|
524
|
+
);
|
|
525
|
+
if (prefetchedTokenName !== void 0) {
|
|
526
|
+
resolvedTokenName = prefetchedTokenName;
|
|
527
|
+
} else if (nameResult.status === "success") {
|
|
528
|
+
resolvedTokenName = nameResult.result;
|
|
529
|
+
} else {
|
|
530
|
+
throw new chunkEWJDKRSY_js.APIError(`Failed to read token name from ${depositToken}`, {
|
|
581
531
|
endpoint: "prepareDepositPermitSignature",
|
|
582
|
-
cause:
|
|
532
|
+
cause: nameResult.error
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
if (prefetchedTokenVersion !== void 0) {
|
|
536
|
+
resolvedTokenVersion = prefetchedTokenVersion;
|
|
537
|
+
} else if (versionResult.status === "success") {
|
|
538
|
+
resolvedTokenVersion = versionResult.result;
|
|
539
|
+
} else {
|
|
540
|
+
resolvedTokenVersion = "1";
|
|
541
|
+
}
|
|
542
|
+
if (prefetchedNonce !== void 0) {
|
|
543
|
+
resolvedNonce = prefetchedNonce;
|
|
544
|
+
} else if (nonceResult.status === "success") {
|
|
545
|
+
resolvedNonce = nonceResult.result;
|
|
546
|
+
} else {
|
|
547
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
548
|
+
`Token ${depositToken} does not support EIP-2612 permit. Missing required function: nonces()`,
|
|
549
|
+
{
|
|
550
|
+
endpoint: "prepareDepositPermitSignature",
|
|
551
|
+
cause: nonceResult.error
|
|
552
|
+
}
|
|
553
|
+
);
|
|
554
|
+
}
|
|
555
|
+
} catch (error) {
|
|
556
|
+
if (error instanceof chunkEWJDKRSY_js.APIError) {
|
|
557
|
+
throw error;
|
|
558
|
+
}
|
|
559
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
560
|
+
`Failed to read token metadata: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
561
|
+
{
|
|
562
|
+
endpoint: "prepareDepositPermitSignature",
|
|
563
|
+
cause: error
|
|
583
564
|
}
|
|
584
565
|
);
|
|
585
566
|
}
|
|
586
|
-
} catch (error) {
|
|
587
|
-
if (error instanceof chunkB2QCI6ET_js.APIError) {
|
|
588
|
-
throw error;
|
|
589
|
-
}
|
|
590
|
-
throw new chunkB2QCI6ET_js.APIError(
|
|
591
|
-
`Failed to read token metadata: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
592
|
-
{
|
|
593
|
-
endpoint: "prepareDepositPermitSignature",
|
|
594
|
-
cause: error
|
|
595
|
-
}
|
|
596
|
-
);
|
|
597
567
|
}
|
|
598
568
|
const permitDeadline = deadline ?? BigInt(Math.floor(Date.now() / 1e3) + 3600);
|
|
599
|
-
|
|
600
|
-
if (
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
});
|
|
569
|
+
let resolvedDecimals;
|
|
570
|
+
if (prefetchedDecimals !== void 0) {
|
|
571
|
+
resolvedDecimals = prefetchedDecimals;
|
|
572
|
+
} else {
|
|
573
|
+
const assets = await chunkEWJDKRSY_js.fetchSupportedAssets({ address: depositToken });
|
|
574
|
+
if (assets.length === 0) {
|
|
575
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
576
|
+
`Asset metadata not found for token ${depositToken}`,
|
|
577
|
+
{
|
|
578
|
+
endpoint: "prepareDepositPermitSignature"
|
|
579
|
+
}
|
|
580
|
+
);
|
|
581
|
+
}
|
|
582
|
+
resolvedDecimals = assets[0].decimals;
|
|
604
583
|
}
|
|
605
|
-
const
|
|
606
|
-
const value = viem.parseUnits(depositAmount, asset.decimals);
|
|
584
|
+
const value = viem.parseUnits(depositAmount, resolvedDecimals);
|
|
607
585
|
const domain = {
|
|
608
|
-
name:
|
|
609
|
-
version:
|
|
586
|
+
name: resolvedTokenName,
|
|
587
|
+
version: resolvedTokenVersion,
|
|
610
588
|
chainId: normalizedChainId,
|
|
611
589
|
verifyingContract: depositToken
|
|
612
590
|
};
|
|
@@ -614,7 +592,7 @@ async function prepareDepositPermitSignature(params) {
|
|
|
614
592
|
owner: recipientAddress,
|
|
615
593
|
spender: communityCodeDepositorAddress,
|
|
616
594
|
value,
|
|
617
|
-
nonce,
|
|
595
|
+
nonce: resolvedNonce,
|
|
618
596
|
deadline: permitDeadline
|
|
619
597
|
};
|
|
620
598
|
return {
|
|
@@ -624,10 +602,10 @@ async function prepareDepositPermitSignature(params) {
|
|
|
624
602
|
types: PERMIT_TYPES
|
|
625
603
|
};
|
|
626
604
|
} catch (error) {
|
|
627
|
-
if (error instanceof
|
|
605
|
+
if (error instanceof chunkEWJDKRSY_js.APIError) {
|
|
628
606
|
throw error;
|
|
629
607
|
}
|
|
630
|
-
throw new
|
|
608
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
631
609
|
`Failed to prepare permit signature: ${error instanceof Error ? error.message : String(error)}`,
|
|
632
610
|
{
|
|
633
611
|
endpoint: "prepareDepositPermitSignature",
|
|
@@ -653,7 +631,7 @@ function parsePermitSignature(signature) {
|
|
|
653
631
|
s: parsed.s
|
|
654
632
|
};
|
|
655
633
|
} catch (error) {
|
|
656
|
-
throw new
|
|
634
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
657
635
|
`Invalid permit signature format. Expected hex string but received: ${signature}. ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
658
636
|
{
|
|
659
637
|
endpoint: "parsePermitSignature",
|
|
@@ -670,14 +648,14 @@ async function prepareDepositWithPermitTxData(params) {
|
|
|
670
648
|
chainId,
|
|
671
649
|
signature,
|
|
672
650
|
deadline,
|
|
673
|
-
slippage =
|
|
651
|
+
slippage = chunkOJOKPBK7_js.DEFAULT_SLIPPAGE_BPS,
|
|
674
652
|
recipientAddress,
|
|
675
653
|
partnerCode
|
|
676
654
|
} = params;
|
|
677
655
|
try {
|
|
678
656
|
const { v, r, s } = parsePermitSignature(signature);
|
|
679
657
|
if (slippage < 0 || slippage > 1e4) {
|
|
680
|
-
throw new
|
|
658
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
681
659
|
`Invalid slippage value: ${slippage}. Slippage must be between 0 and 10000 basis points.`,
|
|
682
660
|
{
|
|
683
661
|
endpoint: "prepareDepositWithPermitTxData"
|
|
@@ -687,13 +665,13 @@ async function prepareDepositWithPermitTxData(params) {
|
|
|
687
665
|
const normalizedChainId = chunkRUIAH5HY_js.toChainId(chainId);
|
|
688
666
|
let vault;
|
|
689
667
|
try {
|
|
690
|
-
vault = await
|
|
668
|
+
vault = await chunkEWJDKRSY_js.findVaultByConfig({
|
|
691
669
|
assetAddress: depositToken,
|
|
692
670
|
yieldType,
|
|
693
671
|
chainId: normalizedChainId
|
|
694
672
|
});
|
|
695
673
|
} catch (error) {
|
|
696
|
-
throw new
|
|
674
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
697
675
|
`Failed to resolve vault for token ${depositToken} with yield type ${yieldType} on chain ${normalizedChainId}: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
698
676
|
{
|
|
699
677
|
endpoint: "prepareDepositWithPermitTxData",
|
|
@@ -702,7 +680,7 @@ async function prepareDepositWithPermitTxData(params) {
|
|
|
702
680
|
);
|
|
703
681
|
}
|
|
704
682
|
if (!vault) {
|
|
705
|
-
throw new
|
|
683
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
706
684
|
`No vault found for token address ${depositToken} with yield type '${yieldType}' on chain ${normalizedChainId}. This combination may not be supported.`,
|
|
707
685
|
{
|
|
708
686
|
endpoint: "prepareDepositWithPermitTxData"
|
|
@@ -710,12 +688,12 @@ async function prepareDepositWithPermitTxData(params) {
|
|
|
710
688
|
);
|
|
711
689
|
}
|
|
712
690
|
let asset = null;
|
|
713
|
-
const assets = await
|
|
691
|
+
const assets = await chunkEWJDKRSY_js.fetchSupportedAssets({ address: depositToken });
|
|
714
692
|
if (assets.length > 0) {
|
|
715
693
|
asset = assets.find((a) => a.chains.includes(normalizedChainId)) || assets[0] || null;
|
|
716
694
|
}
|
|
717
695
|
if (!asset) {
|
|
718
|
-
throw new
|
|
696
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
719
697
|
`Asset metadata not found for token ${depositToken} on chain ${normalizedChainId}`,
|
|
720
698
|
{
|
|
721
699
|
endpoint: "prepareDepositWithPermitTxData"
|
|
@@ -723,7 +701,7 @@ async function prepareDepositWithPermitTxData(params) {
|
|
|
723
701
|
);
|
|
724
702
|
}
|
|
725
703
|
if (!asset.chains || !asset.chains.includes(normalizedChainId)) {
|
|
726
|
-
throw new
|
|
704
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
727
705
|
`Token ${asset.symbol || depositToken} not supported on chain ${normalizedChainId}`,
|
|
728
706
|
{
|
|
729
707
|
endpoint: "prepareDepositWithPermitTxData"
|
|
@@ -734,18 +712,18 @@ async function prepareDepositWithPermitTxData(params) {
|
|
|
734
712
|
const accountantAddress = vault.vault.accountantAddress;
|
|
735
713
|
const depositAssetAddress = asset.address;
|
|
736
714
|
if (!communityCodeDepositorAddress) {
|
|
737
|
-
throw new
|
|
715
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
738
716
|
`CommunityCodeDepositor contract address not found for vault ${vault.id}`,
|
|
739
717
|
{ endpoint: "prepareDepositWithPermitTxData" }
|
|
740
718
|
);
|
|
741
719
|
}
|
|
742
|
-
const [depositAssetDecimalsResult, rateInQuoteResult] = await
|
|
720
|
+
const [depositAssetDecimalsResult, rateInQuoteResult] = await chunkTF3S7T6P_js.getRateInQuoteWithAssetDecimals({
|
|
743
721
|
assetAddress: depositAssetAddress,
|
|
744
722
|
accountantAddress,
|
|
745
723
|
chainId: normalizedChainId
|
|
746
724
|
});
|
|
747
725
|
if (depositAssetDecimalsResult.status === "failure") {
|
|
748
|
-
throw new
|
|
726
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
749
727
|
`Failed to get asset decimals: ${depositAssetDecimalsResult.error?.message || "Unknown error"}`,
|
|
750
728
|
{
|
|
751
729
|
endpoint: "prepareDepositWithPermitTxData",
|
|
@@ -754,7 +732,7 @@ async function prepareDepositWithPermitTxData(params) {
|
|
|
754
732
|
);
|
|
755
733
|
}
|
|
756
734
|
if (rateInQuoteResult.status === "failure") {
|
|
757
|
-
throw new
|
|
735
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
758
736
|
`Failed to get exchange rate: ${rateInQuoteResult.error?.message || "Unknown error"}`,
|
|
759
737
|
{
|
|
760
738
|
endpoint: "prepareDepositWithPermitTxData",
|
|
@@ -763,11 +741,11 @@ async function prepareDepositWithPermitTxData(params) {
|
|
|
763
741
|
);
|
|
764
742
|
}
|
|
765
743
|
const depositAmountAsBigInt = viem.parseUnits(depositAmount, asset.decimals);
|
|
766
|
-
const vaultSharesAssets = await
|
|
744
|
+
const vaultSharesAssets = await chunkEWJDKRSY_js.fetchSupportedAssets({
|
|
767
745
|
address: vault.vault.boringVaultAddress
|
|
768
746
|
});
|
|
769
747
|
if (vaultSharesAssets.length === 0) {
|
|
770
|
-
throw new
|
|
748
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
771
749
|
`Vault shares token not found in supported assets: ${vault.vault.boringVaultAddress}`,
|
|
772
750
|
{ endpoint: "prepareDepositWithPermitTxData" }
|
|
773
751
|
);
|
|
@@ -798,10 +776,10 @@ async function prepareDepositWithPermitTxData(params) {
|
|
|
798
776
|
chainId: normalizedChainId
|
|
799
777
|
};
|
|
800
778
|
} catch (error) {
|
|
801
|
-
if (error instanceof
|
|
779
|
+
if (error instanceof chunkEWJDKRSY_js.APIError) {
|
|
802
780
|
throw error;
|
|
803
781
|
}
|
|
804
|
-
throw new
|
|
782
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
805
783
|
`Failed to prepare deposit with permit transaction: ${error instanceof Error ? error.message : String(error)}`,
|
|
806
784
|
{
|
|
807
785
|
endpoint: "prepareDepositWithPermitTxData",
|
|
@@ -810,6 +788,196 @@ async function prepareDepositWithPermitTxData(params) {
|
|
|
810
788
|
);
|
|
811
789
|
}
|
|
812
790
|
}
|
|
791
|
+
var DepositAuthMethod = {
|
|
792
|
+
PERMIT: "permit",
|
|
793
|
+
APPROVAL: "approval",
|
|
794
|
+
ALREADY_APPROVED: "already_approved"
|
|
795
|
+
};
|
|
796
|
+
async function prepareDepositAuthorization(params) {
|
|
797
|
+
const {
|
|
798
|
+
yieldType,
|
|
799
|
+
depositToken,
|
|
800
|
+
depositAmount,
|
|
801
|
+
recipientAddress,
|
|
802
|
+
chainId,
|
|
803
|
+
deadline,
|
|
804
|
+
forceMethod
|
|
805
|
+
} = params;
|
|
806
|
+
try {
|
|
807
|
+
const normalizedChainId = chunkRUIAH5HY_js.toChainId(chainId);
|
|
808
|
+
const vault = await chunkEWJDKRSY_js.findVaultByConfig({
|
|
809
|
+
assetAddress: depositToken,
|
|
810
|
+
yieldType,
|
|
811
|
+
chainId: normalizedChainId
|
|
812
|
+
});
|
|
813
|
+
if (!vault) {
|
|
814
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
815
|
+
`No vault found for token ${depositToken} with yield type '${yieldType}' on chain ${normalizedChainId}`,
|
|
816
|
+
{ endpoint: "prepareDepositAuthorization" }
|
|
817
|
+
);
|
|
818
|
+
}
|
|
819
|
+
const tokenInfo = await chunkSMIA4ULA_js.isDepositSpendApproved({
|
|
820
|
+
yieldType,
|
|
821
|
+
chainId: normalizedChainId,
|
|
822
|
+
depositAssetAddress: depositToken,
|
|
823
|
+
recipientAddress
|
|
824
|
+
});
|
|
825
|
+
if (forceMethod === "permit") {
|
|
826
|
+
const permitData = await prepareDepositPermitSignature({
|
|
827
|
+
yieldType,
|
|
828
|
+
depositToken,
|
|
829
|
+
depositAmount,
|
|
830
|
+
recipientAddress,
|
|
831
|
+
chainId: normalizedChainId,
|
|
832
|
+
deadline,
|
|
833
|
+
// Pass pre-fetched data to avoid redundant RPC calls
|
|
834
|
+
nonce: tokenInfo.nonce ?? void 0,
|
|
835
|
+
decimals: tokenInfo.decimals,
|
|
836
|
+
tokenName: tokenInfo.tokenName,
|
|
837
|
+
tokenVersion: tokenInfo.tokenVersion
|
|
838
|
+
});
|
|
839
|
+
return {
|
|
840
|
+
method: DepositAuthMethod.PERMIT,
|
|
841
|
+
permitData
|
|
842
|
+
};
|
|
843
|
+
}
|
|
844
|
+
if (forceMethod === "approval") {
|
|
845
|
+
const txData2 = await prepareApproveDepositTokenTxData({
|
|
846
|
+
yieldType,
|
|
847
|
+
depositToken,
|
|
848
|
+
approvalAmount: depositAmount,
|
|
849
|
+
chainId: normalizedChainId
|
|
850
|
+
});
|
|
851
|
+
return {
|
|
852
|
+
method: DepositAuthMethod.APPROVAL,
|
|
853
|
+
txData: txData2,
|
|
854
|
+
currentAllowance: tokenInfo.allowance,
|
|
855
|
+
currentAllowanceAsBigInt: tokenInfo.allowanceAsBigInt
|
|
856
|
+
};
|
|
857
|
+
}
|
|
858
|
+
if (tokenInfo.supportsPermit) {
|
|
859
|
+
const permitData = await prepareDepositPermitSignature({
|
|
860
|
+
yieldType,
|
|
861
|
+
depositToken,
|
|
862
|
+
depositAmount,
|
|
863
|
+
recipientAddress,
|
|
864
|
+
chainId: normalizedChainId,
|
|
865
|
+
deadline,
|
|
866
|
+
// Pass pre-fetched data to avoid redundant RPC calls
|
|
867
|
+
nonce: tokenInfo.nonce ?? void 0,
|
|
868
|
+
decimals: tokenInfo.decimals,
|
|
869
|
+
tokenName: tokenInfo.tokenName,
|
|
870
|
+
tokenVersion: tokenInfo.tokenVersion
|
|
871
|
+
});
|
|
872
|
+
return {
|
|
873
|
+
method: DepositAuthMethod.PERMIT,
|
|
874
|
+
permitData
|
|
875
|
+
};
|
|
876
|
+
}
|
|
877
|
+
const depositAmountBigInt = viem.parseUnits(depositAmount, tokenInfo.decimals);
|
|
878
|
+
const currentAllowanceBigInt = BigInt(tokenInfo.allowanceAsBigInt);
|
|
879
|
+
if (tokenInfo.isApproved && currentAllowanceBigInt >= depositAmountBigInt) {
|
|
880
|
+
return {
|
|
881
|
+
method: DepositAuthMethod.ALREADY_APPROVED,
|
|
882
|
+
allowance: tokenInfo.allowance,
|
|
883
|
+
allowanceAsBigInt: tokenInfo.allowanceAsBigInt
|
|
884
|
+
};
|
|
885
|
+
}
|
|
886
|
+
const txData = await prepareApproveDepositTokenTxData({
|
|
887
|
+
yieldType,
|
|
888
|
+
depositToken,
|
|
889
|
+
approvalAmount: depositAmount,
|
|
890
|
+
chainId: normalizedChainId
|
|
891
|
+
});
|
|
892
|
+
return {
|
|
893
|
+
method: DepositAuthMethod.APPROVAL,
|
|
894
|
+
txData,
|
|
895
|
+
currentAllowance: tokenInfo.allowance,
|
|
896
|
+
currentAllowanceAsBigInt: tokenInfo.allowanceAsBigInt
|
|
897
|
+
};
|
|
898
|
+
} catch (error) {
|
|
899
|
+
if (error instanceof chunkEWJDKRSY_js.APIError) {
|
|
900
|
+
throw error;
|
|
901
|
+
}
|
|
902
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
903
|
+
`Failed to prepare deposit authorization: ${error instanceof Error ? error.message : String(error)}`,
|
|
904
|
+
{
|
|
905
|
+
endpoint: "prepareDepositAuthorization",
|
|
906
|
+
cause: error
|
|
907
|
+
}
|
|
908
|
+
);
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
async function prepareDeposit(params) {
|
|
912
|
+
const {
|
|
913
|
+
yieldType,
|
|
914
|
+
depositToken,
|
|
915
|
+
depositAmount,
|
|
916
|
+
recipientAddress,
|
|
917
|
+
chainId,
|
|
918
|
+
slippage,
|
|
919
|
+
partnerCode,
|
|
920
|
+
signature,
|
|
921
|
+
deadline,
|
|
922
|
+
forceMethod
|
|
923
|
+
} = params;
|
|
924
|
+
try {
|
|
925
|
+
if (forceMethod === "permit" && (!signature || deadline === void 0)) {
|
|
926
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
927
|
+
"Permit deposit requires both signature and deadline parameters when forceMethod is 'permit'",
|
|
928
|
+
{ endpoint: "prepareDeposit" }
|
|
929
|
+
);
|
|
930
|
+
}
|
|
931
|
+
const usePermit = forceMethod === "permit" || forceMethod !== "approval" && signature !== void 0 && deadline !== void 0;
|
|
932
|
+
if (usePermit) {
|
|
933
|
+
if (!signature || deadline === void 0) {
|
|
934
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
935
|
+
"Permit deposit requires both signature and deadline parameters",
|
|
936
|
+
{ endpoint: "prepareDeposit" }
|
|
937
|
+
);
|
|
938
|
+
}
|
|
939
|
+
const txData2 = await prepareDepositWithPermitTxData({
|
|
940
|
+
yieldType,
|
|
941
|
+
depositToken,
|
|
942
|
+
depositAmount,
|
|
943
|
+
recipientAddress,
|
|
944
|
+
chainId,
|
|
945
|
+
signature,
|
|
946
|
+
deadline,
|
|
947
|
+
slippage,
|
|
948
|
+
partnerCode
|
|
949
|
+
});
|
|
950
|
+
return {
|
|
951
|
+
method: DepositAuthMethod.PERMIT,
|
|
952
|
+
txData: txData2
|
|
953
|
+
};
|
|
954
|
+
}
|
|
955
|
+
const txData = await prepareDepositTxData({
|
|
956
|
+
yieldType,
|
|
957
|
+
depositToken,
|
|
958
|
+
depositAmount,
|
|
959
|
+
recipientAddress,
|
|
960
|
+
chainId,
|
|
961
|
+
slippage,
|
|
962
|
+
partnerCode
|
|
963
|
+
});
|
|
964
|
+
return {
|
|
965
|
+
method: DepositAuthMethod.APPROVAL,
|
|
966
|
+
txData
|
|
967
|
+
};
|
|
968
|
+
} catch (error) {
|
|
969
|
+
if (error instanceof chunkEWJDKRSY_js.APIError) {
|
|
970
|
+
throw error;
|
|
971
|
+
}
|
|
972
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
973
|
+
`Failed to prepare deposit: ${error instanceof Error ? error.message : String(error)}`,
|
|
974
|
+
{
|
|
975
|
+
endpoint: "prepareDeposit",
|
|
976
|
+
cause: error
|
|
977
|
+
}
|
|
978
|
+
);
|
|
979
|
+
}
|
|
980
|
+
}
|
|
813
981
|
async function prepareApproveWithdrawTxData({
|
|
814
982
|
yieldType,
|
|
815
983
|
wantAssetAddress,
|
|
@@ -818,45 +986,45 @@ async function prepareApproveWithdrawTxData({
|
|
|
818
986
|
}) {
|
|
819
987
|
try {
|
|
820
988
|
const normalizedChainId = chunkRUIAH5HY_js.toChainId(chainId);
|
|
821
|
-
const config = await
|
|
989
|
+
const config = await chunkEWJDKRSY_js.findVaultByConfig({
|
|
822
990
|
assetAddress: wantAssetAddress,
|
|
823
991
|
yieldType,
|
|
824
992
|
chainId: normalizedChainId
|
|
825
993
|
});
|
|
826
994
|
if (!config || config.chainId !== normalizedChainId) {
|
|
827
|
-
throw new
|
|
995
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
828
996
|
`Vault chain mismatch: vault is on chain ${config?.chainId}, requested chain ${normalizedChainId}`,
|
|
829
997
|
{ endpoint: "prepareApproveWithdrawToken" }
|
|
830
998
|
);
|
|
831
999
|
}
|
|
832
1000
|
if (!config.vault.boringVaultAddress) {
|
|
833
|
-
throw new
|
|
1001
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
834
1002
|
`BoringVault contract address not configured for vault ${config.id}`,
|
|
835
1003
|
{ endpoint: "prepareApproveWithdrawToken" }
|
|
836
1004
|
);
|
|
837
1005
|
}
|
|
838
1006
|
const boringVaultAddress = config.vault.boringVaultAddress;
|
|
839
|
-
const vaultSharesAssets = await
|
|
1007
|
+
const vaultSharesAssets = await chunkEWJDKRSY_js.getAssetsFromCache({
|
|
840
1008
|
address: boringVaultAddress
|
|
841
1009
|
});
|
|
842
1010
|
if (vaultSharesAssets.length === 0) {
|
|
843
|
-
throw new
|
|
1011
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
844
1012
|
`Vault shares token not found in supported assets: ${boringVaultAddress}`,
|
|
845
1013
|
{ endpoint: "prepareApproveWithdrawToken" }
|
|
846
1014
|
);
|
|
847
1015
|
}
|
|
848
|
-
const withdrawAmountAsBigInt = withdrawAmount ? viem.parseUnits(withdrawAmount, vaultSharesAssets[0].decimals) :
|
|
1016
|
+
const withdrawAmountAsBigInt = withdrawAmount ? viem.parseUnits(withdrawAmount, vaultSharesAssets[0].decimals) : chunkEWJDKRSY_js.DEFAULT_APPROVAL_AMOUNT;
|
|
849
1017
|
return {
|
|
850
|
-
abi:
|
|
1018
|
+
abi: chunkTF3S7T6P_js.BoringVaultAbi,
|
|
851
1019
|
address: boringVaultAddress,
|
|
852
1020
|
functionName: "approve",
|
|
853
|
-
args: [
|
|
1021
|
+
args: [chunkEWJDKRSY_js.ATOMIC_QUEUE_CONTRACT_ADDRESS, withdrawAmountAsBigInt]
|
|
854
1022
|
};
|
|
855
1023
|
} catch (error) {
|
|
856
|
-
if (error instanceof
|
|
1024
|
+
if (error instanceof chunkEWJDKRSY_js.APIError) {
|
|
857
1025
|
throw error;
|
|
858
1026
|
}
|
|
859
|
-
throw new
|
|
1027
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
860
1028
|
`Failed to prepare approval transaction: ${error instanceof Error ? error.message : String(error)}`,
|
|
861
1029
|
{
|
|
862
1030
|
endpoint: "prepareApproveWithdrawToken",
|
|
@@ -868,7 +1036,7 @@ async function prepareApproveWithdrawTxData({
|
|
|
868
1036
|
|
|
869
1037
|
// src/vaults/withdraw/utils.ts
|
|
870
1038
|
var prepareUserRequest = (offerAmount, atomicPrice, deadline) => {
|
|
871
|
-
const deadlineTimeStamp =
|
|
1039
|
+
const deadlineTimeStamp = chunkWWTNCRXX_js.calculateDeadline(deadline);
|
|
872
1040
|
return {
|
|
873
1041
|
deadline: deadlineTimeStamp,
|
|
874
1042
|
atomicPrice,
|
|
@@ -889,35 +1057,35 @@ async function prepareBulkWithdrawTxData(params) {
|
|
|
889
1057
|
wantAssetAddress,
|
|
890
1058
|
shareAmount,
|
|
891
1059
|
chainId,
|
|
892
|
-
slippage =
|
|
1060
|
+
slippage = chunkOJOKPBK7_js.DEFAULT_SLIPPAGE_BPS,
|
|
893
1061
|
recipientAddress
|
|
894
1062
|
} = params;
|
|
895
1063
|
try {
|
|
896
1064
|
const normalizedChainId = chunkRUIAH5HY_js.toChainId(chainId);
|
|
897
|
-
const vault = await
|
|
1065
|
+
const vault = await chunkEWJDKRSY_js.findVaultByConfig({
|
|
898
1066
|
assetAddress: wantAssetAddress,
|
|
899
1067
|
yieldType,
|
|
900
1068
|
chainId: normalizedChainId
|
|
901
1069
|
});
|
|
902
1070
|
if (vault && vault.chainId !== normalizedChainId) {
|
|
903
|
-
throw new
|
|
1071
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
904
1072
|
`Vault chain mismatch: vault is on chain ${vault.chainId}, requested chain ${normalizedChainId}`,
|
|
905
1073
|
{ endpoint: "prepareBulkWithdrawTransactionData" }
|
|
906
1074
|
);
|
|
907
1075
|
}
|
|
908
1076
|
if (!vault || !vault.vault.boringVaultAddress) {
|
|
909
|
-
throw new
|
|
1077
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
910
1078
|
`BoringVault contract address not configured for vault ${vault?.vault.boringVaultAddress}`,
|
|
911
1079
|
{ endpoint: "prepareBulkWithdrawTransactionData" }
|
|
912
1080
|
);
|
|
913
1081
|
}
|
|
914
1082
|
const boringVaultAddress = vault.vault.boringVaultAddress;
|
|
915
1083
|
const accountantAddress = vault.vault.accountantAddress;
|
|
916
|
-
const wantAsset = await
|
|
1084
|
+
const wantAsset = await chunkEWJDKRSY_js.getAssetsFromCache({
|
|
917
1085
|
address: wantAssetAddress
|
|
918
1086
|
});
|
|
919
1087
|
if (wantAsset.length === 0) {
|
|
920
|
-
throw new
|
|
1088
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
921
1089
|
`Vault shares token not found in supported assets: ${boringVaultAddress}`,
|
|
922
1090
|
{ endpoint: "prepareBulkWithdrawTransactionData" }
|
|
923
1091
|
);
|
|
@@ -926,14 +1094,14 @@ async function prepareBulkWithdrawTxData(params) {
|
|
|
926
1094
|
wantAssetDecimalsResult,
|
|
927
1095
|
sharesAssetDecimalsResult,
|
|
928
1096
|
rateInQuoteResult
|
|
929
|
-
] = await
|
|
1097
|
+
] = await chunkTF3S7T6P_js.getRateInQuoteAndSharesAndWantAssetDecimals({
|
|
930
1098
|
sharesAssetAddress: boringVaultAddress,
|
|
931
1099
|
wantAssetAddress,
|
|
932
1100
|
accountantAddress,
|
|
933
1101
|
chainId: normalizedChainId
|
|
934
1102
|
});
|
|
935
1103
|
if (rateInQuoteResult.status === "failure" || wantAssetDecimalsResult.status === "failure" || sharesAssetDecimalsResult.status === "failure") {
|
|
936
|
-
throw new
|
|
1104
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
937
1105
|
`Failed to get exchange rate: ${rateInQuoteResult?.error?.message || wantAssetDecimalsResult?.error?.message || sharesAssetDecimalsResult?.error?.message}`,
|
|
938
1106
|
{
|
|
939
1107
|
endpoint: "prepareBulkWithdrawTransactionData",
|
|
@@ -954,7 +1122,7 @@ async function prepareBulkWithdrawTxData(params) {
|
|
|
954
1122
|
);
|
|
955
1123
|
const minimumAssets = atomicPrice * offerAmountAsBigInt / BigInt(10 ** sharesAssetDecimalsResult.result);
|
|
956
1124
|
return {
|
|
957
|
-
abi:
|
|
1125
|
+
abi: chunkTF3S7T6P_js.TellerAbi,
|
|
958
1126
|
address: vault.vault.tellerAddress,
|
|
959
1127
|
functionName: "bulkWithdraw",
|
|
960
1128
|
args: [
|
|
@@ -966,10 +1134,10 @@ async function prepareBulkWithdrawTxData(params) {
|
|
|
966
1134
|
chainId: normalizedChainId
|
|
967
1135
|
};
|
|
968
1136
|
} catch (error) {
|
|
969
|
-
if (error instanceof
|
|
1137
|
+
if (error instanceof chunkEWJDKRSY_js.APIError) {
|
|
970
1138
|
throw error;
|
|
971
1139
|
}
|
|
972
|
-
throw new
|
|
1140
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
973
1141
|
`Failed to prepare withdrawal transaction: ${error instanceof Error ? error.message : String(error)}`,
|
|
974
1142
|
{
|
|
975
1143
|
endpoint: "prepareBulkWithdrawTransactionData",
|
|
@@ -1220,30 +1388,30 @@ var prepareWithdrawTxData = async ({
|
|
|
1220
1388
|
wantAssetAddress,
|
|
1221
1389
|
chainId,
|
|
1222
1390
|
offerAmount,
|
|
1223
|
-
deadline =
|
|
1224
|
-
slippage =
|
|
1391
|
+
deadline = chunkEWJDKRSY_js.DEFAULT_DEADLINE,
|
|
1392
|
+
slippage = chunkOJOKPBK7_js.DEFAULT_SLIPPAGE_BPS
|
|
1225
1393
|
}) => {
|
|
1226
1394
|
try {
|
|
1227
1395
|
const normalizedChainId = chunkRUIAH5HY_js.toChainId(chainId);
|
|
1228
|
-
const config = await
|
|
1396
|
+
const config = await chunkEWJDKRSY_js.findVaultByConfig({
|
|
1229
1397
|
assetAddress: wantAssetAddress,
|
|
1230
1398
|
yieldType,
|
|
1231
1399
|
chainId: normalizedChainId
|
|
1232
1400
|
});
|
|
1233
1401
|
if (config && config.chainId !== normalizedChainId) {
|
|
1234
|
-
throw new
|
|
1402
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
1235
1403
|
`Vault chain mismatch: vault is on chain ${config.chainId}, requested chain ${normalizedChainId}`,
|
|
1236
1404
|
{ endpoint: "prepareWithdrawTransactionData" }
|
|
1237
1405
|
);
|
|
1238
1406
|
}
|
|
1239
1407
|
if (!config || !config.vault.boringVaultAddress) {
|
|
1240
|
-
throw new
|
|
1408
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
1241
1409
|
`BoringVault contract address not configured for vault ${config?.id}`,
|
|
1242
1410
|
{ endpoint: "prepareWithdrawTransactionData" }
|
|
1243
1411
|
);
|
|
1244
1412
|
}
|
|
1245
1413
|
if (!config.vault.accountantAddress) {
|
|
1246
|
-
throw new
|
|
1414
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
1247
1415
|
`Accountant contract address not configured for vault ${config.id}`,
|
|
1248
1416
|
{ endpoint: "prepareWithdrawTransactionData" }
|
|
1249
1417
|
);
|
|
@@ -1254,14 +1422,14 @@ var prepareWithdrawTxData = async ({
|
|
|
1254
1422
|
wantAssetDecimalsResult,
|
|
1255
1423
|
sharesAssetDecimalsResult,
|
|
1256
1424
|
rateInQuoteResult
|
|
1257
|
-
] = await
|
|
1425
|
+
] = await chunkTF3S7T6P_js.getRateInQuoteAndSharesAndWantAssetDecimals({
|
|
1258
1426
|
sharesAssetAddress: boringVaultAddress,
|
|
1259
1427
|
wantAssetAddress,
|
|
1260
1428
|
accountantAddress,
|
|
1261
1429
|
chainId: normalizedChainId
|
|
1262
1430
|
});
|
|
1263
1431
|
if (rateInQuoteResult?.status === "failure" || wantAssetDecimalsResult?.status === "failure" || sharesAssetDecimalsResult?.status === "failure") {
|
|
1264
|
-
throw new
|
|
1432
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
1265
1433
|
`Failed to get exchange rate: ${rateInQuoteResult?.error?.message || wantAssetDecimalsResult?.error?.message || sharesAssetDecimalsResult?.error?.message}`,
|
|
1266
1434
|
{
|
|
1267
1435
|
endpoint: "prepareWithdrawTransactionData",
|
|
@@ -1287,16 +1455,16 @@ var prepareWithdrawTxData = async ({
|
|
|
1287
1455
|
);
|
|
1288
1456
|
return {
|
|
1289
1457
|
abi: AtomicQueueAbi,
|
|
1290
|
-
address:
|
|
1458
|
+
address: chunkEWJDKRSY_js.ATOMIC_QUEUE_CONTRACT_ADDRESS,
|
|
1291
1459
|
functionName: "updateAtomicRequest",
|
|
1292
1460
|
args: [boringVaultAddress, wantAssetAddress, userRequest],
|
|
1293
1461
|
chainId: normalizedChainId
|
|
1294
1462
|
};
|
|
1295
1463
|
} catch (error) {
|
|
1296
|
-
if (error instanceof
|
|
1464
|
+
if (error instanceof chunkEWJDKRSY_js.APIError) {
|
|
1297
1465
|
throw error;
|
|
1298
1466
|
}
|
|
1299
|
-
throw new
|
|
1467
|
+
throw new chunkEWJDKRSY_js.APIError(
|
|
1300
1468
|
`Failed to prepare withdrawal transaction: ${error instanceof Error ? error.message : String(error)}`,
|
|
1301
1469
|
{
|
|
1302
1470
|
endpoint: "prepareWithdrawTransactionData",
|
|
@@ -1308,69 +1476,88 @@ var prepareWithdrawTxData = async ({
|
|
|
1308
1476
|
|
|
1309
1477
|
Object.defineProperty(exports, "YieldType", {
|
|
1310
1478
|
enumerable: true,
|
|
1311
|
-
get: function () { return
|
|
1479
|
+
get: function () { return chunkOJOKPBK7_js.YieldType; }
|
|
1312
1480
|
});
|
|
1313
1481
|
Object.defineProperty(exports, "getDepositExchangeRate", {
|
|
1314
1482
|
enumerable: true,
|
|
1315
|
-
get: function () { return
|
|
1483
|
+
get: function () { return chunkSMIA4ULA_js.getDepositExchangeRate; }
|
|
1316
1484
|
});
|
|
1317
1485
|
Object.defineProperty(exports, "getWithdrawExchangeRate", {
|
|
1318
1486
|
enumerable: true,
|
|
1319
|
-
get: function () { return
|
|
1487
|
+
get: function () { return chunkSMIA4ULA_js.getWithdrawExchangeRate; }
|
|
1320
1488
|
});
|
|
1321
1489
|
Object.defineProperty(exports, "isDepositSpendApproved", {
|
|
1322
1490
|
enumerable: true,
|
|
1323
|
-
get: function () { return
|
|
1491
|
+
get: function () { return chunkSMIA4ULA_js.isDepositSpendApproved; }
|
|
1324
1492
|
});
|
|
1325
1493
|
Object.defineProperty(exports, "isWithdrawalSpendApproved", {
|
|
1326
1494
|
enumerable: true,
|
|
1327
|
-
get: function () { return
|
|
1495
|
+
get: function () { return chunkSMIA4ULA_js.isWithdrawalSpendApproved; }
|
|
1328
1496
|
});
|
|
1329
1497
|
Object.defineProperty(exports, "APIError", {
|
|
1330
1498
|
enumerable: true,
|
|
1331
|
-
get: function () { return
|
|
1499
|
+
get: function () { return chunkEWJDKRSY_js.APIError; }
|
|
1500
|
+
});
|
|
1501
|
+
Object.defineProperty(exports, "LogLevel", {
|
|
1502
|
+
enumerable: true,
|
|
1503
|
+
get: function () { return chunkEWJDKRSY_js.LogLevel; }
|
|
1332
1504
|
});
|
|
1333
1505
|
Object.defineProperty(exports, "fetchSupportedAssets", {
|
|
1334
1506
|
enumerable: true,
|
|
1335
|
-
get: function () { return
|
|
1507
|
+
get: function () { return chunkEWJDKRSY_js.fetchSupportedAssets; }
|
|
1336
1508
|
});
|
|
1337
1509
|
Object.defineProperty(exports, "fetchVaults", {
|
|
1338
1510
|
enumerable: true,
|
|
1339
|
-
get: function () { return
|
|
1511
|
+
get: function () { return chunkEWJDKRSY_js.fetchVaults; }
|
|
1340
1512
|
});
|
|
1341
1513
|
Object.defineProperty(exports, "findVaultByConfig", {
|
|
1342
1514
|
enumerable: true,
|
|
1343
|
-
get: function () { return
|
|
1515
|
+
get: function () { return chunkEWJDKRSY_js.findVaultByConfig; }
|
|
1344
1516
|
});
|
|
1345
1517
|
Object.defineProperty(exports, "getAssetsFromCache", {
|
|
1346
1518
|
enumerable: true,
|
|
1347
|
-
get: function () { return
|
|
1519
|
+
get: function () { return chunkEWJDKRSY_js.getAssetsFromCache; }
|
|
1348
1520
|
});
|
|
1349
1521
|
Object.defineProperty(exports, "getCache", {
|
|
1350
1522
|
enumerable: true,
|
|
1351
|
-
get: function () { return
|
|
1523
|
+
get: function () { return chunkEWJDKRSY_js.getCache; }
|
|
1524
|
+
});
|
|
1525
|
+
Object.defineProperty(exports, "getLogger", {
|
|
1526
|
+
enumerable: true,
|
|
1527
|
+
get: function () { return chunkEWJDKRSY_js.getLogger; }
|
|
1352
1528
|
});
|
|
1353
1529
|
Object.defineProperty(exports, "getWithdrawSupportedAssets", {
|
|
1354
1530
|
enumerable: true,
|
|
1355
|
-
get: function () { return
|
|
1531
|
+
get: function () { return chunkEWJDKRSY_js.getWithdrawSupportedAssets; }
|
|
1356
1532
|
});
|
|
1357
1533
|
Object.defineProperty(exports, "initAmplifySDK", {
|
|
1358
1534
|
enumerable: true,
|
|
1359
|
-
get: function () { return
|
|
1535
|
+
get: function () { return chunkEWJDKRSY_js.initAmplifySDK; }
|
|
1360
1536
|
});
|
|
1361
1537
|
Object.defineProperty(exports, "initializeCache", {
|
|
1362
1538
|
enumerable: true,
|
|
1363
|
-
get: function () { return
|
|
1539
|
+
get: function () { return chunkEWJDKRSY_js.initializeCache; }
|
|
1364
1540
|
});
|
|
1365
1541
|
Object.defineProperty(exports, "refreshVaultCache", {
|
|
1366
1542
|
enumerable: true,
|
|
1367
|
-
get: function () { return
|
|
1543
|
+
get: function () { return chunkEWJDKRSY_js.refreshVaultCache; }
|
|
1544
|
+
});
|
|
1545
|
+
Object.defineProperty(exports, "setLogLevel", {
|
|
1546
|
+
enumerable: true,
|
|
1547
|
+
get: function () { return chunkEWJDKRSY_js.setLogLevel; }
|
|
1548
|
+
});
|
|
1549
|
+
Object.defineProperty(exports, "setLogger", {
|
|
1550
|
+
enumerable: true,
|
|
1551
|
+
get: function () { return chunkEWJDKRSY_js.setLogger; }
|
|
1368
1552
|
});
|
|
1553
|
+
exports.DepositAuthMethod = DepositAuthMethod;
|
|
1369
1554
|
exports.PERMIT_TYPES = PERMIT_TYPES;
|
|
1370
1555
|
exports.parsePermitSignature = parsePermitSignature;
|
|
1371
1556
|
exports.prepareApproveDepositTokenTxData = prepareApproveDepositTokenTxData;
|
|
1372
1557
|
exports.prepareApproveWithdrawTxData = prepareApproveWithdrawTxData;
|
|
1373
1558
|
exports.prepareBulkWithdrawTxData = prepareBulkWithdrawTxData;
|
|
1559
|
+
exports.prepareDeposit = prepareDeposit;
|
|
1560
|
+
exports.prepareDepositAuthorization = prepareDepositAuthorization;
|
|
1374
1561
|
exports.prepareDepositPermitSignature = prepareDepositPermitSignature;
|
|
1375
1562
|
exports.prepareDepositTxData = prepareDepositTxData;
|
|
1376
1563
|
exports.prepareDepositWithPermitTxData = prepareDepositWithPermitTxData;
|