@across-protocol/sdk 4.1.63-beta.1 → 4.1.63-beta.3
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/arch/evm/BlockUtils.d.ts +15 -0
- package/dist/cjs/arch/evm/BlockUtils.js +218 -0
- package/dist/cjs/arch/evm/BlockUtils.js.map +1 -0
- package/dist/cjs/arch/evm/index.d.ts +1 -0
- package/dist/cjs/arch/evm/index.js +1 -0
- package/dist/cjs/arch/evm/index.js.map +1 -1
- package/dist/cjs/arch/svm/SpokeUtils.d.ts +3 -2
- package/dist/cjs/arch/svm/SpokeUtils.js +42 -12
- package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/svm/eventsClient.js +6 -6
- package/dist/cjs/arch/svm/eventsClient.js.map +1 -1
- package/dist/cjs/arch/svm/utils.d.ts +1 -0
- package/dist/cjs/arch/svm/utils.js +10 -2
- package/dist/cjs/arch/svm/utils.js.map +1 -1
- package/dist/cjs/clients/HubPoolClient.d.ts +3 -2
- package/dist/cjs/clients/HubPoolClient.js +2 -1
- package/dist/cjs/clients/HubPoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +1 -1
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +29 -2
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +4 -3
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.d.ts +33 -0
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +184 -0
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -0
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.d.ts +30 -0
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +90 -0
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js.map +1 -0
- package/dist/cjs/clients/mocks/index.d.ts +2 -0
- package/dist/cjs/clients/mocks/index.js +2 -0
- package/dist/cjs/clients/mocks/index.js.map +1 -1
- package/dist/cjs/constants.d.ts +1 -0
- package/dist/cjs/constants.js +2 -1
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/providers/index.d.ts +1 -1
- package/dist/cjs/providers/index.js +1 -2
- package/dist/cjs/providers/index.js.map +1 -1
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.d.ts +5 -0
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js +21 -0
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -0
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +5 -0
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js +20 -0
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -0
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.d.ts +13 -0
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js +76 -0
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js.map +1 -0
- package/dist/cjs/providers/mocks/index.d.ts +4 -0
- package/dist/cjs/providers/mocks/index.js +8 -0
- package/dist/cjs/providers/mocks/index.js.map +1 -0
- package/dist/cjs/providers/{mockProvider.js → mocks/mockEthersProvider.js} +2 -2
- package/dist/cjs/providers/mocks/mockEthersProvider.js.map +1 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +5 -4
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.d.ts +9 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.js +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.d.ts +6 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +69 -34
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.d.ts +11 -0
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js +9 -3
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
- package/dist/cjs/utils/BlockFinder.d.ts +22 -0
- package/dist/cjs/utils/BlockFinder.js +10 -0
- package/dist/cjs/utils/BlockFinder.js.map +1 -0
- package/dist/cjs/utils/BlockUtils.d.ts +2 -27
- package/dist/cjs/utils/BlockUtils.js +2 -208
- package/dist/cjs/utils/BlockUtils.js.map +1 -1
- package/dist/cjs/utils/TokenUtils.d.ts +18 -0
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/esm/arch/evm/BlockUtils.d.ts +24 -0
- package/dist/esm/arch/evm/BlockUtils.js +250 -0
- package/dist/esm/arch/evm/BlockUtils.js.map +1 -0
- package/dist/esm/arch/evm/index.d.ts +1 -0
- package/dist/esm/arch/evm/index.js +1 -0
- package/dist/esm/arch/evm/index.js.map +1 -1
- package/dist/esm/arch/svm/SpokeUtils.d.ts +37 -2
- package/dist/esm/arch/svm/SpokeUtils.js +80 -13
- package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/svm/eventsClient.js +6 -6
- package/dist/esm/arch/svm/eventsClient.js.map +1 -1
- package/dist/esm/arch/svm/utils.d.ts +4 -0
- package/dist/esm/arch/svm/utils.js +11 -1
- package/dist/esm/arch/svm/utils.js.map +1 -1
- package/dist/esm/clients/HubPoolClient.d.ts +3 -2
- package/dist/esm/clients/HubPoolClient.js +3 -2
- package/dist/esm/clients/HubPoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +1 -2
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +34 -5
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +6 -4
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.d.ts +33 -0
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +183 -0
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -0
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.d.ts +30 -0
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +89 -0
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -0
- package/dist/esm/clients/mocks/index.d.ts +2 -0
- package/dist/esm/clients/mocks/index.js +2 -0
- package/dist/esm/clients/mocks/index.js.map +1 -1
- package/dist/esm/constants.d.ts +1 -0
- package/dist/esm/constants.js +1 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/providers/index.d.ts +1 -1
- package/dist/esm/providers/index.js +1 -2
- package/dist/esm/providers/index.js.map +1 -1
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.d.ts +5 -0
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js +19 -0
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -0
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +5 -0
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js +18 -0
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -0
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.d.ts +13 -0
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.js +74 -0
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.js.map +1 -0
- package/dist/esm/providers/mocks/index.d.ts +4 -0
- package/dist/esm/providers/mocks/index.js +5 -0
- package/dist/esm/providers/mocks/index.js.map +1 -0
- package/dist/esm/providers/{mockProvider.js → mocks/mockEthersProvider.js} +2 -2
- package/dist/esm/providers/mocks/mockEthersProvider.js.map +1 -0
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +6 -5
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/factory.d.ts +9 -0
- package/dist/esm/relayFeeCalculator/chain-queries/factory.js +3 -3
- package/dist/esm/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.d.ts +18 -0
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +83 -36
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.d.ts +21 -1
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +9 -4
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
- package/dist/esm/utils/BlockFinder.d.ts +22 -0
- package/dist/esm/utils/BlockFinder.js +7 -0
- package/dist/esm/utils/BlockFinder.js.map +1 -0
- package/dist/esm/utils/BlockUtils.d.ts +2 -36
- package/dist/esm/utils/BlockUtils.js +2 -243
- package/dist/esm/utils/BlockUtils.js.map +1 -1
- package/dist/esm/utils/TokenUtils.d.ts +18 -0
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/types/arch/evm/BlockUtils.d.ts +25 -0
- package/dist/types/arch/evm/BlockUtils.d.ts.map +1 -0
- package/dist/types/arch/evm/index.d.ts +1 -0
- package/dist/types/arch/evm/index.d.ts.map +1 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts +37 -2
- package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
- package/dist/types/arch/svm/eventsClient.d.ts.map +1 -1
- package/dist/types/arch/svm/utils.d.ts +4 -0
- package/dist/types/arch/svm/utils.d.ts.map +1 -1
- package/dist/types/clients/HubPoolClient.d.ts +3 -2
- package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +1 -2
- package/dist/types/clients/SpokePoolClient/SVMSpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts +34 -0
- package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts.map +1 -0
- package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts +31 -0
- package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts.map +1 -0
- package/dist/types/clients/mocks/index.d.ts +2 -0
- package/dist/types/clients/mocks/index.d.ts.map +1 -1
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/providers/index.d.ts +1 -1
- package/dist/types/providers/index.d.ts.map +1 -1
- package/dist/types/providers/mocks/MockCachedSolanaRpcFactory.d.ts +6 -0
- package/dist/types/providers/mocks/MockCachedSolanaRpcFactory.d.ts.map +1 -0
- package/dist/types/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +6 -0
- package/dist/types/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts.map +1 -0
- package/dist/types/providers/mocks/MockSolanaRpcFactory.d.ts +14 -0
- package/dist/types/providers/mocks/MockSolanaRpcFactory.d.ts.map +1 -0
- package/dist/types/providers/mocks/index.d.ts +5 -0
- package/dist/types/providers/mocks/index.d.ts.map +1 -0
- package/dist/types/providers/{mockProvider.d.ts → mocks/mockEthersProvider.d.ts} +1 -1
- package/dist/types/providers/mocks/mockEthersProvider.d.ts.map +1 -0
- package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/factory.d.ts +9 -0
- package/dist/types/relayFeeCalculator/chain-queries/factory.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts +18 -0
- package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts +21 -1
- package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts.map +1 -1
- package/dist/types/utils/BlockFinder.d.ts +23 -0
- package/dist/types/utils/BlockFinder.d.ts.map +1 -0
- package/dist/types/utils/BlockUtils.d.ts +2 -36
- package/dist/types/utils/BlockUtils.d.ts.map +1 -1
- package/dist/types/utils/TokenUtils.d.ts +18 -0
- package/dist/types/utils/TokenUtils.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/arch/evm/BlockUtils.ts +209 -0
- package/src/arch/evm/index.ts +1 -0
- package/src/arch/svm/SpokeUtils.ts +87 -17
- package/src/arch/svm/eventsClient.ts +13 -5
- package/src/arch/svm/utils.ts +12 -1
- package/src/clients/HubPoolClient.ts +3 -3
- package/src/clients/SpokePoolClient/SVMSpokePoolClient.ts +27 -3
- package/src/clients/SpokePoolClient/SpokePoolClient.ts +6 -3
- package/src/clients/mocks/MockSvmCpiEventsClient.ts +226 -0
- package/src/clients/mocks/MockSvmSpokePoolClient.ts +119 -0
- package/src/clients/mocks/index.ts +2 -0
- package/src/constants.ts +1 -0
- package/src/providers/index.ts +1 -1
- package/src/providers/mocks/MockCachedSolanaRpcFactory.ts +15 -0
- package/src/providers/mocks/MockRateLimitedSolanaRpcFactory.ts +14 -0
- package/src/providers/mocks/MockSolanaRpcFactory.ts +55 -0
- package/src/providers/mocks/index.ts +4 -0
- package/src/providers/{mockProvider.ts → mocks/mockEthersProvider.ts} +1 -1
- package/src/relayFeeCalculator/chain-queries/baseQuery.ts +6 -6
- package/src/relayFeeCalculator/chain-queries/factory.ts +3 -3
- package/src/relayFeeCalculator/chain-queries/svmQuery.ts +59 -27
- package/src/relayFeeCalculator/relayFeeCalculator.ts +15 -3
- package/src/utils/BlockFinder.ts +26 -0
- package/src/utils/BlockUtils.ts +5 -215
- package/src/utils/index.ts +1 -0
- package/dist/cjs/providers/mockProvider.js.map +0 -1
- package/dist/esm/providers/mockProvider.js.map +0 -1
- package/dist/types/providers/mockProvider.d.ts.map +0 -1
- /package/dist/cjs/providers/{mockProvider.d.ts → mocks/mockEthersProvider.d.ts} +0 -0
- /package/dist/esm/providers/{mockProvider.d.ts → mocks/mockEthersProvider.d.ts} +0 -0
|
@@ -99,6 +99,15 @@ export declare const resolveContractFromSymbol: (symbol: string, chainId: string
|
|
|
99
99
|
};
|
|
100
100
|
coingeckoId: string;
|
|
101
101
|
};
|
|
102
|
+
ezETH: {
|
|
103
|
+
name: string;
|
|
104
|
+
symbol: string;
|
|
105
|
+
decimals: number;
|
|
106
|
+
addresses: {
|
|
107
|
+
[x: number]: string;
|
|
108
|
+
};
|
|
109
|
+
coingeckoId: string;
|
|
110
|
+
};
|
|
102
111
|
GHO: {
|
|
103
112
|
name: string;
|
|
104
113
|
symbol: string;
|
|
@@ -488,6 +497,15 @@ export declare function getTokenInfo(l2TokenAddress: string, chainId: number, to
|
|
|
488
497
|
};
|
|
489
498
|
coingeckoId: string;
|
|
490
499
|
};
|
|
500
|
+
ezETH: {
|
|
501
|
+
name: string;
|
|
502
|
+
symbol: string;
|
|
503
|
+
decimals: number;
|
|
504
|
+
addresses: {
|
|
505
|
+
[x: number]: string;
|
|
506
|
+
};
|
|
507
|
+
coingeckoId: string;
|
|
508
|
+
};
|
|
491
509
|
GHO: {
|
|
492
510
|
name: string;
|
|
493
511
|
symbol: string;
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -5,6 +5,7 @@ tslib_1.__exportStar(require("./common"), exports);
|
|
|
5
5
|
tslib_1.__exportStar(require("./abi"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./ArrayUtils"), exports);
|
|
7
7
|
tslib_1.__exportStar(require("./BlockUtils"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./BlockFinder"), exports);
|
|
8
9
|
tslib_1.__exportStar(require("./EventUtils"), exports);
|
|
9
10
|
tslib_1.__exportStar(require("./ObjectUtils"), exports);
|
|
10
11
|
tslib_1.__exportStar(require("./TimeUtils"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,gDAAsB;AACtB,uDAA6B;AAC7B,uDAA6B;AAC7B,uDAA6B;AAC7B,wDAA8B;AAC9B,sDAA4B;AAC5B,uDAA6B;AAC7B,sDAA4B;AAC5B,uDAA6B;AAC7B,qDAA2B;AAC3B,wDAA8B;AAC9B,sDAA4B;AAC5B,sDAA4B;AAC5B,wDAA8B;AAC9B,4DAAkC;AAClC,4DAAkC;AAClC,+DAAqC;AACrC,2DAAiC;AACjC,yDAA+B;AAC/B,yDAA+B;AAC/B,qDAA2B;AAC3B,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,2DAAiC;AACjC,yDAA+B;AAC/B,uDAA6B;AAC7B,oDAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,gDAAsB;AACtB,uDAA6B;AAC7B,uDAA6B;AAC7B,wDAA8B;AAC9B,uDAA6B;AAC7B,wDAA8B;AAC9B,sDAA4B;AAC5B,uDAA6B;AAC7B,sDAA4B;AAC5B,uDAA6B;AAC7B,qDAA2B;AAC3B,wDAA8B;AAC9B,sDAA4B;AAC5B,sDAA4B;AAC5B,wDAA8B;AAC9B,4DAAkC;AAClC,4DAAkC;AAClC,+DAAqC;AACrC,2DAAiC;AACjC,yDAA+B;AAC/B,yDAA+B;AAC/B,qDAA2B;AAC3B,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,2DAAiC;AACjC,yDAA+B;AAC/B,uDAA6B;AAC7B,oDAA0B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Provider, Block as EthersBlock } from "@ethersproject/abstract-provider";
|
|
2
|
+
import { BlockFinder, type Block, type BlockFinderOpts as Opts, type BlockTimeAverage, type BlockFinderHints } from "../../utils/BlockFinder";
|
|
3
|
+
interface EVMBlock extends Block, EthersBlock {
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* @description Compute the average block time over a block range.
|
|
7
|
+
* @returns Average number of seconds per block.
|
|
8
|
+
*/
|
|
9
|
+
export declare function averageBlockTime(provider: Provider, { highBlock, highBlockOffset, blockRange }?: Opts): Promise<Pick<BlockTimeAverage, "average" | "blockRange">>;
|
|
10
|
+
export declare class EVMBlockFinder extends BlockFinder<EVMBlock> {
|
|
11
|
+
private readonly provider;
|
|
12
|
+
private readonly blocks;
|
|
13
|
+
constructor(provider: Provider, blocks?: EVMBlock[]);
|
|
14
|
+
/**
|
|
15
|
+
* @notice Gets the latest block whose timestamp is <= the provided timestamp.
|
|
16
|
+
* @param number Timestamp timestamp to search.
|
|
17
|
+
* @param hints Optional low and high block to bound the search space.
|
|
18
|
+
*/
|
|
19
|
+
getBlockForTimestamp(timestamp: number | string, hints?: BlockFinderHints): Promise<EVMBlock>;
|
|
20
|
+
private getLatestBlock;
|
|
21
|
+
private getBlock;
|
|
22
|
+
private findBlock;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { __awaiter, __extends, __generator } from "tslib";
|
|
3
|
+
import assert from "assert";
|
|
4
|
+
import { clamp, sortedIndexBy } from "lodash";
|
|
5
|
+
import { chainIsOPStack, getNetworkName } from "../../utils/NetworkUtils";
|
|
6
|
+
import { isDefined } from "../../utils/TypeGuards";
|
|
7
|
+
import { BlockFinder, } from "../../utils/BlockFinder";
|
|
8
|
+
import { getCurrentTime } from "../../utils/TimeUtils";
|
|
9
|
+
import { CHAIN_IDs } from "../../constants";
|
|
10
|
+
// Archive requests typically commence at 128 blocks past the head of the chain.
|
|
11
|
+
// Round down to 120 blocks to avoid slipping into archive territory.
|
|
12
|
+
var defaultBlockRange = 120;
|
|
13
|
+
// Default offset to the high block number. This is subtracted from the block number of the high block
|
|
14
|
+
// when it is queried from the network, rather than having been specified by the caller. This is useful
|
|
15
|
+
// since the supplied Provider instance may be backed by multiple RPC providers, which can lead to some
|
|
16
|
+
// providers running slower than others and taking time to synchronise on the latest block.
|
|
17
|
+
var defaultHighBlockOffset = 10;
|
|
18
|
+
// Retain computations for 15 minutes.
|
|
19
|
+
var cacheTTL = 60 * 15;
|
|
20
|
+
var now = getCurrentTime(); // Seed the cache with initial values.
|
|
21
|
+
var blockTimes = (_a = {},
|
|
22
|
+
_a[CHAIN_IDs.INK] = { average: 1, timestamp: now, blockRange: 1 },
|
|
23
|
+
_a[CHAIN_IDs.LINEA] = { average: 3, timestamp: now, blockRange: 1 },
|
|
24
|
+
_a[CHAIN_IDs.MAINNET] = { average: 12.5, timestamp: now, blockRange: 1 },
|
|
25
|
+
_a[CHAIN_IDs.OPTIMISM] = { average: 2, timestamp: now, blockRange: 1 },
|
|
26
|
+
_a[CHAIN_IDs.UNICHAIN] = { average: 1, timestamp: now, blockRange: 1 },
|
|
27
|
+
_a);
|
|
28
|
+
/**
|
|
29
|
+
* @description Compute the average block time over a block range.
|
|
30
|
+
* @returns Average number of seconds per block.
|
|
31
|
+
*/
|
|
32
|
+
export function averageBlockTime(provider, _a) {
|
|
33
|
+
var _b;
|
|
34
|
+
var _c = _a === void 0 ? {} : _a, highBlock = _c.highBlock, highBlockOffset = _c.highBlockOffset, blockRange = _c.blockRange;
|
|
35
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
36
|
+
var chainId, cache, now, earliestBlockNumber, _d, firstBlock, lastBlock, average;
|
|
37
|
+
return __generator(this, function (_e) {
|
|
38
|
+
switch (_e.label) {
|
|
39
|
+
case 0: return [4 /*yield*/, provider.getNetwork()];
|
|
40
|
+
case 1:
|
|
41
|
+
chainId = (_e.sent()).chainId;
|
|
42
|
+
cache = (_b = blockTimes[chainId]) !== null && _b !== void 0 ? _b : (chainIsOPStack(chainId) ? blockTimes[CHAIN_IDs.OPTIMISM] : undefined);
|
|
43
|
+
now = getCurrentTime();
|
|
44
|
+
if (isDefined(cache) && now < cache.timestamp + cacheTTL) {
|
|
45
|
+
return [2 /*return*/, { average: cache.average, blockRange: cache.blockRange }];
|
|
46
|
+
}
|
|
47
|
+
if (!!isDefined(highBlock)) return [3 /*break*/, 3];
|
|
48
|
+
return [4 /*yield*/, provider.getBlockNumber()];
|
|
49
|
+
case 2:
|
|
50
|
+
highBlock = _e.sent();
|
|
51
|
+
highBlock -= highBlockOffset !== null && highBlockOffset !== void 0 ? highBlockOffset : defaultHighBlockOffset;
|
|
52
|
+
_e.label = 3;
|
|
53
|
+
case 3:
|
|
54
|
+
blockRange !== null && blockRange !== void 0 ? blockRange : (blockRange = defaultBlockRange);
|
|
55
|
+
earliestBlockNumber = highBlock - blockRange;
|
|
56
|
+
return [4 /*yield*/, Promise.all([
|
|
57
|
+
provider.getBlock(earliestBlockNumber),
|
|
58
|
+
provider.getBlock(highBlock),
|
|
59
|
+
])];
|
|
60
|
+
case 4:
|
|
61
|
+
_d = _e.sent(), firstBlock = _d[0], lastBlock = _d[1];
|
|
62
|
+
[firstBlock, lastBlock].forEach(function (block) {
|
|
63
|
+
if (!isDefined(block === null || block === void 0 ? void 0 : block.timestamp)) {
|
|
64
|
+
var network = getNetworkName(chainId);
|
|
65
|
+
var blockNumber = block === firstBlock ? earliestBlockNumber : highBlock;
|
|
66
|
+
throw new Error("BlockFinder: Failed to fetch block ".concat(blockNumber, " on ").concat(network));
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
average = (lastBlock.timestamp - firstBlock.timestamp) / blockRange;
|
|
70
|
+
blockTimes[chainId] = { timestamp: now, average: average, blockRange: blockRange };
|
|
71
|
+
return [2 /*return*/, { average: average, blockRange: blockRange }];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function estimateBlocksElapsed(seconds, cushionPercentage, provider) {
|
|
77
|
+
if (cushionPercentage === void 0) { cushionPercentage = 0.0; }
|
|
78
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
79
|
+
var cushionMultiplier, average;
|
|
80
|
+
return __generator(this, function (_a) {
|
|
81
|
+
switch (_a.label) {
|
|
82
|
+
case 0:
|
|
83
|
+
cushionMultiplier = cushionPercentage + 1.0;
|
|
84
|
+
return [4 /*yield*/, averageBlockTime(provider)];
|
|
85
|
+
case 1:
|
|
86
|
+
average = (_a.sent()).average;
|
|
87
|
+
return [2 /*return*/, Math.floor((seconds * cushionMultiplier) / average)];
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
var EVMBlockFinder = /** @class */ (function (_super) {
|
|
93
|
+
__extends(EVMBlockFinder, _super);
|
|
94
|
+
function EVMBlockFinder(provider, blocks) {
|
|
95
|
+
if (blocks === void 0) { blocks = []; }
|
|
96
|
+
var _this = _super.call(this) || this;
|
|
97
|
+
_this.provider = provider;
|
|
98
|
+
_this.blocks = blocks;
|
|
99
|
+
return _this;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @notice Gets the latest block whose timestamp is <= the provided timestamp.
|
|
103
|
+
* @param number Timestamp timestamp to search.
|
|
104
|
+
* @param hints Optional low and high block to bound the search space.
|
|
105
|
+
*/
|
|
106
|
+
EVMBlockFinder.prototype.getBlockForTimestamp = function (timestamp, hints) {
|
|
107
|
+
if (hints === void 0) { hints = {}; }
|
|
108
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
109
|
+
var block, initialBlock, cushion, incrementDistance, _a, _b, multiplier, distance, blockNumber, block, index;
|
|
110
|
+
var _this = this;
|
|
111
|
+
return __generator(this, function (_c) {
|
|
112
|
+
switch (_c.label) {
|
|
113
|
+
case 0:
|
|
114
|
+
timestamp = Number(timestamp);
|
|
115
|
+
assert(timestamp !== undefined && timestamp !== null, "timestamp must be provided");
|
|
116
|
+
if (!(this.blocks.length === 0 || this.blocks[this.blocks.length - 1].timestamp < timestamp)) return [3 /*break*/, 2];
|
|
117
|
+
return [4 /*yield*/, this.getLatestBlock()];
|
|
118
|
+
case 1:
|
|
119
|
+
block = _c.sent();
|
|
120
|
+
if (timestamp >= block.timestamp)
|
|
121
|
+
return [2 /*return*/, block];
|
|
122
|
+
_c.label = 2;
|
|
123
|
+
case 2:
|
|
124
|
+
// Prime the BlockFinder cache with any supplied hints.
|
|
125
|
+
// If the hint is accurate, then this will bypass the subsequent estimation.
|
|
126
|
+
return [4 /*yield*/, Promise.all(Object.values(hints)
|
|
127
|
+
.filter(function (blockNumber) { return isDefined(blockNumber); })
|
|
128
|
+
.map(function (blockNumber) { return _this.getBlock(blockNumber); }))];
|
|
129
|
+
case 3:
|
|
130
|
+
// Prime the BlockFinder cache with any supplied hints.
|
|
131
|
+
// If the hint is accurate, then this will bypass the subsequent estimation.
|
|
132
|
+
_c.sent();
|
|
133
|
+
if (!(this.blocks[0].timestamp > timestamp)) return [3 /*break*/, 8];
|
|
134
|
+
initialBlock = this.blocks[0];
|
|
135
|
+
cushion = 1;
|
|
136
|
+
_b = (_a = Math).max;
|
|
137
|
+
// Ensure the increment block distance is _at least_ a single block to prevent an infinite loop.
|
|
138
|
+
return [4 /*yield*/, estimateBlocksElapsed(initialBlock.timestamp - timestamp, cushion, this.provider)];
|
|
139
|
+
case 4:
|
|
140
|
+
incrementDistance = _b.apply(_a, [
|
|
141
|
+
// Ensure the increment block distance is _at least_ a single block to prevent an infinite loop.
|
|
142
|
+
_c.sent(), 1]);
|
|
143
|
+
multiplier = 1;
|
|
144
|
+
_c.label = 5;
|
|
145
|
+
case 5:
|
|
146
|
+
distance = multiplier * incrementDistance;
|
|
147
|
+
blockNumber = Math.max(0, initialBlock.number - distance);
|
|
148
|
+
return [4 /*yield*/, this.getBlock(blockNumber)];
|
|
149
|
+
case 6:
|
|
150
|
+
block = _c.sent();
|
|
151
|
+
if (block.timestamp <= timestamp)
|
|
152
|
+
return [3 /*break*/, 8]; // Found an earlier block.
|
|
153
|
+
assert(blockNumber > 0, "timestamp is before block 0"); // Block 0 was not earlier than this timestamp. The row.
|
|
154
|
+
_c.label = 7;
|
|
155
|
+
case 7:
|
|
156
|
+
multiplier++;
|
|
157
|
+
return [3 /*break*/, 5];
|
|
158
|
+
case 8:
|
|
159
|
+
index = sortedIndexBy(this.blocks, { timestamp: timestamp }, "timestamp");
|
|
160
|
+
return [2 /*return*/, this.findBlock(this.blocks[index - 1], this.blocks[index], timestamp)];
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
// Grabs the most recent block and caches it.
|
|
166
|
+
EVMBlockFinder.prototype.getLatestBlock = function () {
|
|
167
|
+
var _a;
|
|
168
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
169
|
+
var block, index;
|
|
170
|
+
return __generator(this, function (_b) {
|
|
171
|
+
switch (_b.label) {
|
|
172
|
+
case 0: return [4 /*yield*/, this.provider.getBlock("latest")];
|
|
173
|
+
case 1:
|
|
174
|
+
block = _b.sent();
|
|
175
|
+
index = sortedIndexBy(this.blocks, block, "number");
|
|
176
|
+
if (((_a = this.blocks[index]) === null || _a === void 0 ? void 0 : _a.number) !== block.number)
|
|
177
|
+
this.blocks.splice(index, 0, block);
|
|
178
|
+
return [2 /*return*/, this.blocks[index]];
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
// Grabs the block for a particular number and caches it.
|
|
184
|
+
EVMBlockFinder.prototype.getBlock = function (number) {
|
|
185
|
+
var _a, _b;
|
|
186
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
187
|
+
var index, block;
|
|
188
|
+
return __generator(this, function (_c) {
|
|
189
|
+
switch (_c.label) {
|
|
190
|
+
case 0:
|
|
191
|
+
index = sortedIndexBy(this.blocks, { number: number }, "number");
|
|
192
|
+
if (((_a = this.blocks[index]) === null || _a === void 0 ? void 0 : _a.number) === number)
|
|
193
|
+
return [2 /*return*/, this.blocks[index]]; // Return early if block already exists.
|
|
194
|
+
return [4 /*yield*/, this.provider.getBlock(number)];
|
|
195
|
+
case 1:
|
|
196
|
+
block = _c.sent();
|
|
197
|
+
// Recompute the index after the async call since the state of this.blocks could have changed!
|
|
198
|
+
index = sortedIndexBy(this.blocks, { number: number }, "number");
|
|
199
|
+
// Rerun this check to avoid duplicate insertion.
|
|
200
|
+
if (((_b = this.blocks[index]) === null || _b === void 0 ? void 0 : _b.number) === number)
|
|
201
|
+
return [2 /*return*/, this.blocks[index]];
|
|
202
|
+
this.blocks.splice(index, 0, block); // A simple insert at index.
|
|
203
|
+
return [2 /*return*/, block];
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
// Return the latest block, between startBlock and endBlock, whose timestamp is <= timestamp.
|
|
209
|
+
// Effectively, this is an interpolation search algorithm to minimize block requests.
|
|
210
|
+
// Note: startBlock and endBlock _must_ be different blocks.
|
|
211
|
+
EVMBlockFinder.prototype.findBlock = function (_startBlock, _endBlock, timestamp) {
|
|
212
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
213
|
+
var _a, startBlock, endBlock, totalTimeDifference, totalBlockDistance, blockPercentile, estimatedBlock, newBlock;
|
|
214
|
+
return __generator(this, function (_b) {
|
|
215
|
+
switch (_b.label) {
|
|
216
|
+
case 0:
|
|
217
|
+
_a = [_startBlock, _endBlock], startBlock = _a[0], endBlock = _a[1];
|
|
218
|
+
// In the case of equality, the endBlock is expected to be passed as the one whose timestamp === the requested
|
|
219
|
+
// timestamp.
|
|
220
|
+
if (endBlock.timestamp === timestamp)
|
|
221
|
+
return [2 /*return*/, endBlock];
|
|
222
|
+
// If there's no equality, but the blocks are adjacent, return the startBlock, since we want the returned block's
|
|
223
|
+
// timestamp to be <= the requested timestamp.
|
|
224
|
+
if (endBlock.number === startBlock.number + 1)
|
|
225
|
+
return [2 /*return*/, startBlock];
|
|
226
|
+
assert(endBlock.number !== startBlock.number, "startBlock cannot equal endBlock");
|
|
227
|
+
assert(timestamp < endBlock.timestamp && timestamp > startBlock.timestamp, "timestamp not in between start and end blocks");
|
|
228
|
+
totalTimeDifference = endBlock.timestamp - startBlock.timestamp;
|
|
229
|
+
totalBlockDistance = endBlock.number - startBlock.number;
|
|
230
|
+
blockPercentile = (timestamp - startBlock.timestamp) / totalTimeDifference;
|
|
231
|
+
estimatedBlock = startBlock.number + Math.round(blockPercentile * totalBlockDistance);
|
|
232
|
+
return [4 /*yield*/, this.getBlock(clamp(estimatedBlock, startBlock.number + 1, endBlock.number - 1))];
|
|
233
|
+
case 1:
|
|
234
|
+
newBlock = _b.sent();
|
|
235
|
+
// Depending on whether the new block is below or above the timestamp, narrow the search space accordingly.
|
|
236
|
+
if (newBlock.timestamp < timestamp) {
|
|
237
|
+
return [2 /*return*/, this.findBlock(newBlock, endBlock, timestamp)];
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
return [2 /*return*/, this.findBlock(startBlock, newBlock, timestamp)];
|
|
241
|
+
}
|
|
242
|
+
return [2 /*return*/];
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
};
|
|
247
|
+
return EVMBlockFinder;
|
|
248
|
+
}(BlockFinder));
|
|
249
|
+
export { EVMBlockFinder };
|
|
250
|
+
//# sourceMappingURL=BlockUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockUtils.js","sourceRoot":"","sources":["../../../../src/arch/evm/BlockUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/arch/evm/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/arch/evm/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { SvmSpokeClient } from "@across-protocol/contracts";
|
|
2
2
|
import { Address, type TransactionSigner } from "@solana/kit";
|
|
3
3
|
import { Logger } from "winston";
|
|
4
|
-
import { Deposit, FillStatus, FillWithBlock, RelayData } from "../../interfaces";
|
|
4
|
+
import { Deposit, DepositWithBlock, FillStatus, FillWithBlock, RelayData } from "../../interfaces";
|
|
5
5
|
import { BigNumber, SvmAddress } from "../../utils";
|
|
6
6
|
import { SvmCpiEventsClient } from "./";
|
|
7
7
|
import { SVMProvider } from "./types";
|
|
8
|
+
/**
|
|
9
|
+
* @note: Average Solana slot duration is about 400-500ms. We can be conservative
|
|
10
|
+
* and choose 400 to ensure that the most slots get included in our ranges
|
|
11
|
+
*/
|
|
12
|
+
export declare const SLOT_DURATION_MS = 400;
|
|
8
13
|
/**
|
|
9
14
|
* @param spokePool SpokePool Contract instance.
|
|
10
15
|
* @param deposit V3Deopsit instance.
|
|
@@ -29,7 +34,37 @@ export declare function getFillDeadline(provider: SVMProvider, statePda: Address
|
|
|
29
34
|
* @returns The deposit ID.
|
|
30
35
|
*/
|
|
31
36
|
export declare function getDepositIdAtBlock(_contract: unknown, _blockTag: number): Promise<BigNumber>;
|
|
32
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Finds deposit events within a 2-day window ending at the specified slot.
|
|
39
|
+
*
|
|
40
|
+
* @remarks
|
|
41
|
+
* This implementation uses a slot-limited search approach because Solana PDA state has
|
|
42
|
+
* limitations that prevent directly referencing old deposit IDs. Unlike EVM chains where
|
|
43
|
+
* we might use binary search across the entire chain history, in Solana we must query within
|
|
44
|
+
* a constrained slot range.
|
|
45
|
+
*
|
|
46
|
+
* The search window is calculated by:
|
|
47
|
+
* 1. Using the provided slot (or current confirmed slot if none is provided)
|
|
48
|
+
* 2. Looking back 2 days worth of slots from that point
|
|
49
|
+
*
|
|
50
|
+
* We use a 2-day window because:
|
|
51
|
+
* 1. Most valid deposits that need to be processed will be recent
|
|
52
|
+
* 2. This covers multiple bundle submission periods
|
|
53
|
+
* 3. It balances performance with practical deposit age
|
|
54
|
+
*
|
|
55
|
+
* @important
|
|
56
|
+
* This function may return `undefined` for valid deposit IDs that are older than the search
|
|
57
|
+
* window (approximately 2 days before the specified slot). This is an acceptable limitation
|
|
58
|
+
* as deposits this old are typically not relevant to current operations.
|
|
59
|
+
*
|
|
60
|
+
* @param eventClient - SvmCpiEventsClient instance
|
|
61
|
+
* @param depositId - The deposit ID to search for
|
|
62
|
+
* @param slot - The slot to search up to (defaults to current slot). The search will look
|
|
63
|
+
* for deposits between (slot - secondsLookback) and slot.
|
|
64
|
+
* @param secondsLookback - The number of seconds to look back for deposits (defaults to 2 days).
|
|
65
|
+
* @returns The deposit if found within the slot window, undefined otherwise
|
|
66
|
+
*/
|
|
67
|
+
export declare function findDeposit(eventClient: SvmCpiEventsClient, depositId: BigNumber, slot?: bigint, secondsLookback?: number): Promise<DepositWithBlock | undefined>;
|
|
33
68
|
/**
|
|
34
69
|
* Resolves the fill status of a deposit at a specific slot or at the current confirmed one.
|
|
35
70
|
*
|
|
@@ -8,9 +8,14 @@ import assert from "assert";
|
|
|
8
8
|
import { arrayify, hexZeroPad, hexlify } from "ethers/lib/utils";
|
|
9
9
|
import { CHAIN_IDs } from "../../constants";
|
|
10
10
|
import { FillStatus } from "../../interfaces";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
11
|
+
import { isUnsafeDepositId, SvmAddress, getTokenInfo, isDefined, toAddressType, keccak256, chainIsSvm, chunk, } from "../../utils";
|
|
12
|
+
import { getStatePda, getFillStatusPda, unwrapEventData, getEventAuthority } from "./";
|
|
13
13
|
import { SVMEventNames } from "./types";
|
|
14
|
+
/**
|
|
15
|
+
* @note: Average Solana slot duration is about 400-500ms. We can be conservative
|
|
16
|
+
* and choose 400 to ensure that the most slots get included in our ranges
|
|
17
|
+
*/
|
|
18
|
+
export var SLOT_DURATION_MS = 400;
|
|
14
19
|
/**
|
|
15
20
|
* @param spokePool SpokePool Contract instance.
|
|
16
21
|
* @param deposit V3Deopsit instance.
|
|
@@ -64,12 +69,70 @@ export function getFillDeadline(provider, statePda) {
|
|
|
64
69
|
export function getDepositIdAtBlock(_contract, _blockTag) {
|
|
65
70
|
throw new Error("getDepositIdAtBlock: not implemented");
|
|
66
71
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Finds deposit events within a 2-day window ending at the specified slot.
|
|
74
|
+
*
|
|
75
|
+
* @remarks
|
|
76
|
+
* This implementation uses a slot-limited search approach because Solana PDA state has
|
|
77
|
+
* limitations that prevent directly referencing old deposit IDs. Unlike EVM chains where
|
|
78
|
+
* we might use binary search across the entire chain history, in Solana we must query within
|
|
79
|
+
* a constrained slot range.
|
|
80
|
+
*
|
|
81
|
+
* The search window is calculated by:
|
|
82
|
+
* 1. Using the provided slot (or current confirmed slot if none is provided)
|
|
83
|
+
* 2. Looking back 2 days worth of slots from that point
|
|
84
|
+
*
|
|
85
|
+
* We use a 2-day window because:
|
|
86
|
+
* 1. Most valid deposits that need to be processed will be recent
|
|
87
|
+
* 2. This covers multiple bundle submission periods
|
|
88
|
+
* 3. It balances performance with practical deposit age
|
|
89
|
+
*
|
|
90
|
+
* @important
|
|
91
|
+
* This function may return `undefined` for valid deposit IDs that are older than the search
|
|
92
|
+
* window (approximately 2 days before the specified slot). This is an acceptable limitation
|
|
93
|
+
* as deposits this old are typically not relevant to current operations.
|
|
94
|
+
*
|
|
95
|
+
* @param eventClient - SvmCpiEventsClient instance
|
|
96
|
+
* @param depositId - The deposit ID to search for
|
|
97
|
+
* @param slot - The slot to search up to (defaults to current slot). The search will look
|
|
98
|
+
* for deposits between (slot - secondsLookback) and slot.
|
|
99
|
+
* @param secondsLookback - The number of seconds to look back for deposits (defaults to 2 days).
|
|
100
|
+
* @returns The deposit if found within the slot window, undefined otherwise
|
|
101
|
+
*/
|
|
102
|
+
export function findDeposit(eventClient, depositId, slot, secondsLookback // 2 days
|
|
103
|
+
) {
|
|
104
|
+
var _a;
|
|
105
|
+
if (secondsLookback === void 0) { secondsLookback = 2 * 24 * 60 * 60; }
|
|
106
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
107
|
+
var provider, currentSlot, endSlot, slotsInElapsed, startSlot, depositEvent;
|
|
108
|
+
return __generator(this, function (_b) {
|
|
109
|
+
switch (_b.label) {
|
|
110
|
+
case 0:
|
|
111
|
+
// We can only perform this search when we have a safe deposit ID.
|
|
112
|
+
if (isUnsafeDepositId(depositId)) {
|
|
113
|
+
throw new Error("Cannot binary search for depositId ".concat(depositId));
|
|
114
|
+
}
|
|
115
|
+
provider = eventClient.getRpc();
|
|
116
|
+
return [4 /*yield*/, provider.getSlot({ commitment: "confirmed" }).send()];
|
|
117
|
+
case 1:
|
|
118
|
+
currentSlot = _b.sent();
|
|
119
|
+
endSlot = slot !== undefined ? BigInt(Math.min(Number(slot), Number(currentSlot))) : currentSlot;
|
|
120
|
+
slotsInElapsed = BigInt(Math.round((secondsLookback * 1000) / SLOT_DURATION_MS));
|
|
121
|
+
startSlot = endSlot - slotsInElapsed;
|
|
122
|
+
return [4 /*yield*/, eventClient.queryEvents("FundsDeposited", startSlot, endSlot)];
|
|
123
|
+
case 2:
|
|
124
|
+
depositEvent = (_a = (_b.sent())) === null || _a === void 0 ? void 0 : _a.find(function (event) {
|
|
125
|
+
return depositId.eq(event.data.depositId);
|
|
126
|
+
});
|
|
127
|
+
// If no deposit event is found, return undefined
|
|
128
|
+
if (!depositEvent) {
|
|
129
|
+
return [2 /*return*/, undefined];
|
|
130
|
+
}
|
|
131
|
+
// Return the deposit event with block info
|
|
132
|
+
return [2 /*return*/, __assign({ txnRef: depositEvent.signature.toString(), blockNumber: Number(depositEvent.slot), txnIndex: 0, logIndex: 0 }, unwrapEventData(depositEvent.data))];
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
});
|
|
73
136
|
}
|
|
74
137
|
/**
|
|
75
138
|
* Resolves the fill status of a deposit at a specific slot or at the current confirmed one.
|
|
@@ -302,9 +365,9 @@ export function fillRelayInstruction(spokePool, deposit, relayer, recipientToken
|
|
|
302
365
|
])];
|
|
303
366
|
case 2:
|
|
304
367
|
_b = _c.sent(), statePda = _b[0], fillStatusPda = _b[1], eventAuthority = _b[2];
|
|
305
|
-
depositIdBuffer =
|
|
306
|
-
shortenedBuffer = Buffer.from(deposit.depositId.toHexString().slice(2), "hex");
|
|
307
|
-
|
|
368
|
+
depositIdBuffer = new Uint8Array(32);
|
|
369
|
+
shortenedBuffer = new Uint8Array(Buffer.from(deposit.depositId.toHexString().slice(2), "hex"));
|
|
370
|
+
depositIdBuffer.set(shortenedBuffer, 32 - shortenedBuffer.length);
|
|
308
371
|
return [2 /*return*/, SvmSpokeClient.getFillRelayInstruction({
|
|
309
372
|
signer: relayer,
|
|
310
373
|
state: statePda,
|
|
@@ -326,7 +389,7 @@ export function fillRelayInstruction(spokePool, deposit, relayer, recipientToken
|
|
|
326
389
|
originChainId: BigInt(deposit.originChainId),
|
|
327
390
|
fillDeadline: deposit.fillDeadline,
|
|
328
391
|
exclusivityDeadline: deposit.exclusivityDeadline,
|
|
329
|
-
depositId:
|
|
392
|
+
depositId: depositIdBuffer,
|
|
330
393
|
message: new Uint8Array(Buffer.from(deposit.message.slice(2), "hex")),
|
|
331
394
|
}),
|
|
332
395
|
repaymentChainId: some(BigInt(repaymentChainId)),
|
|
@@ -392,7 +455,11 @@ export function getAssociatedTokenAddress(owner, mint, tokenProgramId) {
|
|
|
392
455
|
switch (_a.label) {
|
|
393
456
|
case 0: return [4 /*yield*/, getProgramDerivedAddress({
|
|
394
457
|
programAddress: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
|
|
395
|
-
seeds: [
|
|
458
|
+
seeds: [
|
|
459
|
+
new Uint8Array(owner.toBuffer()),
|
|
460
|
+
new Uint8Array(SvmAddress.from(tokenProgramId).toBuffer()),
|
|
461
|
+
new Uint8Array(mint.toBuffer()),
|
|
462
|
+
],
|
|
396
463
|
})];
|
|
397
464
|
case 1:
|
|
398
465
|
associatedToken = (_a.sent())[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpokeUtils.js","sourceRoot":"","sources":["../../../../src/arch/svm/SpokeUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SpokeUtils.js","sourceRoot":"","sources":["../../../../src/arch/svm/SpokeUtils.ts"],"names":[],"mappings":"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"}
|