@across-protocol/sdk 4.3.37 → 4.3.40
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/svm/BlockUtils.d.ts +3 -1
- package/dist/cjs/arch/svm/BlockUtils.js +3 -2
- package/dist/cjs/arch/svm/BlockUtils.js.map +1 -1
- package/dist/cjs/arch/svm/SpokeUtils.d.ts +9 -8
- package/dist/cjs/arch/svm/SpokeUtils.js +106 -130
- package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/svm/provider.d.ts +1 -1
- package/dist/cjs/arch/svm/provider.js +2 -1
- package/dist/cjs/arch/svm/provider.js.map +1 -1
- package/dist/cjs/arch/svm/utils.d.ts +5 -2
- package/dist/cjs/arch/svm/utils.js +23 -6
- package/dist/cjs/arch/svm/utils.js.map +1 -1
- package/dist/cjs/clients/BaseAbstractClient.d.ts +3 -1
- package/dist/cjs/clients/BaseAbstractClient.js +31 -13
- package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +1 -1
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +5 -5
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.d.ts +1 -1
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js +2 -2
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +1 -1
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js +2 -2
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.d.ts +1 -1
- package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js +2 -2
- package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/baseRpcFactories.d.ts +3 -3
- package/dist/cjs/providers/solana/baseRpcFactories.js +4 -8
- package/dist/cjs/providers/solana/baseRpcFactories.js.map +1 -1
- package/dist/cjs/providers/solana/cachedRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/index.d.ts +1 -0
- package/dist/cjs/providers/solana/index.js +1 -0
- package/dist/cjs/providers/solana/index.js.map +1 -1
- package/dist/cjs/providers/solana/quorumFallbackRpcFactory.d.ts +16 -0
- package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js +208 -0
- package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js.map +1 -0
- package/dist/cjs/providers/utils.d.ts +1 -0
- package/dist/cjs/providers/utils.js +5 -1
- package/dist/cjs/providers/utils.js.map +1 -1
- package/dist/cjs/utils/BlockExplorerUtils.js +1 -1
- package/dist/cjs/utils/BlockExplorerUtils.js.map +1 -1
- package/dist/esm/arch/svm/BlockUtils.d.ts +3 -1
- package/dist/esm/arch/svm/BlockUtils.js +3 -2
- package/dist/esm/arch/svm/BlockUtils.js.map +1 -1
- package/dist/esm/arch/svm/SpokeUtils.d.ts +9 -8
- package/dist/esm/arch/svm/SpokeUtils.js +109 -131
- package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/svm/provider.d.ts +1 -1
- package/dist/esm/arch/svm/provider.js +1 -1
- package/dist/esm/arch/svm/provider.js.map +1 -1
- package/dist/esm/arch/svm/utils.d.ts +11 -2
- package/dist/esm/arch/svm/utils.js +28 -6
- package/dist/esm/arch/svm/utils.js.map +1 -1
- package/dist/esm/clients/BaseAbstractClient.d.ts +3 -1
- package/dist/esm/clients/BaseAbstractClient.js +31 -13
- package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js +1 -1
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +1 -1
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +5 -5
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
- package/dist/esm/pool/poolClient.js +1 -1
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.d.ts +1 -1
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js +1 -1
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +1 -1
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js +1 -1
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.d.ts +1 -1
- package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js +1 -1
- package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/baseRpcFactories.d.ts +3 -3
- package/dist/esm/providers/solana/baseRpcFactories.js +4 -8
- package/dist/esm/providers/solana/baseRpcFactories.js.map +1 -1
- package/dist/esm/providers/solana/cachedRpcFactory.js +2 -0
- package/dist/esm/providers/solana/cachedRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/index.d.ts +1 -0
- package/dist/esm/providers/solana/index.js +1 -0
- package/dist/esm/providers/solana/index.js.map +1 -1
- package/dist/esm/providers/solana/quorumFallbackRpcFactory.d.ts +16 -0
- package/dist/esm/providers/solana/quorumFallbackRpcFactory.js +225 -0
- package/dist/esm/providers/solana/quorumFallbackRpcFactory.js.map +1 -0
- package/dist/esm/providers/utils.d.ts +1 -0
- package/dist/esm/providers/utils.js +3 -0
- package/dist/esm/providers/utils.js.map +1 -1
- package/dist/esm/utils/AddressUtils.js +1 -1
- package/dist/esm/utils/AddressUtils.js.map +1 -1
- package/dist/esm/utils/BlockExplorerUtils.js +1 -1
- package/dist/esm/utils/BlockExplorerUtils.js.map +1 -1
- package/dist/esm/utils/abi/index.d.ts +1 -1
- package/dist/esm/utils/abi/index.js +1 -1
- package/dist/types/arch/svm/BlockUtils.d.ts +3 -1
- package/dist/types/arch/svm/BlockUtils.d.ts.map +1 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts +9 -8
- package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
- package/dist/types/arch/svm/provider.d.ts +1 -1
- package/dist/types/arch/svm/provider.d.ts.map +1 -1
- package/dist/types/arch/svm/utils.d.ts +11 -2
- package/dist/types/arch/svm/utils.d.ts.map +1 -1
- package/dist/types/clients/BaseAbstractClient.d.ts +3 -1
- package/dist/types/clients/BaseAbstractClient.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts.map +1 -1
- package/dist/types/providers/mocks/MockCachedSolanaRpcFactory.d.ts +1 -1
- package/dist/types/providers/mocks/MockCachedSolanaRpcFactory.d.ts.map +1 -1
- package/dist/types/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +1 -1
- package/dist/types/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts.map +1 -1
- package/dist/types/providers/mocks/MockRetrySolanaRpcFactory.d.ts +1 -1
- package/dist/types/providers/mocks/MockRetrySolanaRpcFactory.d.ts.map +1 -1
- package/dist/types/providers/solana/baseRpcFactories.d.ts +3 -3
- package/dist/types/providers/solana/baseRpcFactories.d.ts.map +1 -1
- package/dist/types/providers/solana/cachedRpcFactory.d.ts.map +1 -1
- package/dist/types/providers/solana/index.d.ts +1 -0
- package/dist/types/providers/solana/index.d.ts.map +1 -1
- package/dist/types/providers/solana/quorumFallbackRpcFactory.d.ts +17 -0
- package/dist/types/providers/solana/quorumFallbackRpcFactory.d.ts.map +1 -0
- package/dist/types/providers/utils.d.ts +1 -0
- package/dist/types/providers/utils.d.ts.map +1 -1
- package/dist/types/utils/abi/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/arch/svm/BlockUtils.ts +3 -1
- package/src/arch/svm/SpokeUtils.ts +100 -137
- package/src/arch/svm/provider.ts +1 -0
- package/src/arch/svm/utils.ts +30 -4
- package/src/caching/Arweave/ArweaveClient.ts +1 -1
- package/src/clients/BaseAbstractClient.ts +24 -8
- package/src/clients/BundleDataClient/BundleDataClient.ts +1 -0
- package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +5 -1
- package/src/clients/SpokePoolClient/SVMSpokePoolClient.ts +5 -5
- package/src/pool/poolClient.ts +1 -1
- package/src/providers/mocks/MockCachedSolanaRpcFactory.ts +1 -1
- package/src/providers/mocks/MockRateLimitedSolanaRpcFactory.ts +1 -1
- package/src/providers/mocks/MockRetrySolanaRpcFactory.ts +1 -1
- package/src/providers/rateLimitedProvider.ts +1 -1
- package/src/providers/solana/baseRpcFactories.ts +3 -3
- package/src/providers/solana/cachedRpcFactory.ts +2 -0
- package/src/providers/solana/index.ts +1 -0
- package/src/providers/solana/quorumFallbackRpcFactory.ts +248 -0
- package/src/providers/utils.ts +4 -0
- package/src/utils/AddressUtils.ts +1 -1
- package/src/utils/BlockExplorerUtils.ts +1 -1
- package/src/utils/abi/index.ts +1 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { BlockFinder, type Block, type BlockTimeAverage, type BlockFinderHints } from "../../utils/BlockFinder";
|
|
2
2
|
import { SVMProvider } from "./";
|
|
3
|
+
import winston from "winston";
|
|
3
4
|
interface SVMBlock extends Block {
|
|
4
5
|
}
|
|
5
6
|
export declare function averageBlockTime(): Pick<BlockTimeAverage, "average" | "blockRange">;
|
|
6
7
|
export declare class SVMBlockFinder extends BlockFinder<SVMBlock> {
|
|
8
|
+
private readonly logger;
|
|
7
9
|
private readonly provider;
|
|
8
10
|
private readonly blocks;
|
|
9
|
-
constructor(provider: SVMProvider, blocks?: SVMBlock[]);
|
|
11
|
+
constructor(logger: winston.Logger, provider: SVMProvider, blocks?: SVMBlock[]);
|
|
10
12
|
getBlockForTimestamp(timestamp: number | string, hints?: BlockFinderHints): Promise<SVMBlock>;
|
|
11
13
|
private getBlockTime;
|
|
12
14
|
private getLatestBlock;
|
|
@@ -26,9 +26,10 @@ function estimateBlocksElapsed(seconds, cushionPercentage, _provider) {
|
|
|
26
26
|
}
|
|
27
27
|
var SVMBlockFinder = (function (_super) {
|
|
28
28
|
tslib_1.__extends(SVMBlockFinder, _super);
|
|
29
|
-
function SVMBlockFinder(provider, blocks) {
|
|
29
|
+
function SVMBlockFinder(logger, provider, blocks) {
|
|
30
30
|
if (blocks === void 0) { blocks = []; }
|
|
31
31
|
var _this = _super.call(this) || this;
|
|
32
|
+
_this.logger = logger;
|
|
32
33
|
_this.provider = provider;
|
|
33
34
|
_this.blocks = blocks;
|
|
34
35
|
return _this;
|
|
@@ -83,7 +84,7 @@ var SVMBlockFinder = (function (_super) {
|
|
|
83
84
|
};
|
|
84
85
|
SVMBlockFinder.prototype.getBlockTime = function (slot) {
|
|
85
86
|
var opts = (0, TypeGuards_1.isDefined)(slot) ? { slot: slot } : undefined;
|
|
86
|
-
return (0, utils_1.getNearestSlotTime)(this.provider, opts);
|
|
87
|
+
return (0, utils_1.getNearestSlotTime)(this.provider, this.logger, opts);
|
|
87
88
|
};
|
|
88
89
|
SVMBlockFinder.prototype.getLatestBlock = function () {
|
|
89
90
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockUtils.js","sourceRoot":"","sources":["../../../../src/arch/svm/BlockUtils.ts"],"names":[],"mappings":";;;;;AAAA,0DAA4B;AAC5B,iCAA8C;AAC9C,uDAAgH;AAChH,qDAAmD;AACnD,mDAAuD;AACvD,6CAA4C;AAE5C,iCAA6C;
|
|
1
|
+
{"version":3,"file":"BlockUtils.js","sourceRoot":"","sources":["../../../../src/arch/svm/BlockUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MessageTransmitterClient, SvmSpokeClient } from "@across-protocol/contracts";
|
|
2
2
|
import { Mint } from "@solana-program/token";
|
|
3
|
-
import { Account, Address, FetchAccountConfig, IAccountMeta, KeyPairSigner, ReadonlyUint8Array, type TransactionSigner } from "@solana/kit";
|
|
4
|
-
import
|
|
3
|
+
import { Account, Address, FetchAccountConfig, IAccountMeta, KeyPairSigner, ReadonlyUint8Array, type TransactionSigner, type Commitment } from "@solana/kit";
|
|
4
|
+
import winston from "winston";
|
|
5
5
|
import { DepositWithBlock, FillStatus, FillWithBlock, RelayData } from "../../interfaces";
|
|
6
6
|
import { BigNumber, EvmAddress, Address as SdkAddress, SvmAddress } from "../../utils";
|
|
7
7
|
import { SvmCpiEventsClient } from "./eventsClient";
|
|
@@ -12,14 +12,15 @@ type ProtoFill = Omit<RelayData, "recipient" | "outputToken"> & {
|
|
|
12
12
|
recipient: SvmAddress;
|
|
13
13
|
outputToken: SvmAddress;
|
|
14
14
|
};
|
|
15
|
-
export declare function
|
|
15
|
+
export declare function getSlot(provider: SVMProvider, commitment: Commitment, logger: winston.Logger): Promise<bigint>;
|
|
16
|
+
export declare function getTimestampForSlot(provider: SVMProvider, slotNumber: bigint, logger: winston.Logger, maxRetries?: number): Promise<number | undefined>;
|
|
16
17
|
export declare function getFillDeadline(provider: SVMProvider, statePda: Address): Promise<number>;
|
|
17
18
|
export declare function getDepositIdAtBlock(_contract: unknown, _blockTag: number): Promise<BigNumber>;
|
|
18
|
-
export declare function findDeposit(eventClient: SvmCpiEventsClient, depositId: BigNumber, slot?: bigint, secondsLookback?: number): Promise<DepositWithBlock | undefined>;
|
|
19
|
-
export declare function relayFillStatus(programId: Address, relayData: RelayData, destinationChainId: number, svmEventsClient: SvmCpiEventsClient, atHeight?: number): Promise<FillStatus>;
|
|
20
|
-
export declare function fillStatusArray(programId: Address, relayData: RelayData[], destinationChainId: number, svmEventsClient: SvmCpiEventsClient,
|
|
21
|
-
export declare function findFillEvent(relayData: RelayData, destinationChainId: number, svmEventsClient: SvmCpiEventsClient, fromSlot: number, toSlot?: number): Promise<FillWithBlock | undefined>;
|
|
22
|
-
export declare function fillRelayInstruction(spokePool: SvmAddress, relayData: ProtoFill, signer: TransactionSigner<string>, recipientTokenAccount: Address<string>, repaymentAddress
|
|
19
|
+
export declare function findDeposit(eventClient: SvmCpiEventsClient, depositId: BigNumber, logger: winston.Logger, slot?: bigint, secondsLookback?: number): Promise<DepositWithBlock | undefined>;
|
|
20
|
+
export declare function relayFillStatus(programId: Address, relayData: RelayData, destinationChainId: number, svmEventsClient: SvmCpiEventsClient, logger: winston.Logger, atHeight?: number): Promise<FillStatus>;
|
|
21
|
+
export declare function fillStatusArray(programId: Address, relayData: RelayData[], destinationChainId: number, svmEventsClient: SvmCpiEventsClient, logger: winston.Logger, atHeight?: number): Promise<(FillStatus | undefined)[]>;
|
|
22
|
+
export declare function findFillEvent(relayData: RelayData, destinationChainId: number, svmEventsClient: SvmCpiEventsClient, logger: winston.Logger, fromSlot: number, toSlot?: number): Promise<FillWithBlock | undefined>;
|
|
23
|
+
export declare function fillRelayInstruction(spokePool: SvmAddress, relayData: ProtoFill, signer: TransactionSigner<string>, recipientTokenAccount: Address<string>, repaymentAddress: EvmAddress | SvmAddress, repaymentChainId: number): Promise<SvmSpokeClient.FillRelayInstruction<Address<"DLv3NggMiSaef97YCkew5xKUHDh13tVGZ7tydt3ZeAru">, string, string, string, string, string, string, string, string, string, string, string, string, string, []>>;
|
|
23
24
|
export declare function createTokenAccountsInstruction(mint: SvmAddress, relayer: TransactionSigner<string>): SvmSpokeClient.CreateTokenAccountsInstruction;
|
|
24
25
|
export declare function getFillRelayTx(spokePoolAddr: SvmAddress, solanaClient: SVMProvider, relayData: Omit<RelayData, "recipient" | "outputToken"> & {
|
|
25
26
|
destinationChainId: number;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMintInfo = exports.finalizeCCTPV1Messages = exports.getCCTPV1ReceiveMessageTx = exports.getAccountMetasForTokenlessMessage = exports.hasCCTPV1MessageBeenProcessed = exports.getFillRelayDelegatePda = exports.getDepositNowDelegatePda = exports.getDepositDelegatePda = exports.getRelayDataHash = exports.getAssociatedTokenAddress = exports.createReceiveMessageInstruction = exports.createCloseFillPdaInstruction = exports.getSlowFillRequestTx = exports.createRequestSlowFillInstruction = exports.createDepositInstruction = exports.createFillInstruction = exports.getFillRelayTx = exports.createTokenAccountsInstruction = exports.fillRelayInstruction = exports.findFillEvent = exports.fillStatusArray = exports.relayFillStatus = exports.findDeposit = exports.getDepositIdAtBlock = exports.getFillDeadline = exports.getTimestampForSlot = exports.SLOT_DURATION_MS = void 0;
|
|
3
|
+
exports.getMintInfo = exports.finalizeCCTPV1Messages = exports.getCCTPV1ReceiveMessageTx = exports.getAccountMetasForTokenlessMessage = exports.hasCCTPV1MessageBeenProcessed = exports.getFillRelayDelegatePda = exports.getDepositNowDelegatePda = exports.getDepositDelegatePda = exports.getRelayDataHash = exports.getAssociatedTokenAddress = exports.createReceiveMessageInstruction = exports.createCloseFillPdaInstruction = exports.getSlowFillRequestTx = exports.createRequestSlowFillInstruction = exports.createDepositInstruction = exports.createFillInstruction = exports.getFillRelayTx = exports.createTokenAccountsInstruction = exports.fillRelayInstruction = exports.findFillEvent = exports.fillStatusArray = exports.relayFillStatus = exports.findDeposit = exports.getDepositIdAtBlock = exports.getFillDeadline = exports.getTimestampForSlot = exports.getSlot = exports.SLOT_DURATION_MS = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var contracts_1 = require("@across-protocol/contracts");
|
|
6
6
|
var SvmSpoke_1 = require("@across-protocol/contracts/dist/src/svm/clients/SvmSpoke");
|
|
7
7
|
var web3_v1_1 = require("@across-protocol/contracts/dist/src/svm/web3-v1");
|
|
8
|
-
var conversionUtils_1 = require("@across-protocol/contracts/dist/src/svm/web3-v1/conversionUtils");
|
|
9
8
|
var system_1 = require("@solana-program/system");
|
|
10
9
|
var token_1 = require("@solana-program/token");
|
|
11
10
|
var kit_1 = require("@solana/kit");
|
|
@@ -19,14 +18,44 @@ var provider_1 = require("./provider");
|
|
|
19
18
|
var types_1 = require("./types");
|
|
20
19
|
var utils_3 = require("./utils");
|
|
21
20
|
exports.SLOT_DURATION_MS = 400;
|
|
22
|
-
function
|
|
21
|
+
function getSlot(provider, commitment, logger) {
|
|
22
|
+
return _callGetSlotWithRetry(provider, commitment, logger);
|
|
23
|
+
}
|
|
24
|
+
exports.getSlot = getSlot;
|
|
25
|
+
function _callGetSlotWithRetry(provider, commitment, logger) {
|
|
26
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
27
|
+
var err_1, code;
|
|
28
|
+
return tslib_1.__generator(this, function (_a) {
|
|
29
|
+
switch (_a.label) {
|
|
30
|
+
case 0:
|
|
31
|
+
_a.trys.push([0, 2, , 3]);
|
|
32
|
+
return [4, provider.getSlot({ commitment: commitment }).send()];
|
|
33
|
+
case 1: return [2, _a.sent()];
|
|
34
|
+
case 2:
|
|
35
|
+
err_1 = _a.sent();
|
|
36
|
+
if ((0, provider_1.isSolanaError)(err_1)) {
|
|
37
|
+
code = err_1.context.__code;
|
|
38
|
+
logger.debug({
|
|
39
|
+
at: "_getSlotWithRetry",
|
|
40
|
+
message: "Caught error from getSlot()",
|
|
41
|
+
code: code,
|
|
42
|
+
commitment: commitment,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
throw err_1;
|
|
46
|
+
case 3: return [2];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function getTimestampForSlot(provider, slotNumber, logger, maxRetries) {
|
|
23
52
|
if (maxRetries === void 0) { maxRetries = 2; }
|
|
24
|
-
return _callGetTimestampForSlotWithRetry(provider, slotNumber, 0, maxRetries);
|
|
53
|
+
return _callGetTimestampForSlotWithRetry(provider, slotNumber, 0, maxRetries, logger);
|
|
25
54
|
}
|
|
26
55
|
exports.getTimestampForSlot = getTimestampForSlot;
|
|
27
|
-
function _callGetTimestampForSlotWithRetry(provider, slotNumber, retryAttempt, maxRetries) {
|
|
56
|
+
function _callGetTimestampForSlotWithRetry(provider, slotNumber, retryAttempt, maxRetries, logger) {
|
|
28
57
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
29
|
-
var _timestamp,
|
|
58
|
+
var _timestamp, err_2, code, slot, _a, delaySeconds, timestamp;
|
|
30
59
|
return tslib_1.__generator(this, function (_b) {
|
|
31
60
|
switch (_b.label) {
|
|
32
61
|
case 0:
|
|
@@ -36,13 +65,13 @@ function _callGetTimestampForSlotWithRetry(provider, slotNumber, retryAttempt, m
|
|
|
36
65
|
_timestamp = _b.sent();
|
|
37
66
|
return [3, 8];
|
|
38
67
|
case 2:
|
|
39
|
-
|
|
40
|
-
if (!(0, provider_1.isSolanaError)(
|
|
41
|
-
throw
|
|
68
|
+
err_2 = _b.sent();
|
|
69
|
+
if (!(0, provider_1.isSolanaError)(err_2)) {
|
|
70
|
+
throw err_2;
|
|
42
71
|
}
|
|
43
|
-
code =
|
|
72
|
+
code = err_2.context.__code;
|
|
44
73
|
slot = slotNumber.toString();
|
|
45
|
-
_a =
|
|
74
|
+
_a = err_2.context.__code;
|
|
46
75
|
switch (_a) {
|
|
47
76
|
case provider_1.SVM_SLOT_SKIPPED: return [3, 3];
|
|
48
77
|
case provider_1.SVM_BLOCK_NOT_AVAILABLE: return [3, 4];
|
|
@@ -54,11 +83,28 @@ function _callGetTimestampForSlotWithRetry(provider, slotNumber, retryAttempt, m
|
|
|
54
83
|
if (retryAttempt >= maxRetries) {
|
|
55
84
|
throw new Error("Timeout on SVM getBlockTime() for slot ".concat(slot, " after ").concat(retryAttempt, " retry attempts"));
|
|
56
85
|
}
|
|
86
|
+
logger.debug({
|
|
87
|
+
at: "getTimestampForSlot",
|
|
88
|
+
message: "Retrying getBlockTime() after ".concat(delaySeconds, " seconds for retry attempt #").concat(retryAttempt),
|
|
89
|
+
slot: slot,
|
|
90
|
+
retryAttempt: retryAttempt,
|
|
91
|
+
maxRetries: maxRetries,
|
|
92
|
+
delaySeconds: delaySeconds,
|
|
93
|
+
});
|
|
57
94
|
return [4, (0, utils_2.delay)(delaySeconds)];
|
|
58
95
|
case 5:
|
|
59
96
|
_b.sent();
|
|
60
|
-
return [2, _callGetTimestampForSlotWithRetry(provider, slotNumber, ++retryAttempt, maxRetries)];
|
|
61
|
-
case 6:
|
|
97
|
+
return [2, _callGetTimestampForSlotWithRetry(provider, slotNumber, ++retryAttempt, maxRetries, logger)];
|
|
98
|
+
case 6:
|
|
99
|
+
logger.debug({
|
|
100
|
+
at: "getTimestampForSlot",
|
|
101
|
+
message: "Caught error from getBlockTime()",
|
|
102
|
+
errorCode: code,
|
|
103
|
+
slot: slot,
|
|
104
|
+
retryAttempt: retryAttempt,
|
|
105
|
+
maxRetries: maxRetries,
|
|
106
|
+
});
|
|
107
|
+
throw new Error("Unhandled SVM getBlockTime() error for slot ".concat(slot, ": ").concat(code), { cause: err_2 });
|
|
62
108
|
case 7: return [3, 8];
|
|
63
109
|
case 8:
|
|
64
110
|
timestamp = Number(_timestamp);
|
|
@@ -86,7 +132,7 @@ function getDepositIdAtBlock(_contract, _blockTag) {
|
|
|
86
132
|
throw new Error("getDepositIdAtBlock: not implemented");
|
|
87
133
|
}
|
|
88
134
|
exports.getDepositIdAtBlock = getDepositIdAtBlock;
|
|
89
|
-
function findDeposit(eventClient, depositId, slot, secondsLookback) {
|
|
135
|
+
function findDeposit(eventClient, depositId, logger, slot, secondsLookback) {
|
|
90
136
|
var _a;
|
|
91
137
|
if (secondsLookback === void 0) { secondsLookback = 2 * 24 * 60 * 60; }
|
|
92
138
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
@@ -98,7 +144,7 @@ function findDeposit(eventClient, depositId, slot, secondsLookback) {
|
|
|
98
144
|
throw new Error("Cannot binary search for depositId ".concat(depositId));
|
|
99
145
|
}
|
|
100
146
|
provider = eventClient.getRpc();
|
|
101
|
-
return [4, (0, utils_3.getNearestSlotTime)(provider)];
|
|
147
|
+
return [4, (0, utils_3.getNearestSlotTime)(provider, logger)];
|
|
102
148
|
case 1:
|
|
103
149
|
currentSlot = (_b.sent()).slot;
|
|
104
150
|
endSlot = slot !== undefined ? BigInt(Math.min(Number(slot), Number(currentSlot))) : currentSlot;
|
|
@@ -120,7 +166,7 @@ function findDeposit(eventClient, depositId, slot, secondsLookback) {
|
|
|
120
166
|
});
|
|
121
167
|
}
|
|
122
168
|
exports.findDeposit = findDeposit;
|
|
123
|
-
function relayFillStatus(programId, relayData, destinationChainId, svmEventsClient, atHeight) {
|
|
169
|
+
function relayFillStatus(programId, relayData, destinationChainId, svmEventsClient, logger, atHeight) {
|
|
124
170
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
125
171
|
var provider, fillStatusPda, toSlot, commitment, _a, fillStatusAccount, _b, currentSlot, timestamp, decodedAccountData;
|
|
126
172
|
return tslib_1.__generator(this, function (_c) {
|
|
@@ -136,7 +182,7 @@ function relayFillStatus(programId, relayData, destinationChainId, svmEventsClie
|
|
|
136
182
|
commitment = "confirmed";
|
|
137
183
|
return [4, Promise.all([
|
|
138
184
|
(0, kit_1.fetchEncodedAccount)(provider, fillStatusPda, { commitment: commitment }),
|
|
139
|
-
(0, utils_3.getNearestSlotTime)(provider, { commitment: commitment }),
|
|
185
|
+
(0, utils_3.getNearestSlotTime)(provider, logger, { commitment: commitment }),
|
|
140
186
|
])];
|
|
141
187
|
case 2:
|
|
142
188
|
_a = _c.sent(), fillStatusAccount = _a[0], _b = _a[1], currentSlot = _b.slot, timestamp = _b.timestamp;
|
|
@@ -155,7 +201,7 @@ function relayFillStatus(programId, relayData, destinationChainId, svmEventsClie
|
|
|
155
201
|
});
|
|
156
202
|
}
|
|
157
203
|
exports.relayFillStatus = relayFillStatus;
|
|
158
|
-
function fillStatusArray(programId, relayData, destinationChainId, svmEventsClient,
|
|
204
|
+
function fillStatusArray(programId, relayData, destinationChainId, svmEventsClient, logger, atHeight) {
|
|
159
205
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
160
206
|
var provider, chunkSize, chunkedRelayData, fillStatusPdas, fillStatuses, _a, missingStatuses, missingChunked, missingResults, toSlot, _b, _i, missingChunked_1, chunk_1, chunkResults;
|
|
161
207
|
var _this = this;
|
|
@@ -178,7 +224,7 @@ function fillStatusArray(programId, relayData, destinationChainId, svmEventsClie
|
|
|
178
224
|
});
|
|
179
225
|
}
|
|
180
226
|
if (!(atHeight === undefined)) return [3, 3];
|
|
181
|
-
return [4, fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayData)];
|
|
227
|
+
return [4, fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayData, logger)];
|
|
182
228
|
case 2:
|
|
183
229
|
_a = _c.sent();
|
|
184
230
|
return [3, 4];
|
|
@@ -198,7 +244,7 @@ function fillStatusArray(programId, relayData, destinationChainId, svmEventsClie
|
|
|
198
244
|
if (!atHeight) return [3, 5];
|
|
199
245
|
_b = BigInt(atHeight);
|
|
200
246
|
return [3, 7];
|
|
201
|
-
case 5: return [4, (0, utils_3.getNearestSlotTime)(provider)];
|
|
247
|
+
case 5: return [4, (0, utils_3.getNearestSlotTime)(provider, logger)];
|
|
202
248
|
case 6:
|
|
203
249
|
_b = (_c.sent()).slot;
|
|
204
250
|
_c.label = 7;
|
|
@@ -241,7 +287,7 @@ function fillStatusArray(programId, relayData, destinationChainId, svmEventsClie
|
|
|
241
287
|
});
|
|
242
288
|
}
|
|
243
289
|
exports.fillStatusArray = fillStatusArray;
|
|
244
|
-
function findFillEvent(relayData, destinationChainId, svmEventsClient, fromSlot, toSlot) {
|
|
290
|
+
function findFillEvent(relayData, destinationChainId, svmEventsClient, logger, fromSlot, toSlot) {
|
|
245
291
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
246
292
|
var _a, _b, programId, fillStatusPda, fillEvents, rawFillEvent, eventData, originChainId, parsedFillEvent;
|
|
247
293
|
return tslib_1.__generator(this, function (_c) {
|
|
@@ -253,7 +299,7 @@ function findFillEvent(relayData, destinationChainId, svmEventsClient, fromSlot,
|
|
|
253
299
|
return [3, 3];
|
|
254
300
|
case 1:
|
|
255
301
|
_b = Number;
|
|
256
|
-
return [4, (0, utils_3.getNearestSlotTime)(svmEventsClient.getRpc())];
|
|
302
|
+
return [4, (0, utils_3.getNearestSlotTime)(svmEventsClient.getRpc(), logger)];
|
|
257
303
|
case 2:
|
|
258
304
|
_a = (toSlot = _b.apply(void 0, [(_c.sent()).slot]));
|
|
259
305
|
_c.label = 3;
|
|
@@ -281,68 +327,40 @@ function findFillEvent(relayData, destinationChainId, svmEventsClient, fromSlot,
|
|
|
281
327
|
}
|
|
282
328
|
exports.findFillEvent = findFillEvent;
|
|
283
329
|
function fillRelayInstruction(spokePool, relayData, signer, recipientTokenAccount, repaymentAddress, repaymentChainId) {
|
|
284
|
-
if (repaymentAddress === void 0) { repaymentAddress = utils_2.SvmAddress.from(signer.address); }
|
|
285
|
-
if (repaymentChainId === void 0) { repaymentChainId = relayData.destinationChainId; }
|
|
286
330
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
287
|
-
var program, _relayDataHash, relayDataHash, relayer,
|
|
288
|
-
return tslib_1.__generator(this, function (
|
|
289
|
-
switch (
|
|
331
|
+
var program, _relayDataHash, relayDataHash, relayer, _a, statePda, fillStatusPda, eventAuthority, delegatePda, relayerTokenAccount, svmRelayData;
|
|
332
|
+
return tslib_1.__generator(this, function (_b) {
|
|
333
|
+
switch (_b.label) {
|
|
290
334
|
case 0:
|
|
291
335
|
program = (0, _1.toAddress)(spokePool);
|
|
292
336
|
(0, assert_1.default)(repaymentAddress.isValidOn(repaymentChainId), "Invalid repayment address for chain ".concat(repaymentChainId, ": ").concat(repaymentAddress.toNative(), "."));
|
|
293
337
|
_relayDataHash = getRelayDataHash(relayData, relayData.destinationChainId);
|
|
294
338
|
relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
|
|
295
339
|
relayer = utils_2.SvmAddress.from(signer.address);
|
|
296
|
-
return [4, getAssociatedTokenAddress(relayer, relayData.outputToken)];
|
|
297
|
-
case 1:
|
|
298
|
-
relayerTokenAccount = _c.sent();
|
|
299
340
|
return [4, Promise.all([
|
|
300
341
|
(0, _1.getStatePda)(program),
|
|
301
342
|
(0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
|
|
302
343
|
(0, _1.getEventAuthority)(program),
|
|
344
|
+
getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), signer.address, program),
|
|
345
|
+
getAssociatedTokenAddress(relayer, relayData.outputToken),
|
|
303
346
|
])];
|
|
304
|
-
case
|
|
305
|
-
_a =
|
|
306
|
-
|
|
307
|
-
shortenedBuffer = new Uint8Array(Buffer.from(relayData.depositId.toHexString().slice(2), "hex"));
|
|
308
|
-
depositIdBuffer.set(shortenedBuffer, 32 - shortenedBuffer.length);
|
|
309
|
-
return [4, getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), (0, _1.toAddress)(relayer), program)];
|
|
310
|
-
case 3:
|
|
311
|
-
delegatePda = _c.sent();
|
|
312
|
-
_b = [
|
|
313
|
-
relayData.recipient,
|
|
314
|
-
relayData.outputToken,
|
|
315
|
-
relayData.exclusiveRelayer,
|
|
316
|
-
relayData.depositor,
|
|
317
|
-
relayData.inputToken,
|
|
318
|
-
].map(_1.toAddress), recipient = _b[0], outputToken = _b[1], exclusiveRelayer = _b[2], depositor = _b[3], inputToken = _b[4];
|
|
347
|
+
case 1:
|
|
348
|
+
_a = _b.sent(), statePda = _a[0], fillStatusPda = _a[1], eventAuthority = _a[2], delegatePda = _a[3], relayerTokenAccount = _a[4];
|
|
349
|
+
svmRelayData = (0, _1.toSvmRelayData)(relayData);
|
|
319
350
|
return [2, contracts_1.SvmSpokeClient.getFillRelayInstruction({
|
|
320
351
|
signer: signer,
|
|
321
352
|
state: statePda,
|
|
322
353
|
delegate: (0, _1.toAddress)(utils_2.SvmAddress.from(delegatePda.toString())),
|
|
323
|
-
mint: outputToken,
|
|
354
|
+
mint: svmRelayData.outputToken,
|
|
324
355
|
relayerTokenAccount: relayerTokenAccount,
|
|
325
356
|
recipientTokenAccount: recipientTokenAccount,
|
|
326
357
|
fillStatus: fillStatusPda,
|
|
327
358
|
eventAuthority: eventAuthority,
|
|
328
359
|
program: program,
|
|
329
360
|
relayHash: relayDataHash,
|
|
330
|
-
relayData: (0, kit_1.some)(
|
|
331
|
-
depositor: depositor,
|
|
332
|
-
recipient: recipient,
|
|
333
|
-
exclusiveRelayer: exclusiveRelayer,
|
|
334
|
-
inputToken: inputToken,
|
|
335
|
-
outputToken: outputToken,
|
|
336
|
-
inputAmount: (0, _1.bigToU8a32)(relayData.inputAmount.toBigInt()),
|
|
337
|
-
outputAmount: relayData.outputAmount.toBigInt(),
|
|
338
|
-
originChainId: BigInt(relayData.originChainId),
|
|
339
|
-
fillDeadline: relayData.fillDeadline,
|
|
340
|
-
exclusivityDeadline: relayData.exclusivityDeadline,
|
|
341
|
-
depositId: depositIdBuffer,
|
|
342
|
-
message: new Uint8Array(Buffer.from(relayData.message.slice(2), "hex")),
|
|
343
|
-
}),
|
|
361
|
+
relayData: (0, kit_1.some)(svmRelayData),
|
|
344
362
|
repaymentChainId: (0, kit_1.some)(BigInt(repaymentChainId)),
|
|
345
|
-
repaymentAddress: (0, _1.toAddress)(repaymentAddress),
|
|
363
|
+
repaymentAddress: (0, kit_1.some)((0, _1.toAddress)(repaymentAddress)),
|
|
346
364
|
})];
|
|
347
365
|
}
|
|
348
366
|
});
|
|
@@ -358,52 +376,35 @@ function createTokenAccountsInstruction(mint, relayer) {
|
|
|
358
376
|
exports.createTokenAccountsInstruction = createTokenAccountsInstruction;
|
|
359
377
|
function getFillRelayTx(spokePoolAddr, solanaClient, relayData, signer, repaymentChainId, repaymentAddress) {
|
|
360
378
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
361
|
-
var
|
|
379
|
+
var svmRelayData, program, _relayDataHash, relayDataHash, _a, state, delegate, mintInfo, fillStatus, eventAuthority, _b, recipientAta, relayerAta, fillInput;
|
|
362
380
|
return tslib_1.__generator(this, function (_c) {
|
|
363
381
|
switch (_c.label) {
|
|
364
382
|
case 0:
|
|
365
|
-
|
|
383
|
+
svmRelayData = (0, _1.toSvmRelayData)(relayData);
|
|
366
384
|
(0, assert_1.default)(repaymentAddress.isValidOn(repaymentChainId), "getFillRelayTx: repayment address ".concat(repaymentAddress, " not valid on chain ").concat(repaymentChainId, ")"));
|
|
367
385
|
program = (0, _1.toAddress)(spokePoolAddr);
|
|
368
|
-
_relayDataHash = getRelayDataHash(relayData, destinationChainId);
|
|
386
|
+
_relayDataHash = getRelayDataHash(relayData, relayData.destinationChainId);
|
|
369
387
|
relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
|
|
370
388
|
return [4, Promise.all([
|
|
371
389
|
(0, _1.getStatePda)(program),
|
|
372
390
|
getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), (0, _1.toAddress)(repaymentAddress), program),
|
|
391
|
+
getMintInfo(solanaClient, svmRelayData.outputToken),
|
|
392
|
+
(0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
|
|
393
|
+
(0, _1.getEventAuthority)(program),
|
|
373
394
|
])];
|
|
374
395
|
case 1:
|
|
375
|
-
_a = _c.sent(), state = _a[0], delegate = _a[1];
|
|
376
|
-
mint = (0, _1.toAddress)(outputToken);
|
|
377
|
-
return [4, getMintInfo(solanaClient, mint)];
|
|
378
|
-
case 2:
|
|
379
|
-
mintInfo = _c.sent();
|
|
396
|
+
_a = _c.sent(), state = _a[0], delegate = _a[1], mintInfo = _a[2], fillStatus = _a[3], eventAuthority = _a[4];
|
|
380
397
|
return [4, Promise.all([
|
|
381
|
-
getAssociatedTokenAddress(recipient, outputToken, mintInfo.programAddress),
|
|
382
|
-
getAssociatedTokenAddress(utils_2.SvmAddress.from(signer.address), outputToken, mintInfo.programAddress),
|
|
383
|
-
(0, _1.getFillStatusPda)(program, relayData, destinationChainId),
|
|
384
|
-
(0, _1.getEventAuthority)(program),
|
|
398
|
+
getAssociatedTokenAddress(relayData.recipient, relayData.outputToken, mintInfo.programAddress),
|
|
399
|
+
getAssociatedTokenAddress(utils_2.SvmAddress.from(signer.address), relayData.outputToken, mintInfo.programAddress),
|
|
385
400
|
])];
|
|
386
|
-
case
|
|
387
|
-
_b = _c.sent(), recipientAta = _b[0], relayerAta = _b[1]
|
|
388
|
-
svmRelayData = {
|
|
389
|
-
depositor: (0, _1.toAddress)(depositor),
|
|
390
|
-
recipient: (0, _1.toAddress)(recipient),
|
|
391
|
-
exclusiveRelayer: (0, _1.toAddress)(exclusiveRelayer),
|
|
392
|
-
inputToken: (0, _1.toAddress)(inputToken),
|
|
393
|
-
outputToken: mint,
|
|
394
|
-
inputAmount: (0, _1.bigToU8a32)(relayData.inputAmount.toBigInt()),
|
|
395
|
-
outputAmount: relayData.outputAmount.toBigInt(),
|
|
396
|
-
originChainId: relayData.originChainId,
|
|
397
|
-
depositId: new Uint8Array((0, conversionUtils_1.intToU8Array32)(relayData.depositId.toNumber())),
|
|
398
|
-
fillDeadline: relayData.fillDeadline,
|
|
399
|
-
exclusivityDeadline: relayData.exclusivityDeadline,
|
|
400
|
-
message: new Uint8Array(Buffer.from(relayData.message, "hex")),
|
|
401
|
-
};
|
|
401
|
+
case 2:
|
|
402
|
+
_b = _c.sent(), recipientAta = _b[0], relayerAta = _b[1];
|
|
402
403
|
fillInput = {
|
|
403
404
|
signer: signer,
|
|
404
405
|
state: state,
|
|
405
406
|
delegate: delegate,
|
|
406
|
-
mint:
|
|
407
|
+
mint: svmRelayData.outputToken,
|
|
407
408
|
relayerTokenAccount: relayerAta,
|
|
408
409
|
recipientTokenAccount: recipientAta,
|
|
409
410
|
fillStatus: fillStatus,
|
|
@@ -525,37 +526,20 @@ var createRequestSlowFillInstruction = function (signer, solanaClient, requestSl
|
|
|
525
526
|
exports.createRequestSlowFillInstruction = createRequestSlowFillInstruction;
|
|
526
527
|
function getSlowFillRequestTx(spokePoolAddr, solanaClient, relayData, signer) {
|
|
527
528
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
528
|
-
var
|
|
529
|
+
var program, relayDataHash, _a, state, fillStatus, eventAuthority, svmRelayData, requestSlowFillInput;
|
|
529
530
|
return tslib_1.__generator(this, function (_b) {
|
|
530
531
|
switch (_b.label) {
|
|
531
532
|
case 0:
|
|
532
|
-
depositor = relayData.depositor, recipient = relayData.recipient, inputToken = relayData.inputToken, outputToken = relayData.outputToken, exclusiveRelayer = relayData.exclusiveRelayer, destinationChainId = relayData.destinationChainId, originChainId = relayData.originChainId, depositId = relayData.depositId, fillDeadline = relayData.fillDeadline, exclusivityDeadline = relayData.exclusivityDeadline, message = relayData.message;
|
|
533
533
|
program = (0, _1.toAddress)(spokePoolAddr);
|
|
534
|
-
relayDataHash = getRelayDataHash(relayData, destinationChainId);
|
|
534
|
+
relayDataHash = getRelayDataHash(relayData, relayData.destinationChainId);
|
|
535
535
|
return [4, Promise.all([
|
|
536
536
|
(0, _1.getStatePda)(program),
|
|
537
|
-
(0, _1.getFillStatusPda)(program, relayData, destinationChainId),
|
|
537
|
+
(0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
|
|
538
538
|
(0, _1.getEventAuthority)(program),
|
|
539
539
|
])];
|
|
540
540
|
case 1:
|
|
541
541
|
_a = _b.sent(), state = _a[0], fillStatus = _a[1], eventAuthority = _a[2];
|
|
542
|
-
|
|
543
|
-
shortenedBuffer = (0, utils_1.arrayify)(depositId.toHexString());
|
|
544
|
-
depositIdBuffer.set(shortenedBuffer, 32 - shortenedBuffer.length);
|
|
545
|
-
relayDataInput = {
|
|
546
|
-
depositor: (0, _1.toAddress)(depositor),
|
|
547
|
-
recipient: (0, _1.toAddress)(recipient),
|
|
548
|
-
exclusiveRelayer: (0, _1.toAddress)(exclusiveRelayer),
|
|
549
|
-
inputToken: (0, _1.toAddress)(inputToken),
|
|
550
|
-
outputToken: (0, _1.toAddress)(outputToken),
|
|
551
|
-
inputAmount: (0, _1.bigToU8a32)(relayData.inputAmount.toBigInt()),
|
|
552
|
-
outputAmount: relayData.outputAmount.toBigInt(),
|
|
553
|
-
originChainId: BigInt(originChainId),
|
|
554
|
-
depositId: depositIdBuffer,
|
|
555
|
-
fillDeadline: fillDeadline,
|
|
556
|
-
exclusivityDeadline: exclusivityDeadline,
|
|
557
|
-
message: (0, utils_1.arrayify)(message),
|
|
558
|
-
};
|
|
542
|
+
svmRelayData = (0, _1.toSvmRelayData)(relayData);
|
|
559
543
|
requestSlowFillInput = {
|
|
560
544
|
signer: signer,
|
|
561
545
|
state: state,
|
|
@@ -563,7 +547,7 @@ function getSlowFillRequestTx(spokePoolAddr, solanaClient, relayData, signer) {
|
|
|
563
547
|
eventAuthority: eventAuthority,
|
|
564
548
|
program: program,
|
|
565
549
|
relayHash: (0, utils_1.arrayify)(relayDataHash),
|
|
566
|
-
relayData:
|
|
550
|
+
relayData: svmRelayData,
|
|
567
551
|
systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
|
|
568
552
|
};
|
|
569
553
|
return [2, (0, exports.createRequestSlowFillInstruction)(signer, solanaClient, requestSlowFillInput)];
|
|
@@ -634,24 +618,16 @@ function getAssociatedTokenAddress(owner, mint, tokenProgramId) {
|
|
|
634
618
|
}
|
|
635
619
|
exports.getAssociatedTokenAddress = getAssociatedTokenAddress;
|
|
636
620
|
function getRelayDataHash(relayData, destinationChainId) {
|
|
637
|
-
var addressEncoder = (0, kit_1.getAddressEncoder)();
|
|
638
|
-
var uint64Encoder = (0, kit_1.getU64Encoder)();
|
|
639
|
-
var uint32Encoder = (0, kit_1.getU32Encoder)();
|
|
640
621
|
(0, assert_1.default)(relayData.message.startsWith("0x"), "Message must be a hex string");
|
|
641
|
-
var
|
|
622
|
+
var uint64Encoder = (0, kit_1.getU64Encoder)();
|
|
623
|
+
var svmRelayData = (0, _1.toSvmRelayData)(relayData);
|
|
624
|
+
var relayDataEncoder = contracts_1.SvmSpokeClient.getRelayDataEncoder();
|
|
625
|
+
var encodedRelayData = relayDataEncoder.encode(svmRelayData);
|
|
626
|
+
var encodedMessage = Buffer.from(relayData.message.slice(2), "hex");
|
|
627
|
+
var messageOffset = encodedRelayData.length - 4 - encodedMessage.length;
|
|
642
628
|
var contentToHash = Buffer.concat([
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
encodeAddress(relayData.exclusiveRelayer),
|
|
646
|
-
encodeAddress(relayData.inputToken),
|
|
647
|
-
encodeAddress(relayData.outputToken),
|
|
648
|
-
(0, utils_1.arrayify)((0, utils_1.hexZeroPad)((0, utils_1.hexlify)(relayData.inputAmount), 32)),
|
|
649
|
-
Uint8Array.from(uint64Encoder.encode(BigInt(relayData.outputAmount.toString()))),
|
|
650
|
-
Uint8Array.from(uint64Encoder.encode(BigInt(relayData.originChainId.toString()))),
|
|
651
|
-
(0, utils_1.arrayify)((0, utils_1.hexZeroPad)((0, utils_1.hexlify)(relayData.depositId), 32)),
|
|
652
|
-
Uint8Array.from(uint32Encoder.encode(relayData.fillDeadline)),
|
|
653
|
-
Uint8Array.from(uint32Encoder.encode(relayData.exclusivityDeadline)),
|
|
654
|
-
(0, web3_v1_1.hashNonEmptyMessage)(Buffer.from((0, utils_1.arrayify)(relayData.message))),
|
|
629
|
+
encodedRelayData.slice(0, messageOffset),
|
|
630
|
+
(0, web3_v1_1.hashNonEmptyMessage)(encodedMessage),
|
|
655
631
|
Uint8Array.from(uint64Encoder.encode(BigInt(destinationChainId))),
|
|
656
632
|
]);
|
|
657
633
|
return (0, utils_2.keccak256)(contentToHash);
|
|
@@ -687,7 +663,7 @@ function resolveFillStatusFromPdaEvents(fillStatusPda, toSlot, svmEventsClient)
|
|
|
687
663
|
});
|
|
688
664
|
});
|
|
689
665
|
}
|
|
690
|
-
function fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayDataArray) {
|
|
666
|
+
function fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayDataArray, logger) {
|
|
691
667
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
692
668
|
var chunkSize, commitment, _a, pdaAccounts, timestamp, fillStatuses;
|
|
693
669
|
return tslib_1.__generator(this, function (_b) {
|
|
@@ -697,7 +673,7 @@ function fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayData
|
|
|
697
673
|
commitment = "confirmed";
|
|
698
674
|
return [4, Promise.all([
|
|
699
675
|
Promise.all((0, utils_2.chunk)(fillStatusPdas, chunkSize).map(function (chunk) { return (0, kit_1.fetchEncodedAccounts)(provider, chunk, { commitment: commitment }); })),
|
|
700
|
-
(0, utils_3.getNearestSlotTime)(provider, { commitment: commitment }),
|
|
676
|
+
(0, utils_3.getNearestSlotTime)(provider, logger, { commitment: commitment }),
|
|
701
677
|
])];
|
|
702
678
|
case 1:
|
|
703
679
|
_a = _b.sent(), pdaAccounts = _a[0], timestamp = _a[1].timestamp;
|