@gearbox-protocol/sdk 17.11.0 → 17.12.0
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/permissionless/api/oracles/schemas.js +1 -14
- package/dist/cjs/permissionless/api/transactions/InstanceOwnerTransactions.js +16 -12
- package/dist/cjs/permissionless/bindings/price-feed-store.js +0 -2
- package/dist/esm/dev/AccountOpener.js +1 -1
- package/dist/esm/dev/withdrawalUtils.js +1 -1
- package/dist/esm/history/trace/extractTransfers.js +1 -1
- package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +2 -2
- package/dist/esm/onchain/accounts/liquidations/LiquidationsService.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
- package/dist/esm/onchain/base/TokensMeta.js +3 -3
- package/dist/esm/onchain/core/createAddressProvider.js +1 -1
- package/dist/esm/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
- package/dist/esm/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
- package/dist/esm/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
- package/dist/esm/onchain/market/pool/PoolV310Contract.js +1 -1
- package/dist/esm/onchain/market/rwa/createDegenNFT.js +1 -1
- package/dist/esm/onchain/market/zapper/IETHZapperContract.js +1 -1
- package/dist/esm/onchain/market/zapper/ZapperContract.js +1 -1
- package/dist/esm/onchain/preview/preview/previewPoolPositionOperation.js +2 -2
- package/dist/esm/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
- package/dist/esm/permissionless/api/oracles/schemas.js +2 -14
- package/dist/esm/permissionless/api/transactions/InstanceOwnerTransactions.js +16 -12
- package/dist/esm/permissionless/bindings/price-feed-store.js +0 -2
- package/dist/types/permissionless/api/index.d.ts +3 -3
- package/dist/types/permissionless/api/oracles/index.d.ts +2 -2
- package/dist/types/permissionless/api/oracles/schemas.d.ts +13 -42
- package/dist/types/permissionless/api/oracles/types.d.ts +5 -17
- package/dist/types/permissionless/api/transactions/InstanceOwnerTransactions.d.ts +14 -6
- package/dist/types/permissionless/api/transactions/index.d.ts +2 -2
- package/dist/types/permissionless/api/transactions/types.d.ts +23 -1
- package/dist/types/permissionless/core/pricefeed.d.ts +0 -1
- package/dist/types/permissionless/index.d.ts +3 -3
- package/package.json +1 -1
|
@@ -16,29 +16,17 @@ const priceFeedSchema = zod_v4.z.looseObject({
|
|
|
16
16
|
contractType: zod_v4.z.string(),
|
|
17
17
|
version: zod_v4.z.number(),
|
|
18
18
|
deployedBy: require_permissionless_api_schemas.addressSchema,
|
|
19
|
-
isInStore: zod_v4.z.boolean(),
|
|
20
19
|
stalenessPeriod: zod_v4.z.number(),
|
|
21
20
|
name: zod_v4.z.string()
|
|
22
21
|
});
|
|
23
|
-
/** {@link PermissionlessPriceFeedStatus} */
|
|
24
|
-
const priceFeedStatusSchema = zod_v4.z.enum([
|
|
25
|
-
"private",
|
|
26
|
-
"inStore",
|
|
27
|
-
"pendingForbidden",
|
|
28
|
-
"forbidden"
|
|
29
|
-
]);
|
|
30
22
|
/** {@link PermissionlessAsset} */
|
|
31
23
|
const assetSchema = zod_v4.z.looseObject({
|
|
32
24
|
address: require_permissionless_api_schemas.addressSchema,
|
|
33
25
|
symbol: zod_v4.z.string(),
|
|
34
26
|
name: zod_v4.z.string(),
|
|
35
27
|
decimals: zod_v4.z.number(),
|
|
36
|
-
isInStore: zod_v4.z.boolean(),
|
|
37
28
|
owner: require_permissionless_api_schemas.addressSchema,
|
|
38
|
-
priceFeeds: zod_v4.z.array(
|
|
39
|
-
pricefeed: priceFeedSchema,
|
|
40
|
-
status: priceFeedStatusSchema
|
|
41
|
-
}))
|
|
29
|
+
priceFeeds: zod_v4.z.array(priceFeedSchema)
|
|
42
30
|
});
|
|
43
31
|
/** {@link PermissionlessPriceFeedStore} */
|
|
44
32
|
const priceFeedStoreSchema = zod_v4.z.looseObject({
|
|
@@ -59,6 +47,5 @@ const pricesSchema = zod_v4.z.looseObject({
|
|
|
59
47
|
//#endregion
|
|
60
48
|
exports.assetSchema = assetSchema;
|
|
61
49
|
exports.priceFeedSchema = priceFeedSchema;
|
|
62
|
-
exports.priceFeedStatusSchema = priceFeedStatusSchema;
|
|
63
50
|
exports.priceFeedStoreSchema = priceFeedStoreSchema;
|
|
64
51
|
exports.pricesSchema = pricesSchema;
|
|
@@ -35,6 +35,8 @@ const lower = (value) => value.toLowerCase();
|
|
|
35
35
|
* const txs = await permissionless.transactions.addFeeds({
|
|
36
36
|
* chainId: 1,
|
|
37
37
|
* owner: curator,
|
|
38
|
+
* feeds: [feed],
|
|
39
|
+
* pairs: [{ asset, priceFeed: feed.address }],
|
|
38
40
|
* });
|
|
39
41
|
* ```
|
|
40
42
|
**/
|
|
@@ -46,19 +48,21 @@ var InstanceOwnerTransactions = class {
|
|
|
46
48
|
this.#oracles = oracles;
|
|
47
49
|
}
|
|
48
50
|
/**
|
|
49
|
-
* The batch that adds the
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
51
|
+
* The batch that adds the named feeds to the store and allows the named
|
|
52
|
+
* edges on it.
|
|
53
|
+
*
|
|
54
|
+
* Both lists come from the caller. Which feeds are private, and which asset
|
|
55
|
+
* each is meant to price, is held wherever the curator prepared them — the
|
|
56
|
+
* backend indexes the store, so a feed that has not reached it yet is not
|
|
57
|
+
* something this client can discover.
|
|
58
|
+
*
|
|
59
|
+
* Only feeds that actually carry an edge are added: a feed nobody priced
|
|
60
|
+
* would land in the store doing nothing.
|
|
53
61
|
**/
|
|
54
|
-
async addFeeds({ chainId, owner }) {
|
|
55
|
-
const
|
|
56
|
-
const pairs = store.assets.flatMap((asset) => asset.priceFeeds.filter((entry) => entry.status === "private").map((entry) => ({
|
|
57
|
-
asset: asset.address,
|
|
58
|
-
priceFeed: entry.pricefeed.address
|
|
59
|
-
})));
|
|
62
|
+
async addFeeds({ chainId, owner, feeds, pairs }) {
|
|
63
|
+
const batch = await this.#batchContext(chainId);
|
|
60
64
|
const connected = new Set(pairs.map((pair) => lower(pair.priceFeed)));
|
|
61
|
-
const feedsToAdd =
|
|
65
|
+
const feedsToAdd = feeds.filter((feed) => connected.has(lower(feed.address)));
|
|
62
66
|
const txs = [...feedsToAdd.map((feed) => batch.store.addPriceFeedTx(feed.address, feed.stalenessPeriod, feed.name)), ...pairs.map((pair) => batch.store.allowPriceFeedTx(pair.asset, pair.priceFeed))];
|
|
63
67
|
return this.#envelope({
|
|
64
68
|
batch,
|
|
@@ -76,7 +80,7 @@ var InstanceOwnerTransactions = class {
|
|
|
76
80
|
async changeNames({ chainId, owner, names }) {
|
|
77
81
|
const [batch, store] = await Promise.all([this.#batchContext(chainId), this.#oracles.store({ chainId })]);
|
|
78
82
|
const feedToAssets = await this.#feedToAssets(batch.store);
|
|
79
|
-
const inStore = new Map(store.priceFeeds.
|
|
83
|
+
const inStore = new Map(store.priceFeeds.map((feed) => [lower(feed.address), feed]));
|
|
80
84
|
const txs = [];
|
|
81
85
|
for (const [address, name] of Object.entries(names)) {
|
|
82
86
|
const feed = inStore.get(lower(address));
|
|
@@ -46,7 +46,6 @@ var PriceFeedStoreContract = class extends require_onchain_base_BaseContract.Bas
|
|
|
46
46
|
deployedBy: this.address,
|
|
47
47
|
stalenessPeriod: info.stalenessPeriod,
|
|
48
48
|
name: info.name,
|
|
49
|
-
isInStore: true,
|
|
50
49
|
parameters: {}
|
|
51
50
|
}));
|
|
52
51
|
}
|
|
@@ -277,7 +276,6 @@ var PriceFeedStoreContract = class extends require_onchain_base_BaseContract.Bas
|
|
|
277
276
|
deployedBy: this.address,
|
|
278
277
|
stalenessPeriod: Number(info.stalenessPeriod),
|
|
279
278
|
name: info.name,
|
|
280
|
-
isInStore: true,
|
|
281
279
|
parameters: {}
|
|
282
280
|
};
|
|
283
281
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { iCreditFacadeV310Abi } from "../abi/310/generated.js";
|
|
2
1
|
import { ierc20Abi } from "../abi/iERC20.js";
|
|
2
|
+
import { iCreditFacadeV310Abi } from "../abi/310/generated.js";
|
|
3
3
|
import { AddressMap } from "../onchain/utils/AddressMap.js";
|
|
4
4
|
import { AddressSet } from "../onchain/utils/AddressSet.js";
|
|
5
5
|
import { AssetsMap } from "../onchain/utils/AssetsMap.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { iWithdrawalCompressorV313Abi } from "../abi/IWithdrawalCompressorV313.js";
|
|
1
2
|
import { getNetworkType } from "../onchain/chain/chains.js";
|
|
2
3
|
import { getWithdrawalCompressorAddress } from "../onchain/accounts/withdrawal-compressor/addresses.js";
|
|
3
|
-
import { iWithdrawalCompressorV313Abi } from "../abi/IWithdrawalCompressorV313.js";
|
|
4
4
|
import "../onchain/index.js";
|
|
5
5
|
import { iMidasDataFeedAbi, iMidasRedemptionVaultAbi, midasGatewayAbi, midasRedeemerAbi, midasRedemptionVaultPhantomTokenAbi, securitizeRedeemerAbi, securitizeRedemptionGatewayAbi, securitizeRedemptionPhantomTokenAbi } from "./withdrawalAbi.js";
|
|
6
6
|
import { erc20Abi, hexToString, parseAbi, parseEther } from "viem";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { iCreditFacadeV310Abi } from "../../abi/310/generated.js";
|
|
2
1
|
import { ierc20Abi } from "../../abi/iERC20.js";
|
|
2
|
+
import { iCreditFacadeV310Abi } from "../../abi/310/generated.js";
|
|
3
3
|
import { AddressMap } from "../../onchain/utils/AddressMap.js";
|
|
4
4
|
import "../../onchain/index.js";
|
|
5
5
|
import { UnexpectedFacadeEventOrderError } from "./errors.js";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { iBaseRewardPoolAbi } from "../../abi/iBaseRewardPool.js";
|
|
2
|
+
import { ierc4626AdapterAbi } from "../../abi/ierc4626Adapter.js";
|
|
1
3
|
import { AP_REWARDS_COMPRESSOR } from "../constants/address-provider.js";
|
|
2
4
|
import { ADDRESS_0X0 } from "../constants/addresses.js";
|
|
3
5
|
import { MAX_UINT256 } from "../constants/math.js";
|
|
@@ -8,8 +10,6 @@ import "../base/index.js";
|
|
|
8
10
|
import { AccountBotsService } from "./bots/AccountBotsService.js";
|
|
9
11
|
import "./bots/index.js";
|
|
10
12
|
import { rewardsCompressorAbi } from "../../abi/compressors/rewardsCompressor.js";
|
|
11
|
-
import { iBaseRewardPoolAbi } from "../../abi/iBaseRewardPool.js";
|
|
12
|
-
import { ierc4626AdapterAbi } from "../../abi/ierc4626Adapter.js";
|
|
13
13
|
import { expectedBalanceDeltas } from "../market/credit/expectedBalanceDeltas.js";
|
|
14
14
|
import "../market/index.js";
|
|
15
15
|
import { CreditAccountCompressor } from "./credit-account-compressor/CreditAccountCompressor.js";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { iLiquidationCompressorV313Abi } from "../../../abi/ILiquidationCompressorV313.js";
|
|
1
2
|
import { AddressSet } from "../../utils/AddressSet.js";
|
|
2
3
|
import { bytes32ToString } from "../../utils/bytes32ToString.js";
|
|
3
4
|
import { ADDRESS_0X0 } from "../../constants/addresses.js";
|
|
@@ -19,7 +20,6 @@ import { SecuritizeLiquidatorContract } from "../../market/rwa/securitize/Securi
|
|
|
19
20
|
import "../../market/rwa/securitize/index.js";
|
|
20
21
|
import "../../market/index.js";
|
|
21
22
|
import { LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS } from "./constants.js";
|
|
22
|
-
import { iLiquidationCompressorV313Abi } from "../../../abi/ILiquidationCompressorV313.js";
|
|
23
23
|
import { skipLiquidatableAccount } from "./skipLiquidatableAccount.js";
|
|
24
24
|
//#region src/onchain/accounts/liquidations/LiquidationsService.ts
|
|
25
25
|
/**
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
|
|
1
2
|
import { BaseContract } from "../../base/BaseContract.js";
|
|
2
3
|
import "../../base/index.js";
|
|
3
4
|
import { sdkErr, sdkOk } from "../../../model/result.js";
|
|
4
5
|
import "../../../model/index.js";
|
|
5
6
|
import { decodeDelayedIntent } from "./intent-codec.js";
|
|
6
|
-
import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
|
|
7
7
|
//#region src/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.ts
|
|
8
8
|
const abi = iRedemptionLoggerV310Abi;
|
|
9
9
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
|
|
2
1
|
import { iWithdrawalCompressorV310Abi } from "../../../abi/IWithdrawalCompressorV310.js";
|
|
2
|
+
import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
|
|
3
3
|
//#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.ts
|
|
4
4
|
const abi = iWithdrawalCompressorV310Abi;
|
|
5
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
|
|
2
1
|
import { iWithdrawalCompressorV311Abi } from "../../../abi/IWithdrawalCompressorV311.js";
|
|
2
|
+
import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
|
|
3
3
|
//#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.ts
|
|
4
4
|
const abi = iWithdrawalCompressorV311Abi;
|
|
5
5
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { iWithdrawalCompressorV313Abi } from "../../../abi/IWithdrawalCompressorV313.js";
|
|
1
2
|
import { encodeDelayedIntent } from "./intent-codec.js";
|
|
2
3
|
import { AbstractWithdrawalCompressorContract, iCreditAccountAbi, toClaimableWithdrawal, toPendingWithdrawal, toRequestableWithdrawal } from "./AbstractWithdrawalCompressorContract.js";
|
|
3
|
-
import { iWithdrawalCompressorV313Abi } from "../../../abi/IWithdrawalCompressorV313.js";
|
|
4
4
|
import { toWithdrawalStatus } from "./types.js";
|
|
5
5
|
//#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.ts
|
|
6
6
|
const abi = iWithdrawalCompressorV313Abi;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import { iExpirableAbi } from "../../abi/iExpirable.js";
|
|
2
|
+
import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
|
|
3
|
+
import { iVersionAbi } from "../../abi/iVersion.js";
|
|
1
4
|
import { AddressMap } from "../utils/AddressMap.js";
|
|
2
5
|
import { AddressSet } from "../utils/AddressSet.js";
|
|
3
6
|
import { bytes32ToString } from "../utils/bytes32ToString.js";
|
|
4
7
|
import { getAssetType } from "../chain/chains.js";
|
|
5
8
|
import { formatBN } from "../utils/formatter.js";
|
|
6
9
|
import "../utils/index.js";
|
|
7
|
-
import { iExpirableAbi } from "../../abi/iExpirable.js";
|
|
8
|
-
import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
|
|
9
|
-
import { iVersionAbi } from "../../abi/iVersion.js";
|
|
10
10
|
import { SdkRWADataNotLoadedError } from "../core/errors.js";
|
|
11
11
|
import { executeMulticallBatches } from "../utils/viem/executeMulticallBatches.js";
|
|
12
12
|
//#region src/onchain/base/TokensMeta.ts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { iVersionAbi } from "../../abi/iVersion.js";
|
|
1
2
|
import "../constants/address-provider.js";
|
|
2
3
|
import { isV310 } from "../constants/versions.js";
|
|
3
4
|
import "../constants/index.js";
|
|
4
5
|
import { hexEq } from "../utils/hex.js";
|
|
5
|
-
import { iVersionAbi } from "../../abi/iVersion.js";
|
|
6
6
|
import { AddressProviderV310Contract } from "./AddressProviderV310Contract.js";
|
|
7
7
|
//#region src/onchain/core/createAddressProvider.ts
|
|
8
8
|
const OVERRIDE_ADDRESSES = {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AbstractAdapterContract } from "./AbstractAdapter.js";
|
|
2
1
|
import { accountMigratorAbi } from "../../../../abi/AccountMigrator.js";
|
|
2
|
+
import { AbstractAdapterContract } from "./AbstractAdapter.js";
|
|
3
3
|
//#region src/onchain/market/adapters/contracts/AccountMigratorAdapterContract.ts
|
|
4
4
|
const abi = accountMigratorAbi;
|
|
5
5
|
const protocolAbi = accountMigratorAbi;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { ierc4626AdapterAbi } from "../../../../abi/ierc4626Adapter.js";
|
|
1
2
|
import { MissingSerializedParamsError } from "../../../base/errors.js";
|
|
2
3
|
import "../../../base/index.js";
|
|
3
|
-
import { ierc4626AdapterAbi } from "../../../../abi/ierc4626Adapter.js";
|
|
4
4
|
import { iERC4626Abi } from "../abi/targetContractAbi.js";
|
|
5
5
|
import { fnSigToName, swapFromTransfers } from "../transferHelpers.js";
|
|
6
6
|
import { AbstractAdapterContract } from "./AbstractAdapter.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { iPausableAbi } from "../../../abi/iPausable.js";
|
|
1
2
|
import { iCreditFacadeMulticallV310Abi, iCreditFacadeV310Abi } from "../../../abi/310/generated.js";
|
|
2
3
|
import { BaseContract } from "../../base/BaseContract.js";
|
|
3
4
|
import "../../base/index.js";
|
|
4
|
-
import { iPausableAbi } from "../../../abi/iPausable.js";
|
|
5
5
|
//#region src/onchain/market/credit/CreditFacadeV310BaseContract.ts
|
|
6
6
|
const abi = [
|
|
7
7
|
...iCreditFacadeV310Abi,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { iPausableAbi } from "../../../abi/iPausable.js";
|
|
1
2
|
import { iPoolV310Abi } from "../../../abi/310/generated.js";
|
|
2
3
|
import { AddressMap } from "../../utils/AddressMap.js";
|
|
3
4
|
import { RAY } from "../../constants/math.js";
|
|
@@ -7,7 +8,6 @@ import "../../utils/index.js";
|
|
|
7
8
|
import { SdkRWADataNotLoadedError } from "../../core/errors.js";
|
|
8
9
|
import { BaseContract } from "../../base/BaseContract.js";
|
|
9
10
|
import "../../base/index.js";
|
|
10
|
-
import { iPausableAbi } from "../../../abi/iPausable.js";
|
|
11
11
|
//#region src/onchain/market/pool/PoolV310Contract.ts
|
|
12
12
|
const abi = [...iPoolV310Abi, ...iPausableAbi];
|
|
13
13
|
var PoolV310Contract = class extends BaseContract {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { iVersionAbi } from "../../../abi/iVersion.js";
|
|
1
2
|
import { bytes32ToString } from "../../utils/bytes32ToString.js";
|
|
2
3
|
import "../../utils/index.js";
|
|
3
|
-
import { iVersionAbi } from "../../../abi/iVersion.js";
|
|
4
4
|
import { iMidasDegenNFTAbi } from "../../../abi/rwa/iMidasDegenNFT.js";
|
|
5
5
|
import { DEGEN_NFT_MIDAS } from "./midas/constants.js";
|
|
6
6
|
import { MidasDegenNFT } from "./midas/MidasDegenNFT.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ZapperContract } from "./ZapperContract.js";
|
|
2
1
|
import { iethZapperAbi } from "../../../abi/iETHZapper.js";
|
|
2
|
+
import { ZapperContract } from "./ZapperContract.js";
|
|
3
3
|
//#region src/onchain/market/zapper/IETHZapperContract.ts
|
|
4
4
|
const abi = iethZapperAbi;
|
|
5
5
|
var IETHZapperContract = class extends ZapperContract {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { iZapperAbi } from "../../../abi/iZapper.js";
|
|
1
2
|
import { BaseContract } from "../../base/BaseContract.js";
|
|
2
3
|
import "../../base/index.js";
|
|
3
4
|
import { sdkErr, sdkOk } from "../../../model/result.js";
|
|
4
5
|
import "../../../model/index.js";
|
|
5
|
-
import { iZapperAbi } from "../../../abi/iZapper.js";
|
|
6
6
|
//#region src/onchain/market/zapper/ZapperContract.ts
|
|
7
7
|
/**
|
|
8
8
|
* Base contract for every Gearbox zapper. Specialized zappers (e.g.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { iPoolV310Abi } from "../../../abi/310/generated.js";
|
|
2
1
|
import { ierc20Abi } from "../../../abi/iERC20.js";
|
|
2
|
+
import { iZapperAbi } from "../../../abi/iZapper.js";
|
|
3
|
+
import { iPoolV310Abi } from "../../../abi/310/generated.js";
|
|
3
4
|
import { sdkErr, sdkOk } from "../../../model/result.js";
|
|
4
5
|
import "../../../model/index.js";
|
|
5
|
-
import { iZapperAbi } from "../../../abi/iZapper.js";
|
|
6
6
|
//#region src/onchain/preview/preview/previewPoolPositionOperation.ts
|
|
7
7
|
function previewRead(operation) {
|
|
8
8
|
switch (operation.operation) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { errorAbis } from "../../../abi/errors.js";
|
|
2
|
-
import { generateCastTraceCall } from "./cast.js";
|
|
3
2
|
import { iUpdatablePriceFeedAbi } from "../../../abi/iUpdatablePriceFeed.js";
|
|
3
|
+
import { generateCastTraceCall } from "./cast.js";
|
|
4
4
|
import { simulateMulticall } from "./simulateMulticall.js";
|
|
5
5
|
import { BaseError, CallExecutionError, ContractFunctionRevertedError, decodeFunctionData, decodeFunctionResult, encodeFunctionData, parseAbi } from "viem";
|
|
6
6
|
import { getAction, parseAccount } from "viem/utils";
|
|
@@ -15,29 +15,17 @@ const priceFeedSchema = z.looseObject({
|
|
|
15
15
|
contractType: z.string(),
|
|
16
16
|
version: z.number(),
|
|
17
17
|
deployedBy: addressSchema,
|
|
18
|
-
isInStore: z.boolean(),
|
|
19
18
|
stalenessPeriod: z.number(),
|
|
20
19
|
name: z.string()
|
|
21
20
|
});
|
|
22
|
-
/** {@link PermissionlessPriceFeedStatus} */
|
|
23
|
-
const priceFeedStatusSchema = z.enum([
|
|
24
|
-
"private",
|
|
25
|
-
"inStore",
|
|
26
|
-
"pendingForbidden",
|
|
27
|
-
"forbidden"
|
|
28
|
-
]);
|
|
29
21
|
/** {@link PermissionlessAsset} */
|
|
30
22
|
const assetSchema = z.looseObject({
|
|
31
23
|
address: addressSchema,
|
|
32
24
|
symbol: z.string(),
|
|
33
25
|
name: z.string(),
|
|
34
26
|
decimals: z.number(),
|
|
35
|
-
isInStore: z.boolean(),
|
|
36
27
|
owner: addressSchema,
|
|
37
|
-
priceFeeds: z.array(
|
|
38
|
-
pricefeed: priceFeedSchema,
|
|
39
|
-
status: priceFeedStatusSchema
|
|
40
|
-
}))
|
|
28
|
+
priceFeeds: z.array(priceFeedSchema)
|
|
41
29
|
});
|
|
42
30
|
/** {@link PermissionlessPriceFeedStore} */
|
|
43
31
|
const priceFeedStoreSchema = z.looseObject({
|
|
@@ -56,4 +44,4 @@ const pricesSchema = z.looseObject({
|
|
|
56
44
|
time: z.number()
|
|
57
45
|
});
|
|
58
46
|
//#endregion
|
|
59
|
-
export { assetSchema, priceFeedSchema,
|
|
47
|
+
export { assetSchema, priceFeedSchema, priceFeedStoreSchema, pricesSchema };
|
|
@@ -34,6 +34,8 @@ const lower = (value) => value.toLowerCase();
|
|
|
34
34
|
* const txs = await permissionless.transactions.addFeeds({
|
|
35
35
|
* chainId: 1,
|
|
36
36
|
* owner: curator,
|
|
37
|
+
* feeds: [feed],
|
|
38
|
+
* pairs: [{ asset, priceFeed: feed.address }],
|
|
37
39
|
* });
|
|
38
40
|
* ```
|
|
39
41
|
**/
|
|
@@ -45,19 +47,21 @@ var InstanceOwnerTransactions = class {
|
|
|
45
47
|
this.#oracles = oracles;
|
|
46
48
|
}
|
|
47
49
|
/**
|
|
48
|
-
* The batch that adds the
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
50
|
+
* The batch that adds the named feeds to the store and allows the named
|
|
51
|
+
* edges on it.
|
|
52
|
+
*
|
|
53
|
+
* Both lists come from the caller. Which feeds are private, and which asset
|
|
54
|
+
* each is meant to price, is held wherever the curator prepared them — the
|
|
55
|
+
* backend indexes the store, so a feed that has not reached it yet is not
|
|
56
|
+
* something this client can discover.
|
|
57
|
+
*
|
|
58
|
+
* Only feeds that actually carry an edge are added: a feed nobody priced
|
|
59
|
+
* would land in the store doing nothing.
|
|
52
60
|
**/
|
|
53
|
-
async addFeeds({ chainId, owner }) {
|
|
54
|
-
const
|
|
55
|
-
const pairs = store.assets.flatMap((asset) => asset.priceFeeds.filter((entry) => entry.status === "private").map((entry) => ({
|
|
56
|
-
asset: asset.address,
|
|
57
|
-
priceFeed: entry.pricefeed.address
|
|
58
|
-
})));
|
|
61
|
+
async addFeeds({ chainId, owner, feeds, pairs }) {
|
|
62
|
+
const batch = await this.#batchContext(chainId);
|
|
59
63
|
const connected = new Set(pairs.map((pair) => lower(pair.priceFeed)));
|
|
60
|
-
const feedsToAdd =
|
|
64
|
+
const feedsToAdd = feeds.filter((feed) => connected.has(lower(feed.address)));
|
|
61
65
|
const txs = [...feedsToAdd.map((feed) => batch.store.addPriceFeedTx(feed.address, feed.stalenessPeriod, feed.name)), ...pairs.map((pair) => batch.store.allowPriceFeedTx(pair.asset, pair.priceFeed))];
|
|
62
66
|
return this.#envelope({
|
|
63
67
|
batch,
|
|
@@ -75,7 +79,7 @@ var InstanceOwnerTransactions = class {
|
|
|
75
79
|
async changeNames({ chainId, owner, names }) {
|
|
76
80
|
const [batch, store] = await Promise.all([this.#batchContext(chainId), this.#oracles.store({ chainId })]);
|
|
77
81
|
const feedToAssets = await this.#feedToAssets(batch.store);
|
|
78
|
-
const inStore = new Map(store.priceFeeds.
|
|
82
|
+
const inStore = new Map(store.priceFeeds.map((feed) => [lower(feed.address), feed]));
|
|
79
83
|
const txs = [];
|
|
80
84
|
for (const [address, name] of Object.entries(names)) {
|
|
81
85
|
const feed = inStore.get(lower(address));
|
|
@@ -45,7 +45,6 @@ var PriceFeedStoreContract = class extends BaseContract {
|
|
|
45
45
|
deployedBy: this.address,
|
|
46
46
|
stalenessPeriod: info.stalenessPeriod,
|
|
47
47
|
name: info.name,
|
|
48
|
-
isInStore: true,
|
|
49
48
|
parameters: {}
|
|
50
49
|
}));
|
|
51
50
|
}
|
|
@@ -276,7 +275,6 @@ var PriceFeedStoreContract = class extends BaseContract {
|
|
|
276
275
|
deployedBy: this.address,
|
|
277
276
|
stalenessPeriod: Number(info.stalenessPeriod),
|
|
278
277
|
name: info.name,
|
|
279
|
-
isInStore: true,
|
|
280
278
|
parameters: {}
|
|
281
279
|
};
|
|
282
280
|
});
|
|
@@ -3,9 +3,9 @@ import { AttachChainsArgs, ChainScope, ChainSummaryArgs, PermissionlessChain, Pe
|
|
|
3
3
|
import { ChainsNamespace } from "./chains/ChainsNamespace.js";
|
|
4
4
|
import { DeployArgs, DeployContractArgs, DeployPriceFeedArgs, PreparedDeployment, PreparedPriceFeedDeployment } from "./deploy/types.js";
|
|
5
5
|
import { DEFAULT_DEPLOY_SALT, PermissionlessDeploy, priceFeedSalt } from "./deploy/PermissionlessDeploy.js";
|
|
6
|
-
import { GetPricesArgs, PermissionlessAsset,
|
|
6
|
+
import { GetPricesArgs, PermissionlessAsset, PermissionlessPriceFeedStore, PermissionlessPrices } from "./oracles/types.js";
|
|
7
7
|
import { GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, PermissionlessOracles } from "./oracles/PermissionlessOracles.js";
|
|
8
|
-
import { ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceTxsArgs } from "./transactions/types.js";
|
|
8
|
+
import { AddFeedsArgs, ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceTxsArgs, PriceFeedPair } from "./transactions/types.js";
|
|
9
9
|
import { InstanceOwnerTransactions } from "./transactions/InstanceOwnerTransactions.js";
|
|
10
10
|
import { GearboxPermissionless } from "./GearboxPermissionless.js";
|
|
11
11
|
import "./chains/index.js";
|
|
@@ -14,4 +14,4 @@ import "./deploy/index.js";
|
|
|
14
14
|
import { PermissionlessChainUnreachableError, PermissionlessNotAttachedError, PriceFeedNotInStoreError, PriceFeedSaltMissingError, PriceFeedStalenessUnknownError } from "./errors.js";
|
|
15
15
|
import "./oracles/index.js";
|
|
16
16
|
import "./transactions/index.js";
|
|
17
|
-
export { AttachChainsArgs, ChainScope, ChainSummaryArgs, ChainsNamespace, ChangeNamesArgs, ChangeStalenessPeriodsArgs, DEFAULT_DEPLOY_SALT, DeployArgs, DeployContractArgs, DeployPriceFeedArgs, ForbidFeedsArgs, GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, GearboxPermissionless, GearboxPermissionlessOptions, GetPricesArgs, InstanceOwnerTransactions, InstanceTxsArgs, PermissionlessAsset, PermissionlessChain, PermissionlessChainSummary, PermissionlessChainUnreachableError, PermissionlessDeploy, PermissionlessNotAttachedError, PermissionlessOracles,
|
|
17
|
+
export { AddFeedsArgs, AttachChainsArgs, ChainScope, ChainSummaryArgs, ChainsNamespace, ChangeNamesArgs, ChangeStalenessPeriodsArgs, DEFAULT_DEPLOY_SALT, DeployArgs, DeployContractArgs, DeployPriceFeedArgs, ForbidFeedsArgs, GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, GearboxPermissionless, GearboxPermissionlessOptions, GetPricesArgs, InstanceOwnerTransactions, InstanceTxsArgs, PermissionlessAsset, PermissionlessChain, PermissionlessChainSummary, PermissionlessChainUnreachableError, PermissionlessDeploy, PermissionlessNotAttachedError, PermissionlessOracles, PermissionlessPriceFeedStore, PermissionlessPrices, PreparedDeployment, PreparedPriceFeedDeployment, PriceFeedNotInStoreError, PriceFeedPair, PriceFeedSaltMissingError, PriceFeedStalenessUnknownError, deriveEffectiveStalenessPeriod, priceFeedSalt };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { GetPricesArgs, PermissionlessAsset,
|
|
1
|
+
import { GetPricesArgs, PermissionlessAsset, PermissionlessPriceFeedStore, PermissionlessPrices } from "./types.js";
|
|
2
2
|
import { GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, PermissionlessOracles } from "./PermissionlessOracles.js";
|
|
3
|
-
export { GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, GetPricesArgs, PermissionlessAsset, PermissionlessOracles,
|
|
3
|
+
export { GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, GetPricesArgs, PermissionlessAsset, PermissionlessOracles, PermissionlessPriceFeedStore, PermissionlessPrices };
|
|
@@ -14,41 +14,23 @@ declare const priceFeedSchema: z.ZodObject<{
|
|
|
14
14
|
contractType: z.ZodString;
|
|
15
15
|
version: z.ZodNumber;
|
|
16
16
|
deployedBy: z.ZodCustom<`0x${string}`, `0x${string}`>;
|
|
17
|
-
isInStore: z.ZodBoolean;
|
|
18
17
|
stalenessPeriod: z.ZodNumber;
|
|
19
18
|
name: z.ZodString;
|
|
20
19
|
}, z.core.$loose>;
|
|
21
|
-
/** {@link PermissionlessPriceFeedStatus} */
|
|
22
|
-
declare const priceFeedStatusSchema: z.ZodEnum<{
|
|
23
|
-
forbidden: "forbidden";
|
|
24
|
-
inStore: "inStore";
|
|
25
|
-
pendingForbidden: "pendingForbidden";
|
|
26
|
-
private: "private";
|
|
27
|
-
}>;
|
|
28
20
|
/** {@link PermissionlessAsset} */
|
|
29
21
|
declare const assetSchema: z.ZodObject<{
|
|
30
22
|
address: z.ZodCustom<`0x${string}`, `0x${string}`>;
|
|
31
23
|
symbol: z.ZodString;
|
|
32
24
|
name: z.ZodString;
|
|
33
25
|
decimals: z.ZodNumber;
|
|
34
|
-
isInStore: z.ZodBoolean;
|
|
35
26
|
owner: z.ZodCustom<`0x${string}`, `0x${string}`>;
|
|
36
27
|
priceFeeds: z.ZodArray<z.ZodObject<{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
stalenessPeriod: z.ZodNumber;
|
|
44
|
-
name: z.ZodString;
|
|
45
|
-
}, z.core.$loose>;
|
|
46
|
-
status: z.ZodEnum<{
|
|
47
|
-
forbidden: "forbidden";
|
|
48
|
-
inStore: "inStore";
|
|
49
|
-
pendingForbidden: "pendingForbidden";
|
|
50
|
-
private: "private";
|
|
51
|
-
}>;
|
|
28
|
+
address: z.ZodCustom<`0x${string}`, `0x${string}`>;
|
|
29
|
+
contractType: z.ZodString;
|
|
30
|
+
version: z.ZodNumber;
|
|
31
|
+
deployedBy: z.ZodCustom<`0x${string}`, `0x${string}`>;
|
|
32
|
+
stalenessPeriod: z.ZodNumber;
|
|
33
|
+
name: z.ZodString;
|
|
52
34
|
}, z.core.$loose>>;
|
|
53
35
|
}, z.core.$loose>;
|
|
54
36
|
/** {@link PermissionlessPriceFeedStore} */
|
|
@@ -63,24 +45,14 @@ declare const priceFeedStoreSchema: z.ZodObject<{
|
|
|
63
45
|
symbol: z.ZodString;
|
|
64
46
|
name: z.ZodString;
|
|
65
47
|
decimals: z.ZodNumber;
|
|
66
|
-
isInStore: z.ZodBoolean;
|
|
67
48
|
owner: z.ZodCustom<`0x${string}`, `0x${string}`>;
|
|
68
49
|
priceFeeds: z.ZodArray<z.ZodObject<{
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
stalenessPeriod: z.ZodNumber;
|
|
76
|
-
name: z.ZodString;
|
|
77
|
-
}, z.core.$loose>;
|
|
78
|
-
status: z.ZodEnum<{
|
|
79
|
-
forbidden: "forbidden";
|
|
80
|
-
inStore: "inStore";
|
|
81
|
-
pendingForbidden: "pendingForbidden";
|
|
82
|
-
private: "private";
|
|
83
|
-
}>;
|
|
50
|
+
address: z.ZodCustom<`0x${string}`, `0x${string}`>;
|
|
51
|
+
contractType: z.ZodString;
|
|
52
|
+
version: z.ZodNumber;
|
|
53
|
+
deployedBy: z.ZodCustom<`0x${string}`, `0x${string}`>;
|
|
54
|
+
stalenessPeriod: z.ZodNumber;
|
|
55
|
+
name: z.ZodString;
|
|
84
56
|
}, z.core.$loose>>;
|
|
85
57
|
}, z.core.$loose>>;
|
|
86
58
|
priceFeeds: z.ZodArray<z.ZodObject<{
|
|
@@ -88,7 +60,6 @@ declare const priceFeedStoreSchema: z.ZodObject<{
|
|
|
88
60
|
contractType: z.ZodString;
|
|
89
61
|
version: z.ZodNumber;
|
|
90
62
|
deployedBy: z.ZodCustom<`0x${string}`, `0x${string}`>;
|
|
91
|
-
isInStore: z.ZodBoolean;
|
|
92
63
|
stalenessPeriod: z.ZodNumber;
|
|
93
64
|
name: z.ZodString;
|
|
94
65
|
}, z.core.$loose>>;
|
|
@@ -100,4 +71,4 @@ declare const pricesSchema: z.ZodObject<{
|
|
|
100
71
|
time: z.ZodNumber;
|
|
101
72
|
}, z.core.$loose>;
|
|
102
73
|
//#endregion
|
|
103
|
-
export { assetSchema, priceFeedSchema,
|
|
74
|
+
export { assetSchema, priceFeedSchema, priceFeedStoreSchema, pricesSchema };
|
|
@@ -3,29 +3,17 @@ import "../../core/index.js";
|
|
|
3
3
|
import { Address } from "viem";
|
|
4
4
|
//#region src/permissionless/api/oracles/types.d.ts
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - `inStore` — allowed for the asset on chain;
|
|
10
|
-
* - `pendingForbidden` — still allowed, with a removal prepared;
|
|
11
|
-
* - `forbidden` — no longer allowed for the asset.
|
|
12
|
-
**/
|
|
13
|
-
type PermissionlessPriceFeedStatus = "private" | "inStore" | "pendingForbidden" | "forbidden";
|
|
14
|
-
/**
|
|
15
|
-
* One asset of a chain, with the feeds attached to it. The key is spelled
|
|
16
|
-
* `pricefeed` because that is what the backend answers with.
|
|
6
|
+
* One asset of a chain, with the feeds allowed for it. The backend indexes
|
|
7
|
+
* the chain, so every feed listed here is one the PriceFeedStore carries and
|
|
8
|
+
* allows for the asset.
|
|
17
9
|
**/
|
|
18
10
|
interface PermissionlessAsset {
|
|
19
11
|
address: Address;
|
|
20
12
|
symbol: string;
|
|
21
13
|
name: string;
|
|
22
14
|
decimals: number;
|
|
23
|
-
isInStore: boolean;
|
|
24
15
|
owner: Address;
|
|
25
|
-
priceFeeds:
|
|
26
|
-
pricefeed: PriceFeed;
|
|
27
|
-
status: PermissionlessPriceFeedStatus;
|
|
28
|
-
}>;
|
|
16
|
+
priceFeeds: PriceFeed[];
|
|
29
17
|
}
|
|
30
18
|
/**
|
|
31
19
|
* The PriceFeedStore of one chain as the backend has indexed it: the assets
|
|
@@ -60,4 +48,4 @@ interface GetPricesArgs {
|
|
|
60
48
|
priceFeeds: Address[];
|
|
61
49
|
}
|
|
62
50
|
//#endregion
|
|
63
|
-
export { GetPricesArgs, PermissionlessAsset,
|
|
51
|
+
export { GetPricesArgs, PermissionlessAsset, PermissionlessPriceFeedStore, PermissionlessPrices };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChainsNamespace } from "../chains/ChainsNamespace.js";
|
|
2
2
|
import { PermissionlessOracles } from "../oracles/PermissionlessOracles.js";
|
|
3
3
|
import { InstanceTxs } from "../../utils/governance/types.js";
|
|
4
|
-
import { ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceTxsArgs } from "./types.js";
|
|
4
|
+
import { AddFeedsArgs, ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceTxsArgs } from "./types.js";
|
|
5
5
|
//#region src/permissionless/api/transactions/InstanceOwnerTransactions.d.ts
|
|
6
6
|
/**
|
|
7
7
|
* The Safe batches an instance owner executes to apply what a curator
|
|
@@ -21,6 +21,8 @@ import { ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceT
|
|
|
21
21
|
* const txs = await permissionless.transactions.addFeeds({
|
|
22
22
|
* chainId: 1,
|
|
23
23
|
* owner: curator,
|
|
24
|
+
* feeds: [feed],
|
|
25
|
+
* pairs: [{ asset, priceFeed: feed.address }],
|
|
24
26
|
* });
|
|
25
27
|
* ```
|
|
26
28
|
**/
|
|
@@ -28,12 +30,18 @@ declare class InstanceOwnerTransactions {
|
|
|
28
30
|
#private;
|
|
29
31
|
constructor(chains: ChainsNamespace, oracles: PermissionlessOracles);
|
|
30
32
|
/**
|
|
31
|
-
* The batch that adds the
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
33
|
+
* The batch that adds the named feeds to the store and allows the named
|
|
34
|
+
* edges on it.
|
|
35
|
+
*
|
|
36
|
+
* Both lists come from the caller. Which feeds are private, and which asset
|
|
37
|
+
* each is meant to price, is held wherever the curator prepared them — the
|
|
38
|
+
* backend indexes the store, so a feed that has not reached it yet is not
|
|
39
|
+
* something this client can discover.
|
|
40
|
+
*
|
|
41
|
+
* Only feeds that actually carry an edge are added: a feed nobody priced
|
|
42
|
+
* would land in the store doing nothing.
|
|
35
43
|
**/
|
|
36
|
-
addFeeds({ chainId, owner }:
|
|
44
|
+
addFeeds({ chainId, owner, feeds, pairs }: AddFeedsArgs): Promise<InstanceTxs>;
|
|
37
45
|
/**
|
|
38
46
|
* The batch that renames feeds already in the store. A name is part of what
|
|
39
47
|
* the store holds, so changing one is a remove and a fresh add, followed by
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceTxsArgs } from "./types.js";
|
|
1
|
+
import { AddFeedsArgs, ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceTxsArgs, PriceFeedPair } from "./types.js";
|
|
2
2
|
import { InstanceOwnerTransactions } from "./InstanceOwnerTransactions.js";
|
|
3
|
-
export { ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceOwnerTransactions, InstanceTxsArgs };
|
|
3
|
+
export { AddFeedsArgs, ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceOwnerTransactions, InstanceTxsArgs, PriceFeedPair };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PriceFeed } from "../../core/pricefeed.js";
|
|
1
2
|
import { Address } from "viem";
|
|
2
3
|
//#region src/permissionless/api/transactions/types.d.ts
|
|
3
4
|
/**
|
|
@@ -17,6 +18,27 @@ interface InstanceTxsArgs {
|
|
|
17
18
|
**/
|
|
18
19
|
owner: Address;
|
|
19
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* One asset-to-feed edge the store has to carry, see
|
|
23
|
+
* {@link AddFeedsArgs.pairs}.
|
|
24
|
+
**/
|
|
25
|
+
interface PriceFeedPair {
|
|
26
|
+
asset: Address;
|
|
27
|
+
priceFeed: Address;
|
|
28
|
+
}
|
|
29
|
+
/** Args of {@link InstanceOwnerTransactions.addFeeds}. */
|
|
30
|
+
interface AddFeedsArgs extends InstanceTxsArgs {
|
|
31
|
+
/**
|
|
32
|
+
* The feeds to put in the store. Only what the store records is read, so a
|
|
33
|
+
* caller holding a whole {@link PriceFeed} passes it unchanged.
|
|
34
|
+
**/
|
|
35
|
+
feeds: Array<Pick<PriceFeed, "address" | "stalenessPeriod" | "name">>;
|
|
36
|
+
/**
|
|
37
|
+
* The edges to allow. Independent of {@link feeds}: an edge may name a feed
|
|
38
|
+
* the store already carries, which is allowed without adding it again.
|
|
39
|
+
**/
|
|
40
|
+
pairs: PriceFeedPair[];
|
|
41
|
+
}
|
|
20
42
|
/** Args of {@link InstanceOwnerTransactions.changeNames}. */
|
|
21
43
|
interface ChangeNamesArgs extends InstanceTxsArgs {
|
|
22
44
|
/** The new name of each feed, keyed by the feed's address. */
|
|
@@ -33,4 +55,4 @@ interface ForbidFeedsArgs extends InstanceTxsArgs {
|
|
|
33
55
|
tokens: Record<Address, Address[]>;
|
|
34
56
|
}
|
|
35
57
|
//#endregion
|
|
36
|
-
export { ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceTxsArgs };
|
|
58
|
+
export { AddFeedsArgs, ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceTxsArgs, PriceFeedPair };
|
|
@@ -11,7 +11,7 @@ import "./core/index.js";
|
|
|
11
11
|
import { FunctionParams, ValueParams, encodeFunctionParams } from "./utils/abi-encoder.js";
|
|
12
12
|
import { DeployArgs, DeployContractArgs, DeployPriceFeedArgs, PreparedDeployment, PreparedPriceFeedDeployment } from "./api/deploy/types.js";
|
|
13
13
|
import { DEFAULT_DEPLOY_SALT, PermissionlessDeploy, priceFeedSalt } from "./api/deploy/PermissionlessDeploy.js";
|
|
14
|
-
import { GetPricesArgs, PermissionlessAsset,
|
|
14
|
+
import { GetPricesArgs, PermissionlessAsset, PermissionlessPriceFeedStore, PermissionlessPrices } from "./api/oracles/types.js";
|
|
15
15
|
import { GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, PermissionlessOracles } from "./api/oracles/PermissionlessOracles.js";
|
|
16
16
|
import { AddressProviderContract } from "./bindings/address-provider.js";
|
|
17
17
|
import { BytecodeRepositoryContract } from "./bindings/bytecode-repository.js";
|
|
@@ -31,7 +31,7 @@ import { RoutingManagerContract } from "./bindings/router/routing-manager.js";
|
|
|
31
31
|
import { TreasurySplitterContract } from "./bindings/treasury-splitter.js";
|
|
32
32
|
import "./bindings/index.js";
|
|
33
33
|
import { InstanceTxs, TimelockTxs } from "./utils/governance/types.js";
|
|
34
|
-
import { ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceTxsArgs } from "./api/transactions/types.js";
|
|
34
|
+
import { AddFeedsArgs, ChangeNamesArgs, ChangeStalenessPeriodsArgs, ForbidFeedsArgs, InstanceTxsArgs, PriceFeedPair } from "./api/transactions/types.js";
|
|
35
35
|
import { InstanceOwnerTransactions } from "./api/transactions/InstanceOwnerTransactions.js";
|
|
36
36
|
import { GearboxPermissionless } from "./api/GearboxPermissionless.js";
|
|
37
37
|
import { deriveEffectiveStalenessPeriod } from "./api/deploy/effective-staleness.js";
|
|
@@ -52,4 +52,4 @@ import { getPrices } from "./utils/price-update/get-prices.js";
|
|
|
52
52
|
import { GetUpdatablePriceFeedsArgs, getUpdatablePriceFeeds } from "./utils/price-update/get-updatable-feeds.js";
|
|
53
53
|
import { normalizeSignature } from "./utils/signature.js";
|
|
54
54
|
import "./utils/index.js";
|
|
55
|
-
export { AccessMode, AddAssetParams, AddressProviderContract, Addresses, AllowTokenParams, ArchiveTransport, ArchiveTransportConfig, AttachChainsArgs, AuditEvent, Auditor, BYTECODE_REPOSITORY, Batch, Bytecode, BytecodeRepositoryContract, CCMConstructorParams, CROSS_CHAIN_GOVERNANCE, CROSS_CHAIN_MULTISIG, ChainScope, ChainSummaryArgs, ChainsNamespace, ChangeNamesArgs, ChangeStalenessPeriodsArgs, ConstructorParams, CreditManagerFees, CrossChainCall, CrossChainMultisigContract, DEFAULT_DEPLOY_SALT, DeployArgs, DeployContractArgs, DeployParams, DeployPriceFeedArgs, Deployment, DeploymentExtended, ForbidAdapterParams, ForbidFeedsArgs, ForbidTokenParams, FunctionParams, GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, GearboxPermissionless, GearboxPermissionlessOptions, GetPricesArgs, GetUpdatablePriceFeedsArgs, GovernorContract, INSTANCE_MANAGER, InputValueParams, InstanceManagerContract, InstanceOwnerTransactions, InstanceTxs, InstanceTxsArgs, MAINNET_CCM_CONSTRUCTOR_PARAMS, MAINNET_DEPLOYMENT_BLOCK, MAINNET_DEPLOYMENT_CCM_SALT, MAINNET_DEPLOYMENT_IM_SALT, MARKET_CONFIGURATOR_FACTORY, Market, MarketConfiguratorContract, MarketConfiguratorFactoryContract, PRICE_FEED_STORE, PUBLIC_CREATE2_FACTORY, PauseCreditManagerParams, PeripheryDomain, PermissionlessAsset, PermissionlessChain, PermissionlessChainSummary, PermissionlessChainUnreachableError, PermissionlessDeploy, PermissionlessNotAttachedError, PermissionlessOracles,
|
|
55
|
+
export { AccessMode, AddAssetParams, AddFeedsArgs, AddressProviderContract, Addresses, AllowTokenParams, ArchiveTransport, ArchiveTransportConfig, AttachChainsArgs, AuditEvent, Auditor, BYTECODE_REPOSITORY, Batch, Bytecode, BytecodeRepositoryContract, CCMConstructorParams, CROSS_CHAIN_GOVERNANCE, CROSS_CHAIN_MULTISIG, ChainScope, ChainSummaryArgs, ChainsNamespace, ChangeNamesArgs, ChangeStalenessPeriodsArgs, ConstructorParams, CreditManagerFees, CrossChainCall, CrossChainMultisigContract, DEFAULT_DEPLOY_SALT, DeployArgs, DeployContractArgs, DeployParams, DeployPriceFeedArgs, Deployment, DeploymentExtended, ForbidAdapterParams, ForbidFeedsArgs, ForbidTokenParams, FunctionParams, GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, GearboxPermissionless, GearboxPermissionlessOptions, GetPricesArgs, GetUpdatablePriceFeedsArgs, GovernorContract, INSTANCE_MANAGER, InputValueParams, InstanceManagerContract, InstanceOwnerTransactions, InstanceTxs, InstanceTxsArgs, MAINNET_CCM_CONSTRUCTOR_PARAMS, MAINNET_DEPLOYMENT_BLOCK, MAINNET_DEPLOYMENT_CCM_SALT, MAINNET_DEPLOYMENT_IM_SALT, MARKET_CONFIGURATOR_FACTORY, Market, MarketConfiguratorContract, MarketConfiguratorFactoryContract, PRICE_FEED_STORE, PUBLIC_CREATE2_FACTORY, PauseCreditManagerParams, PeripheryDomain, PermissionlessAsset, PermissionlessChain, PermissionlessChainSummary, PermissionlessChainUnreachableError, PermissionlessDeploy, PermissionlessNotAttachedError, PermissionlessOracles, PermissionlessPriceFeedStore, PermissionlessPrices, PreparedDeployment, PreparedPriceFeedDeployment, PriceFeed, PriceFeedConstructorParam, PriceFeedNotInStoreError, PriceFeedPair, PriceFeedParamType, PriceFeedParams, PriceFeedSaltMissingError, PriceFeedSetupParams, PriceFeedStalenessUnknownError, PriceFeedStoreContract, Proposal, QueuedAndExecutedTransaction, RecoveryMessage, RoutingManagerContract, SafeBatch, SafeMeta, SafeTx, SetExpirationDateParams, SetFeesParams, SetPriceFeedParams, SetReservePriceFeedParams, SetTokenQuotaIncreaseFeeParams, Signature, TOKEN_COMPRESSOR, TimeLockContract, TimelockTransaction, TimelockTxParams, TimelockTxs, TokenCompressorContract, TreasurySplitterContract, UnpauseCreditManagerParams, ValueParams, WithdrawalCompressorContract, calculateChecksum, checkCreate2Deployment, checkCreate2DeploymentAddress, chunkedLogsTransport, convertPercent, convertQueueBatchToExecuteTx, convertRawTxToSafeMultisigTx, createCallData, createCreate2DeployRawTx, deepJsonParse, deployUsingPublicCreate2, deriveEffectiveStalenessPeriod, encodeFunctionParams, formatBytecodeSize, formatBytecodeVersion, getBlockNumberByTimestamp, getCreate2AddressPublicFactory, getCreate2DeploymentAddress, getPriceUpdateTx, getPrices, getSafeBatch, getSafeBatches, getUpdatablePriceFeeds, handleSalt, normalizeSignature, priceFeedSalt, priceFeedSetupParams, shortenHash, significantTrunc };
|