@gearbox-protocol/sdk 13.3.0-next.3 → 13.3.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/dist/cjs/common-utils/charts/credit-manager-payload.js +16 -0
- package/dist/cjs/common-utils/charts/credit-manager.js +134 -0
- package/dist/cjs/common-utils/charts/credit-session.js +257 -0
- package/dist/cjs/common-utils/charts/credit-sessions-payload.js +16 -0
- package/dist/cjs/common-utils/charts/graph-payload.js +16 -0
- package/dist/cjs/common-utils/charts/index.js +36 -0
- package/dist/cjs/common-utils/charts/pool-payload.js +16 -0
- package/dist/cjs/common-utils/charts/pool.js +199 -0
- package/dist/cjs/common-utils/charts/token-data.js +91 -0
- package/dist/cjs/common-utils/index.js +4 -0
- package/dist/cjs/common-utils/static/index.js +28 -0
- package/dist/cjs/common-utils/static/migration-config.js +16 -0
- package/dist/cjs/common-utils/static/pool-config.js +16 -0
- package/dist/cjs/common-utils/static/strategy.js +16 -0
- package/dist/cjs/common-utils/static/trading-pair.js +16 -0
- package/dist/cjs/common-utils/utils/{assetsMath.js → assets-math.js} +13 -13
- package/dist/cjs/common-utils/utils/{bigintMath.js → bigint-math.js} +3 -3
- package/dist/cjs/common-utils/utils/creditAccount/{calcHealthFactor.js → calc-health-factor.js} +9 -9
- package/dist/cjs/common-utils/utils/creditAccount/{calcOverallAPY.js → calc-overall-apy.js} +8 -8
- package/dist/cjs/common-utils/utils/creditAccount/{calcQuotaBorrowRate.js → calc-quota-borrow-rate.js} +3 -3
- package/dist/cjs/common-utils/utils/creditAccount/{calcRelativeBaseBorrowRate.js → calc-relative-base-borrow-rate.js} +3 -3
- package/dist/cjs/common-utils/utils/creditAccount/debt.js +4 -4
- package/dist/cjs/common-utils/utils/creditAccount/{getTimeToLiquidation.js → get-time-to-liquidation.js} +3 -3
- package/dist/cjs/common-utils/utils/creditAccount/index.js +16 -16
- package/dist/cjs/common-utils/utils/creditAccount/{liquidationPrice.js → liquidation-price.js} +3 -3
- package/dist/cjs/common-utils/utils/creditAccount/{quotaUtils.js → quota-utils.js} +8 -8
- package/dist/cjs/common-utils/utils/creditAccount/sort.js +3 -3
- package/dist/cjs/common-utils/utils/index.js +6 -8
- package/dist/cjs/common-utils/utils/{priceMath.js → price-math.js} +3 -3
- package/dist/cjs/dev/AccountOpener.js +5 -45
- package/dist/cjs/plugins/zappers/ZappersPlugin.js +144 -0
- package/dist/cjs/{sdk/market/ZapperRegister.js → plugins/zappers/extraZappers.js} +6 -110
- package/dist/cjs/plugins/zappers/index.js +26 -0
- package/dist/cjs/plugins/zappers/package.json +1 -0
- package/dist/cjs/rewards/apy/index.js +24 -0
- package/dist/cjs/rewards/apy/output-details.js +16 -0
- package/dist/cjs/rewards/apy/output.js +16 -0
- package/dist/cjs/rewards/index.js +24 -0
- package/dist/cjs/rewards/package.json +1 -0
- package/dist/cjs/rewards/rewards/api.js +226 -0
- package/dist/cjs/rewards/rewards/apy.js +177 -0
- package/dist/cjs/rewards/rewards/common.js +16 -0
- package/dist/cjs/rewards/rewards/extra-apy.js +132 -0
- package/dist/cjs/rewards/rewards/index.js +28 -0
- package/dist/cjs/rewards/rewards/merkl-api.js +52 -0
- package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +104 -462
- package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +5 -16
- package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -1
- package/dist/cjs/sdk/base/TokensMeta.js +32 -255
- package/dist/cjs/sdk/base/index.js +0 -2
- package/dist/cjs/sdk/chain/chains.js +1 -2
- package/dist/cjs/sdk/constants/index.js +2 -0
- package/dist/cjs/sdk/{base/token-types.js → constants/phantom-tokens.js} +3 -9
- package/dist/cjs/sdk/market/MarketRegister.js +2 -2
- package/dist/cjs/sdk/market/MarketSuite.js +0 -6
- package/dist/cjs/sdk/market/index.js +1 -3
- package/dist/cjs/sdk/market/pool/PoolSuite.js +0 -3
- package/dist/cjs/sdk/market/pool/PoolV310Contract.js +2 -17
- package/dist/cjs/sdk/market/pool/index.js +0 -4
- package/dist/cjs/sdk/pools/AbstractPoolService.js +137 -0
- package/dist/cjs/{abi/iStateSerializer.js → sdk/pools/PoolServiceV310.js} +8 -14
- package/dist/cjs/sdk/pools/createPoolService.js +35 -0
- package/dist/cjs/sdk/pools/index.js +4 -2
- package/dist/cjs/sdk/utils/AddressMap.js +1 -1
- package/dist/cjs/sdk/utils/viem/sendRawTx.js +0 -16
- package/dist/esm/common-utils/charts/credit-manager.js +115 -0
- package/dist/esm/common-utils/charts/credit-session.js +233 -0
- package/dist/esm/common-utils/charts/credit-sessions-payload.js +0 -0
- package/dist/esm/common-utils/charts/graph-payload.js +0 -0
- package/dist/esm/common-utils/charts/index.js +8 -0
- package/dist/esm/common-utils/charts/pool-payload.js +0 -0
- package/dist/esm/common-utils/charts/pool.js +179 -0
- package/dist/esm/common-utils/charts/token-data.js +67 -0
- package/dist/esm/common-utils/index.js +2 -0
- package/dist/esm/common-utils/static/index.js +4 -0
- package/dist/esm/common-utils/static/migration-config.js +0 -0
- package/dist/esm/common-utils/static/pool-config.js +0 -0
- package/dist/esm/common-utils/static/strategy.js +0 -0
- package/dist/esm/common-utils/static/trading-pair.js +0 -0
- package/dist/esm/common-utils/utils/{assetsMath.js → assets-math.js} +2 -2
- package/dist/esm/common-utils/utils/creditAccount/{calcHealthFactor.js → calc-health-factor.js} +2 -2
- package/dist/esm/common-utils/utils/creditAccount/{calcOverallAPY.js → calc-overall-apy.js} +1 -1
- package/dist/esm/common-utils/utils/creditAccount/debt.js +2 -2
- package/dist/esm/common-utils/utils/creditAccount/index.js +8 -8
- package/dist/esm/common-utils/utils/creditAccount/{quotaUtils.js → quota-utils.js} +1 -1
- package/dist/esm/common-utils/utils/creditAccount/sort.js +1 -1
- package/dist/esm/common-utils/utils/index.js +3 -4
- package/dist/esm/dev/AccountOpener.js +6 -47
- package/dist/esm/plugins/zappers/ZappersPlugin.js +126 -0
- package/dist/esm/{sdk/market/ZapperRegister.js → plugins/zappers/extraZappers.js} +2 -109
- package/dist/esm/plugins/zappers/index.js +3 -0
- package/dist/esm/plugins/zappers/package.json +1 -0
- package/dist/esm/plugins/zappers/types.js +0 -0
- package/dist/esm/rewards/apy/index.js +2 -0
- package/dist/esm/rewards/apy/output-details.js +0 -0
- package/dist/esm/rewards/apy/output.js +0 -0
- package/dist/esm/rewards/index.js +2 -0
- package/dist/esm/rewards/package.json +1 -0
- package/dist/esm/rewards/rewards/api.js +204 -0
- package/dist/esm/rewards/rewards/apy.js +160 -0
- package/dist/esm/rewards/rewards/common.js +0 -0
- package/dist/esm/rewards/rewards/extra-apy.js +101 -0
- package/dist/esm/rewards/rewards/index.js +4 -0
- package/dist/esm/rewards/rewards/merkl-api.js +18 -0
- package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +104 -462
- package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +5 -16
- package/dist/esm/sdk/base/ChainContractsRegister.js +1 -1
- package/dist/esm/sdk/base/TokensMeta.js +32 -261
- package/dist/esm/sdk/base/index.js +0 -1
- package/dist/esm/sdk/chain/chains.js +1 -2
- package/dist/esm/sdk/constants/index.js +1 -0
- package/dist/esm/sdk/{base/token-types.js → constants/phantom-tokens.js} +0 -4
- package/dist/esm/sdk/market/MarketRegister.js +2 -2
- package/dist/esm/sdk/market/MarketSuite.js +0 -6
- package/dist/esm/sdk/market/index.js +0 -1
- package/dist/esm/sdk/market/pool/PoolSuite.js +0 -3
- package/dist/esm/sdk/market/pool/PoolV310Contract.js +2 -17
- package/dist/esm/sdk/market/pool/index.js +0 -2
- package/dist/esm/sdk/pools/AbstractPoolService.js +113 -0
- package/dist/esm/sdk/pools/PoolServiceV310.js +6 -0
- package/dist/esm/sdk/pools/createPoolService.js +11 -0
- package/dist/esm/sdk/pools/index.js +2 -1
- package/dist/esm/sdk/utils/AddressMap.js +1 -1
- package/dist/esm/sdk/utils/viem/sendRawTx.js +1 -19
- package/dist/types/common-utils/charts/credit-manager-payload.d.ts +50 -0
- package/dist/types/common-utils/charts/credit-manager.d.ts +48 -0
- package/dist/types/common-utils/charts/credit-session.d.ts +111 -0
- package/dist/types/common-utils/charts/credit-sessions-payload.d.ts +111 -0
- package/dist/types/common-utils/charts/graph-payload.d.ts +10 -0
- package/dist/types/common-utils/charts/index.d.ts +8 -0
- package/dist/types/common-utils/charts/pool-payload.d.ts +111 -0
- package/dist/types/common-utils/charts/pool.d.ts +91 -0
- package/dist/types/common-utils/charts/token-data.d.ts +20 -0
- package/dist/types/common-utils/index.d.ts +2 -0
- package/dist/types/common-utils/static/index.d.ts +4 -0
- package/dist/types/common-utils/static/migration-config.d.ts +10 -0
- package/dist/types/common-utils/static/pool-config.d.ts +11 -0
- package/dist/types/common-utils/static/strategy.d.ts +78 -0
- package/dist/types/common-utils/static/trading-pair.d.ts +15 -0
- package/dist/types/common-utils/utils/creditAccount/index.d.ts +8 -8
- package/dist/types/common-utils/utils/index.d.ts +3 -4
- package/dist/types/plugins/zappers/ZappersPlugin.d.ts +18 -0
- package/dist/types/plugins/zappers/extraZappers.d.ts +6 -0
- package/dist/types/plugins/zappers/index.d.ts +3 -0
- package/dist/types/plugins/zappers/types.d.ts +12 -0
- package/dist/types/rewards/apy/index.d.ts +2 -0
- package/dist/types/rewards/apy/output-details.d.ts +96 -0
- package/dist/types/rewards/apy/output.d.ts +22 -0
- package/dist/types/rewards/index.d.ts +2 -0
- package/dist/types/rewards/rewards/api.d.ts +49 -0
- package/dist/types/rewards/rewards/apy.d.ts +41 -0
- package/dist/types/rewards/rewards/common.d.ts +16 -0
- package/dist/types/rewards/rewards/extra-apy.d.ts +30 -0
- package/dist/types/rewards/rewards/index.d.ts +4 -0
- package/dist/types/rewards/rewards/merkl-api.d.ts +45 -0
- package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +27 -123
- package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
- package/dist/types/sdk/accounts/types.d.ts +8 -108
- package/dist/types/sdk/base/TokensMeta.d.ts +18 -34
- package/dist/types/sdk/base/index.d.ts +0 -1
- package/dist/types/sdk/base/types.d.ts +1 -0
- package/dist/types/sdk/chain/chains.d.ts +1 -1
- package/dist/types/sdk/constants/index.d.ts +1 -0
- package/dist/types/sdk/constants/phantom-tokens.d.ts +2 -0
- package/dist/types/sdk/market/MarketRegister.d.ts +2 -2
- package/dist/types/sdk/market/MarketSuite.d.ts +0 -3
- package/dist/types/sdk/market/index.d.ts +0 -1
- package/dist/types/sdk/market/pool/PoolSuite.d.ts +0 -2
- package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +2 -6
- package/dist/types/sdk/market/pool/index.d.ts +0 -2
- package/dist/types/sdk/pools/AbstractPoolService.d.ts +9 -0
- package/dist/types/sdk/pools/PoolServiceV310.d.ts +4 -0
- package/dist/types/sdk/pools/createPoolService.d.ts +3 -0
- package/dist/types/sdk/pools/index.d.ts +2 -1
- package/dist/types/sdk/pools/types.d.ts +63 -84
- package/dist/types/sdk/utils/AddressMap.d.ts +1 -1
- package/dist/types/sdk/utils/viem/sendRawTx.d.ts +1 -5
- package/package.json +6 -1
- package/dist/cjs/abi/310/iSecuritizeDegenNFT.js +0 -263
- package/dist/cjs/abi/310/iSecuritizeKYCFactory.js +0 -278
- package/dist/cjs/common-utils/utils/endpoints.js +0 -65
- package/dist/cjs/sdk/market/pool/SecuritizeKYCFactory.js +0 -97
- package/dist/cjs/sdk/pools/PoolService.js +0 -391
- package/dist/esm/abi/310/iSecuritizeDegenNFT.js +0 -239
- package/dist/esm/abi/310/iSecuritizeKYCFactory.js +0 -254
- package/dist/esm/abi/iStateSerializer.js +0 -12
- package/dist/esm/common-utils/utils/endpoints.js +0 -41
- package/dist/esm/sdk/market/pool/SecuritizeKYCFactory.js +0 -73
- package/dist/esm/sdk/pools/PoolService.js +0 -371
- package/dist/types/abi/310/iSecuritizeDegenNFT.d.ts +0 -324
- package/dist/types/abi/310/iSecuritizeKYCFactory.d.ts +0 -322
- package/dist/types/abi/iStateSerializer.d.ts +0 -11
- package/dist/types/common-utils/utils/endpoints.d.ts +0 -27
- package/dist/types/sdk/base/token-types.d.ts +0 -33
- package/dist/types/sdk/market/ZapperRegister.d.ts +0 -17
- package/dist/types/sdk/market/pool/SecuritizeKYCFactory.d.ts +0 -345
- package/dist/types/sdk/market/types.d.ts +0 -10
- package/dist/types/sdk/pools/PoolService.d.ts +0 -14
- /package/dist/cjs/{sdk/market → plugins/zappers}/types.js +0 -0
- /package/dist/esm/{sdk/market/types.js → common-utils/charts/credit-manager-payload.js} +0 -0
- /package/dist/esm/common-utils/utils/{bigintMath.js → bigint-math.js} +0 -0
- /package/dist/esm/common-utils/utils/creditAccount/{calcQuotaBorrowRate.js → calc-quota-borrow-rate.js} +0 -0
- /package/dist/esm/common-utils/utils/creditAccount/{calcRelativeBaseBorrowRate.js → calc-relative-base-borrow-rate.js} +0 -0
- /package/dist/esm/common-utils/utils/creditAccount/{getTimeToLiquidation.js → get-time-to-liquidation.js} +0 -0
- /package/dist/esm/common-utils/utils/creditAccount/{liquidationPrice.js → liquidation-price.js} +0 -0
- /package/dist/esm/common-utils/utils/{priceMath.js → price-math.js} +0 -0
- /package/dist/types/common-utils/utils/{assetsMath.d.ts → assets-math.d.ts} +0 -0
- /package/dist/types/common-utils/utils/{bigintMath.d.ts → bigint-math.d.ts} +0 -0
- /package/dist/types/common-utils/utils/creditAccount/{calcHealthFactor.d.ts → calc-health-factor.d.ts} +0 -0
- /package/dist/types/common-utils/utils/creditAccount/{calcOverallAPY.d.ts → calc-overall-apy.d.ts} +0 -0
- /package/dist/types/common-utils/utils/creditAccount/{calcQuotaBorrowRate.d.ts → calc-quota-borrow-rate.d.ts} +0 -0
- /package/dist/types/common-utils/utils/creditAccount/{calcRelativeBaseBorrowRate.d.ts → calc-relative-base-borrow-rate.d.ts} +0 -0
- /package/dist/types/common-utils/utils/creditAccount/{getTimeToLiquidation.d.ts → get-time-to-liquidation.d.ts} +0 -0
- /package/dist/types/common-utils/utils/creditAccount/{liquidationPrice.d.ts → liquidation-price.d.ts} +0 -0
- /package/dist/types/common-utils/utils/creditAccount/{quotaUtils.d.ts → quota-utils.d.ts} +0 -0
- /package/dist/types/common-utils/utils/{priceMath.d.ts → price-math.d.ts} +0 -0
|
@@ -42,7 +42,7 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
|
|
|
42
42
|
})
|
|
43
43
|
};
|
|
44
44
|
const calls = [...priceUpdatesCalls, addBotCall];
|
|
45
|
-
const tx = targetContract.type === "creditAccount" ?
|
|
45
|
+
const tx = targetContract.type === "creditAccount" ? cm.creditFacade.multicall(targetContract.creditAccount, calls) : void 0;
|
|
46
46
|
return { tx, calls, creditFacade: cm.creditFacade };
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
@@ -77,7 +77,7 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
|
|
|
77
77
|
averageQuota
|
|
78
78
|
})
|
|
79
79
|
];
|
|
80
|
-
const tx =
|
|
80
|
+
const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
|
|
81
81
|
return { tx, calls, creditFacade: cm.creditFacade };
|
|
82
82
|
}
|
|
83
83
|
/**
|
|
@@ -90,13 +90,11 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
|
|
|
90
90
|
creditAccount: ca,
|
|
91
91
|
permits,
|
|
92
92
|
to,
|
|
93
|
-
tokensToClaim
|
|
94
|
-
calls: wrapCalls = []
|
|
93
|
+
tokensToClaim
|
|
95
94
|
}) {
|
|
96
95
|
const cm = this.sdk.marketRegister.findCreditManager(ca.creditManager);
|
|
97
96
|
const addCollateral = collateralAssets.filter((a) => a.balance > 0);
|
|
98
97
|
const router = this.sdk.routerFor(ca);
|
|
99
|
-
const unwrapCalls = await this.getRedeemDiffCalls(1n, ca.creditManager) ?? [];
|
|
100
98
|
const claimPath = await router.findClaimAllRewards({
|
|
101
99
|
tokensToClaim,
|
|
102
100
|
creditAccount: ca
|
|
@@ -108,21 +106,14 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
|
|
|
108
106
|
const calls = [
|
|
109
107
|
...operation === "close" ? [] : priceUpdates,
|
|
110
108
|
...this.prepareAddCollateral(ca.creditFacade, addCollateral, permits),
|
|
111
|
-
...wrapCalls,
|
|
112
109
|
...this.prepareDisableQuotas(ca),
|
|
113
110
|
...this.prepareDecreaseDebt(ca),
|
|
114
|
-
...unwrapCalls,
|
|
115
111
|
...claimPath.calls,
|
|
116
112
|
...assetsToWithdraw.map(
|
|
117
113
|
(t) => this.prepareWithdrawToken(ca.creditFacade, t.token, MAX_UINT256, to)
|
|
118
114
|
)
|
|
119
115
|
];
|
|
120
|
-
const tx =
|
|
121
|
-
cm,
|
|
122
|
-
ca.creditAccount,
|
|
123
|
-
calls,
|
|
124
|
-
operation
|
|
125
|
-
);
|
|
116
|
+
const tx = operation === "close" ? cm.creditFacade.closeCreditAccount(ca.creditAccount, calls) : cm.creditFacade.multicall(ca.creditAccount, calls);
|
|
126
117
|
return { tx, calls, creditFacade: cm.creditFacade };
|
|
127
118
|
}
|
|
128
119
|
/**
|
|
@@ -146,13 +137,11 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
|
|
|
146
137
|
creditManager: ca.creditManager,
|
|
147
138
|
creditAccount: ca
|
|
148
139
|
});
|
|
149
|
-
const wrapCalls = await this.getDepositDiffCalls(1n, ca.creditManager) ?? [];
|
|
150
140
|
const addCollateral = collateralAssets.filter((a) => a.balance > 0);
|
|
151
141
|
const calls = [
|
|
152
142
|
...priceUpdates,
|
|
153
143
|
...this.prepareAddCollateral(ca.creditFacade, addCollateral, permits),
|
|
154
144
|
...claimPath.calls,
|
|
155
|
-
...wrapCalls,
|
|
156
145
|
...assetsToWithdraw.map(
|
|
157
146
|
(t) => this.prepareWithdrawToken(ca.creditFacade, t.token, MAX_UINT256, to)
|
|
158
147
|
)
|
|
@@ -196,7 +185,7 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
|
|
|
196
185
|
...claimPath.calls,
|
|
197
186
|
...this.prepareUpdateQuotas(ca.creditFacade, { minQuota, averageQuota })
|
|
198
187
|
];
|
|
199
|
-
const tx =
|
|
188
|
+
const tx = cm.creditFacade.multicall(ca.creditAccount, calls);
|
|
200
189
|
return { tx, calls, creditFacade: cm.creditFacade };
|
|
201
190
|
}
|
|
202
191
|
async previewWithdrawLlamathenaProportionally(_) {
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
decodeAbiParameters,
|
|
3
|
-
erc20Abi
|
|
4
|
-
} from "viem";
|
|
5
|
-
import { iSecuritizeDegenNFTAbi } from "../../abi/310/iSecuritizeDegenNFT.js";
|
|
6
|
-
import { iSecuritizeKYCFactoryAbi } from "../../abi/310/iSecuritizeKYCFactory.js";
|
|
7
|
-
import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
|
|
8
1
|
import { iVersionAbi } from "../../abi/iVersion.js";
|
|
9
2
|
import {
|
|
10
3
|
AddressMap,
|
|
@@ -12,33 +5,16 @@ import {
|
|
|
12
5
|
bytes32ToString,
|
|
13
6
|
formatBN
|
|
14
7
|
} from "../utils/index.js";
|
|
15
|
-
import {
|
|
16
|
-
KYC_UNDERLYING_DEFAULT,
|
|
17
|
-
KYC_UNDERLYING_ON_DEMAND
|
|
18
|
-
} from "./token-types.js";
|
|
19
8
|
class TokensMeta extends AddressMap {
|
|
20
9
|
#client;
|
|
21
|
-
#
|
|
22
|
-
|
|
23
|
-
constructor(client, logger) {
|
|
10
|
+
#phantomTokensLoaded;
|
|
11
|
+
constructor(client) {
|
|
24
12
|
super(void 0, "tokensMeta");
|
|
25
13
|
this.#client = client;
|
|
26
|
-
this.#logger = logger?.child?.({ name: "TokensMeta" }) ?? logger;
|
|
27
14
|
}
|
|
28
15
|
reset() {
|
|
29
16
|
this.clear();
|
|
30
|
-
this.#
|
|
31
|
-
}
|
|
32
|
-
upsert(address, value) {
|
|
33
|
-
let v = value;
|
|
34
|
-
const existing = this.get(address);
|
|
35
|
-
if (existing && v) {
|
|
36
|
-
v = {
|
|
37
|
-
...existing,
|
|
38
|
-
...v
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
super.upsert(address, v);
|
|
17
|
+
this.#phantomTokensLoaded = void 0;
|
|
42
18
|
}
|
|
43
19
|
symbol(token) {
|
|
44
20
|
return this.mustGet(token).symbol;
|
|
@@ -47,78 +23,27 @@ class TokensMeta extends AddressMap {
|
|
|
47
23
|
return this.mustGet(token).decimals;
|
|
48
24
|
}
|
|
49
25
|
/**
|
|
50
|
-
* Returns
|
|
51
|
-
*
|
|
52
|
-
* @returns
|
|
53
|
-
*/
|
|
54
|
-
isPhantomToken(t) {
|
|
55
|
-
if (!this.#tokenDataLoaded.has(t.addr)) {
|
|
56
|
-
throw new Error(
|
|
57
|
-
`extended token data not loaded for ${t.symbol} (${t.addr})`
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
return !!t.contractType?.startsWith("PHANTOM_TOKEN::");
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Returns true if the token is a KYC underlying token, throws if the token data is not loaded
|
|
64
|
-
* @param t
|
|
65
|
-
* @returns
|
|
66
|
-
*/
|
|
67
|
-
isKYCUnderlying(t) {
|
|
68
|
-
if (!this.#tokenDataLoaded.has(t.addr)) {
|
|
69
|
-
throw new Error(
|
|
70
|
-
`extended token data not loaded for ${t.symbol} (${t.addr})`
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
return !!t.contractType?.startsWith("KYC_UNDERLYING::");
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Returns true if the token is a DSToken, throws if the token data is not loaded
|
|
77
|
-
* @param t
|
|
78
|
-
* @returns
|
|
26
|
+
* Returns the phantom token type for a given token, or undefined for normal tokens
|
|
27
|
+
* Throws if the phantom token data is not loaded
|
|
79
28
|
*/
|
|
80
|
-
|
|
81
|
-
if (!this.#
|
|
82
|
-
throw new Error(
|
|
83
|
-
`extended token data not loaded for ${t.symbol} (${t.addr})`
|
|
84
|
-
);
|
|
29
|
+
phantomTokenType(token) {
|
|
30
|
+
if (!this.#phantomTokensLoaded?.has(token)) {
|
|
31
|
+
throw new Error("phantom token data not loaded");
|
|
85
32
|
}
|
|
86
|
-
return
|
|
33
|
+
return this.mustGet(token).phantomTokenType;
|
|
87
34
|
}
|
|
88
35
|
/**
|
|
89
36
|
* Returns a map of all phantom tokens
|
|
90
|
-
* Throws if token data is not loaded
|
|
37
|
+
* Throws if the phantom token data is not loaded
|
|
91
38
|
*/
|
|
92
39
|
get phantomTokens() {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (this.isPhantomToken(meta)) {
|
|
96
|
-
result.upsert(token, meta);
|
|
97
|
-
}
|
|
40
|
+
if (!this.#phantomTokensLoaded) {
|
|
41
|
+
throw new Error("phantom tokens not loaded");
|
|
98
42
|
}
|
|
99
|
-
return
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
* Throws if token data is not loaded
|
|
104
|
-
*/
|
|
105
|
-
get kycUnderlyings() {
|
|
106
|
-
const result = new AddressMap();
|
|
107
|
-
for (const [token, meta] of this.entries()) {
|
|
108
|
-
if (this.isKYCUnderlying(meta)) {
|
|
109
|
-
result.upsert(token, meta);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return result;
|
|
113
|
-
}
|
|
114
|
-
get dsTokens() {
|
|
115
|
-
const result = new AddressMap();
|
|
116
|
-
for (const [token, meta] of this.entries()) {
|
|
117
|
-
if (this.isDSToken(meta)) {
|
|
118
|
-
result.upsert(token, meta);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return result;
|
|
43
|
+
return new AddressMap(
|
|
44
|
+
this.entries().filter(([_, v]) => !!v.phantomTokenType),
|
|
45
|
+
"phantomTokens"
|
|
46
|
+
);
|
|
122
47
|
}
|
|
123
48
|
formatBN(arg0, arg1, arg2) {
|
|
124
49
|
const token = typeof arg0 === "object" ? arg0.token : arg0;
|
|
@@ -139,184 +64,30 @@ class TokensMeta extends AddressMap {
|
|
|
139
64
|
return meta;
|
|
140
65
|
}
|
|
141
66
|
/**
|
|
142
|
-
* Loads token
|
|
143
|
-
*
|
|
144
|
-
* @param tokens - tokens to load data for, defaults to all tokens
|
|
67
|
+
* Loads phantom token data for all known tokens from chain
|
|
145
68
|
*/
|
|
146
|
-
async
|
|
147
|
-
|
|
148
|
-
const
|
|
149
|
-
if (tokensToLoad.length === 0) {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
69
|
+
async loadPhantomTokens() {
|
|
70
|
+
this.#phantomTokensLoaded = new AddressSet();
|
|
71
|
+
const tokens = this.keys();
|
|
152
72
|
const resp = await this.#client.multicall({
|
|
153
|
-
contracts:
|
|
154
|
-
(t) =>
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
address: t,
|
|
162
|
-
abi: iStateSerializerAbi,
|
|
163
|
-
functionName: "serialize"
|
|
164
|
-
}
|
|
165
|
-
]
|
|
73
|
+
contracts: tokens.map(
|
|
74
|
+
(t) => ({
|
|
75
|
+
address: t,
|
|
76
|
+
abi: iVersionAbi,
|
|
77
|
+
functionName: "contractType"
|
|
78
|
+
})
|
|
166
79
|
),
|
|
167
80
|
allowFailure: true,
|
|
168
81
|
batchSize: 0
|
|
169
82
|
});
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
resp[2 * i],
|
|
176
|
-
resp[2 * i + 1]
|
|
177
|
-
);
|
|
178
|
-
this.#tokenDataLoaded.add(tokensToLoad[i]);
|
|
179
|
-
if (this.isKYCUnderlying(meta)) {
|
|
180
|
-
kycFactories.add(meta.kycFactory);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
this.#logger?.debug(`found ${kycFactories.size} KYC factories`);
|
|
184
|
-
await this.#loadDSTokens(kycFactories);
|
|
185
|
-
}
|
|
186
|
-
#overrideTokenMeta(token, contractTypeResp, serializeResp) {
|
|
187
|
-
const meta = this.mustGet(token);
|
|
188
|
-
if (contractTypeResp.status === "success") {
|
|
189
|
-
const contractType = bytes32ToString(contractTypeResp.result);
|
|
190
|
-
if (contractType.startsWith("KYC_UNDERLYING::")) {
|
|
191
|
-
if (serializeResp.status === "success") {
|
|
192
|
-
this.#overrideKYCUnderlying(meta, contractType, serializeResp.result);
|
|
193
|
-
} else {
|
|
194
|
-
throw new Error(
|
|
195
|
-
`token ${meta.symbol} (${token}) is ${contractType} but serialize failed: ${serializeResp.error}`
|
|
196
|
-
);
|
|
83
|
+
for (let i = 0; i < resp.length; i++) {
|
|
84
|
+
if (resp[i].status === "success") {
|
|
85
|
+
const contractType = bytes32ToString(resp[i].result);
|
|
86
|
+
if (contractType.startsWith("PHANTOM_TOKEN::")) {
|
|
87
|
+
this.mustGet(tokens[i]).phantomTokenType = contractType;
|
|
197
88
|
}
|
|
198
|
-
} else {
|
|
199
|
-
this.upsert(token, {
|
|
200
|
-
...meta,
|
|
201
|
-
contractType
|
|
202
|
-
});
|
|
203
89
|
}
|
|
204
|
-
this.#
|
|
205
|
-
}
|
|
206
|
-
return this.mustGet(token);
|
|
207
|
-
}
|
|
208
|
-
#overrideKYCUnderlying(meta, contractType, serialized) {
|
|
209
|
-
if (contractType === KYC_UNDERLYING_DEFAULT) {
|
|
210
|
-
const decoded = decodeAbiParameters(
|
|
211
|
-
[
|
|
212
|
-
{ type: "address", name: "kycFactory" },
|
|
213
|
-
{ type: "address", name: "asset" }
|
|
214
|
-
],
|
|
215
|
-
serialized
|
|
216
|
-
);
|
|
217
|
-
this.upsert(meta.addr, {
|
|
218
|
-
...meta,
|
|
219
|
-
contractType,
|
|
220
|
-
kycFactory: decoded[0],
|
|
221
|
-
asset: decoded[1]
|
|
222
|
-
});
|
|
223
|
-
} else if (contractType === KYC_UNDERLYING_ON_DEMAND) {
|
|
224
|
-
const decoded = decodeAbiParameters(
|
|
225
|
-
[
|
|
226
|
-
{ type: "address", name: "kycFactory" },
|
|
227
|
-
{ type: "address", name: "asset" },
|
|
228
|
-
{ type: "address", name: "pool" },
|
|
229
|
-
{ type: "address", name: "liquidityProvider" }
|
|
230
|
-
],
|
|
231
|
-
serialized
|
|
232
|
-
);
|
|
233
|
-
this.upsert(meta.addr, {
|
|
234
|
-
...meta,
|
|
235
|
-
contractType,
|
|
236
|
-
kycFactory: decoded[0],
|
|
237
|
-
asset: decoded[1],
|
|
238
|
-
pool: decoded[2],
|
|
239
|
-
liquidityProvider: decoded[3]
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
async #loadDSTokens(kycFactories) {
|
|
244
|
-
const degenNFTs = await this.#client.multicall({
|
|
245
|
-
contracts: kycFactories.map((address) => {
|
|
246
|
-
return {
|
|
247
|
-
address,
|
|
248
|
-
abi: iSecuritizeKYCFactoryAbi,
|
|
249
|
-
functionName: "getDegenNFT"
|
|
250
|
-
};
|
|
251
|
-
}),
|
|
252
|
-
allowFailure: false,
|
|
253
|
-
batchSize: 0
|
|
254
|
-
});
|
|
255
|
-
const resp = await this.#client.multicall({
|
|
256
|
-
contracts: degenNFTs.map((address) => {
|
|
257
|
-
return {
|
|
258
|
-
address,
|
|
259
|
-
abi: iSecuritizeDegenNFTAbi,
|
|
260
|
-
functionName: "getDSTokens"
|
|
261
|
-
};
|
|
262
|
-
}),
|
|
263
|
-
allowFailure: false,
|
|
264
|
-
batchSize: 0
|
|
265
|
-
});
|
|
266
|
-
const dsToken = new AddressSet(resp.flat());
|
|
267
|
-
const tokensToLoad = dsToken.difference(new Set(this.keys()));
|
|
268
|
-
this.#logger?.debug(
|
|
269
|
-
`found ${dsToken.size} DSTokens in KYC factories, need to load ${tokensToLoad.size} basic metadata`
|
|
270
|
-
);
|
|
271
|
-
await this.#loadWithoutCompressor(tokensToLoad);
|
|
272
|
-
for (const token of dsToken) {
|
|
273
|
-
const meta = this.mustGet(token);
|
|
274
|
-
this.upsert(token, {
|
|
275
|
-
...meta,
|
|
276
|
-
isDSToken: true
|
|
277
|
-
});
|
|
278
|
-
this.#tokenDataLoaded.add(token);
|
|
279
|
-
this.#logger?.debug(`token ${meta.symbol} (${token}) is a DSToken`);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
async #loadWithoutCompressor(tokens_) {
|
|
283
|
-
if (tokens_.size === 0) {
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
286
|
-
const tokens = Array.from(tokens_);
|
|
287
|
-
const resp = await this.#client.multicall({
|
|
288
|
-
contracts: tokens.flatMap(
|
|
289
|
-
(t) => [
|
|
290
|
-
{
|
|
291
|
-
address: t,
|
|
292
|
-
abi: erc20Abi,
|
|
293
|
-
functionName: "symbol"
|
|
294
|
-
},
|
|
295
|
-
{
|
|
296
|
-
address: t,
|
|
297
|
-
abi: erc20Abi,
|
|
298
|
-
functionName: "name"
|
|
299
|
-
},
|
|
300
|
-
{
|
|
301
|
-
address: t,
|
|
302
|
-
abi: erc20Abi,
|
|
303
|
-
functionName: "decimals"
|
|
304
|
-
}
|
|
305
|
-
]
|
|
306
|
-
),
|
|
307
|
-
allowFailure: false,
|
|
308
|
-
batchSize: 0
|
|
309
|
-
});
|
|
310
|
-
this.#logger?.debug(
|
|
311
|
-
`loaded ${resp.length} basic metadata without compressor`
|
|
312
|
-
);
|
|
313
|
-
for (let i = 0; i < tokens.length; i++) {
|
|
314
|
-
this.upsert(tokens[i], {
|
|
315
|
-
addr: tokens[i],
|
|
316
|
-
symbol: resp[3 * i],
|
|
317
|
-
name: resp[3 * i + 1],
|
|
318
|
-
decimals: resp[3 * i + 2]
|
|
319
|
-
});
|
|
90
|
+
this.#phantomTokensLoaded.add(tokens[i]);
|
|
320
91
|
}
|
|
321
92
|
}
|
|
322
93
|
}
|
|
@@ -65,8 +65,7 @@ const chains = {
|
|
|
65
65
|
"0x601067eba24bb5b558a184fc082525637e96a42d": "Gami Labs"
|
|
66
66
|
},
|
|
67
67
|
testMarketConfigurators: {
|
|
68
|
-
"0x99df7330bf42d596af2e9d9836d4fc2077c574aa": "M11 Credit"
|
|
69
|
-
"0xE0527dE5908B3fc2e054B7eEE0DeF6c9965AbF24": "Securitize"
|
|
68
|
+
"0x99df7330bf42d596af2e9d9836d4fc2077c574aa": "M11 Credit"
|
|
70
69
|
},
|
|
71
70
|
isPublic: true,
|
|
72
71
|
wellKnownToken: {
|
|
@@ -7,10 +7,6 @@ const PHANTOM_TOKEN_CONTRACT_TYPES = [
|
|
|
7
7
|
"PHANTOM_TOKEN::STAKING_REWARDS",
|
|
8
8
|
"PHANTOM_TOKEN::UPSHIFT_WITHDRAW"
|
|
9
9
|
];
|
|
10
|
-
const KYC_UNDERLYING_DEFAULT = "KYC_UNDERLYING::DEFAULT";
|
|
11
|
-
const KYC_UNDERLYING_ON_DEMAND = "KYC_UNDERLYING::ON_DEMAND";
|
|
12
10
|
export {
|
|
13
|
-
KYC_UNDERLYING_DEFAULT,
|
|
14
|
-
KYC_UNDERLYING_ON_DEMAND,
|
|
15
11
|
PHANTOM_TOKEN_CONTRACT_TYPES
|
|
16
12
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { marketCompressorAbi } from "../../abi/compressors/marketCompressor.js";
|
|
2
|
+
import { SDKConstruct } from "../base/index.js";
|
|
2
3
|
import {
|
|
3
4
|
ADDRESS_0X0,
|
|
4
5
|
AP_MARKET_COMPRESSOR,
|
|
@@ -8,8 +9,7 @@ import { AddressMap } from "../utils/index.js";
|
|
|
8
9
|
import { simulateWithPriceUpdates } from "../utils/viem/index.js";
|
|
9
10
|
import { MarketConfiguratorContract } from "./MarketConfiguratorContract.js";
|
|
10
11
|
import { MarketSuite } from "./MarketSuite.js";
|
|
11
|
-
|
|
12
|
-
class MarketRegister extends ZapperRegister {
|
|
12
|
+
class MarketRegister extends SDKConstruct {
|
|
13
13
|
/**
|
|
14
14
|
* Mapping pool.address -> MarketSuite
|
|
15
15
|
*/
|
|
@@ -41,12 +41,6 @@ class MarketSuite extends SDKConstruct {
|
|
|
41
41
|
this.priceOracle = createPriceOracle(sdk, marketData.priceOracle);
|
|
42
42
|
this.lossPolicy = createLossPolicy(sdk, marketData.lossPolicy);
|
|
43
43
|
}
|
|
44
|
-
get underlying() {
|
|
45
|
-
return this.pool.underlying;
|
|
46
|
-
}
|
|
47
|
-
async getKYCFactory() {
|
|
48
|
-
return this.pool.getKYCFactory();
|
|
49
|
-
}
|
|
50
44
|
get dirty() {
|
|
51
45
|
return this.configurator.dirty || this.pool.dirty || this.priceOracle.dirty || this.creditManagers.some((cm) => cm.dirty);
|
|
52
46
|
}
|
|
@@ -55,9 +55,6 @@ class PoolSuite extends SDKConstruct {
|
|
|
55
55
|
get underlying() {
|
|
56
56
|
return this.pool.underlying;
|
|
57
57
|
}
|
|
58
|
-
async getKYCFactory() {
|
|
59
|
-
return this.pool.getKYCFactory();
|
|
60
|
-
}
|
|
61
58
|
get dirty() {
|
|
62
59
|
return this.pool.dirty || this.rateKeeper.dirty || this.pqk.dirty || this.interestRateModel.dirty;
|
|
63
60
|
}
|
|
@@ -7,20 +7,16 @@ import {
|
|
|
7
7
|
formatBNvalue,
|
|
8
8
|
percentFmt
|
|
9
9
|
} from "../../utils/index.js";
|
|
10
|
-
import { SecuritizeKYCFactory } from "./SecuritizeKYCFactory.js";
|
|
11
10
|
const abi = [...iPoolV310Abi, ...iPausableAbi];
|
|
12
11
|
class PoolV310Contract extends BaseContract {
|
|
13
12
|
creditManagerDebtParams;
|
|
14
|
-
|
|
15
|
-
#kycFactory;
|
|
16
|
-
constructor(sdk, data) {
|
|
13
|
+
constructor(options, data) {
|
|
17
14
|
const { baseParams, creditManagerDebtParams, ...rest } = data;
|
|
18
|
-
super(
|
|
15
|
+
super(options, {
|
|
19
16
|
...data.baseParams,
|
|
20
17
|
name: `PoolV3(${data.name})`,
|
|
21
18
|
abi
|
|
22
19
|
});
|
|
23
|
-
this.#sdk = sdk;
|
|
24
20
|
Object.assign(this, rest);
|
|
25
21
|
this.creditManagerDebtParams = new AddressMap(
|
|
26
22
|
creditManagerDebtParams.map((p) => [p.creditManager, p])
|
|
@@ -32,17 +28,6 @@ class PoolV310Contract extends BaseContract {
|
|
|
32
28
|
symbol: data.symbol
|
|
33
29
|
});
|
|
34
30
|
}
|
|
35
|
-
async getKYCFactory() {
|
|
36
|
-
if (this.#kycFactory) {
|
|
37
|
-
return this.#kycFactory;
|
|
38
|
-
}
|
|
39
|
-
await this.#sdk.tokensMeta.loadTokenData(this.underlying);
|
|
40
|
-
const u = this.#sdk.tokensMeta.mustGet(this.underlying);
|
|
41
|
-
if (this.#sdk.tokensMeta.isKYCUnderlying(u)) {
|
|
42
|
-
this.#kycFactory = new SecuritizeKYCFactory(this.#sdk, u.kycFactory);
|
|
43
|
-
}
|
|
44
|
-
return this.#kycFactory;
|
|
45
|
-
}
|
|
46
31
|
stateHuman(raw = true) {
|
|
47
32
|
return {
|
|
48
33
|
...super.stateHuman(raw),
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { iPoolV310Abi } from "../../abi/310/generated.js";
|
|
2
|
+
import { ierc20ZapperDepositsAbi } from "../../abi/iERC20ZapperDeposits.js";
|
|
3
|
+
import { iethZapperDepositsAbi } from "../../abi/iETHZapperDeposits.js";
|
|
4
|
+
import { iZapperAbi } from "../../abi/iZapper.js";
|
|
5
|
+
import { SDKConstruct } from "../base/index.js";
|
|
6
|
+
class AbstractPoolService extends SDKConstruct {
|
|
7
|
+
#version;
|
|
8
|
+
constructor(sdk, version) {
|
|
9
|
+
super(sdk);
|
|
10
|
+
this.#version = version;
|
|
11
|
+
this.logger?.debug(`Created PoolService with version: ${this.#version}`);
|
|
12
|
+
}
|
|
13
|
+
addLiquidity({
|
|
14
|
+
collateral,
|
|
15
|
+
pool,
|
|
16
|
+
account,
|
|
17
|
+
zapper,
|
|
18
|
+
permit,
|
|
19
|
+
nativeTokenAddress,
|
|
20
|
+
referralCode = 0n,
|
|
21
|
+
migrate
|
|
22
|
+
}) {
|
|
23
|
+
if (zapper?.tokenIn === nativeTokenAddress) {
|
|
24
|
+
return [
|
|
25
|
+
{
|
|
26
|
+
target: zapper.zapper,
|
|
27
|
+
abi: iethZapperDepositsAbi,
|
|
28
|
+
functionName: "depositWithReferral",
|
|
29
|
+
args: [account, referralCode],
|
|
30
|
+
value: collateral.balance
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
} else if (zapper) {
|
|
34
|
+
return permit ? [
|
|
35
|
+
{
|
|
36
|
+
target: zapper.zapper,
|
|
37
|
+
abi: ierc20ZapperDepositsAbi,
|
|
38
|
+
functionName: "depositWithReferralAndPermit",
|
|
39
|
+
args: [
|
|
40
|
+
collateral.balance,
|
|
41
|
+
account,
|
|
42
|
+
referralCode,
|
|
43
|
+
permit.deadline,
|
|
44
|
+
permit.v,
|
|
45
|
+
permit.r,
|
|
46
|
+
permit.s
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
] : [
|
|
50
|
+
{
|
|
51
|
+
target: zapper.zapper,
|
|
52
|
+
abi: ierc20ZapperDepositsAbi,
|
|
53
|
+
functionName: "depositWithReferral",
|
|
54
|
+
args: [collateral.balance, account, referralCode]
|
|
55
|
+
}
|
|
56
|
+
];
|
|
57
|
+
} else {
|
|
58
|
+
if (migrate) throw Error("No zapper for migration");
|
|
59
|
+
return [
|
|
60
|
+
{
|
|
61
|
+
target: pool,
|
|
62
|
+
abi: iPoolV310Abi,
|
|
63
|
+
functionName: "depositWithReferral",
|
|
64
|
+
args: [collateral.balance, account, referralCode]
|
|
65
|
+
}
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
removeLiquidity({
|
|
70
|
+
pool,
|
|
71
|
+
amount,
|
|
72
|
+
account,
|
|
73
|
+
zapper,
|
|
74
|
+
permit
|
|
75
|
+
}) {
|
|
76
|
+
if (zapper) {
|
|
77
|
+
return permit ? [
|
|
78
|
+
{
|
|
79
|
+
target: zapper.zapper,
|
|
80
|
+
abi: iZapperAbi,
|
|
81
|
+
functionName: "redeemWithPermit",
|
|
82
|
+
args: [
|
|
83
|
+
amount,
|
|
84
|
+
account,
|
|
85
|
+
permit.deadline,
|
|
86
|
+
permit.v,
|
|
87
|
+
permit.r,
|
|
88
|
+
permit.s
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
] : [
|
|
92
|
+
{
|
|
93
|
+
target: zapper.zapper,
|
|
94
|
+
abi: iZapperAbi,
|
|
95
|
+
functionName: "redeem",
|
|
96
|
+
args: [amount, account]
|
|
97
|
+
}
|
|
98
|
+
];
|
|
99
|
+
} else {
|
|
100
|
+
return [
|
|
101
|
+
{
|
|
102
|
+
target: pool,
|
|
103
|
+
abi: iPoolV310Abi,
|
|
104
|
+
functionName: "redeem",
|
|
105
|
+
args: [amount, account, account]
|
|
106
|
+
}
|
|
107
|
+
];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export {
|
|
112
|
+
AbstractPoolService
|
|
113
|
+
};
|