@gearbox-protocol/sdk 13.2.0-next.1 → 13.2.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/dev/AccountOpener.js +5 -45
- package/dist/cjs/dev/index.js +13 -0
- package/dist/cjs/dev/isTransientError.js +5 -1
- package/dist/cjs/dev/logSplitterTransport.js +154 -0
- 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/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/dev/AccountOpener.js +6 -47
- package/dist/esm/dev/index.js +10 -0
- package/dist/esm/dev/isTransientError.js +5 -1
- package/dist/esm/dev/logSplitterTransport.js +131 -0
- 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/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/dev/index.d.ts +1 -0
- package/dist/types/dev/logSplitterTransport.d.ts +118 -0
- 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/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/credit/CreditFacadeV310BaseContract.d.ts +1 -1
- 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 +5 -3
- package/dist/cjs/abi/310/iSecuritizeDegenNFT.js +0 -263
- package/dist/cjs/abi/310/iSecuritizeKYCFactory.js +0 -278
- 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/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/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 → plugins/zappers}/types.js +0 -0
|
@@ -52,7 +52,6 @@ class AccountOpener extends import_sdk.SDKConstruct {
|
|
|
52
52
|
#minDebtMultiplier;
|
|
53
53
|
#allowMint;
|
|
54
54
|
#leverageDelta;
|
|
55
|
-
#poolService;
|
|
56
55
|
constructor(service, options_ = {}) {
|
|
57
56
|
super(service.sdk);
|
|
58
57
|
const {
|
|
@@ -78,7 +77,6 @@ class AccountOpener extends import_sdk.SDKConstruct {
|
|
|
78
77
|
this.#poolDepositMultiplier = BigInt(poolDepositMultiplier);
|
|
79
78
|
this.#minDebtMultiplier = BigInt(minDebtMultiplier);
|
|
80
79
|
this.#leverageDelta = BigInt(leverageDelta);
|
|
81
|
-
this.#poolService = new import_sdk.PoolService(service.sdk);
|
|
82
80
|
this.#logger?.info(
|
|
83
81
|
{
|
|
84
82
|
borrower: (0, import_accounts.privateKeyToAccount)(this.borrowerKey).address,
|
|
@@ -116,10 +114,6 @@ class AccountOpener extends import_sdk.SDKConstruct {
|
|
|
116
114
|
},
|
|
117
115
|
"opening credit accounts"
|
|
118
116
|
);
|
|
119
|
-
await Promise.all([
|
|
120
|
-
this.sdk.tokensMeta.loadTokenData(),
|
|
121
|
-
this.sdk.marketRegister.loadZappers()
|
|
122
|
-
]);
|
|
123
117
|
let deposits = [];
|
|
124
118
|
if (depositIntoPools) {
|
|
125
119
|
try {
|
|
@@ -471,34 +465,9 @@ class AccountOpener extends import_sdk.SDKConstruct {
|
|
|
471
465
|
this.#logger?.debug(
|
|
472
466
|
`depositor balance in underlying: ${this.sdk.tokensMeta.formatBN(pool.underlying, allowance, { symbol: true })}`
|
|
473
467
|
);
|
|
474
|
-
const tokensOut = this.#poolService.getDepositTokensOut(
|
|
475
|
-
address,
|
|
476
|
-
underlying
|
|
477
|
-
);
|
|
478
|
-
this.#logger?.debug(
|
|
479
|
-
{ tokensOut: tokensOut.map((t) => this.labelAddress(t)) },
|
|
480
|
-
"deposit tokens out"
|
|
481
|
-
);
|
|
482
|
-
if (tokensOut.length === 0) {
|
|
483
|
-
throw new Error(`no tokens out found for pool ${poolName}`);
|
|
484
|
-
}
|
|
485
|
-
const tokenOut = tokensOut[0];
|
|
486
|
-
const metadata = this.#poolService.getDepositMetadata(
|
|
487
|
-
address,
|
|
488
|
-
underlying,
|
|
489
|
-
tokenOut
|
|
490
|
-
);
|
|
491
|
-
this.logger?.debug(
|
|
492
|
-
{
|
|
493
|
-
underlying: this.labelAddress(underlying),
|
|
494
|
-
tokenOut: this.labelAddress(tokenOut),
|
|
495
|
-
...metadata
|
|
496
|
-
},
|
|
497
|
-
"pool deposit metadata"
|
|
498
|
-
);
|
|
499
468
|
txHash = await this.#anvil.writeContract({
|
|
500
469
|
account: depositor,
|
|
501
|
-
address:
|
|
470
|
+
address: underlying,
|
|
502
471
|
abi: import_iERC20.ierc20Abi,
|
|
503
472
|
functionName: "approve",
|
|
504
473
|
args: [address, allowance],
|
|
@@ -515,21 +484,12 @@ class AccountOpener extends import_sdk.SDKConstruct {
|
|
|
515
484
|
this.#logger?.debug(
|
|
516
485
|
`depositor approved underlying for pool ${poolName}: ${txHash}`
|
|
517
486
|
);
|
|
518
|
-
const depositCall = this.#poolService.addLiquidity({
|
|
519
|
-
collateral: { token: underlying, balance: amount },
|
|
520
|
-
pool: address,
|
|
521
|
-
wallet: depositor.address,
|
|
522
|
-
meta: metadata
|
|
523
|
-
});
|
|
524
|
-
if (!depositCall) {
|
|
525
|
-
throw new Error(`no deposit call could be created for ${poolName}`);
|
|
526
|
-
}
|
|
527
487
|
txHash = await this.#anvil.writeContract({
|
|
528
488
|
account: depositor,
|
|
529
|
-
address
|
|
530
|
-
abi:
|
|
531
|
-
functionName:
|
|
532
|
-
args:
|
|
489
|
+
address,
|
|
490
|
+
abi: import_generated.iPoolV310Abi,
|
|
491
|
+
functionName: "deposit",
|
|
492
|
+
args: [amount, depositor.address],
|
|
533
493
|
chain: this.#anvil.chain
|
|
534
494
|
});
|
|
535
495
|
receipt = await this.#anvil.waitForTransactionReceipt({ hash: txHash });
|
package/dist/cjs/dev/index.js
CHANGED
|
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
6
10
|
var __copyProps = (to, from, except, desc) => {
|
|
7
11
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
12
|
for (let key of __getOwnPropNames(from))
|
|
@@ -14,6 +18,11 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
14
18
|
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
19
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
20
|
var dev_exports = {};
|
|
21
|
+
__export(dev_exports, {
|
|
22
|
+
LogSplitterTransportOptions: () => import_logSplitterTransport.LogSplitterTransportOptions,
|
|
23
|
+
isRangeError: () => import_logSplitterTransport.isRangeError,
|
|
24
|
+
logSplitterTransport: () => import_logSplitterTransport.logSplitterTransport
|
|
25
|
+
});
|
|
17
26
|
module.exports = __toCommonJS(dev_exports);
|
|
18
27
|
__reExport(dev_exports, require("./AccountOpener.js"), module.exports);
|
|
19
28
|
__reExport(dev_exports, require("./CachedStateSubscriber.js"), module.exports);
|
|
@@ -26,6 +35,7 @@ __reExport(dev_exports, require("./EthCallSpy.js"), module.exports);
|
|
|
26
35
|
__reExport(dev_exports, require("./isOutOfSyncError.js"), module.exports);
|
|
27
36
|
__reExport(dev_exports, require("./isRateLimitError.js"), module.exports);
|
|
28
37
|
__reExport(dev_exports, require("./isTransientError.js"), module.exports);
|
|
38
|
+
var import_logSplitterTransport = require("./logSplitterTransport.js");
|
|
29
39
|
__reExport(dev_exports, require("./ltUtils.js"), module.exports);
|
|
30
40
|
__reExport(dev_exports, require("./migrateFaucet.js"), module.exports);
|
|
31
41
|
__reExport(dev_exports, require("./mint/index.js"), module.exports);
|
|
@@ -37,6 +47,9 @@ __reExport(dev_exports, require("./transports.js"), module.exports);
|
|
|
37
47
|
__reExport(dev_exports, require("./types.js"), module.exports);
|
|
38
48
|
// Annotate the CommonJS export names for ESM import in node:
|
|
39
49
|
0 && (module.exports = {
|
|
50
|
+
LogSplitterTransportOptions,
|
|
51
|
+
isRangeError,
|
|
52
|
+
logSplitterTransport,
|
|
40
53
|
...require("./AccountOpener.js"),
|
|
41
54
|
...require("./CachedStateSubscriber.js"),
|
|
42
55
|
...require("./calcLiquidatableLTs.js"),
|
|
@@ -57,7 +57,11 @@ const TRANSIENT_PATTERNS = [
|
|
|
57
57
|
// EIP-1474 ResourceUnavailableRpcError (code -32002): node is syncing or the
|
|
58
58
|
// requested resource is temporarily unavailable.
|
|
59
59
|
// Matches both the RPC message and viem's shortMessage "Requested resource not available."
|
|
60
|
-
/resource unavailable|requested resource not available/i
|
|
60
|
+
/resource unavailable|requested resource not available/i,
|
|
61
|
+
// sometimes happens on DRPC: "GRPC Context cancellation"
|
|
62
|
+
/context cancel/i,
|
|
63
|
+
// DRPC error: Can't route your request to suitable provider, if you specified certain providers revise the list
|
|
64
|
+
/suitable provider/i
|
|
61
65
|
];
|
|
62
66
|
function isTransientError(e) {
|
|
63
67
|
if (e instanceof import_viem.BaseError) {
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var logSplitterTransport_exports = {};
|
|
20
|
+
__export(logSplitterTransport_exports, {
|
|
21
|
+
fetchLogsWithPagination: () => fetchLogsWithPagination,
|
|
22
|
+
isFixedBlockRange: () => isFixedBlockRange,
|
|
23
|
+
isRangeError: () => isRangeError,
|
|
24
|
+
logSplitterTransport: () => logSplitterTransport,
|
|
25
|
+
parsePageSizeHint: () => parsePageSizeHint
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(logSplitterTransport_exports);
|
|
28
|
+
var import_viem = require("viem");
|
|
29
|
+
function isFixedBlockRange(filter) {
|
|
30
|
+
if (filter.blockHash != null) return false;
|
|
31
|
+
return isHexBlockNumber(filter.fromBlock) && isHexBlockNumber(filter.toBlock);
|
|
32
|
+
}
|
|
33
|
+
function isHexBlockNumber(value) {
|
|
34
|
+
return typeof value === "string" && value.startsWith("0x");
|
|
35
|
+
}
|
|
36
|
+
const RANGE_ERROR_PATTERNS = [
|
|
37
|
+
/block range/i,
|
|
38
|
+
/too many results/i,
|
|
39
|
+
/response size/i,
|
|
40
|
+
/result window/i,
|
|
41
|
+
/exceeds allowed/i,
|
|
42
|
+
/cannot request logs over more than/i,
|
|
43
|
+
/eth_getLogs is limited to/i,
|
|
44
|
+
/eth_getLogs requests with up to/i,
|
|
45
|
+
/range is too large/i,
|
|
46
|
+
/exceeded max allowed range/i
|
|
47
|
+
];
|
|
48
|
+
function isRangeError(error) {
|
|
49
|
+
const msg = errorMessage(error);
|
|
50
|
+
return RANGE_ERROR_PATTERNS.some((re) => re.test(msg));
|
|
51
|
+
}
|
|
52
|
+
const GENERIC_BLOCKS_RE = /(\d+)\s*block/i;
|
|
53
|
+
const ALCHEMY_RANGE_RE = /this block range should work: \[(0x[0-9a-fA-F]+),\s*(0x[0-9a-fA-F]+)\]/;
|
|
54
|
+
function parsePageSizeHint(error) {
|
|
55
|
+
const alchemy = tryAlchemyHint(error);
|
|
56
|
+
if (alchemy != null) return alchemy;
|
|
57
|
+
const msg = errorMessage(error);
|
|
58
|
+
const m = msg.match(GENERIC_BLOCKS_RE);
|
|
59
|
+
return m ? Number(m[1]) : null;
|
|
60
|
+
}
|
|
61
|
+
function tryAlchemyHint(error) {
|
|
62
|
+
if (!(error instanceof import_viem.HttpRequestError)) return void 0;
|
|
63
|
+
try {
|
|
64
|
+
const parsed = JSON.parse(error.details);
|
|
65
|
+
if (typeof parsed.message !== "string") return void 0;
|
|
66
|
+
const match = parsed.message.match(ALCHEMY_RANGE_RE);
|
|
67
|
+
if (!match) return void 0;
|
|
68
|
+
const from = (0, import_viem.hexToNumber)(match[1]);
|
|
69
|
+
const to = (0, import_viem.hexToNumber)(match[2]);
|
|
70
|
+
return to - from + 1;
|
|
71
|
+
} catch {
|
|
72
|
+
return void 0;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function errorMessage(error) {
|
|
76
|
+
if (error instanceof Error) {
|
|
77
|
+
const details = error.details;
|
|
78
|
+
return details ? `${error.message} ${details}` : error.message;
|
|
79
|
+
}
|
|
80
|
+
return String(error);
|
|
81
|
+
}
|
|
82
|
+
async function fetchLogsWithPagination(callRpc, from, to, options) {
|
|
83
|
+
if (from > to) {
|
|
84
|
+
throw new import_viem.InvalidParamsRpcError(
|
|
85
|
+
new Error(`Invalid parameters: from (${from}) > to (${to})`)
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
const { softLimit, hardLimit } = options ?? {};
|
|
89
|
+
let pageSize = hardLimit ?? to - from + 1;
|
|
90
|
+
const results = [];
|
|
91
|
+
let cursor = from;
|
|
92
|
+
while (cursor <= to) {
|
|
93
|
+
const chunkEnd = Math.min(to, cursor + pageSize - 1);
|
|
94
|
+
try {
|
|
95
|
+
const logs = await callRpc(cursor, chunkEnd);
|
|
96
|
+
results.push(...logs);
|
|
97
|
+
cursor = chunkEnd + 1;
|
|
98
|
+
} catch (error) {
|
|
99
|
+
if (!isRangeError(error)) {
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
if (cursor === chunkEnd) {
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
const hint = parsePageSizeHint(error);
|
|
106
|
+
if (hint) {
|
|
107
|
+
pageSize = hint;
|
|
108
|
+
} else {
|
|
109
|
+
const half = Math.max(1, Math.floor((chunkEnd - cursor + 1) / 2));
|
|
110
|
+
pageSize = softLimit ? Math.min(softLimit, half) : half;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return results;
|
|
115
|
+
}
|
|
116
|
+
function logSplitterTransport(transport, logOptions) {
|
|
117
|
+
return (opts) => {
|
|
118
|
+
const base = transport(opts);
|
|
119
|
+
const rpcRequest = base.request;
|
|
120
|
+
const request = (async (args) => {
|
|
121
|
+
const { method, params } = args;
|
|
122
|
+
if (method !== "eth_getLogs") {
|
|
123
|
+
return rpcRequest(args);
|
|
124
|
+
}
|
|
125
|
+
const filter = params?.[0] ?? {};
|
|
126
|
+
if (!isFixedBlockRange(filter)) {
|
|
127
|
+
return rpcRequest(args);
|
|
128
|
+
}
|
|
129
|
+
const from = (0, import_viem.hexToNumber)(filter.fromBlock);
|
|
130
|
+
const to = (0, import_viem.hexToNumber)(filter.toBlock);
|
|
131
|
+
const callRpc = async (f, t) => {
|
|
132
|
+
const paginatedFilter = {
|
|
133
|
+
...filter,
|
|
134
|
+
fromBlock: (0, import_viem.numberToHex)(f),
|
|
135
|
+
toBlock: (0, import_viem.numberToHex)(t)
|
|
136
|
+
};
|
|
137
|
+
return rpcRequest({
|
|
138
|
+
method: "eth_getLogs",
|
|
139
|
+
params: [paginatedFilter]
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
return fetchLogsWithPagination(callRpc, from, to, logOptions);
|
|
143
|
+
});
|
|
144
|
+
return { ...base, request };
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
148
|
+
0 && (module.exports = {
|
|
149
|
+
fetchLogsWithPagination,
|
|
150
|
+
isFixedBlockRange,
|
|
151
|
+
isRangeError,
|
|
152
|
+
logSplitterTransport,
|
|
153
|
+
parsePageSizeHint
|
|
154
|
+
});
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var ZappersPlugin_exports = {};
|
|
20
|
+
__export(ZappersPlugin_exports, {
|
|
21
|
+
ZappersPlugin: () => ZappersPlugin
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(ZappersPlugin_exports);
|
|
24
|
+
var import_peripheryCompressor = require("../../abi/compressors/peripheryCompressor.js");
|
|
25
|
+
var import_sdk = require("../../sdk/index.js");
|
|
26
|
+
class ZappersPlugin extends import_sdk.BasePlugin {
|
|
27
|
+
#zappers;
|
|
28
|
+
#extraZappers;
|
|
29
|
+
constructor(extraZappers = [], loadOnAttach = false) {
|
|
30
|
+
super(loadOnAttach);
|
|
31
|
+
this.#extraZappers = this.#addExtraZappers(extraZappers);
|
|
32
|
+
}
|
|
33
|
+
async load(force) {
|
|
34
|
+
if (!force && this.loaded) {
|
|
35
|
+
return this.state;
|
|
36
|
+
}
|
|
37
|
+
const [pcAddr] = this.sdk.addressProvider.mustGetLatest(
|
|
38
|
+
import_sdk.AP_PERIPHERY_COMPRESSOR,
|
|
39
|
+
import_sdk.VERSION_RANGE_310
|
|
40
|
+
);
|
|
41
|
+
this.sdk.logger?.debug(
|
|
42
|
+
`loading zappers with periphery compressor ${pcAddr}`
|
|
43
|
+
);
|
|
44
|
+
const markets = this.sdk.marketRegister.markets;
|
|
45
|
+
const resp = await this.client.multicall({
|
|
46
|
+
contracts: markets.map(
|
|
47
|
+
(m) => ({
|
|
48
|
+
abi: import_peripheryCompressor.peripheryCompressorAbi,
|
|
49
|
+
address: pcAddr,
|
|
50
|
+
functionName: "getZappers",
|
|
51
|
+
args: [m.configurator.address, m.pool.pool.address]
|
|
52
|
+
})
|
|
53
|
+
),
|
|
54
|
+
allowFailure: true,
|
|
55
|
+
batchSize: 0,
|
|
56
|
+
blockNumber: this.sdk.currentBlock
|
|
57
|
+
});
|
|
58
|
+
this.#zappers = new import_sdk.AddressMap(void 0, "zappers");
|
|
59
|
+
for (let i = 0; i < resp.length; i++) {
|
|
60
|
+
const { status, result, error } = resp[i];
|
|
61
|
+
const marketConfigurator = markets[i].configurator.address;
|
|
62
|
+
const pool = markets[i].pool.pool.address;
|
|
63
|
+
if (status === "success") {
|
|
64
|
+
this.#zappers.upsert(
|
|
65
|
+
pool,
|
|
66
|
+
result.map((z) => ({ ...z, pool }))
|
|
67
|
+
);
|
|
68
|
+
} else {
|
|
69
|
+
this.sdk.logger?.error(
|
|
70
|
+
`failed to load zapper for market configurator ${this.labelAddress(
|
|
71
|
+
marketConfigurator
|
|
72
|
+
)} and pool ${this.labelAddress(pool)}: ${error}`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
this.#loadZapperTokens();
|
|
77
|
+
return this.state;
|
|
78
|
+
}
|
|
79
|
+
#addExtraZappers(extraZappers) {
|
|
80
|
+
const zappers = new import_sdk.AddressMap();
|
|
81
|
+
for (const z of extraZappers) {
|
|
82
|
+
const existing = zappers?.get(z.pool);
|
|
83
|
+
if (existing) {
|
|
84
|
+
const hasZapper = existing.some(
|
|
85
|
+
(zz) => (0, import_sdk.hexEq)(zz.baseParams.addr, z.baseParams.addr)
|
|
86
|
+
);
|
|
87
|
+
if (!hasZapper) {
|
|
88
|
+
existing.push(z);
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
zappers?.upsert(z.pool, [z]);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return zappers;
|
|
95
|
+
}
|
|
96
|
+
get extraZappers() {
|
|
97
|
+
if (!this.#extraZappers) {
|
|
98
|
+
console.error("extra zappers not attached");
|
|
99
|
+
return new import_sdk.AddressMap();
|
|
100
|
+
}
|
|
101
|
+
return this.#extraZappers;
|
|
102
|
+
}
|
|
103
|
+
get zappers() {
|
|
104
|
+
if (!this.#zappers) {
|
|
105
|
+
throw new Error("zappers plugin not attached");
|
|
106
|
+
}
|
|
107
|
+
return this.#zappers;
|
|
108
|
+
}
|
|
109
|
+
get loaded() {
|
|
110
|
+
return !!this.#zappers;
|
|
111
|
+
}
|
|
112
|
+
stateHuman(_) {
|
|
113
|
+
return this.zappers.values().flatMap(
|
|
114
|
+
(l) => l.flatMap((z) => ({
|
|
115
|
+
address: z.baseParams.addr,
|
|
116
|
+
contractType: z.baseParams.contractType,
|
|
117
|
+
version: Number(z.baseParams.version),
|
|
118
|
+
tokenIn: this.labelAddress(z.tokenIn.addr),
|
|
119
|
+
tokenOut: this.labelAddress(z.tokenOut.addr)
|
|
120
|
+
}))
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
get state() {
|
|
124
|
+
return {
|
|
125
|
+
zappers: this.zappers.asRecord()
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
hydrate(state) {
|
|
129
|
+
this.#zappers = new import_sdk.AddressMap(Object.entries(state.zappers), "zappers");
|
|
130
|
+
this.#loadZapperTokens();
|
|
131
|
+
}
|
|
132
|
+
#loadZapperTokens() {
|
|
133
|
+
const zappersTokens = this.zappers.values().flatMap((l) => l.flatMap((z) => [z.tokenIn, z.tokenOut]));
|
|
134
|
+
const extraZappersTokens = this.extraZappers.values().flatMap((l) => l.flatMap((z) => [z.tokenIn, z.tokenOut]));
|
|
135
|
+
for (const t of [...zappersTokens, ...extraZappersTokens]) {
|
|
136
|
+
this.sdk.tokensMeta.upsert(t.addr, t);
|
|
137
|
+
this.sdk.setAddressLabel(t.addr, t.symbol);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
142
|
+
0 && (module.exports = {
|
|
143
|
+
ZappersPlugin
|
|
144
|
+
});
|
|
@@ -16,115 +16,12 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
|
|
19
|
+
var extraZappers_exports = {};
|
|
20
|
+
__export(extraZappers_exports, {
|
|
21
|
+
extraZappers: () => extraZappers
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
|
|
25
|
-
var import_base = require("../base/index.js");
|
|
26
|
-
var import_constants = require("../constants/index.js");
|
|
27
|
-
var import_utils = require("../utils/index.js");
|
|
28
|
-
class ZapperRegister extends import_base.SDKConstruct {
|
|
29
|
-
/**
|
|
30
|
-
* Mapping pool.address -> ZapperData[]
|
|
31
|
-
* Needs to be loaded explicitly using loadZappers method
|
|
32
|
-
*/
|
|
33
|
-
#zappers;
|
|
34
|
-
/**
|
|
35
|
-
* Load zappers for all pools using periphery compressor, adds hardcoded zappers
|
|
36
|
-
*/
|
|
37
|
-
async loadZappers(force) {
|
|
38
|
-
if (!force && this.#zappers) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const [pcAddr] = this.sdk.addressProvider.mustGetLatest(
|
|
42
|
-
import_constants.AP_PERIPHERY_COMPRESSOR,
|
|
43
|
-
import_constants.VERSION_RANGE_310
|
|
44
|
-
);
|
|
45
|
-
this.logger?.debug(`loading zappers with periphery compressor ${pcAddr}`);
|
|
46
|
-
const markets = this.sdk.marketRegister.markets;
|
|
47
|
-
const resp = await this.client.multicall({
|
|
48
|
-
contracts: markets.map(
|
|
49
|
-
(m) => ({
|
|
50
|
-
abi: import_peripheryCompressor.peripheryCompressorAbi,
|
|
51
|
-
address: pcAddr,
|
|
52
|
-
functionName: "getZappers",
|
|
53
|
-
args: [m.configurator.address, m.pool.pool.address]
|
|
54
|
-
})
|
|
55
|
-
),
|
|
56
|
-
allowFailure: true,
|
|
57
|
-
batchSize: 0
|
|
58
|
-
});
|
|
59
|
-
this.#zappers = new import_utils.AddressMap(void 0, "zappers");
|
|
60
|
-
for (let i = 0; i < resp.length; i++) {
|
|
61
|
-
const { status, result, error } = resp[i];
|
|
62
|
-
const marketConfigurator = markets[i].configurator.address;
|
|
63
|
-
const pool = markets[i].pool.pool.address;
|
|
64
|
-
if (status === "success") {
|
|
65
|
-
for (const z of result) {
|
|
66
|
-
this.#addZapper({ ...z, pool, type: "base" });
|
|
67
|
-
}
|
|
68
|
-
} else {
|
|
69
|
-
this.logger?.error(
|
|
70
|
-
`failed to load zapper for market configurator ${this.labelAddress(
|
|
71
|
-
marketConfigurator
|
|
72
|
-
)} and pool ${this.labelAddress(pool)}: ${error}`
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
for (const z of KYC_ZAPPERS[this.networkType] ?? []) {
|
|
77
|
-
this.#addZapper({ ...z, type: "kyc" });
|
|
78
|
-
}
|
|
79
|
-
for (const z of MIGRATION_ZAPPERS[this.networkType] ?? []) {
|
|
80
|
-
this.#addZapper({ ...z, type: "migration" });
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
#addZapper(z) {
|
|
84
|
-
if (BROKEN_ZAPPERS.has(z.baseParams.addr)) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const existing = this.zappers.get(z.pool);
|
|
88
|
-
if (existing) {
|
|
89
|
-
const hasZapper = existing.some(
|
|
90
|
-
(zz) => (0, import_utils.hexEq)(zz.baseParams.addr, z.baseParams.addr)
|
|
91
|
-
);
|
|
92
|
-
if (!hasZapper) {
|
|
93
|
-
existing.push(z);
|
|
94
|
-
}
|
|
95
|
-
} else {
|
|
96
|
-
this.zappers.upsert(z.pool, [z]);
|
|
97
|
-
}
|
|
98
|
-
const zappersTokens = [z.tokenIn, z.tokenOut];
|
|
99
|
-
for (const t of zappersTokens) {
|
|
100
|
-
this.sdk.tokensMeta.upsert(t.addr, t);
|
|
101
|
-
this.sdk.setAddressLabel(t.addr, t.symbol);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
get zappers() {
|
|
105
|
-
if (!this.#zappers) {
|
|
106
|
-
throw new Error("zappers not loaded, call loadZappers first");
|
|
107
|
-
}
|
|
108
|
-
return this.#zappers;
|
|
109
|
-
}
|
|
110
|
-
poolZappers(pool) {
|
|
111
|
-
return this.zappers.get(pool) ?? [];
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Can return multiple zappers if there are multiple zappers for the same tokenIn and tokenOut
|
|
115
|
-
*/
|
|
116
|
-
getZapper(pool, tokenIn, tokenOut) {
|
|
117
|
-
const zappers = this.zappers.get(pool)?.filter(
|
|
118
|
-
(z) => (0, import_utils.hexEq)(z.tokenIn.addr, tokenIn) && (0, import_utils.hexEq)(z.tokenOut.addr, tokenOut)
|
|
119
|
-
);
|
|
120
|
-
return zappers;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
const BROKEN_ZAPPERS = new import_utils.AddressMap(
|
|
124
|
-
[["0x90D66b03EC4D462e42e3c7741049FB46a4a03B69", true]],
|
|
125
|
-
"brokenZappers"
|
|
126
|
-
);
|
|
127
|
-
const MIGRATION_ZAPPERS = {
|
|
23
|
+
module.exports = __toCommonJS(extraZappers_exports);
|
|
24
|
+
const extraZappers = {
|
|
128
25
|
Mainnet: [
|
|
129
26
|
{
|
|
130
27
|
baseParams: {
|
|
@@ -233,8 +130,7 @@ const MIGRATION_ZAPPERS = {
|
|
|
233
130
|
}
|
|
234
131
|
]
|
|
235
132
|
};
|
|
236
|
-
const KYC_ZAPPERS = {};
|
|
237
133
|
// Annotate the CommonJS export names for ESM import in node:
|
|
238
134
|
0 && (module.exports = {
|
|
239
|
-
|
|
135
|
+
extraZappers
|
|
240
136
|
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var zappers_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(zappers_exports);
|
|
18
|
+
__reExport(zappers_exports, require("./extraZappers.js"), module.exports);
|
|
19
|
+
__reExport(zappers_exports, require("./types.js"), module.exports);
|
|
20
|
+
__reExport(zappers_exports, require("./ZappersPlugin.js"), module.exports);
|
|
21
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
22
|
+
0 && (module.exports = {
|
|
23
|
+
...require("./extraZappers.js"),
|
|
24
|
+
...require("./types.js"),
|
|
25
|
+
...require("./ZappersPlugin.js")
|
|
26
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "commonjs"}
|