@across-protocol/sdk 4.3.104 → 4.3.106-beta.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/arch/svm/SpokeUtils.d.ts +8 -1
- package/dist/cjs/arch/svm/SpokeUtils.js +26 -3
- package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/svm/encoders.d.ts +1 -0
- package/dist/cjs/arch/svm/encoders.js +4 -0
- package/dist/cjs/arch/svm/encoders.js.map +1 -1
- package/dist/cjs/arch/svm/eventsClient.js +9 -11
- package/dist/cjs/arch/svm/eventsClient.js.map +1 -1
- package/dist/cjs/providers/solana/utils.d.ts +13 -0
- package/dist/cjs/providers/solana/utils.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.d.ts +6 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +77 -27
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
- package/dist/esm/arch/svm/SpokeUtils.d.ts +27 -1
- package/dist/esm/arch/svm/SpokeUtils.js +44 -3
- package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/svm/encoders.d.ts +1 -0
- package/dist/esm/arch/svm/encoders.js +3 -0
- package/dist/esm/arch/svm/encoders.js.map +1 -1
- package/dist/esm/arch/svm/eventsClient.js +10 -12
- package/dist/esm/arch/svm/eventsClient.js.map +1 -1
- package/dist/esm/providers/solana/utils.d.ts +13 -0
- package/dist/esm/providers/solana/utils.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.d.ts +6 -0
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +82 -31
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts +27 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
- package/dist/types/arch/svm/encoders.d.ts +1 -0
- package/dist/types/arch/svm/encoders.d.ts.map +1 -1
- package/dist/types/arch/svm/eventsClient.d.ts.map +1 -1
- package/dist/types/providers/solana/utils.d.ts +13 -0
- package/dist/types/providers/solana/utils.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts +6 -0
- package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/arch/svm/SpokeUtils.ts +50 -1
- package/src/arch/svm/encoders.ts +4 -0
- package/src/arch/svm/eventsClient.ts +3 -4
- package/src/providers/solana/utils.ts +14 -0
- package/src/relayFeeCalculator/chain-queries/svmQuery.ts +80 -5
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { __assign, __awaiter, __generator } from "tslib";
|
|
1
|
+
import { __assign, __awaiter, __generator, __spreadArray } from "tslib";
|
|
2
2
|
import assert from "assert";
|
|
3
|
-
import { getComputeUnitEstimateForTransactionMessageFactory, fetchEncodedAccount, isSome, } from "@solana/kit";
|
|
4
|
-
import { SolanaVoidSigner, getFillRelayTx, toAddress, getAssociatedTokenAddress } from "../../arch/svm";
|
|
3
|
+
import { getComputeUnitEstimateForTransactionMessageFactory, fetchEncodedAccount, isSome, pipe, appendTransactionMessageInstruction, } from "@solana/kit";
|
|
4
|
+
import { SolanaVoidSigner, getFillRelayTx, getIPFillRelayTx, getFillRelayViaInstructionParamsInstructions, toAddress, createDefaultTransaction, getAssociatedTokenAddress, isSVMFillTooLarge, } from "../../arch/svm";
|
|
5
5
|
import { Coingecko } from "../../coingecko";
|
|
6
6
|
import { CHAIN_IDs } from "../../constants";
|
|
7
7
|
import { getGasPriceEstimate } from "../../gasPriceOracle";
|
|
8
|
-
import { toBN } from "../../utils";
|
|
8
|
+
import { toBN, mapAsync } from "../../utils";
|
|
9
9
|
import { getDefaultRelayer } from "../relayFeeCalculator";
|
|
10
10
|
import { TOKEN_PROGRAM_ADDRESS } from "@solana-program/token";
|
|
11
11
|
import { TOKEN_2022_PROGRAM_ADDRESS, getTokenSize, fetchMint } from "@solana-program/token-2022";
|
|
@@ -52,11 +52,11 @@ var SvmQuery = /** @class */ (function () {
|
|
|
52
52
|
*/
|
|
53
53
|
SvmQuery.prototype.getGasCosts = function (relayData_1) {
|
|
54
54
|
return __awaiter(this, arguments, void 0, function (relayData, relayer, options) {
|
|
55
|
-
var destinationChainId, recipient, outputToken, exclusiveRelayer, _a, repaymentChainId, repaymentAddress, fillRelayTx, _b,
|
|
55
|
+
var destinationChainId, recipient, outputToken, exclusiveRelayer, _a, repaymentChainId, repaymentAddress, _fillRelayTx, fillTooLarge, fillRelayTx, _b, _c, _computeUnitsConsumed, gasPriceEstimate, tokenAccountInfo, computeUnitsConsumed, tokenOwner, recipientAta, encodedAta, gasPrice, tokenGasCost, extensions, mint, tokenAccountSize, rentCostInLamports;
|
|
56
56
|
if (relayer === void 0) { relayer = getDefaultRelayer(relayData.destinationChainId); }
|
|
57
57
|
if (options === void 0) { options = {}; }
|
|
58
|
-
return __generator(this, function (
|
|
59
|
-
switch (
|
|
58
|
+
return __generator(this, function (_d) {
|
|
59
|
+
switch (_d.label) {
|
|
60
60
|
case 0:
|
|
61
61
|
destinationChainId = relayData.destinationChainId, recipient = relayData.recipient, outputToken = relayData.outputToken, exclusiveRelayer = relayData.exclusiveRelayer;
|
|
62
62
|
assert(recipient.isSVM(), "getGasCosts: recipient not an SVM address (".concat(recipient, ")"));
|
|
@@ -66,48 +66,59 @@ var SvmQuery = /** @class */ (function () {
|
|
|
66
66
|
_a = [destinationChainId, relayer], repaymentChainId = _a[0], repaymentAddress = _a[1];
|
|
67
67
|
return [4 /*yield*/, this.getFillRelayTx(__assign(__assign({}, relayData), { recipient: recipient, outputToken: outputToken, exclusiveRelayer: exclusiveRelayer }), SolanaVoidSigner(relayer.toBase58()), repaymentChainId, repaymentAddress)];
|
|
68
68
|
case 1:
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return [4 /*yield*/, this.
|
|
73
|
-
case 2:
|
|
74
|
-
|
|
69
|
+
_fillRelayTx = _d.sent();
|
|
70
|
+
fillTooLarge = isSVMFillTooLarge(_fillRelayTx);
|
|
71
|
+
if (!fillTooLarge.tooLarge) return [3 /*break*/, 3];
|
|
72
|
+
return [4 /*yield*/, this.getFillRelayTx(__assign(__assign({}, relayData), { recipient: recipient, outputToken: outputToken, exclusiveRelayer: exclusiveRelayer, message: "0x" }), SolanaVoidSigner(relayer.toBase58()), repaymentChainId, repaymentAddress)];
|
|
73
|
+
case 2:
|
|
74
|
+
_b = _d.sent();
|
|
75
|
+
return [3 /*break*/, 4];
|
|
76
|
+
case 3:
|
|
77
|
+
_b = _fillRelayTx;
|
|
78
|
+
_d.label = 4;
|
|
79
|
+
case 4:
|
|
80
|
+
fillRelayTx = _b;
|
|
81
|
+
return [4 /*yield*/, Promise.all([
|
|
82
|
+
fillTooLarge.tooLarge
|
|
83
|
+
? this.estimateComputeUnits(__assign(__assign({}, relayData), { recipient: recipient, outputToken: outputToken, exclusiveRelayer: exclusiveRelayer }), relayer, repaymentChainId, repaymentAddress)
|
|
84
|
+
: this.computeUnitEstimator(fillRelayTx),
|
|
75
85
|
getGasPriceEstimate(this.provider, {
|
|
76
86
|
unsignedTx: fillRelayTx,
|
|
77
87
|
baseFeeMultiplier: options.baseFeeMultiplier,
|
|
78
88
|
priorityFeeMultiplier: options.priorityFeeMultiplier,
|
|
79
89
|
}),
|
|
80
|
-
this.provider.getAccountInfo(toAddress(outputToken), { encoding: "base58" }).send()
|
|
81
|
-
]
|
|
82
|
-
case
|
|
83
|
-
|
|
90
|
+
this.provider.getAccountInfo(toAddress(outputToken), { encoding: "base58" }).send(),
|
|
91
|
+
])];
|
|
92
|
+
case 5:
|
|
93
|
+
_c = _d.sent(), _computeUnitsConsumed = _c[0], gasPriceEstimate = _c[1], tokenAccountInfo = _c[2];
|
|
94
|
+
computeUnitsConsumed = toBN(_computeUnitsConsumed);
|
|
84
95
|
tokenOwner = tokenAccountInfo.value.owner;
|
|
85
96
|
assert(tokenOwner === TOKEN_2022_PROGRAM_ADDRESS || tokenOwner === TOKEN_PROGRAM_ADDRESS, "".concat(outputToken, " has invalid token account owner ").concat(tokenOwner, "."));
|
|
86
97
|
return [4 /*yield*/, getAssociatedTokenAddress(recipient, outputToken, tokenOwner)];
|
|
87
|
-
case
|
|
88
|
-
recipientAta =
|
|
98
|
+
case 6:
|
|
99
|
+
recipientAta = _d.sent();
|
|
89
100
|
return [4 /*yield*/, fetchEncodedAccount(this.provider, recipientAta)];
|
|
90
|
-
case
|
|
91
|
-
encodedAta =
|
|
101
|
+
case 7:
|
|
102
|
+
encodedAta = _d.sent();
|
|
92
103
|
gasPrice = gasPriceEstimate.baseFee.add(gasPriceEstimate.microLamportsPerComputeUnit.mul(computeUnitsConsumed).div(toBN(1000000)) // 1_000_000 microLamports/lamport.
|
|
93
104
|
);
|
|
94
105
|
tokenGasCost = gasPrice;
|
|
95
|
-
if (!!encodedAta.exists) return [3 /*break*/,
|
|
106
|
+
if (!!encodedAta.exists) return [3 /*break*/, 11];
|
|
96
107
|
extensions = undefined;
|
|
97
|
-
if (!(tokenOwner === TOKEN_2022_PROGRAM_ADDRESS)) return [3 /*break*/,
|
|
108
|
+
if (!(tokenOwner === TOKEN_2022_PROGRAM_ADDRESS)) return [3 /*break*/, 9];
|
|
98
109
|
return [4 /*yield*/, fetchMint(this.provider, toAddress(outputToken))];
|
|
99
|
-
case
|
|
100
|
-
mint =
|
|
110
|
+
case 8:
|
|
111
|
+
mint = _d.sent();
|
|
101
112
|
extensions = isSome(mint.data.extensions) ? mint.data.extensions.value : undefined;
|
|
102
|
-
|
|
103
|
-
case
|
|
113
|
+
_d.label = 9;
|
|
114
|
+
case 9:
|
|
104
115
|
tokenAccountSize = getTokenSize(extensions);
|
|
105
116
|
return [4 /*yield*/, this.provider.getMinimumBalanceForRentExemption(BigInt(tokenAccountSize)).send()];
|
|
106
|
-
case
|
|
107
|
-
rentCostInLamports =
|
|
117
|
+
case 10:
|
|
118
|
+
rentCostInLamports = _d.sent();
|
|
108
119
|
tokenGasCost = tokenGasCost.add(toBN(Number(rentCostInLamports)));
|
|
109
|
-
|
|
110
|
-
case
|
|
120
|
+
_d.label = 11;
|
|
121
|
+
case 11: return [2 /*return*/, {
|
|
111
122
|
nativeGasCost: computeUnitsConsumed,
|
|
112
123
|
tokenGasCost: tokenGasCost,
|
|
113
124
|
gasPrice: gasPrice,
|
|
@@ -203,6 +214,46 @@ var SvmQuery = /** @class */ (function () {
|
|
|
203
214
|
throw new Error("".concat(tokenSymbol, " does not exist in mapping"));
|
|
204
215
|
return this.symbolMapping[tokenSymbol].decimals;
|
|
205
216
|
};
|
|
217
|
+
// The fill is too large; we need to simulate the transaction in a bundle.
|
|
218
|
+
SvmQuery.prototype.estimateComputeUnits = function (relayData, relayer, repaymentChainId, repaymentAddress) {
|
|
219
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
220
|
+
var provider, spokePoolAddr, voidSigner, _a, instructionParamsIxs, fillRelayTx, instructionParamsTxs, simulateBundleResponse;
|
|
221
|
+
var _this = this;
|
|
222
|
+
return __generator(this, function (_b) {
|
|
223
|
+
switch (_b.label) {
|
|
224
|
+
case 0:
|
|
225
|
+
provider = this.provider;
|
|
226
|
+
spokePoolAddr = toAddress(this.spokePool);
|
|
227
|
+
voidSigner = SolanaVoidSigner(relayer.toBase58());
|
|
228
|
+
return [4 /*yield*/, Promise.all([
|
|
229
|
+
getFillRelayViaInstructionParamsInstructions(spokePoolAddr, relayData, repaymentChainId, repaymentAddress, voidSigner),
|
|
230
|
+
getIPFillRelayTx(this.spokePool, provider, relayData, voidSigner, repaymentChainId, repaymentAddress),
|
|
231
|
+
])];
|
|
232
|
+
case 1:
|
|
233
|
+
_a = _b.sent(), instructionParamsIxs = _a[0], fillRelayTx = _a[1];
|
|
234
|
+
return [4 /*yield*/, mapAsync(instructionParamsIxs, function (ix) { return __awaiter(_this, void 0, void 0, function () {
|
|
235
|
+
var _a;
|
|
236
|
+
return __generator(this, function (_b) {
|
|
237
|
+
switch (_b.label) {
|
|
238
|
+
case 0:
|
|
239
|
+
_a = pipe;
|
|
240
|
+
return [4 /*yield*/, createDefaultTransaction(provider, voidSigner)];
|
|
241
|
+
case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent(), function (tx) {
|
|
242
|
+
return appendTransactionMessageInstruction(ix, tx);
|
|
243
|
+
}])];
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
}); })];
|
|
247
|
+
case 2:
|
|
248
|
+
instructionParamsTxs = _b.sent();
|
|
249
|
+
return [4 /*yield*/, provider.simulateBundle(__spreadArray(__spreadArray([], instructionParamsTxs, true), [fillRelayTx], false)).send()];
|
|
250
|
+
case 3:
|
|
251
|
+
simulateBundleResponse = _b.sent();
|
|
252
|
+
return [2 /*return*/, simulateBundleResponse.result.unitsConsumed];
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
};
|
|
206
257
|
return SvmQuery;
|
|
207
258
|
}());
|
|
208
259
|
export { SvmQuery };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svmQuery.js","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/svmQuery.ts"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACL,kDAAkD,EAElD,mBAAmB,EACnB,MAAM,
|
|
1
|
+
{"version":3,"file":"svmQuery.js","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/svmQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MessageTransmitterClient, SvmSpokeClient } from "@across-protocol/contracts";
|
|
2
2
|
import { Mint } from "@solana-program/token";
|
|
3
|
-
import { Account, Address, FetchAccountConfig, IAccountMeta, IInstruction, KeyPairSigner, ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type ReadonlyAccount, type Commitment } from "@solana/kit";
|
|
3
|
+
import { Account, Address, FetchAccountConfig, IAccountMeta, IInstruction, KeyPairSigner, ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type ReadonlyAccount, type Commitment, type CompilableTransactionMessage } from "@solana/kit";
|
|
4
4
|
import winston from "winston";
|
|
5
5
|
import { DepositWithBlock, FillStatus, FillWithBlock, RelayData, RelayDataWithMessageHash } from "../../interfaces";
|
|
6
6
|
import { BigNumber, EvmAddress, Address as SdkAddress, SvmAddress } from "../../utils";
|
|
@@ -12,6 +12,7 @@ import { AttestedCCTPMessage, SVMProvider, LatestBlockhash } from "./types";
|
|
|
12
12
|
* and choose 400 to ensure that the most slots get included in our ranges
|
|
13
13
|
*/
|
|
14
14
|
export declare const SLOT_DURATION_MS = 400;
|
|
15
|
+
export declare const SOLANA_TX_SIZE_LIMIT = 1232;
|
|
15
16
|
type ProtoFill = Omit<RelayData, "recipient" | "outputToken"> & {
|
|
16
17
|
destinationChainId: number;
|
|
17
18
|
recipient: SvmAddress;
|
|
@@ -240,6 +241,8 @@ export declare function getRelayDataHash(relayData: RelayData & {
|
|
|
240
241
|
* Returns a set of instructions to execute to fill a relay via instruction params.
|
|
241
242
|
* @param spokePool The program ID of the Solana spoke pool.
|
|
242
243
|
* @param relayData The relay data to write to the instruction params PDA.
|
|
244
|
+
* @param repaymentChainId: The chain ID to take repayment.
|
|
245
|
+
* @param repaymentAddress: The address to receive repayment on the specified repayment chain.
|
|
243
246
|
* @param signer The transaction signer and authority of the instruction params PDA.
|
|
244
247
|
* @param maxWriteSize The maximum fragment size to write to instruction params.
|
|
245
248
|
*/
|
|
@@ -306,6 +309,29 @@ export declare function getAccountMetasForTokenlessMessage(solanaClient: SVMProv
|
|
|
306
309
|
* @param messageTransmitterAddress The message transmitter address.
|
|
307
310
|
*/
|
|
308
311
|
export declare function getCCTPDepositAccounts(hubChainId: number, cctpDestinationDomainId: number, tokenMessengerMinterAddress: Address, messageTransmitterAddress: Address): Promise<CCTPDepositAccounts>;
|
|
312
|
+
/**
|
|
313
|
+
* Returns true if the input deposit's corresponding relay data would result in a transaction size
|
|
314
|
+
* that is larger than the Solana transaction size limit.
|
|
315
|
+
* @param fillRelayTx The compilable fill relay transaction to check.
|
|
316
|
+
* @returns Object containing a boolean if the input deposit requires a multipart fill, false otherwise and
|
|
317
|
+
* the number of bytes in the serialized transaction.
|
|
318
|
+
*/
|
|
319
|
+
export declare function isSVMFillTooLarge(fillRelayTx: CompilableTransactionMessage): {
|
|
320
|
+
tooLarge: boolean;
|
|
321
|
+
sizeBytes: number;
|
|
322
|
+
};
|
|
323
|
+
/**
|
|
324
|
+
* Returns the byte size of a base64 transaction.
|
|
325
|
+
* @param base64TxString base64 serialized Solana transaction.
|
|
326
|
+
* @returns The number of bytes in the transaction.
|
|
327
|
+
*/
|
|
328
|
+
export declare function base64StrToByteSize(base64TxString: string): number;
|
|
329
|
+
/**
|
|
330
|
+
* Returns the size of the fill relay transaction using the input relayData.
|
|
331
|
+
* @param fillTx The compilable fill relay transaction.
|
|
332
|
+
* @returns The number of bytes in the serialized fillRelay transaction.
|
|
333
|
+
*/
|
|
334
|
+
export declare function calculateFillSizeBytes(fillTx: CompilableTransactionMessage): number;
|
|
309
335
|
/**
|
|
310
336
|
* Returns the CCTP v1 receive message transaction.
|
|
311
337
|
* @param solanaClient The Solana client.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpokeUtils.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/SpokeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAA8B,MAAM,4BAA4B,CAAC;AAIlH,OAAO,EAEL,IAAI,EAML,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,OAAO,EAEP,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,kBAAkB,
|
|
1
|
+
{"version":3,"file":"SpokeUtils.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/SpokeUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export type CompiledIx = {
|
|
|
14
14
|
export declare function getAcrossPlusMessageEncoder(): Encoder<AcrossPlusMessage>;
|
|
15
15
|
export declare function getAcrossPlusMessageDecoder(): Decoder<AcrossPlusMessage>;
|
|
16
16
|
export declare function getHandlerMessageEncoder(): Encoder<Array<CompiledIx>>;
|
|
17
|
+
export declare function getHandlerMessageDecoder(): Decoder<Array<CompiledIx>>;
|
|
17
18
|
export declare function getCompiledIxEncoder(): Encoder<CompiledIx>;
|
|
18
19
|
export declare function getCompiledIxDecoder(): Decoder<CompiledIx>;
|
|
19
20
|
export declare function getAccountMeta(value: Address, isWritable: boolean): WritableAccount | ReadonlyAccount;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoders.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/encoders.ts"],"names":[],"mappings":"AAAA,OAAO,EAkBL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,eAAe,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,EAAE,kBAAkB,CAAC;CAC1B,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAQxE;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAQxE;AAED,wBAAgB,wBAAwB,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAErE;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,CAM1D;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,CAM1D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,eAAe,GAAG,eAAe,CAKrG"}
|
|
1
|
+
{"version":3,"file":"encoders.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/encoders.ts"],"names":[],"mappings":"AAAA,OAAO,EAkBL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,eAAe,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,EAAE,kBAAkB,CAAC;CAC1B,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAQxE;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAQxE;AAED,wBAAgB,wBAAwB,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAErE;AAED,wBAAgB,wBAAwB,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAErE;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,CAM1D;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,CAM1D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,eAAe,GAAG,eAAe,CAKrG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventsClient.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/eventsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAGxC,OAAO,EAEL,OAAO,EACP,UAAU,EAEV,0BAA0B,EAE1B,SAAS,EACV,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAW,eAAe,EAAQ,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAahF,KAAK,6BAA6B,GAAG,UAAU,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAI1G,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,CAAC,CAAC;AAC/F,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAElD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,qBAAqB,CAAU;IACvC,OAAO,CAAC,GAAG,CAAM;IAEjB;;OAEG;gBACS,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG;IAOjF;;OAEG;WACiB,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC;WAOrD,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC;IASzG;;;;;;;;OAQG;IACU,WAAW,CACtB,SAAS,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,6BAAwE,GAChF,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3B;;;;;;;;OAQG;IACU,yBAAyB,CACpC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,OAAO,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,6BAAwE,GAChF,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3B;;;;;;;;OAQG;YACW,cAAc;IAsD5B;;;;;;OAMG;IACG,uBAAuB,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,GAAE,UAAwB;
|
|
1
|
+
{"version":3,"file":"eventsClient.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/eventsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAGxC,OAAO,EAEL,OAAO,EACP,UAAU,EAEV,0BAA0B,EAE1B,SAAS,EACV,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAW,eAAe,EAAQ,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAahF,KAAK,6BAA6B,GAAG,UAAU,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAI1G,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,CAAC,CAAC;AAC/F,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAElD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,qBAAqB,CAAU;IACvC,OAAO,CAAC,GAAG,CAAM;IAEjB;;OAEG;gBACS,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG;IAOjF;;OAEG;WACiB,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC;WAOrD,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC;IASzG;;;;;;;;OAQG;IACU,WAAW,CACtB,SAAS,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,6BAAwE,GAChF,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3B;;;;;;;;OAQG;IACU,yBAAyB,CACpC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,OAAO,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,6BAAwE,GAChF,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3B;;;;;;;;OAQG;YACW,cAAc;IAsD5B;;;;;;OAMG;IACG,uBAAuB,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,GAAE,UAAwB;iBAcd,OAAO;cAAQ,OAAO;cAAQ,MAAM;;IANhH;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAiC1B;;;;;;;OAOG;IACU,6BAA6B,CACxC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,SAAS,EACtB,UAAU,GAAE,UAAwB,GACnC,OAAO,CAAC,yBAAyB,EAAE,GAAG,SAAS,CAAC;IAsDnD;;;;;;OAMG;IACU,0BAA0B,CACrC,kBAAkB,EAAE,MAAM,EAC1B,WAAW,EAAE,SAAS,EACtB,UAAU,GAAE,UAAwB,GACnC,OAAO,CAAC,sBAAsB,EAAE,GAAG,SAAS,CAAC;IAuDzC,iBAAiB,IAAI,OAAO;IAI5B,MAAM,IAAI,WAAW;CAG7B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RpcTransport } from "@solana/rpc-spec";
|
|
2
|
+
import { CompilableTransactionMessage, SolanaRpcApi } from "@solana/kit";
|
|
2
3
|
/**
|
|
3
4
|
* This is the type we pass to define a Solana RPC request "task".
|
|
4
5
|
*/
|
|
@@ -7,6 +8,18 @@ export interface SolanaRateLimitTask {
|
|
|
7
8
|
resolve: (result: unknown) => void;
|
|
8
9
|
reject: (err: unknown) => void;
|
|
9
10
|
}
|
|
11
|
+
export type SolanaBundleSimulation = {
|
|
12
|
+
result: {
|
|
13
|
+
unitsConsumed: number;
|
|
14
|
+
returnData: {
|
|
15
|
+
programId: string;
|
|
16
|
+
data: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export interface JitoInterface extends SolanaRpcApi {
|
|
21
|
+
simulateBundle(transactions: CompilableTransactionMessage[]): SolanaBundleSimulation;
|
|
22
|
+
}
|
|
10
23
|
/**
|
|
11
24
|
* Determine whether a Solana RPC error indicates an unrecoverable error that should not be retried.
|
|
12
25
|
* @param method RPC method name.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGzE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAElC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IAIlC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAChC;AAGD,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACjD,CAAC;CACH,CAAC;AAGF,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,cAAc,CAAC,YAAY,EAAE,4BAA4B,EAAE,GAAG,sBAAsB,CAAC;CACtF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAe3E"}
|
|
@@ -91,5 +91,11 @@ export declare class SvmQuery implements QueryInterface {
|
|
|
91
91
|
* @returns The number of decimals of precision for the corresponding tokenSymbol
|
|
92
92
|
*/
|
|
93
93
|
getTokenDecimals(tokenSymbol: string): number;
|
|
94
|
+
estimateComputeUnits(relayData: RelayData & {
|
|
95
|
+
destinationChainId: number;
|
|
96
|
+
recipient: SvmAddress;
|
|
97
|
+
outputToken: SvmAddress;
|
|
98
|
+
exclusiveRelayer: SvmAddress;
|
|
99
|
+
}, relayer: SvmAddress, repaymentChainId: number, repaymentAddress: SvmAddress): Promise<number>;
|
|
94
100
|
}
|
|
95
101
|
//# sourceMappingURL=svmQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svmQuery.d.ts","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/svmQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"svmQuery.d.ts","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/svmQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,iBAAiB,EAMlB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EASZ,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAkB,MAAM,aAAa,CAAC;AACpH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAC;AAKvC;;;GAGG;AACH,qBAAa,QAAS,YAAW,cAAc;IAe3C,QAAQ,CAAC,QAAQ,EAAE,WAAW;IAC9B,QAAQ,CAAC,aAAa,EAAE,iBAAiB;IACzC,QAAQ,CAAC,SAAS,EAAE,UAAU;IAC9B,QAAQ,CAAC,uBAAuB,EAAE,UAAU;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,YAAY;IACrC,QAAQ,CAAC,qBAAqB,EAAE,MAAM;IArBxC,SAAS,CAAC,oBAAoB,uYAAC;IAE/B;;;;;;;;;;OAUG;gBAEQ,QAAQ,EAAE,WAAW,EACrB,aAAa,EAAE,iBAAiB,EAChC,SAAS,EAAE,UAAU,EACrB,uBAAuB,EAAE,UAAU,EACnC,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,YAAA,EAC3B,aAAa,CAAC,EAAE,YAAY,YAAA,EAC5B,qBAAqB,GAAE,MAAc;IAOhD;;;;;;;;;OASG;IACG,WAAW,CACf,SAAS,EAAE,SAAS,GAAG;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,EACrD,OAAO,UAAkD,EACzD,OAAO,GAAE,OAAO,CAAC;QACf,QAAQ,EAAE,YAAY,CAAC;QACvB,QAAQ,EAAE,YAAY,CAAC;QACvB,iBAAiB,EAAE,SAAS,CAAC;QAC7B,qBAAqB,EAAE,SAAS,CAAC;KAClC,CAAM,GACN,OAAO,CAAC,uBAAuB,CAAC;IAmFnC;;;;;OAKG;IACG,gBAAgB,CACpB,OAAO,EAAE,SAAS,GAAG;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,EACnD,OAAO,UAAgD,GACtD,OAAO,CAAC,SAAS,CAAC;IAiBrB;;;;;;OAMG;IACH,2BAA2B,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS;IAI1D;;;;;OAKG;cACa,cAAc,CAC5B,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,aAAa,CAAC,GAAG;QACxD,kBAAkB,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,UAAU,CAAC;QACtB,WAAW,EAAE,UAAU,CAAC;KACzB,EACD,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,OAAO;;;;IAK3B;;;;OAIG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzD;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAMvC,oBAAoB,CACxB,SAAS,EAAE,SAAS,GAAG;QACrB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,UAAU,CAAC;QACtB,WAAW,EAAE,UAAU,CAAC;QACxB,gBAAgB,EAAE,UAAU,CAAC;KAC9B,EACD,OAAO,EAAE,UAAU,EACnB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,UAAU,GAC3B,OAAO,CAAC,MAAM,CAAC;CA4BnB"}
|
package/package.json
CHANGED
|
@@ -32,10 +32,12 @@ import {
|
|
|
32
32
|
pipe,
|
|
33
33
|
signTransactionMessageWithSigners,
|
|
34
34
|
some,
|
|
35
|
+
compileTransaction,
|
|
35
36
|
type TransactionSigner,
|
|
36
37
|
type WritableAccount,
|
|
37
38
|
type ReadonlyAccount,
|
|
38
39
|
type Commitment,
|
|
40
|
+
type CompilableTransactionMessage,
|
|
39
41
|
} from "@solana/kit";
|
|
40
42
|
import assert from "assert";
|
|
41
43
|
import winston from "winston";
|
|
@@ -100,6 +102,8 @@ import {
|
|
|
100
102
|
*/
|
|
101
103
|
export const SLOT_DURATION_MS = 400;
|
|
102
104
|
|
|
105
|
+
export const SOLANA_TX_SIZE_LIMIT = 1232;
|
|
106
|
+
|
|
103
107
|
type ProtoFill = Omit<RelayData, "recipient" | "outputToken"> & {
|
|
104
108
|
destinationChainId: number;
|
|
105
109
|
recipient: SvmAddress;
|
|
@@ -693,6 +697,8 @@ export async function getIPFillRelayTx(
|
|
|
693
697
|
getEventAuthority(program),
|
|
694
698
|
]);
|
|
695
699
|
|
|
700
|
+
const recipientAtaEncodedAccount = await fetchEncodedAccount(solanaClient, recipientAta);
|
|
701
|
+
|
|
696
702
|
// Add remaining accounts if the relayData has a non-empty message.
|
|
697
703
|
// @dev ! since in the context of creating a `fillRelayTx`, `relayData` must be defined.
|
|
698
704
|
const remainingAccounts: (WritableAccount | ReadonlyAccount)[] = [];
|
|
@@ -736,7 +742,7 @@ export async function getIPFillRelayTx(
|
|
|
736
742
|
fillInput,
|
|
737
743
|
{ outputAmount: relayData.outputAmount.toBigInt(), recipient: toAddress(relayData.recipient) },
|
|
738
744
|
mintInfo.data.decimals,
|
|
739
|
-
|
|
745
|
+
!recipientAtaEncodedAccount.exists,
|
|
740
746
|
remainingAccounts
|
|
741
747
|
);
|
|
742
748
|
}
|
|
@@ -1084,6 +1090,8 @@ async function fetchBatchFillStatusFromPdaAccounts(
|
|
|
1084
1090
|
* Returns a set of instructions to execute to fill a relay via instruction params.
|
|
1085
1091
|
* @param spokePool The program ID of the Solana spoke pool.
|
|
1086
1092
|
* @param relayData The relay data to write to the instruction params PDA.
|
|
1093
|
+
* @param repaymentChainId: The chain ID to take repayment.
|
|
1094
|
+
* @param repaymentAddress: The address to receive repayment on the specified repayment chain.
|
|
1087
1095
|
* @param signer The transaction signer and authority of the instruction params PDA.
|
|
1088
1096
|
* @param maxWriteSize The maximum fragment size to write to instruction params.
|
|
1089
1097
|
*/
|
|
@@ -1413,6 +1421,47 @@ export async function getCCTPDepositAccounts(
|
|
|
1413
1421
|
};
|
|
1414
1422
|
}
|
|
1415
1423
|
|
|
1424
|
+
/**
|
|
1425
|
+
* Returns true if the input deposit's corresponding relay data would result in a transaction size
|
|
1426
|
+
* that is larger than the Solana transaction size limit.
|
|
1427
|
+
* @param fillRelayTx The compilable fill relay transaction to check.
|
|
1428
|
+
* @returns Object containing a boolean if the input deposit requires a multipart fill, false otherwise and
|
|
1429
|
+
* the number of bytes in the serialized transaction.
|
|
1430
|
+
*/
|
|
1431
|
+
export function isSVMFillTooLarge(fillRelayTx: CompilableTransactionMessage): {
|
|
1432
|
+
tooLarge: boolean;
|
|
1433
|
+
sizeBytes: number;
|
|
1434
|
+
} {
|
|
1435
|
+
const sizeBytes = calculateFillSizeBytes(fillRelayTx);
|
|
1436
|
+
return {
|
|
1437
|
+
tooLarge: sizeBytes > SOLANA_TX_SIZE_LIMIT,
|
|
1438
|
+
sizeBytes,
|
|
1439
|
+
};
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
/**
|
|
1443
|
+
* Returns the byte size of a base64 transaction.
|
|
1444
|
+
* @param base64TxString base64 serialized Solana transaction.
|
|
1445
|
+
* @returns The number of bytes in the transaction.
|
|
1446
|
+
*/
|
|
1447
|
+
export function base64StrToByteSize(base64TxString: string): number {
|
|
1448
|
+
// base64 string has 6 bits per character, so every 4 symbols represent 3 bytes
|
|
1449
|
+
// However, we also need to account for padding: https://en.wikipedia.org/wiki/Base64#Padding
|
|
1450
|
+
const paddingLen = base64TxString.endsWith("==") ? 2 : base64TxString.endsWith("=") ? 1 : 0;
|
|
1451
|
+
return (base64TxString.length * 3) / 4 - paddingLen;
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
/**
|
|
1455
|
+
* Returns the size of the fill relay transaction using the input relayData.
|
|
1456
|
+
* @param fillTx The compilable fill relay transaction.
|
|
1457
|
+
* @returns The number of bytes in the serialized fillRelay transaction.
|
|
1458
|
+
*/
|
|
1459
|
+
export function calculateFillSizeBytes(fillTx: CompilableTransactionMessage): number {
|
|
1460
|
+
const signedTransaction = compileTransaction(fillTx);
|
|
1461
|
+
const serializedTx = getBase64EncodedWireTransaction(signedTransaction);
|
|
1462
|
+
return base64StrToByteSize(serializedTx);
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1416
1465
|
/**
|
|
1417
1466
|
* Returns the account metas for a deposit message.
|
|
1418
1467
|
* @param message The CCTP message.
|
package/src/arch/svm/encoders.ts
CHANGED
|
@@ -62,6 +62,10 @@ export function getHandlerMessageEncoder(): Encoder<Array<CompiledIx>> {
|
|
|
62
62
|
return getArrayEncoder(getCompiledIxEncoder());
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
export function getHandlerMessageDecoder(): Decoder<Array<CompiledIx>> {
|
|
66
|
+
return getArrayDecoder(getCompiledIxDecoder());
|
|
67
|
+
}
|
|
68
|
+
|
|
65
69
|
export function getCompiledIxEncoder(): Encoder<CompiledIx> {
|
|
66
70
|
return getStructEncoder([
|
|
67
71
|
["program_id_index", getU8Encoder()],
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
GetTransactionApi,
|
|
11
11
|
Signature,
|
|
12
12
|
} from "@solana/kit";
|
|
13
|
-
import { bs58, chainIsSvm, getMessageHash, toAddressType } from "../../utils";
|
|
13
|
+
import { bs58, chainIsSvm, getMessageHash, isDefined, toAddressType } from "../../utils";
|
|
14
14
|
import { EventName, EventWithData, SVMProvider } from "./types";
|
|
15
15
|
import { decodeEvent, isDevnet } from "./utils";
|
|
16
16
|
import { Deposit, DepositWithTime, Fill, FillWithTime } from "../../interfaces";
|
|
@@ -182,7 +182,6 @@ export class SvmCpiEventsClient {
|
|
|
182
182
|
.getTransaction(txSignature, { commitment, maxSupportedTransactionVersion: 0 })
|
|
183
183
|
.send();
|
|
184
184
|
|
|
185
|
-
if (txResult === null) return [];
|
|
186
185
|
return this.processEventFromTx(txResult);
|
|
187
186
|
}
|
|
188
187
|
|
|
@@ -192,8 +191,8 @@ export class SvmCpiEventsClient {
|
|
|
192
191
|
* @param txResult - The transaction result.
|
|
193
192
|
* @returns A promise that resolves to an array of events with their data and name.
|
|
194
193
|
*/
|
|
195
|
-
private processEventFromTx(txResult
|
|
196
|
-
if (!txResult) return [];
|
|
194
|
+
private processEventFromTx(txResult?: GetTransactionReturnType): { program: Address; data: unknown; name: string }[] {
|
|
195
|
+
if (!isDefined(txResult) || isDefined(txResult.meta?.err)) return [];
|
|
197
196
|
const events: { program: Address; data: unknown; name: string }[] = [];
|
|
198
197
|
|
|
199
198
|
const accountKeys = txResult.transaction.message.accountKeys;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RpcTransport } from "@solana/rpc-spec";
|
|
2
|
+
import { CompilableTransactionMessage, SolanaRpcApi } from "@solana/kit";
|
|
2
3
|
import { isSolanaError, SVM_SLOT_SKIPPED, SVM_LONG_TERM_STORAGE_SLOT_SKIPPED } from "../../arch/svm";
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -14,6 +15,19 @@ export interface SolanaRateLimitTask {
|
|
|
14
15
|
reject: (err: unknown) => void;
|
|
15
16
|
}
|
|
16
17
|
|
|
18
|
+
// `simulateBundle` minimal response struct.
|
|
19
|
+
export type SolanaBundleSimulation = {
|
|
20
|
+
result: {
|
|
21
|
+
unitsConsumed: number;
|
|
22
|
+
returnData: { programId: string; data: string };
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// Minimal extension of a Solana RPC Api which also supports some JITO RPC endpoints.
|
|
27
|
+
export interface JitoInterface extends SolanaRpcApi {
|
|
28
|
+
simulateBundle(transactions: CompilableTransactionMessage[]): SolanaBundleSimulation;
|
|
29
|
+
}
|
|
30
|
+
|
|
17
31
|
/**
|
|
18
32
|
* Determine whether a Solana RPC error indicates an unrecoverable error that should not be retried.
|
|
19
33
|
* @param method RPC method name.
|