@gearbox-protocol/sdk 9.14.1 → 9.15.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/abi/package.json +1 -0
- package/dist/cjs/dev/mint/factory.js +1 -1
- package/dist/cjs/permissionless/bindings/address-provider.js +51 -0
- package/dist/cjs/permissionless/bindings/base-contract.js +173 -0
- package/dist/cjs/permissionless/bindings/bytecode-repository.js +526 -0
- package/dist/cjs/permissionless/bindings/compressors/index.js +24 -0
- package/dist/cjs/permissionless/bindings/compressors/token-compressor.js +110 -0
- package/dist/cjs/permissionless/bindings/compressors/withdrawal-compressor.js +60 -0
- package/dist/cjs/permissionless/bindings/cross-chain-multisig.js +355 -0
- package/dist/cjs/permissionless/bindings/factory/abstract-factory.js +52 -0
- package/dist/cjs/permissionless/bindings/factory/credit-factory.js +197 -0
- package/dist/cjs/permissionless/bindings/factory/pool-factory.js +69 -0
- package/dist/cjs/permissionless/bindings/factory/price-oracle-factory.js +47 -0
- package/dist/cjs/permissionless/bindings/governance/batches-chain.js +41 -0
- package/dist/cjs/permissionless/bindings/governance/governor.js +243 -0
- package/dist/cjs/permissionless/bindings/governance/index.js +26 -0
- package/dist/cjs/permissionless/bindings/governance/timelock.js +104 -0
- package/dist/cjs/permissionless/bindings/governance/types.js +16 -0
- package/dist/cjs/permissionless/bindings/index.js +48 -0
- package/dist/cjs/permissionless/bindings/instance-manager.js +244 -0
- package/dist/cjs/permissionless/bindings/market-configurator-factory.js +75 -0
- package/dist/cjs/permissionless/bindings/market-configurator.js +771 -0
- package/dist/cjs/permissionless/bindings/price-feed-store.js +395 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/balancer-stable.js +63 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/balancer-weighted.js +63 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/bounded.js +47 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/composite.js +43 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/constant.js +42 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/curve-crypto.js +67 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/curve-stable.js +67 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/curve-twap.js +70 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/curve-usd.js +50 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/erc4626.js +72 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/external.js +38 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/index.js +63 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/kodiak.js +50 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/mellow-lrt.js +122 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/pendle-pt-twap.js +51 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/pyth.js +65 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/redstone.js +81 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/wsteth.js +63 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/zero.js +33 -0
- package/dist/cjs/permissionless/bindings/router/index.js +22 -0
- package/dist/cjs/permissionless/bindings/router/routing-manager.js +58 -0
- package/dist/cjs/permissionless/bindings/treasury-splitter.js +60 -0
- package/dist/cjs/permissionless/bindings/types.js +16 -0
- package/dist/cjs/permissionless/chains/archive-transport.js +274 -0
- package/dist/cjs/permissionless/core/auditor.js +16 -0
- package/dist/cjs/permissionless/core/bytecode.js +16 -0
- package/dist/cjs/permissionless/core/index.js +32 -0
- package/dist/cjs/permissionless/core/pricefeed-builder.js +16 -0
- package/dist/cjs/permissionless/core/pricefeed.js +16 -0
- package/dist/cjs/permissionless/core/proposal.js +16 -0
- package/dist/cjs/permissionless/core/raw-tx.js +38 -0
- package/dist/cjs/permissionless/deployment/addresses.js +35 -0
- package/dist/cjs/permissionless/deployment/mainnet.js +54 -0
- package/dist/cjs/permissionless/index.js +32 -0
- package/dist/cjs/permissionless/package.json +1 -0
- package/dist/cjs/permissionless/plugins/index.js +40 -0
- package/dist/cjs/permissionless/plugins/irm/constructor-params-abi.js +81 -0
- package/dist/cjs/permissionless/plugins/loss-policies/constructor-params-abi.js +79 -0
- package/dist/cjs/permissionless/plugins/rate-keepers/constructor-params-abi.js +89 -0
- package/dist/cjs/permissionless/utils/abi-decoder.js +72 -0
- package/dist/cjs/permissionless/utils/abi-encoder.js +89 -0
- package/dist/cjs/permissionless/utils/block-utils.js +55 -0
- package/dist/cjs/permissionless/utils/create2.js +113 -0
- package/dist/cjs/permissionless/utils/format.js +97 -0
- package/dist/cjs/permissionless/utils/governance/batch.js +114 -0
- package/dist/cjs/permissionless/utils/governance/index.js +26 -0
- package/dist/cjs/permissionless/utils/governance/timelock-txs.js +44 -0
- package/dist/cjs/permissionless/utils/governance/types.js +16 -0
- package/dist/cjs/permissionless/utils/index.js +38 -0
- package/dist/cjs/permissionless/utils/literals.js +46 -0
- package/dist/cjs/permissionless/utils/price-update/get-price-feeds.js +91 -0
- package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +84 -0
- package/dist/cjs/permissionless/utils/price-update/get-prices.js +123 -0
- package/dist/cjs/permissionless/utils/price-update/get-updatable-feeds.js +52 -0
- package/dist/cjs/permissionless/utils/price-update/index.js +28 -0
- package/dist/cjs/permissionless/utils/signature.js +35 -0
- package/dist/cjs/plugins/adapters/AdaptersPlugin.js +1 -1
- package/dist/cjs/plugins/adapters/abi/actionAbi.js +1 -1
- package/dist/cjs/plugins/adapters/abi/conctructorAbi.js +2 -2
- package/dist/cjs/plugins/adapters/abi/utils.js +6 -6
- package/dist/cjs/plugins/adapters/index.js +4 -4
- package/dist/cjs/sdk/sdk-gov-legacy/tokens/curveLP.js +1 -1
- package/dist/cjs/sdk/sdk-legacy/tokens/tokenData.js +1 -1
- package/dist/esm/abi/package.json +1 -0
- package/dist/esm/dev/mint/factory.js +1 -1
- package/dist/esm/permissionless/bindings/address-provider.js +27 -0
- package/dist/esm/permissionless/bindings/base-contract.js +151 -0
- package/dist/esm/permissionless/bindings/bytecode-repository.js +508 -0
- package/dist/esm/permissionless/bindings/compressors/index.js +2 -0
- package/dist/esm/permissionless/bindings/compressors/token-compressor.js +89 -0
- package/dist/esm/permissionless/bindings/compressors/withdrawal-compressor.js +38 -0
- package/dist/esm/permissionless/bindings/cross-chain-multisig.js +336 -0
- package/dist/esm/permissionless/bindings/factory/abstract-factory.js +28 -0
- package/dist/esm/permissionless/bindings/factory/credit-factory.js +177 -0
- package/dist/esm/permissionless/bindings/factory/pool-factory.js +45 -0
- package/dist/esm/permissionless/bindings/factory/price-oracle-factory.js +23 -0
- package/dist/esm/permissionless/bindings/governance/batches-chain.js +17 -0
- package/dist/esm/permissionless/bindings/governance/governor.js +224 -0
- package/dist/esm/permissionless/bindings/governance/index.js +3 -0
- package/dist/esm/permissionless/bindings/governance/timelock.js +80 -0
- package/dist/esm/permissionless/bindings/governance/types.js +0 -0
- package/dist/esm/permissionless/bindings/index.js +14 -0
- package/dist/esm/permissionless/bindings/instance-manager.js +223 -0
- package/dist/esm/permissionless/bindings/market-configurator-factory.js +51 -0
- package/dist/esm/permissionless/bindings/market-configurator.js +765 -0
- package/dist/esm/permissionless/bindings/price-feed-store.js +376 -0
- package/dist/esm/permissionless/bindings/pricefeeds/balancer-stable.js +39 -0
- package/dist/esm/permissionless/bindings/pricefeeds/balancer-weighted.js +39 -0
- package/dist/esm/permissionless/bindings/pricefeeds/bounded.js +23 -0
- package/dist/esm/permissionless/bindings/pricefeeds/composite.js +19 -0
- package/dist/esm/permissionless/bindings/pricefeeds/constant.js +18 -0
- package/dist/esm/permissionless/bindings/pricefeeds/curve-crypto.js +43 -0
- package/dist/esm/permissionless/bindings/pricefeeds/curve-stable.js +43 -0
- package/dist/esm/permissionless/bindings/pricefeeds/curve-twap.js +46 -0
- package/dist/esm/permissionless/bindings/pricefeeds/curve-usd.js +26 -0
- package/dist/esm/permissionless/bindings/pricefeeds/erc4626.js +48 -0
- package/dist/esm/permissionless/bindings/pricefeeds/external.js +14 -0
- package/dist/esm/permissionless/bindings/pricefeeds/index.js +39 -0
- package/dist/esm/permissionless/bindings/pricefeeds/kodiak.js +26 -0
- package/dist/esm/permissionless/bindings/pricefeeds/mellow-lrt.js +98 -0
- package/dist/esm/permissionless/bindings/pricefeeds/pendle-pt-twap.js +27 -0
- package/dist/esm/permissionless/bindings/pricefeeds/pyth.js +41 -0
- package/dist/esm/permissionless/bindings/pricefeeds/redstone.js +57 -0
- package/dist/esm/permissionless/bindings/pricefeeds/wsteth.js +39 -0
- package/dist/esm/permissionless/bindings/pricefeeds/zero.js +9 -0
- package/dist/esm/permissionless/bindings/router/index.js +1 -0
- package/dist/esm/permissionless/bindings/router/routing-manager.js +36 -0
- package/dist/esm/permissionless/bindings/treasury-splitter.js +36 -0
- package/dist/esm/permissionless/bindings/types.js +0 -0
- package/dist/esm/permissionless/chains/archive-transport.js +250 -0
- package/dist/esm/permissionless/core/auditor.js +0 -0
- package/dist/esm/permissionless/core/bytecode.js +0 -0
- package/dist/esm/permissionless/core/index.js +6 -0
- package/dist/esm/permissionless/core/pricefeed-builder.js +0 -0
- package/dist/esm/permissionless/core/pricefeed.js +0 -0
- package/dist/esm/permissionless/core/proposal.js +0 -0
- package/dist/esm/permissionless/core/raw-tx.js +14 -0
- package/dist/esm/permissionless/deployment/addresses.js +11 -0
- package/dist/esm/permissionless/deployment/mainnet.js +27 -0
- package/dist/esm/permissionless/index.js +6 -0
- package/dist/esm/permissionless/package.json +1 -0
- package/dist/esm/permissionless/plugins/index.js +20 -0
- package/dist/esm/permissionless/plugins/irm/constructor-params-abi.js +52 -0
- package/dist/esm/permissionless/plugins/loss-policies/constructor-params-abi.js +50 -0
- package/dist/esm/permissionless/plugins/rate-keepers/constructor-params-abi.js +59 -0
- package/dist/esm/permissionless/utils/abi-decoder.js +50 -0
- package/dist/esm/permissionless/utils/abi-encoder.js +65 -0
- package/dist/esm/permissionless/utils/block-utils.js +31 -0
- package/dist/esm/permissionless/utils/create2.js +85 -0
- package/dist/esm/permissionless/utils/format.js +67 -0
- package/dist/esm/permissionless/utils/governance/batch.js +87 -0
- package/dist/esm/permissionless/utils/governance/index.js +3 -0
- package/dist/esm/permissionless/utils/governance/timelock-txs.js +20 -0
- package/dist/esm/permissionless/utils/governance/types.js +0 -0
- package/dist/esm/permissionless/utils/index.js +9 -0
- package/dist/esm/permissionless/utils/literals.js +16 -0
- package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +65 -0
- package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +67 -0
- package/dist/esm/permissionless/utils/price-update/get-prices.js +99 -0
- package/dist/esm/permissionless/utils/price-update/get-updatable-feeds.js +31 -0
- package/dist/esm/permissionless/utils/price-update/index.js +4 -0
- package/dist/esm/permissionless/utils/signature.js +11 -0
- package/dist/esm/plugins/adapters/AdaptersPlugin.js +1 -1
- package/dist/esm/plugins/adapters/abi/actionAbi.js +1 -1
- package/dist/esm/plugins/adapters/abi/conctructorAbi.js +2 -2
- package/dist/esm/plugins/adapters/abi/utils.js +2 -2
- package/dist/esm/plugins/adapters/index.js +2 -2
- package/dist/esm/sdk/sdk-gov-legacy/tokens/curveLP.js +1 -1
- package/dist/esm/sdk/sdk-legacy/tokens/tokenData.js +1 -1
- package/dist/types/dev/mint/factory.d.ts +2 -2
- package/dist/types/permissionless/bindings/address-provider.d.ts +259 -0
- package/dist/types/permissionless/bindings/base-contract.d.ts +23 -0
- package/dist/types/permissionless/bindings/bytecode-repository.d.ts +1352 -0
- package/dist/types/permissionless/bindings/compressors/index.d.ts +2 -0
- package/dist/types/permissionless/bindings/compressors/token-compressor.d.ts +118 -0
- package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +331 -0
- package/dist/types/permissionless/bindings/cross-chain-multisig.d.ts +835 -0
- package/dist/types/permissionless/bindings/factory/abstract-factory.d.ts +17 -0
- package/dist/types/permissionless/bindings/factory/credit-factory.d.ts +224 -0
- package/dist/types/permissionless/bindings/factory/pool-factory.d.ts +86 -0
- package/dist/types/permissionless/bindings/factory/price-oracle-factory.d.ts +38 -0
- package/dist/types/permissionless/bindings/governance/batches-chain.d.ts +39 -0
- package/dist/types/permissionless/bindings/governance/governor.d.ts +615 -0
- package/dist/types/permissionless/bindings/governance/index.d.ts +3 -0
- package/dist/types/permissionless/bindings/governance/timelock.d.ts +10 -0
- package/dist/types/permissionless/bindings/governance/types.d.ts +42 -0
- package/dist/types/permissionless/bindings/index.d.ts +14 -0
- package/dist/types/permissionless/bindings/instance-manager.d.ts +361 -0
- package/dist/types/permissionless/bindings/market-configurator-factory.d.ts +244 -0
- package/dist/types/permissionless/bindings/market-configurator.d.ts +1656 -0
- package/dist/types/permissionless/bindings/price-feed-store.d.ts +605 -0
- package/dist/types/permissionless/bindings/pricefeeds/balancer-stable.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/balancer-weighted.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/bounded.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/composite.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/constant.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/curve-crypto.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/curve-stable.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/curve-twap.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/curve-usd.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/erc4626.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/external.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/index.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/kodiak.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/mellow-lrt.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/pendle-pt-twap.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/pyth.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/redstone.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/wsteth.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/zero.d.ts +2 -0
- package/dist/types/permissionless/bindings/router/index.d.ts +1 -0
- package/dist/types/permissionless/bindings/router/routing-manager.d.ts +502 -0
- package/dist/types/permissionless/bindings/treasury-splitter.d.ts +21 -0
- package/dist/types/permissionless/bindings/types.d.ts +65 -0
- package/dist/types/permissionless/chains/archive-transport.d.ts +49 -0
- package/dist/types/permissionless/core/auditor.d.ts +7 -0
- package/dist/types/permissionless/core/bytecode.d.ts +46 -0
- package/dist/types/permissionless/core/index.d.ts +6 -0
- package/dist/types/permissionless/core/pricefeed-builder.d.ts +59 -0
- package/dist/types/permissionless/core/pricefeed.d.ts +10 -0
- package/dist/types/permissionless/core/proposal.d.ts +33 -0
- package/dist/types/permissionless/core/raw-tx.d.ts +4 -0
- package/dist/types/permissionless/deployment/addresses.d.ts +7 -0
- package/dist/types/permissionless/deployment/mainnet.d.ts +10 -0
- package/dist/types/permissionless/index.d.ts +6 -0
- package/dist/types/permissionless/plugins/index.d.ts +3 -0
- package/dist/types/permissionless/plugins/irm/constructor-params-abi.d.ts +63 -0
- package/dist/types/permissionless/plugins/loss-policies/constructor-params-abi.d.ts +48 -0
- package/dist/types/permissionless/plugins/rate-keepers/constructor-params-abi.d.ts +55 -0
- package/dist/types/permissionless/utils/abi-decoder.d.ts +13 -0
- package/dist/types/permissionless/utils/abi-encoder.d.ts +7 -0
- package/dist/types/permissionless/utils/block-utils.d.ts +8 -0
- package/dist/types/permissionless/utils/create2.d.ts +17 -0
- package/dist/types/permissionless/utils/format.d.ts +7 -0
- package/dist/types/permissionless/utils/governance/batch.d.ts +17 -0
- package/dist/types/permissionless/utils/governance/index.d.ts +3 -0
- package/dist/types/permissionless/utils/governance/timelock-txs.d.ts +2 -0
- package/dist/types/permissionless/utils/governance/types.d.ts +16 -0
- package/dist/types/permissionless/utils/index.d.ts +9 -0
- package/dist/types/permissionless/utils/literals.d.ts +7 -0
- package/dist/types/permissionless/utils/price-update/get-price-feeds.d.ts +8 -0
- package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +9 -0
- package/dist/types/permissionless/utils/price-update/get-prices.d.ts +6 -0
- package/dist/types/permissionless/utils/price-update/get-updatable-feeds.d.ts +8 -0
- package/dist/types/permissionless/utils/price-update/index.d.ts +4 -0
- package/dist/types/permissionless/utils/signature.d.ts +2 -0
- package/dist/types/plugins/adapters/abi/actionAbi.d.ts +1 -1
- package/dist/types/plugins/adapters/abi/conctructorAbi.d.ts +1 -1
- package/dist/types/plugins/adapters/abi/utils.d.ts +1 -1
- package/dist/types/plugins/adapters/index.d.ts +2 -2
- package/dist/types/plugins/zappers/extraZappers.d.ts +2 -2
- package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +1 -2
- package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +1 -2
- package/dist/types/sdk/market/oracle/PriceOracleV300Contract.d.ts +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { formatAbiItem } from "abitype";
|
|
2
|
+
import {
|
|
3
|
+
getCreate2Address,
|
|
4
|
+
stringToHex
|
|
5
|
+
} from "viem";
|
|
6
|
+
const PUBLIC_CREATE2_FACTORY = "0x4e59b44847b379578588920ca78fbf26c0b4956c";
|
|
7
|
+
function handleSalt(salt) {
|
|
8
|
+
if (salt.slice(0, 2) !== "0x" || salt.length !== 66) {
|
|
9
|
+
salt = stringToHex(salt, { size: 32 });
|
|
10
|
+
}
|
|
11
|
+
return salt;
|
|
12
|
+
}
|
|
13
|
+
async function deployUsingPublicCreate2(sponsor, bytecode, salt) {
|
|
14
|
+
const callData = `${handleSalt(salt)}${bytecode.replace("0x", "")}`;
|
|
15
|
+
const hash = await sponsor.sendTransaction({
|
|
16
|
+
to: PUBLIC_CREATE2_FACTORY,
|
|
17
|
+
data: callData,
|
|
18
|
+
account: sponsor.account,
|
|
19
|
+
chain: sponsor.chain
|
|
20
|
+
});
|
|
21
|
+
return hash;
|
|
22
|
+
}
|
|
23
|
+
async function getCreate2AddressPublicFactory(salt, bytecode) {
|
|
24
|
+
return getCreate2Address({
|
|
25
|
+
from: PUBLIC_CREATE2_FACTORY,
|
|
26
|
+
salt: handleSalt(salt),
|
|
27
|
+
bytecode
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function createCreate2DeployRawTx(bytecode, salt) {
|
|
31
|
+
const callData = `${handleSalt(salt)}${bytecode.replace("0x", "")}`;
|
|
32
|
+
const deterministicDeployerAbi = [
|
|
33
|
+
{
|
|
34
|
+
payable: true,
|
|
35
|
+
stateMutability: "payable",
|
|
36
|
+
type: "fallback"
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
const signature = formatAbiItem(deterministicDeployerAbi[0]);
|
|
40
|
+
const contractMethod = {
|
|
41
|
+
name: "fallback",
|
|
42
|
+
inputs: [],
|
|
43
|
+
payable: true
|
|
44
|
+
};
|
|
45
|
+
const rawTx = {
|
|
46
|
+
to: PUBLIC_CREATE2_FACTORY,
|
|
47
|
+
value: "0",
|
|
48
|
+
signature,
|
|
49
|
+
callData,
|
|
50
|
+
contractMethod,
|
|
51
|
+
contractInputsValues: {},
|
|
52
|
+
description: ""
|
|
53
|
+
};
|
|
54
|
+
return rawTx;
|
|
55
|
+
}
|
|
56
|
+
function getCreate2DeploymentAddress(bytecode, salt) {
|
|
57
|
+
return getCreate2Address({
|
|
58
|
+
from: PUBLIC_CREATE2_FACTORY,
|
|
59
|
+
salt: handleSalt(salt),
|
|
60
|
+
bytecode
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async function checkCreate2Deployment(client, bytecode, salt) {
|
|
64
|
+
const address = getCreate2DeploymentAddress(bytecode, salt);
|
|
65
|
+
const code = await client.getCode({ address });
|
|
66
|
+
return code !== void 0;
|
|
67
|
+
}
|
|
68
|
+
async function checkCreate2DeploymentAddress(client, bytecode, salt) {
|
|
69
|
+
const address = getCreate2DeploymentAddress(bytecode, salt);
|
|
70
|
+
const code = await client.getCode({ address });
|
|
71
|
+
if (code !== void 0) {
|
|
72
|
+
return [true, address];
|
|
73
|
+
}
|
|
74
|
+
return [false, address];
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
PUBLIC_CREATE2_FACTORY,
|
|
78
|
+
checkCreate2Deployment,
|
|
79
|
+
checkCreate2DeploymentAddress,
|
|
80
|
+
createCreate2DeployRawTx,
|
|
81
|
+
deployUsingPublicCreate2,
|
|
82
|
+
getCreate2AddressPublicFactory,
|
|
83
|
+
getCreate2DeploymentAddress,
|
|
84
|
+
handleSalt
|
|
85
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { json_parse } from "../../sdk/utils/index.js";
|
|
2
|
+
function formatBytecodeSize(size) {
|
|
3
|
+
return `${(size / 1024).toFixed(2)} KB`;
|
|
4
|
+
}
|
|
5
|
+
function formatBytecodeVersion(version) {
|
|
6
|
+
if (version === 0) return "-";
|
|
7
|
+
const major = Math.floor(version / 100);
|
|
8
|
+
const minor = Math.floor(version % 100 / 10);
|
|
9
|
+
const patch = version % 10;
|
|
10
|
+
return `v${major}.${minor}.${patch}`;
|
|
11
|
+
}
|
|
12
|
+
function formatTimestamp(timestamp) {
|
|
13
|
+
return new Date(timestamp * 1e3).toLocaleString("en-GB", {
|
|
14
|
+
dateStyle: "short",
|
|
15
|
+
timeStyle: "short"
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function shortenHash(hash, chars = 4) {
|
|
19
|
+
if (!hash) return "";
|
|
20
|
+
const start = hash.slice(0, chars + 2);
|
|
21
|
+
const end = hash.slice(-chars);
|
|
22
|
+
return `${start}...${end}`;
|
|
23
|
+
}
|
|
24
|
+
function convertPercent(percent) {
|
|
25
|
+
return Math.floor(percent * 100);
|
|
26
|
+
}
|
|
27
|
+
function significantTrunc(x) {
|
|
28
|
+
if (x === 0) return "0";
|
|
29
|
+
if (x >= 1) return x.toFixed(0);
|
|
30
|
+
const str = x.toPrecision(2);
|
|
31
|
+
if (str.includes("e")) {
|
|
32
|
+
const value = Number(str);
|
|
33
|
+
return value.toFixed(20).replace(/\.?0+$/, "");
|
|
34
|
+
}
|
|
35
|
+
return str.replace(/\.?0+$/, "");
|
|
36
|
+
}
|
|
37
|
+
function deepJsonParse(value) {
|
|
38
|
+
if (typeof value === "string") {
|
|
39
|
+
try {
|
|
40
|
+
const parsed = json_parse(value);
|
|
41
|
+
if (parsed === value) return value;
|
|
42
|
+
return deepJsonParse(parsed);
|
|
43
|
+
} catch {
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (Array.isArray(value)) {
|
|
48
|
+
return value.map(deepJsonParse);
|
|
49
|
+
}
|
|
50
|
+
if (typeof value === "object" && value !== null) {
|
|
51
|
+
const result = {};
|
|
52
|
+
for (const [k, v] of Object.entries(value)) {
|
|
53
|
+
result[k] = deepJsonParse(v);
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
export {
|
|
60
|
+
convertPercent,
|
|
61
|
+
deepJsonParse,
|
|
62
|
+
formatBytecodeSize,
|
|
63
|
+
formatBytecodeVersion,
|
|
64
|
+
formatTimestamp,
|
|
65
|
+
shortenHash,
|
|
66
|
+
significantTrunc
|
|
67
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { keccak256, toBytes } from "viem";
|
|
2
|
+
function convertRawTxToSafeMultisigTx(tx) {
|
|
3
|
+
const { to, value, contractMethod, contractInputsValues } = tx;
|
|
4
|
+
return {
|
|
5
|
+
to,
|
|
6
|
+
value: `${value}`,
|
|
7
|
+
data: tx.callData,
|
|
8
|
+
contractMethod,
|
|
9
|
+
contractInputsValues: Object.entries(contractInputsValues).reduce(
|
|
10
|
+
(acc, [key, value2]) => {
|
|
11
|
+
acc[key] = typeof value2 === "object" ? JSON.stringify(
|
|
12
|
+
value2,
|
|
13
|
+
(_, v) => typeof v === "bigint" ? v.toString() : v
|
|
14
|
+
) : `${value2}`;
|
|
15
|
+
return acc;
|
|
16
|
+
},
|
|
17
|
+
{}
|
|
18
|
+
)
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function stringifyReplacer(_, value) {
|
|
22
|
+
return value === void 0 ? null : `${value}`;
|
|
23
|
+
}
|
|
24
|
+
function serializeJSONObject(json) {
|
|
25
|
+
if (Array.isArray(json)) {
|
|
26
|
+
return `[${json.map((el) => serializeJSONObject(el)).join(",")}]`;
|
|
27
|
+
}
|
|
28
|
+
if (typeof json === "object" && json !== null) {
|
|
29
|
+
let acc = "";
|
|
30
|
+
const keys = Object.keys(json).sort();
|
|
31
|
+
acc += `{${JSON.stringify(keys, stringifyReplacer)}`;
|
|
32
|
+
for (const key of keys) {
|
|
33
|
+
acc += `${serializeJSONObject(json[key])},`;
|
|
34
|
+
}
|
|
35
|
+
return `${acc}}`;
|
|
36
|
+
}
|
|
37
|
+
return `${JSON.stringify(json, stringifyReplacer)}`;
|
|
38
|
+
}
|
|
39
|
+
function calculateChecksum(multisigBatch) {
|
|
40
|
+
const serialized = serializeJSONObject({
|
|
41
|
+
...multisigBatch,
|
|
42
|
+
meta: { ...multisigBatch.meta, name: null }
|
|
43
|
+
});
|
|
44
|
+
return keccak256(toBytes(serialized));
|
|
45
|
+
}
|
|
46
|
+
function getSafeBatch(args) {
|
|
47
|
+
const { chainId, safeAddress, name, txs: transactions } = args;
|
|
48
|
+
const batchInfo = {
|
|
49
|
+
version: "1.0",
|
|
50
|
+
chainId: `${chainId}`,
|
|
51
|
+
createdAt: Date.now(),
|
|
52
|
+
safeAddress,
|
|
53
|
+
meta: {
|
|
54
|
+
name,
|
|
55
|
+
description: name,
|
|
56
|
+
txBuilderVersion: "1.16.0",
|
|
57
|
+
createdFromSafeAddress: safeAddress,
|
|
58
|
+
createdFromOwnerAddress: ""
|
|
59
|
+
},
|
|
60
|
+
transactions
|
|
61
|
+
};
|
|
62
|
+
const batch = {
|
|
63
|
+
...batchInfo,
|
|
64
|
+
meta: {
|
|
65
|
+
...batchInfo.meta,
|
|
66
|
+
checksum: calculateChecksum(batchInfo)
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
return batch;
|
|
70
|
+
}
|
|
71
|
+
function getSafeBatches(args) {
|
|
72
|
+
const { batches, name } = args;
|
|
73
|
+
return batches.map((txs, index) => {
|
|
74
|
+
const batchName = `${name}-#${index}`;
|
|
75
|
+
return getSafeBatch({
|
|
76
|
+
...args,
|
|
77
|
+
name: batchName,
|
|
78
|
+
txs
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
export {
|
|
83
|
+
calculateChecksum,
|
|
84
|
+
convertRawTxToSafeMultisigTx,
|
|
85
|
+
getSafeBatch,
|
|
86
|
+
getSafeBatches
|
|
87
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { governorAbi } from "../../../abi/governance/governor.js";
|
|
2
|
+
import { createRawTx } from "../../../sdk/utils/index.js";
|
|
3
|
+
import { convertRawTxToSafeMultisigTx } from "./batch.js";
|
|
4
|
+
function convertQueueBatchToExecuteTx(queueBatch) {
|
|
5
|
+
const executionBatch = queueBatch.filter((tx) => tx.contractMethod.name === "queueTransaction").map((tx) => ({
|
|
6
|
+
...tx.contractInputsValues,
|
|
7
|
+
value: BigInt(tx.contractInputsValues.value),
|
|
8
|
+
eta: BigInt(tx.contractInputsValues.eta)
|
|
9
|
+
}));
|
|
10
|
+
return convertRawTxToSafeMultisigTx(
|
|
11
|
+
createRawTx(queueBatch[0].to, {
|
|
12
|
+
functionName: "executeBatch",
|
|
13
|
+
args: [executionBatch],
|
|
14
|
+
abi: governorAbi
|
|
15
|
+
})
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
convertQueueBatchToExecuteTx
|
|
20
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./abi-decoder.js";
|
|
2
|
+
export * from "./abi-encoder.js";
|
|
3
|
+
export * from "./block-utils.js";
|
|
4
|
+
export * from "./create2.js";
|
|
5
|
+
export * from "./format.js";
|
|
6
|
+
export * from "./governance/index.js";
|
|
7
|
+
export * from "./literals.js";
|
|
8
|
+
export * from "./price-update/index.js";
|
|
9
|
+
export * from "./signature.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const CROSS_CHAIN_GOVERNANCE = "CROSS_CHAIN_GOVERNANCE";
|
|
2
|
+
const BYTECODE_REPOSITORY = "BYTECODE_REPOSITORY";
|
|
3
|
+
const INSTANCE_MANAGER = "INSTANCE_MANAGER";
|
|
4
|
+
const TOKEN_COMPRESSOR = "GLOBAL::TOKEN_COMPRESSOR";
|
|
5
|
+
const CROSS_CHAIN_MULTISIG = "CROSS_CHAIN_MULTISIG";
|
|
6
|
+
const PRICE_FEED_STORE = "PRICE_FEED_STORE";
|
|
7
|
+
const MARKET_CONFIGURATOR_FACTORY = "MARKET_CONFIGURATOR_FACTORY";
|
|
8
|
+
export {
|
|
9
|
+
BYTECODE_REPOSITORY,
|
|
10
|
+
CROSS_CHAIN_GOVERNANCE,
|
|
11
|
+
CROSS_CHAIN_MULTISIG,
|
|
12
|
+
INSTANCE_MANAGER,
|
|
13
|
+
MARKET_CONFIGURATOR_FACTORY,
|
|
14
|
+
PRICE_FEED_STORE,
|
|
15
|
+
TOKEN_COMPRESSOR
|
|
16
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { AP_PRICE_FEED_COMPRESSOR } from "../../../sdk/constants/index.js";
|
|
2
|
+
import { GearboxSDK } from "../../../sdk/index.js";
|
|
3
|
+
import { AddressProviderContract } from "../../bindings/index.js";
|
|
4
|
+
import { Addresses } from "../../deployment/addresses.js";
|
|
5
|
+
import { deepJsonParse } from "../format.js";
|
|
6
|
+
import { getUpdatablePriceFeeds } from "./get-updatable-feeds.js";
|
|
7
|
+
function getCallTouchedPriceFeeds(parsedCall) {
|
|
8
|
+
const priceFeeds = [];
|
|
9
|
+
const deepParsedArgs = deepJsonParse(parsedCall.args);
|
|
10
|
+
function searchForPriceFeeds(obj) {
|
|
11
|
+
if (obj === null || obj === void 0) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (Array.isArray(obj)) {
|
|
15
|
+
obj.forEach((item) => {
|
|
16
|
+
searchForPriceFeeds(item);
|
|
17
|
+
});
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (typeof obj === "object") {
|
|
21
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
22
|
+
if (key === "priceFeed" || key === "underlyingPriceFeed") {
|
|
23
|
+
priceFeeds.push(value);
|
|
24
|
+
}
|
|
25
|
+
searchForPriceFeeds(value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
searchForPriceFeeds(deepParsedArgs);
|
|
30
|
+
return priceFeeds;
|
|
31
|
+
}
|
|
32
|
+
function getCallsTouchedPriceFeeds(parsedCalls) {
|
|
33
|
+
return parsedCalls.flatMap((call) => getCallTouchedPriceFeeds(call));
|
|
34
|
+
}
|
|
35
|
+
async function getCallsTouchedUpdatablePriceFeeds({
|
|
36
|
+
parsedCalls,
|
|
37
|
+
client
|
|
38
|
+
}) {
|
|
39
|
+
const addressProvider = new AddressProviderContract(
|
|
40
|
+
Addresses.ADDRESS_PROVIDER,
|
|
41
|
+
client
|
|
42
|
+
);
|
|
43
|
+
const pfCompressor = await addressProvider.getAddressOrRevert(
|
|
44
|
+
AP_PRICE_FEED_COMPRESSOR,
|
|
45
|
+
310n
|
|
46
|
+
);
|
|
47
|
+
const sdk = await GearboxSDK.attach({
|
|
48
|
+
rpcURLs: [client.transport.url],
|
|
49
|
+
marketConfigurators: []
|
|
50
|
+
});
|
|
51
|
+
const touchedFeeds = parsedCalls.flatMap(
|
|
52
|
+
(call) => getCallTouchedPriceFeeds(call)
|
|
53
|
+
);
|
|
54
|
+
return (await getUpdatablePriceFeeds({
|
|
55
|
+
sdk,
|
|
56
|
+
client,
|
|
57
|
+
pfCompressor,
|
|
58
|
+
priceFeeds: touchedFeeds
|
|
59
|
+
})).map((feed) => feed.address);
|
|
60
|
+
}
|
|
61
|
+
export {
|
|
62
|
+
getCallTouchedPriceFeeds,
|
|
63
|
+
getCallsTouchedPriceFeeds,
|
|
64
|
+
getCallsTouchedUpdatablePriceFeeds
|
|
65
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import {
|
|
2
|
+
decodeFunctionData,
|
|
3
|
+
multicall3Abi,
|
|
4
|
+
parseAbi
|
|
5
|
+
} from "viem";
|
|
6
|
+
import {
|
|
7
|
+
GearboxSDK
|
|
8
|
+
} from "../../../sdk/index.js";
|
|
9
|
+
import { createRawTx } from "../../../sdk/utils/index.js";
|
|
10
|
+
import {
|
|
11
|
+
PriceFeedStoreContract
|
|
12
|
+
} from "../../bindings/index.js";
|
|
13
|
+
import { Addresses } from "../../deployment/addresses.js";
|
|
14
|
+
function getUpdateCalldata(tx) {
|
|
15
|
+
const data = decodeFunctionData({
|
|
16
|
+
abi: parseAbi(["function updatePrice(bytes calldata data) external"]),
|
|
17
|
+
data: tx.raw.callData
|
|
18
|
+
});
|
|
19
|
+
return {
|
|
20
|
+
priceFeed: tx.raw.to,
|
|
21
|
+
data: data.args[0]
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
async function getPriceUpdateTx({
|
|
25
|
+
client,
|
|
26
|
+
priceFeeds,
|
|
27
|
+
useMulticall3 = false
|
|
28
|
+
}) {
|
|
29
|
+
const pfStore = new PriceFeedStoreContract(
|
|
30
|
+
Addresses.PRICE_FEED_STORE,
|
|
31
|
+
client
|
|
32
|
+
);
|
|
33
|
+
const sdk = await GearboxSDK.attach({
|
|
34
|
+
rpcURLs: [client.transport.url],
|
|
35
|
+
marketConfigurators: []
|
|
36
|
+
});
|
|
37
|
+
const updateTxs = await sdk.priceFeeds.generateExternalPriceFeedsUpdateTxs(priceFeeds);
|
|
38
|
+
if (useMulticall3) {
|
|
39
|
+
const multicallCalls = updateTxs.txs.map((tx) => ({
|
|
40
|
+
target: tx.raw.to,
|
|
41
|
+
allowFailure: false,
|
|
42
|
+
callData: tx.raw.callData
|
|
43
|
+
}));
|
|
44
|
+
if (multicallCalls.length === 0) {
|
|
45
|
+
return void 0;
|
|
46
|
+
}
|
|
47
|
+
const multicall3Address = client.chain?.contracts?.multicall3?.address;
|
|
48
|
+
if (!multicall3Address) {
|
|
49
|
+
throw new Error("Multicall3 address not found");
|
|
50
|
+
}
|
|
51
|
+
const multicallTx = createRawTx(multicall3Address, {
|
|
52
|
+
abi: multicall3Abi,
|
|
53
|
+
functionName: "aggregate3",
|
|
54
|
+
args: [multicallCalls]
|
|
55
|
+
});
|
|
56
|
+
return multicallTx;
|
|
57
|
+
}
|
|
58
|
+
const priceUpdates = updateTxs.txs.map((tx) => getUpdateCalldata(tx));
|
|
59
|
+
if (priceUpdates.length === 0) {
|
|
60
|
+
return void 0;
|
|
61
|
+
}
|
|
62
|
+
return pfStore.updatePrices(priceUpdates);
|
|
63
|
+
}
|
|
64
|
+
export {
|
|
65
|
+
getPriceUpdateTx,
|
|
66
|
+
getUpdateCalldata
|
|
67
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { multicall3Abi } from "viem";
|
|
2
|
+
import { GearboxSDK } from "../../../sdk/index.js";
|
|
3
|
+
import { simulateMulticall } from "../../../sdk/utils/viem/index.js";
|
|
4
|
+
const latestRoundDataAbi = [
|
|
5
|
+
{
|
|
6
|
+
inputs: [],
|
|
7
|
+
name: "latestRoundData",
|
|
8
|
+
outputs: [
|
|
9
|
+
{ name: "roundId", type: "uint80" },
|
|
10
|
+
{ name: "answer", type: "int256" },
|
|
11
|
+
{ name: "startedAt", type: "uint256" },
|
|
12
|
+
{ name: "updatedAt", type: "uint256" },
|
|
13
|
+
{ name: "answeredInRound", type: "uint80" }
|
|
14
|
+
],
|
|
15
|
+
stateMutability: "view",
|
|
16
|
+
type: "function"
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
function getLatestRoundDataCall(priceFeed) {
|
|
20
|
+
return {
|
|
21
|
+
address: priceFeed,
|
|
22
|
+
abi: latestRoundDataAbi,
|
|
23
|
+
functionName: "latestRoundData",
|
|
24
|
+
args: []
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
async function getPricesChunk({
|
|
28
|
+
client,
|
|
29
|
+
priceFeeds,
|
|
30
|
+
sdk
|
|
31
|
+
}) {
|
|
32
|
+
const updateCall = priceFeeds.map(
|
|
33
|
+
(priceFeed) => getLatestRoundDataCall(priceFeed)
|
|
34
|
+
);
|
|
35
|
+
const updateTxs = await sdk.priceFeeds.generateExternalPriceFeedsUpdateTxs(priceFeeds);
|
|
36
|
+
const multicallCalls = updateTxs.txs.map((tx) => ({
|
|
37
|
+
target: tx.raw.to,
|
|
38
|
+
allowFailure: true,
|
|
39
|
+
callData: tx.raw.callData
|
|
40
|
+
}));
|
|
41
|
+
const multicall3Address = client.chain?.contracts?.multicall3?.address;
|
|
42
|
+
if (!multicall3Address) {
|
|
43
|
+
throw new Error("Multicall3 address not found");
|
|
44
|
+
}
|
|
45
|
+
const multicallResult = await simulateMulticall(client, {
|
|
46
|
+
contracts: [
|
|
47
|
+
{
|
|
48
|
+
address: multicall3Address,
|
|
49
|
+
// @ts-expect-error
|
|
50
|
+
abi: multicall3Abi,
|
|
51
|
+
// @ts-expect-error
|
|
52
|
+
functionName: "aggregate3",
|
|
53
|
+
args: [multicallCalls]
|
|
54
|
+
},
|
|
55
|
+
...updateCall
|
|
56
|
+
],
|
|
57
|
+
allowFailure: true
|
|
58
|
+
});
|
|
59
|
+
const prices = multicallResult.results.slice(1).map((result) => {
|
|
60
|
+
if (result.status === "failure") {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return result.result[1];
|
|
64
|
+
});
|
|
65
|
+
const priceEntries = priceFeeds.map(
|
|
66
|
+
(priceFeed, index) => [
|
|
67
|
+
priceFeed,
|
|
68
|
+
prices[index] ?? null
|
|
69
|
+
]
|
|
70
|
+
);
|
|
71
|
+
return Object.fromEntries(priceEntries);
|
|
72
|
+
}
|
|
73
|
+
async function getPrices({
|
|
74
|
+
client,
|
|
75
|
+
priceFeeds,
|
|
76
|
+
chunkSize = 10
|
|
77
|
+
}) {
|
|
78
|
+
const sdk = await GearboxSDK.attach({
|
|
79
|
+
rpcURLs: [client.transport.url],
|
|
80
|
+
marketConfigurators: [],
|
|
81
|
+
redstone: {
|
|
82
|
+
ignoreMissingFeeds: true
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
const chunks = [];
|
|
86
|
+
for (let i = 0; i < priceFeeds.length; i += chunkSize) {
|
|
87
|
+
chunks.push(priceFeeds.slice(i, i + chunkSize));
|
|
88
|
+
}
|
|
89
|
+
const results = await Promise.all(
|
|
90
|
+
chunks.map((chunk) => getPricesChunk({ client, priceFeeds: chunk, sdk }))
|
|
91
|
+
);
|
|
92
|
+
return results.reduce(
|
|
93
|
+
(acc, result) => ({ ...acc, ...result }),
|
|
94
|
+
{}
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
export {
|
|
98
|
+
getPrices
|
|
99
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getContract } from "viem";
|
|
2
|
+
import { priceFeedCompressorAbi } from "../../../abi/compressors/priceFeedCompressor.js";
|
|
3
|
+
import {
|
|
4
|
+
PythPriceFeed,
|
|
5
|
+
RedstonePriceFeedContract
|
|
6
|
+
} from "../../../sdk/index.js";
|
|
7
|
+
import { bytes32ToString } from "../../../sdk/utils/index.js";
|
|
8
|
+
async function getUpdatablePriceFeeds(args) {
|
|
9
|
+
const { sdk, client, pfCompressor, priceFeeds } = args;
|
|
10
|
+
const priceFeedCompressor = getContract({
|
|
11
|
+
address: pfCompressor,
|
|
12
|
+
abi: priceFeedCompressorAbi,
|
|
13
|
+
client
|
|
14
|
+
});
|
|
15
|
+
const updatablePriceFeeds = (await priceFeedCompressor.read.loadPriceFeedTree([
|
|
16
|
+
priceFeeds
|
|
17
|
+
])).filter(
|
|
18
|
+
(data) => ["PRICE_FEED::PYTH", "PRICE_FEED::REDSTONE"].includes(
|
|
19
|
+
bytes32ToString(data.baseParams.contractType)
|
|
20
|
+
)
|
|
21
|
+
).map((data) => {
|
|
22
|
+
if (bytes32ToString(data.baseParams.contractType) === "PRICE_FEED::PYTH") {
|
|
23
|
+
return new PythPriceFeed(sdk, data);
|
|
24
|
+
}
|
|
25
|
+
return new RedstonePriceFeedContract(sdk, data);
|
|
26
|
+
});
|
|
27
|
+
return updatablePriceFeeds;
|
|
28
|
+
}
|
|
29
|
+
export {
|
|
30
|
+
getUpdatablePriceFeeds
|
|
31
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
function normalizeSignature(signature) {
|
|
2
|
+
const sig = signature.startsWith("0x") ? signature.slice(2) : signature;
|
|
3
|
+
let v = parseInt(sig.slice(128, 130), 16);
|
|
4
|
+
if (v === 0 || v === 1) {
|
|
5
|
+
v += 27;
|
|
6
|
+
}
|
|
7
|
+
return `0x${sig.slice(0, 128)}${v.toString(16)}`;
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
normalizeSignature
|
|
11
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AdapterType } from "../types";
|
|
1
|
+
import { AdapterType } from "../types.js";
|
|
2
2
|
import {
|
|
3
3
|
ADDRESS_REFERRAL_ADAPTER_ABI,
|
|
4
4
|
BASIC_ADAPTER_ABI,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
STAKED_TOKEN_ADAPTER_ABI,
|
|
11
11
|
STAKING_REWARDS_ADAPTER_ABI,
|
|
12
12
|
UINT_REFERRAL_ADAPTER_ABI
|
|
13
|
-
} from "./conctructorAbiPatterns";
|
|
13
|
+
} from "./conctructorAbiPatterns.js";
|
|
14
14
|
const adapterConstructorAbi = {
|
|
15
15
|
// DEX and protocol adapters - basic pattern [creditManager, target]
|
|
16
16
|
[AdapterType.BALANCER_VAULT]: {
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
decodeFunctionData
|
|
4
4
|
} from "viem";
|
|
5
5
|
import { json_stringify } from "../../../sdk/index.js";
|
|
6
|
-
import { AdapterType } from "../types";
|
|
6
|
+
import { AdapterType } from "../types.js";
|
|
7
7
|
import {
|
|
8
8
|
adapterActionAbi,
|
|
9
9
|
adapterActionSelectors,
|
|
10
10
|
adapterConstructorAbi
|
|
11
|
-
} from ".";
|
|
11
|
+
} from "./index.js";
|
|
12
12
|
function getAdapterType(value) {
|
|
13
13
|
const cleanValue = value.replace(/\0/g, "").trim();
|
|
14
14
|
return Object.values(AdapterType).includes(cleanValue) ? cleanValue : null;
|
|
@@ -19,7 +19,7 @@ const HUMAN_READABLE_TITLES = {
|
|
|
19
19
|
PT_uptBTC_14AUG2025: "pt.uptBTC(14.08.25)",
|
|
20
20
|
PT_sUSDX_1SEP2025: "pt.sUSDX(1.09.25)",
|
|
21
21
|
PT_sUSDf_25SEP2025: "pt.sUSDf(25.09.25)",
|
|
22
|
-
|
|
22
|
+
"PT-sUSDf-29JAN2026": "pt.sUSDf(29.01.26)",
|
|
23
23
|
PT_USDf_29JAN2026: "pt.USDf(29.01.26)",
|
|
24
24
|
stkcvxllamathena_v3_1: "stkcvxllamathena",
|
|
25
25
|
stkcvxRLUSDUSDC_v3_1: "stkcvxRLUSDUSDC",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Address } from "viem";
|
|
2
2
|
import type { GearboxSDK } from "../../sdk/index.js";
|
|
3
|
-
import type { AnvilClient } from "../createAnvilClient";
|
|
3
|
+
import type { AnvilClient } from "../createAnvilClient.js";
|
|
4
4
|
import type { IMinter } from "./types.js";
|
|
5
|
-
export declare function createMinter(sdk: GearboxSDK, anvil: AnvilClient,
|
|
5
|
+
export declare function createMinter(sdk: GearboxSDK, anvil: AnvilClient, _token: Address): IMinter;
|