@gearbox-protocol/sdk 13.7.0-kyc.3 → 14.0.0-next.10
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/RevolverTransport.js +10 -4
- package/dist/cjs/dev/index.js +0 -2
- package/dist/cjs/dev/logSplitterTransport.js +10 -1
- package/dist/cjs/permissionless/utils/create2.js +2 -2
- package/dist/cjs/permissionless/utils/price-update/get-price-feeds.js +11 -5
- package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +11 -5
- package/dist/cjs/permissionless/utils/price-update/get-prices.js +12 -6
- package/dist/cjs/sdk/MultichainSDK.js +232 -0
- package/dist/cjs/sdk/OnchainSDK.js +478 -0
- package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +16 -324
- package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +1 -7
- package/dist/cjs/sdk/base/TokensMeta.js +42 -22
- package/dist/cjs/sdk/base/token-types.js +0 -9
- package/dist/cjs/sdk/chain/chains.js +1 -2
- package/dist/cjs/sdk/constants/address-provider.js +0 -3
- package/dist/cjs/sdk/core/errors.js +77 -0
- package/dist/cjs/sdk/core/index.js +2 -0
- package/dist/cjs/sdk/index.js +4 -2
- package/dist/cjs/sdk/market/MarketRegister.js +116 -70
- package/dist/cjs/sdk/market/MarketSuite.js +0 -3
- package/dist/cjs/sdk/market/index.js +0 -2
- package/dist/cjs/sdk/market/pool/PoolSuite.js +0 -3
- package/dist/cjs/sdk/market/pool/PoolV310Contract.js +2 -11
- package/dist/cjs/sdk/market/pool/index.js +0 -2
- package/dist/cjs/sdk/market/pricefeeds/PriceFeedsRegister.js +10 -3
- package/dist/cjs/sdk/market/pricefeeds/updates/PythAccumulatorUpdateData.js +20 -23
- package/dist/cjs/sdk/market/pricefeeds/updates/PythUpdater.js +7 -4
- package/dist/cjs/sdk/market/pricefeeds/updates/RedstoneUpdater.js +4 -4
- package/dist/cjs/sdk/market/pricefeeds/updates/fetchPythPayloads.js +1 -1
- package/dist/cjs/sdk/market/pricefeeds/updates/index.js +3 -0
- package/dist/cjs/sdk/options.js +24 -52
- package/dist/cjs/sdk/plugins/BasePlugin.js +11 -4
- package/dist/cjs/sdk/pools/PoolService.js +12 -104
- package/dist/cjs/sdk/utils/formatter.js +99 -20
- package/dist/cjs/sdk/utils/viem/index.js +3 -3
- package/dist/cjs/sdk/utils/viem/watchBlocksAsync.js +76 -0
- package/dist/esm/dev/AccountOpener.js +6 -47
- package/dist/esm/dev/RevolverTransport.js +10 -4
- package/dist/esm/dev/index.js +0 -1
- package/dist/esm/dev/logSplitterTransport.js +10 -1
- package/dist/esm/permissionless/utils/create2.js +1 -1
- package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +12 -6
- package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +13 -7
- package/dist/esm/permissionless/utils/price-update/get-prices.js +13 -7
- package/dist/esm/sdk/MultichainSDK.js +217 -0
- package/dist/esm/sdk/OnchainSDK.js +472 -0
- package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +17 -328
- package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +1 -7
- package/dist/esm/sdk/base/TokensMeta.js +44 -22
- package/dist/esm/sdk/base/token-types.js +0 -6
- package/dist/esm/sdk/chain/chains.js +1 -2
- package/dist/esm/sdk/constants/address-provider.js +0 -2
- package/dist/esm/sdk/core/errors.js +48 -0
- package/dist/esm/sdk/core/index.js +1 -0
- package/dist/esm/sdk/index.js +2 -1
- package/dist/esm/sdk/market/MarketRegister.js +118 -74
- package/dist/esm/sdk/market/MarketSuite.js +0 -3
- 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 -11
- package/dist/esm/sdk/market/pool/index.js +0 -1
- package/dist/esm/sdk/market/pricefeeds/PriceFeedsRegister.js +10 -3
- package/dist/esm/sdk/market/pricefeeds/updates/PythAccumulatorUpdateData.js +20 -13
- package/dist/esm/sdk/market/pricefeeds/updates/PythUpdater.js +7 -4
- package/dist/esm/sdk/market/pricefeeds/updates/RedstoneUpdater.js +4 -4
- package/dist/esm/sdk/market/pricefeeds/updates/fetchPythPayloads.js +1 -1
- package/dist/esm/sdk/market/pricefeeds/updates/index.js +2 -0
- package/dist/esm/sdk/options.js +22 -51
- package/dist/esm/sdk/plugins/BasePlugin.js +11 -4
- package/dist/esm/sdk/pools/PoolService.js +13 -109
- package/dist/esm/sdk/utils/formatter.js +99 -10
- package/dist/esm/sdk/utils/viem/index.js +1 -1
- package/dist/esm/sdk/utils/viem/watchBlocksAsync.js +52 -0
- package/dist/types/dev/RevolverTransport.d.ts +2 -1
- package/dist/types/dev/calcLiquidatableLTs.d.ts +2 -2
- package/dist/types/dev/claimFromFaucet.d.ts +2 -2
- package/dist/types/dev/create2.d.ts +3 -4
- package/dist/types/dev/index.d.ts +0 -1
- package/dist/types/dev/logSplitterTransport.d.ts +3 -1
- package/dist/types/dev/migrateFaucet.d.ts +2 -2
- package/dist/types/dev/mint/AbstractMinter.d.ts +2 -2
- package/dist/types/dev/mint/FallbackMinter.d.ts +2 -2
- package/dist/types/dev/mint/factory.d.ts +2 -2
- package/dist/types/dev/replaceStorage.d.ts +1 -1
- package/dist/types/permissionless/utils/price-update/get-updatable-feeds.d.ts +2 -2
- package/dist/types/plugins/accounts/AccountsPlugin.d.ts +2 -2
- package/dist/types/plugins/accounts-counter/AccountsCounterPlugin.d.ts +2 -2
- package/dist/types/plugins/adapters/AdaptersPlugin.d.ts +2 -2
- package/dist/types/plugins/apy/ApyPlugin.d.ts +2 -2
- package/dist/types/plugins/bots/BotsPlugin.d.ts +2 -2
- package/dist/types/plugins/bots/PartialLiquidationBotV310Contract.d.ts +2 -2
- package/dist/types/plugins/degen-distributors/DegenDistributorsPlugin.d.ts +2 -2
- package/dist/types/plugins/delayed-withdrawal/DelayedWithdrawalPlugin.d.ts +2 -2
- package/dist/types/sdk/MultichainSDK.d.ts +144 -0
- package/dist/types/sdk/OnchainSDK.d.ts +257 -0
- package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +4 -54
- package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
- package/dist/types/sdk/accounts/createCreditAccountService.d.ts +2 -2
- package/dist/types/sdk/accounts/types.d.ts +15 -95
- package/dist/types/sdk/base/SDKConstruct.d.ts +4 -4
- package/dist/types/sdk/base/TokensMeta.d.ts +3 -14
- package/dist/types/sdk/base/token-types.d.ts +4 -44
- package/dist/types/sdk/base/types.d.ts +2 -116
- package/dist/types/sdk/chain/chains.d.ts +1 -5
- package/dist/types/sdk/constants/address-provider.d.ts +0 -1
- package/dist/types/sdk/core/createAddressProvider.d.ts +3 -3
- package/dist/types/sdk/core/errors.d.ts +51 -0
- package/dist/types/sdk/core/index.d.ts +1 -0
- package/dist/types/sdk/index.d.ts +2 -1
- package/dist/types/sdk/market/MarketRegister.d.ts +11 -8
- package/dist/types/sdk/market/MarketSuite.d.ts +2 -4
- package/dist/types/sdk/market/adapters/createAdapter.d.ts +2 -2
- package/dist/types/sdk/market/credit/CreditConfiguratorV310Contract.d.ts +3 -3
- package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +2 -2
- package/dist/types/sdk/market/credit/CreditSuite.d.ts +2 -2
- package/dist/types/sdk/market/credit/createCreditConfigurator.d.ts +2 -2
- package/dist/types/sdk/market/credit/createCreditFacade.d.ts +2 -2
- package/dist/types/sdk/market/credit/createCreditManager.d.ts +2 -2
- package/dist/types/sdk/market/credit/types.d.ts +1 -1
- package/dist/types/sdk/market/index.d.ts +0 -1
- package/dist/types/sdk/market/loss-policy/AliasLossPolicyV310Contract.d.ts +3 -3
- package/dist/types/sdk/market/loss-policy/createLossPolicy.d.ts +2 -2
- package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +5 -6
- package/dist/types/sdk/market/oracle/PriceOracleV310Contract.d.ts +2 -2
- package/dist/types/sdk/market/oracle/createPriceOracle.d.ts +2 -2
- package/dist/types/sdk/market/oracle/types.d.ts +10 -3
- package/dist/types/sdk/market/pool/PoolSuite.d.ts +2 -4
- package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +2 -6
- package/dist/types/sdk/market/pool/createInterestRateModel.d.ts +2 -2
- package/dist/types/sdk/market/pool/createPool.d.ts +2 -2
- package/dist/types/sdk/market/pool/createPoolQuotaKeeper.d.ts +2 -2
- package/dist/types/sdk/market/pool/createRateKeeper.d.ts +2 -2
- package/dist/types/sdk/market/pool/index.d.ts +0 -1
- package/dist/types/sdk/market/pricefeeds/PriceFeedsRegister.d.ts +8 -3
- package/dist/types/sdk/market/pricefeeds/updates/PythAccumulatorUpdateData.d.ts +12 -13
- package/dist/types/sdk/market/pricefeeds/updates/PythUpdater.d.ts +8 -3
- package/dist/types/sdk/market/pricefeeds/updates/RedstoneUpdater.d.ts +8 -3
- package/dist/types/sdk/market/pricefeeds/updates/index.d.ts +1 -0
- package/dist/types/sdk/market/pricefeeds/updates/types.d.ts +4 -0
- package/dist/types/sdk/market/types.d.ts +1 -1
- package/dist/types/sdk/options.d.ts +15 -16
- package/dist/types/sdk/plugins/BasePlugin.d.ts +12 -6
- package/dist/types/sdk/plugins/errors.d.ts +2 -2
- package/dist/types/sdk/plugins/types.d.ts +16 -6
- package/dist/types/sdk/pools/PoolService.d.ts +8 -8
- package/dist/types/sdk/pools/types.d.ts +2 -3
- package/dist/types/sdk/router/AbstractRouterContract.d.ts +3 -3
- package/dist/types/sdk/router/RouterV310Contract.d.ts +2 -2
- package/dist/types/sdk/router/createRouter.d.ts +2 -2
- package/dist/types/sdk/router/helpers.d.ts +1 -1
- package/dist/types/sdk/types/state-human.d.ts +10 -2
- package/dist/types/sdk/types/state.d.ts +14 -8
- package/dist/types/sdk/utils/filterDust.d.ts +2 -2
- package/dist/types/sdk/utils/formatter.d.ts +1 -1
- package/dist/types/sdk/utils/isDust.d.ts +2 -2
- package/dist/types/sdk/utils/toAddress.d.ts +1 -1
- package/dist/types/sdk/utils/viem/getLogsPaginated.d.ts +1 -2
- package/dist/types/sdk/utils/viem/getLogsSafe.d.ts +1 -1
- package/dist/types/sdk/utils/viem/index.d.ts +1 -1
- package/dist/types/sdk/utils/viem/simulateWithPriceUpdates.d.ts +1 -2
- package/dist/types/sdk/utils/viem/watchBlocksAsync.d.ts +74 -0
- package/package.json +3 -6
- package/dist/cjs/abi/kyc/iDSRegistryService.js +0 -70
- package/dist/cjs/abi/kyc/iDSToken.js +0 -71
- package/dist/cjs/abi/kyc/iKYCCompressor.js +0 -196
- package/dist/cjs/abi/kyc/iKYCFactory.js +0 -122
- package/dist/cjs/abi/kyc/iKYCUnderlying.js +0 -401
- package/dist/cjs/abi/kyc/iSecuritizeDegenNFT.js +0 -326
- package/dist/cjs/abi/kyc/iSecuritizeKYCFactory.js +0 -319
- package/dist/cjs/dev/CachedStateSubscriber.js +0 -78
- package/dist/cjs/sdk/GearboxSDK.js +0 -696
- package/dist/cjs/sdk/market/kyc/KYCRegistry.js +0 -269
- package/dist/cjs/sdk/market/kyc/index.js +0 -26
- package/dist/cjs/sdk/market/kyc/securitize/SecuritizeKYCFactory.js +0 -244
- package/dist/cjs/sdk/market/kyc/securitize/constants.js +0 -28
- package/dist/cjs/sdk/market/kyc/securitize/index.js +0 -26
- package/dist/cjs/sdk/market/kyc/securitize/types.js +0 -16
- package/dist/cjs/sdk/market/kyc/types.js +0 -34
- package/dist/cjs/sdk/utils/viem/executeDelegatedMulticalls.js +0 -38
- package/dist/esm/abi/kyc/iDSRegistryService.js +0 -46
- package/dist/esm/abi/kyc/iDSToken.js +0 -47
- package/dist/esm/abi/kyc/iKYCCompressor.js +0 -172
- package/dist/esm/abi/kyc/iKYCFactory.js +0 -98
- package/dist/esm/abi/kyc/iKYCUnderlying.js +0 -377
- package/dist/esm/abi/kyc/iSecuritizeDegenNFT.js +0 -302
- package/dist/esm/abi/kyc/iSecuritizeKYCFactory.js +0 -295
- package/dist/esm/dev/CachedStateSubscriber.js +0 -54
- package/dist/esm/sdk/GearboxSDK.js +0 -689
- package/dist/esm/sdk/market/kyc/KYCRegistry.js +0 -253
- package/dist/esm/sdk/market/kyc/index.js +0 -3
- package/dist/esm/sdk/market/kyc/securitize/SecuritizeKYCFactory.js +0 -220
- package/dist/esm/sdk/market/kyc/securitize/constants.js +0 -4
- package/dist/esm/sdk/market/kyc/securitize/index.js +0 -3
- package/dist/esm/sdk/market/kyc/securitize/types.js +0 -0
- package/dist/esm/sdk/market/kyc/types.js +0 -9
- package/dist/esm/sdk/utils/viem/executeDelegatedMulticalls.js +0 -14
- package/dist/types/abi/kyc/iDSRegistryService.d.ts +0 -71
- package/dist/types/abi/kyc/iDSToken.d.ts +0 -67
- package/dist/types/abi/kyc/iKYCCompressor.d.ts +0 -228
- package/dist/types/abi/kyc/iKYCFactory.d.ts +0 -139
- package/dist/types/abi/kyc/iKYCUnderlying.d.ts +0 -548
- package/dist/types/abi/kyc/iSecuritizeDegenNFT.d.ts +0 -404
- package/dist/types/abi/kyc/iSecuritizeKYCFactory.d.ts +0 -376
- package/dist/types/dev/CachedStateSubscriber.d.ts +0 -21
- package/dist/types/sdk/GearboxSDK.d.ts +0 -324
- package/dist/types/sdk/market/kyc/KYCRegistry.d.ts +0 -52
- package/dist/types/sdk/market/kyc/index.d.ts +0 -3
- package/dist/types/sdk/market/kyc/securitize/SecuritizeKYCFactory.d.ts +0 -428
- package/dist/types/sdk/market/kyc/securitize/constants.d.ts +0 -1
- package/dist/types/sdk/market/kyc/securitize/index.d.ts +0 -3
- package/dist/types/sdk/market/kyc/securitize/types.d.ts +0 -127
- package/dist/types/sdk/market/kyc/types.d.ts +0 -170
- package/dist/types/sdk/utils/viem/executeDelegatedMulticalls.d.ts +0 -28
|
@@ -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 });
|
|
@@ -87,8 +87,14 @@ const revolverTransportConfigSchema = import_v4.z.union([
|
|
|
87
87
|
})
|
|
88
88
|
]);
|
|
89
89
|
class NoAvailableTransportsError extends import_viem.BaseError {
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
statuses;
|
|
91
|
+
constructor(statuses, cause) {
|
|
92
|
+
super("No available transports", {
|
|
93
|
+
cause,
|
|
94
|
+
metaMessages: statuses.length > 0 ? statuses.map((s) => `- ${s.id}: ${s.status}`) : ["No transports configured"],
|
|
95
|
+
name: "NoAvailableTransportsError"
|
|
96
|
+
});
|
|
97
|
+
this.statuses = statuses;
|
|
92
98
|
}
|
|
93
99
|
}
|
|
94
100
|
class RevolverTransport {
|
|
@@ -146,7 +152,7 @@ class RevolverTransport {
|
|
|
146
152
|
);
|
|
147
153
|
}
|
|
148
154
|
if (transports.length === 0) {
|
|
149
|
-
throw new NoAvailableTransportsError();
|
|
155
|
+
throw new NoAvailableTransportsError([]);
|
|
150
156
|
}
|
|
151
157
|
this.#isSingle = transports.length === 1;
|
|
152
158
|
const selectionStrategy = config.selectionStrategy ?? "simple";
|
|
@@ -197,7 +203,7 @@ class RevolverTransport {
|
|
|
197
203
|
}
|
|
198
204
|
} while (this.#selector.canRotate());
|
|
199
205
|
this.#requests.delete(r);
|
|
200
|
-
throw new NoAvailableTransportsError(error);
|
|
206
|
+
throw new NoAvailableTransportsError(this.#selector.statuses(), error);
|
|
201
207
|
};
|
|
202
208
|
get config() {
|
|
203
209
|
return {
|
package/dist/cjs/dev/index.js
CHANGED
|
@@ -24,7 +24,6 @@ __export(dev_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(dev_exports);
|
|
26
26
|
__reExport(dev_exports, require("./AccountOpener.js"), module.exports);
|
|
27
|
-
__reExport(dev_exports, require("./CachedStateSubscriber.js"), module.exports);
|
|
28
27
|
__reExport(dev_exports, require("./calcLiquidatableLTs.js"), module.exports);
|
|
29
28
|
__reExport(dev_exports, require("./claimFromFaucet.js"), module.exports);
|
|
30
29
|
__reExport(dev_exports, require("./create2.js"), module.exports);
|
|
@@ -49,7 +48,6 @@ __reExport(dev_exports, require("./types.js"), module.exports);
|
|
|
49
48
|
isRangeError,
|
|
50
49
|
logSplitterTransport,
|
|
51
50
|
...require("./AccountOpener.js"),
|
|
52
|
-
...require("./CachedStateSubscriber.js"),
|
|
53
51
|
...require("./calcLiquidatableLTs.js"),
|
|
54
52
|
...require("./claimFromFaucet.js"),
|
|
55
53
|
...require("./create2.js"),
|
|
@@ -43,7 +43,9 @@ const RANGE_ERROR_PATTERNS = [
|
|
|
43
43
|
/eth_getLogs is limited to/i,
|
|
44
44
|
/eth_getLogs requests with up to/i,
|
|
45
45
|
/range is too large/i,
|
|
46
|
-
/exceeded max allowed range/i
|
|
46
|
+
/exceeded max allowed range/i,
|
|
47
|
+
// Encountered on DRPC: "query exceeds max results 20000, retry with the range …"
|
|
48
|
+
/exceeds max results/i
|
|
47
49
|
];
|
|
48
50
|
function isRangeError(error) {
|
|
49
51
|
const msg = errorMessage(error);
|
|
@@ -51,10 +53,17 @@ function isRangeError(error) {
|
|
|
51
53
|
}
|
|
52
54
|
const GENERIC_BLOCKS_RE = /(\d+)\s*block/i;
|
|
53
55
|
const ALCHEMY_RANGE_RE = /this block range should work: \[(0x[0-9a-fA-F]+),\s*(0x[0-9a-fA-F]+)\]/;
|
|
56
|
+
const DRPC_RANGE_RE = /retry with the range (\d+)-(\d+)/;
|
|
54
57
|
function parsePageSizeHint(error) {
|
|
55
58
|
const alchemy = tryAlchemyHint(error);
|
|
56
59
|
if (alchemy != null) return alchemy;
|
|
57
60
|
const msg = errorMessage(error);
|
|
61
|
+
const drpc = msg.match(DRPC_RANGE_RE);
|
|
62
|
+
if (drpc) {
|
|
63
|
+
const from = Number(drpc[1]);
|
|
64
|
+
const to = Number(drpc[2]);
|
|
65
|
+
return to - from + 1;
|
|
66
|
+
}
|
|
58
67
|
const m = msg.match(GENERIC_BLOCKS_RE);
|
|
59
68
|
return m ? Number(m[1]) : null;
|
|
60
69
|
}
|
|
@@ -28,8 +28,8 @@ __export(create2_exports, {
|
|
|
28
28
|
handleSalt: () => handleSalt
|
|
29
29
|
});
|
|
30
30
|
module.exports = __toCommonJS(create2_exports);
|
|
31
|
-
var import_abitype = require("abitype");
|
|
32
31
|
var import_viem = require("viem");
|
|
32
|
+
var import_utils = require("viem/utils");
|
|
33
33
|
const PUBLIC_CREATE2_FACTORY = "0x4e59b44847b379578588920ca78fbf26c0b4956c";
|
|
34
34
|
function handleSalt(salt) {
|
|
35
35
|
if (salt.slice(0, 2) !== "0x" || salt.length !== 66) {
|
|
@@ -63,7 +63,7 @@ function createCreate2DeployRawTx(bytecode, salt) {
|
|
|
63
63
|
type: "fallback"
|
|
64
64
|
}
|
|
65
65
|
];
|
|
66
|
-
const signature = (0,
|
|
66
|
+
const signature = (0, import_utils.formatAbiItem)(deterministicDeployerAbi[0]);
|
|
67
67
|
const contractMethod = {
|
|
68
68
|
name: "fallback",
|
|
69
69
|
inputs: [],
|
|
@@ -69,11 +69,17 @@ async function getCallsTouchedUpdatablePriceFeeds({
|
|
|
69
69
|
import_sdk.AP_PRICE_FEED_COMPRESSOR,
|
|
70
70
|
310n
|
|
71
71
|
);
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
72
|
+
const gearboxClient = client;
|
|
73
|
+
const chain = gearboxClient.chain;
|
|
74
|
+
if (!chain) {
|
|
75
|
+
throw new Error("Chain not defined on client");
|
|
76
|
+
}
|
|
77
|
+
const sdk = new import_sdk.OnchainSDK(
|
|
78
|
+
chain.network,
|
|
79
|
+
{ client: gearboxClient },
|
|
80
|
+
{ gasLimit }
|
|
81
|
+
);
|
|
82
|
+
await sdk.attach({ marketConfigurators: [] });
|
|
77
83
|
const touchedFeeds = parsedCalls.flatMap(
|
|
78
84
|
(call) => getCallTouchedPriceFeeds(call)
|
|
79
85
|
);
|
|
@@ -35,11 +35,17 @@ async function getPriceUpdateTx({
|
|
|
35
35
|
import_addresses.Addresses.PRICE_FEED_STORE,
|
|
36
36
|
client
|
|
37
37
|
);
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
38
|
+
const gearboxClient = client;
|
|
39
|
+
const chain = gearboxClient.chain;
|
|
40
|
+
if (!chain) {
|
|
41
|
+
throw new Error("Chain not defined on client");
|
|
42
|
+
}
|
|
43
|
+
const sdk = new import_sdk.OnchainSDK(
|
|
44
|
+
chain.network,
|
|
45
|
+
{ client: gearboxClient },
|
|
46
|
+
{ gasLimit }
|
|
47
|
+
);
|
|
48
|
+
await sdk.attach({ marketConfigurators: [] });
|
|
43
49
|
const updateTxs = await sdk.priceFeeds.generateExternalPriceFeedsUpdateTxs(priceFeeds);
|
|
44
50
|
if (useMulticall3) {
|
|
45
51
|
const multicallCalls = updateTxs.txs.map((tx) => ({
|
|
@@ -101,12 +101,18 @@ async function getPrices({
|
|
|
101
101
|
if (!client.chain) {
|
|
102
102
|
throw new Error("Chain not defined");
|
|
103
103
|
}
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
const gearboxClient = client;
|
|
105
|
+
const chain = gearboxClient.chain;
|
|
106
|
+
if (!chain) {
|
|
107
|
+
throw new Error("Chain not defined on client");
|
|
108
|
+
}
|
|
109
|
+
const sdk = new import_sdk.OnchainSDK(
|
|
110
|
+
chain.network,
|
|
111
|
+
{ client: gearboxClient },
|
|
112
|
+
{ gasLimit }
|
|
113
|
+
);
|
|
114
|
+
await sdk.attach({
|
|
115
|
+
marketConfigurators: []
|
|
110
116
|
});
|
|
111
117
|
const chunks = [];
|
|
112
118
|
for (let i = 0; i < priceFeeds.length; i += chunkSize) {
|
|
@@ -0,0 +1,232 @@
|
|
|
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 MultichainSDK_exports = {};
|
|
20
|
+
__export(MultichainSDK_exports, {
|
|
21
|
+
MultichainSDK: () => MultichainSDK
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(MultichainSDK_exports);
|
|
24
|
+
var import_chains = require("./chain/chains.js");
|
|
25
|
+
var import_core = require("./core/index.js");
|
|
26
|
+
var import_updates = require("./market/pricefeeds/updates/index.js");
|
|
27
|
+
var import_OnchainSDK = require("./OnchainSDK.js");
|
|
28
|
+
class MultichainSDK {
|
|
29
|
+
#chains;
|
|
30
|
+
#redstoneCache;
|
|
31
|
+
#pythCache;
|
|
32
|
+
#logger;
|
|
33
|
+
constructor(options) {
|
|
34
|
+
this.#chains = /* @__PURE__ */ new Map();
|
|
35
|
+
this.#logger = options.logger;
|
|
36
|
+
for (const [network, chainConfig] of Object.entries(options.chains)) {
|
|
37
|
+
const { gasLimit, ...clientOptions } = chainConfig;
|
|
38
|
+
let plugins;
|
|
39
|
+
if (options.plugins) {
|
|
40
|
+
plugins = Object.fromEntries(
|
|
41
|
+
Object.entries(options.plugins).map(([name, factory]) => [
|
|
42
|
+
name,
|
|
43
|
+
factory()
|
|
44
|
+
])
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
const sdkOptions = {
|
|
48
|
+
logger: options.logger?.child?.({ network }),
|
|
49
|
+
strictContractTypes: options.strictContractTypes,
|
|
50
|
+
gasLimit: gasLimit ?? options.gasLimit,
|
|
51
|
+
plugins
|
|
52
|
+
};
|
|
53
|
+
const sdk = new import_OnchainSDK.OnchainSDK(
|
|
54
|
+
network,
|
|
55
|
+
clientOptions,
|
|
56
|
+
sdkOptions
|
|
57
|
+
);
|
|
58
|
+
this.#chains.set(network, sdk);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Attach all configured chains in parallel.
|
|
63
|
+
*
|
|
64
|
+
* @param options - Shared and per-chain attach options.
|
|
65
|
+
*/
|
|
66
|
+
async attach(options) {
|
|
67
|
+
if (options?.redstone) {
|
|
68
|
+
this.#redstoneCache = new import_updates.PriceUpdatesCache({
|
|
69
|
+
ttl: options.redstone.cacheTTL ?? 225e3,
|
|
70
|
+
historical: !!options.redstone.historicTimestamp
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
if (options?.pyth) {
|
|
74
|
+
this.#pythCache = new import_updates.PriceUpdatesCache({
|
|
75
|
+
ttl: options.pyth.cacheTTL ?? 225e3,
|
|
76
|
+
historical: !!options.pyth.historicTimestamp
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
await Promise.all(
|
|
80
|
+
[...this.#chains.entries()].map(([network, sdk]) => {
|
|
81
|
+
const perChainOpts = options?.perChain?.[network] ?? {};
|
|
82
|
+
return sdk.attach({
|
|
83
|
+
...perChainOpts,
|
|
84
|
+
redstone: {
|
|
85
|
+
...options?.redstone,
|
|
86
|
+
cache: this.#redstoneCache,
|
|
87
|
+
...perChainOpts.redstone
|
|
88
|
+
},
|
|
89
|
+
pyth: {
|
|
90
|
+
...options?.pyth,
|
|
91
|
+
cache: this.#pythCache,
|
|
92
|
+
...perChainOpts.pyth
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
})
|
|
96
|
+
);
|
|
97
|
+
this.#logger?.info("Attached all chains");
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Hydrate all configured chains from serialised state.
|
|
101
|
+
*
|
|
102
|
+
* @param state - Multichain serialised state.
|
|
103
|
+
* @param options - Shared and per-chain hydrate options.
|
|
104
|
+
* @throws {@link SdkStateVersionMismatchError} if version doesn't match.
|
|
105
|
+
* @throws {@link SdkMissingChainStateError} if a configured chain has no
|
|
106
|
+
* state and `allowMissingChains` is not set.
|
|
107
|
+
*/
|
|
108
|
+
hydrate(state, options) {
|
|
109
|
+
if (state.version !== import_OnchainSDK.STATE_VERSION) {
|
|
110
|
+
throw new import_core.SdkStateVersionMismatchError(import_OnchainSDK.STATE_VERSION, state.version);
|
|
111
|
+
}
|
|
112
|
+
if (options?.redstone) {
|
|
113
|
+
this.#redstoneCache = new import_updates.PriceUpdatesCache({
|
|
114
|
+
ttl: options.redstone.cacheTTL ?? 225e3,
|
|
115
|
+
historical: !!options.redstone.historicTimestamp
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
if (options?.pyth) {
|
|
119
|
+
this.#pythCache = new import_updates.PriceUpdatesCache({
|
|
120
|
+
ttl: options.pyth.cacheTTL ?? 225e3,
|
|
121
|
+
historical: !!options.pyth.historicTimestamp
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
const stateByNetwork = new Map(state.chains.map((cs) => [cs.network, cs]));
|
|
125
|
+
for (const [network, sdk] of this.#chains) {
|
|
126
|
+
const chainState = stateByNetwork.get(network);
|
|
127
|
+
if (!chainState) {
|
|
128
|
+
if (options?.allowMissingChains) {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
throw new import_core.SdkMissingChainStateError(network);
|
|
132
|
+
}
|
|
133
|
+
const perChainOpts = options?.perChain?.[network] ?? {};
|
|
134
|
+
sdk.hydrate(chainState, {
|
|
135
|
+
...perChainOpts,
|
|
136
|
+
redstone: {
|
|
137
|
+
...options?.redstone,
|
|
138
|
+
cache: this.#redstoneCache,
|
|
139
|
+
...perChainOpts.redstone
|
|
140
|
+
},
|
|
141
|
+
pyth: {
|
|
142
|
+
...options?.pyth,
|
|
143
|
+
cache: this.#pythCache,
|
|
144
|
+
...perChainOpts.pyth
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
this.#logger?.info("Hydrated all chains");
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Returns the {@link OnchainSDK} for a given network or chain ID.
|
|
152
|
+
*
|
|
153
|
+
* @param networkOrChainId - Network type string or numeric chain ID.
|
|
154
|
+
* @throws If the network/chain is not configured.
|
|
155
|
+
*/
|
|
156
|
+
chain(networkOrChainId) {
|
|
157
|
+
let network;
|
|
158
|
+
if (typeof networkOrChainId === "number") {
|
|
159
|
+
network = (0, import_chains.getNetworkType)(networkOrChainId);
|
|
160
|
+
} else {
|
|
161
|
+
network = networkOrChainId;
|
|
162
|
+
}
|
|
163
|
+
const sdk = this.#chains.get(network);
|
|
164
|
+
if (!sdk) {
|
|
165
|
+
throw new Error(
|
|
166
|
+
`Chain ${String(networkOrChainId)} is not configured in this MultichainSDK`
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
return sdk;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Read-only map of all configured chains.
|
|
173
|
+
**/
|
|
174
|
+
get chains() {
|
|
175
|
+
return this.#chains;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Sync state for all chains in parallel.
|
|
179
|
+
*
|
|
180
|
+
* @param opts - Sync options.
|
|
181
|
+
* @throws {@link SdkSyncFailedError} if any chain fails.
|
|
182
|
+
*/
|
|
183
|
+
async syncState(opts) {
|
|
184
|
+
const errors = {};
|
|
185
|
+
const results = await Promise.allSettled(
|
|
186
|
+
[...this.#chains.entries()].map(async ([_network, sdk]) => {
|
|
187
|
+
const block = await sdk.client.getBlock({ blockTag: "latest" });
|
|
188
|
+
const synced = await sdk.syncState({
|
|
189
|
+
blockNumber: block.number,
|
|
190
|
+
timestamp: block.timestamp,
|
|
191
|
+
ignoreUpdateablePrices: opts?.ignoreUpdateablePrices
|
|
192
|
+
});
|
|
193
|
+
if (!synced) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
})
|
|
197
|
+
);
|
|
198
|
+
for (const [i, result] of results.entries()) {
|
|
199
|
+
if (result.status === "rejected") {
|
|
200
|
+
const network = [...this.#chains.keys()][i];
|
|
201
|
+
errors[network] = result.reason;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (Object.keys(errors).length > 0) {
|
|
205
|
+
throw new import_core.SdkSyncFailedError(errors);
|
|
206
|
+
}
|
|
207
|
+
this.#logger?.info("Synced state for all chains");
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Serialisable snapshot of all chains' state.
|
|
211
|
+
**/
|
|
212
|
+
get state() {
|
|
213
|
+
return {
|
|
214
|
+
version: import_OnchainSDK.STATE_VERSION,
|
|
215
|
+
chains: [...this.#chains.values()].map((sdk) => sdk.state)
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Human-readable snapshot of all chains' state.
|
|
220
|
+
* @param raw - When `true`, include raw numeric values.
|
|
221
|
+
*/
|
|
222
|
+
stateHuman(raw) {
|
|
223
|
+
return {
|
|
224
|
+
version: import_OnchainSDK.STATE_VERSION,
|
|
225
|
+
chains: [...this.#chains.values()].map((sdk) => sdk.stateHuman(raw))
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
230
|
+
0 && (module.exports = {
|
|
231
|
+
MultichainSDK
|
|
232
|
+
});
|