@across-protocol/sdk 4.3.71 → 4.3.73
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 +2 -2
- package/dist/cjs/arch/svm/SpokeUtils.js +3 -3
- package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/svm/provider.d.ts +12 -1
- package/dist/cjs/arch/svm/provider.js +17 -6
- package/dist/cjs/arch/svm/provider.js.map +1 -1
- package/dist/cjs/arch/svm/types.d.ts +5 -1
- package/dist/cjs/arch/svm/types.js.map +1 -1
- package/dist/cjs/arch/svm/utils.d.ts +4 -5
- package/dist/cjs/arch/svm/utils.js +19 -14
- package/dist/cjs/arch/svm/utils.js.map +1 -1
- package/dist/cjs/providers/solana/quorumFallbackRpcFactory.d.ts +1 -1
- package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js +7 -3
- package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/retryRpcFactory.d.ts +1 -2
- package/dist/cjs/providers/solana/retryRpcFactory.js +4 -16
- package/dist/cjs/providers/solana/retryRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/utils.d.ts +1 -0
- package/dist/cjs/providers/solana/utils.js +15 -0
- package/dist/cjs/providers/solana/utils.js.map +1 -1
- package/dist/esm/arch/svm/SpokeUtils.d.ts +2 -2
- package/dist/esm/arch/svm/SpokeUtils.js +3 -3
- package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/svm/provider.d.ts +28 -1
- package/dist/esm/arch/svm/provider.js +29 -1
- package/dist/esm/arch/svm/provider.js.map +1 -1
- package/dist/esm/arch/svm/types.d.ts +5 -1
- package/dist/esm/arch/svm/types.js.map +1 -1
- package/dist/esm/arch/svm/utils.d.ts +4 -5
- package/dist/esm/arch/svm/utils.js +18 -12
- package/dist/esm/arch/svm/utils.js.map +1 -1
- package/dist/esm/providers/solana/quorumFallbackRpcFactory.d.ts +1 -1
- package/dist/esm/providers/solana/quorumFallbackRpcFactory.js +8 -3
- package/dist/esm/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/retryRpcFactory.d.ts +1 -8
- package/dist/esm/providers/solana/retryRpcFactory.js +4 -24
- package/dist/esm/providers/solana/retryRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/utils.d.ts +7 -0
- package/dist/esm/providers/solana/utils.js +22 -1
- package/dist/esm/providers/solana/utils.js.map +1 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts +2 -2
- package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
- package/dist/types/arch/svm/provider.d.ts +28 -1
- package/dist/types/arch/svm/provider.d.ts.map +1 -1
- package/dist/types/arch/svm/types.d.ts +5 -1
- package/dist/types/arch/svm/types.d.ts.map +1 -1
- package/dist/types/arch/svm/utils.d.ts +4 -5
- package/dist/types/arch/svm/utils.d.ts.map +1 -1
- package/dist/types/providers/solana/quorumFallbackRpcFactory.d.ts +1 -1
- package/dist/types/providers/solana/quorumFallbackRpcFactory.d.ts.map +1 -1
- package/dist/types/providers/solana/retryRpcFactory.d.ts +1 -8
- package/dist/types/providers/solana/retryRpcFactory.d.ts.map +1 -1
- package/dist/types/providers/solana/utils.d.ts +7 -0
- package/dist/types/providers/solana/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/arch/svm/SpokeUtils.ts +5 -4
- package/src/arch/svm/provider.ts +46 -1
- package/src/arch/svm/types.ts +6 -0
- package/src/arch/svm/utils.ts +17 -11
- package/src/providers/solana/quorumFallbackRpcFactory.ts +10 -4
- package/src/providers/solana/retryRpcFactory.ts +5 -27
- package/src/providers/solana/utils.ts +24 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { __awaiter, __extends, __generator, __spreadArray } from "tslib";
|
|
2
|
-
import { CachedSolanaRpcFactory } from "./cachedRpcFactory";
|
|
3
|
-
import { SolanaBaseRpcFactory } from "./baseRpcFactories";
|
|
4
2
|
import { isPromiseFulfilled, isPromiseRejected } from "../../utils/TypeGuards";
|
|
5
3
|
import { compareSvmRpcResults, createSendErrorWithMessage } from "../utils";
|
|
4
|
+
import { CachedSolanaRpcFactory } from "./cachedRpcFactory";
|
|
5
|
+
import { SolanaBaseRpcFactory } from "./baseRpcFactories";
|
|
6
|
+
import { shouldFailImmediate } from "./utils";
|
|
6
7
|
// This factory stores multiple Cached RPC factories so that users of this factory can specify multiple RPC providers
|
|
7
8
|
// and the factory will fallback through them if any RPC calls fail. This factory also implements quorum logic amongst
|
|
8
9
|
// the RPC providers.
|
|
@@ -59,13 +60,17 @@ var QuorumFallbackSolanaRpcFactory = /** @class */ (function (_super) {
|
|
|
59
60
|
if (fallbackFactories.length === 0) {
|
|
60
61
|
throw error;
|
|
61
62
|
}
|
|
63
|
+
// If one RPC provider reverted, others likely will too. Skip them.
|
|
64
|
+
if (quorumThreshold === 1 && shouldFailImmediate(method, error)) {
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
62
67
|
var currentFactory = factory.rpcFactory.clusterUrl;
|
|
63
68
|
var nextFactory = fallbackFactories.shift();
|
|
64
69
|
_this.logger.debug({
|
|
65
70
|
at: "FallbackSolanaRpcFactory#createTransport::tryWithFallback",
|
|
66
71
|
message: "[".concat(method, "] ").concat(currentFactory, " failed, falling back to ").concat(nextFactory.rpcFactory.clusterUrl, ", new fallback providers length: ").concat(fallbackFactories.length),
|
|
67
72
|
method: method,
|
|
68
|
-
|
|
73
|
+
jsonError: error,
|
|
69
74
|
});
|
|
70
75
|
return tryWithFallback.apply(void 0, __spreadArray([nextFactory], args, false));
|
|
71
76
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quorumFallbackRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/quorumFallbackRpcFactory.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"quorumFallbackRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/quorumFallbackRpcFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { Logger } from "winston";
|
|
1
2
|
import { RpcTransport } from "@solana/kit";
|
|
2
3
|
import { SolanaClusterRpcFactory } from "./baseRpcFactories";
|
|
3
4
|
import { RateLimitedSolanaRpcFactory } from "./rateLimitedRpcFactory";
|
|
4
|
-
import { Logger } from "winston";
|
|
5
5
|
export declare class RetrySolanaRpcFactory extends SolanaClusterRpcFactory {
|
|
6
6
|
readonly retries: number;
|
|
7
7
|
readonly retryDelaySeconds: number;
|
|
@@ -16,13 +16,6 @@ export declare class RetrySolanaRpcFactory extends SolanaClusterRpcFactory {
|
|
|
16
16
|
* @returns Promise that resolves to the transport response
|
|
17
17
|
*/
|
|
18
18
|
private _tryCall;
|
|
19
|
-
/**
|
|
20
|
-
* Determine whether a Solana RPC error indicates an unrecoverable error that should not be retried.
|
|
21
|
-
* @param method RPC method name
|
|
22
|
-
* @param error Error object from the RPC call
|
|
23
|
-
* @returns True if the request should be aborted immediately, otherwise false
|
|
24
|
-
*/
|
|
25
|
-
private shouldFailImmediate;
|
|
26
19
|
/**
|
|
27
20
|
* Identify whether an error thrown was the result of an RPC provider 429 response.
|
|
28
21
|
* @param error Error object from the RPC query.
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { __awaiter, __extends, __generator, __spreadArray } from "tslib";
|
|
2
2
|
import { SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR } from "@solana/kit";
|
|
3
3
|
import { getThrowSolanaErrorResponseTransformer } from "@solana/rpc-transformers";
|
|
4
|
+
import { isSolanaError } from "../../arch/svm";
|
|
5
|
+
import { delay } from "../../utils";
|
|
4
6
|
import { SolanaClusterRpcFactory } from "./baseRpcFactories";
|
|
5
7
|
import { RateLimitedSolanaRpcFactory } from "./rateLimitedRpcFactory";
|
|
6
|
-
import {
|
|
7
|
-
import { delay } from "../../utils";
|
|
8
|
+
import { shouldFailImmediate } from "./utils";
|
|
8
9
|
// This factory adds retry logic on top of the RateLimitedSolanaRpcFactory.
|
|
9
10
|
// It follows the same composition pattern as other factories in this module.
|
|
10
11
|
var RetrySolanaRpcFactory = /** @class */ (function (_super) {
|
|
@@ -71,7 +72,7 @@ var RetrySolanaRpcFactory = /** @class */ (function (_super) {
|
|
|
71
72
|
return [2 /*return*/, response];
|
|
72
73
|
case 4:
|
|
73
74
|
error_1 = _b.sent();
|
|
74
|
-
if (retryAttempt++ >= this.retries ||
|
|
75
|
+
if (retryAttempt++ >= this.retries || shouldFailImmediate(method, error_1)) {
|
|
75
76
|
throw error_1;
|
|
76
77
|
}
|
|
77
78
|
retryDelaySeconds = this.retryDelaySeconds;
|
|
@@ -88,27 +89,6 @@ var RetrySolanaRpcFactory = /** @class */ (function (_super) {
|
|
|
88
89
|
});
|
|
89
90
|
});
|
|
90
91
|
};
|
|
91
|
-
/**
|
|
92
|
-
* Determine whether a Solana RPC error indicates an unrecoverable error that should not be retried.
|
|
93
|
-
* @param method RPC method name
|
|
94
|
-
* @param error Error object from the RPC call
|
|
95
|
-
* @returns True if the request should be aborted immediately, otherwise false
|
|
96
|
-
*/
|
|
97
|
-
RetrySolanaRpcFactory.prototype.shouldFailImmediate = function (method, error) {
|
|
98
|
-
if (!isSolanaError(error)) {
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
// JSON-RPC errors: https://www.quicknode.com/docs/solana/error-references
|
|
102
|
-
var code = error.context.__code;
|
|
103
|
-
switch (method) {
|
|
104
|
-
case "getBlock":
|
|
105
|
-
case "getBlockTime":
|
|
106
|
-
// No block at the requested slot. This may not be correct for blocks > 1 year old.
|
|
107
|
-
return [SVM_SLOT_SKIPPED, SVM_LONG_TERM_STORAGE_SLOT_SKIPPED].includes(code);
|
|
108
|
-
default:
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
92
|
/**
|
|
113
93
|
* Identify whether an error thrown was the result of an RPC provider 429 response.
|
|
114
94
|
* @param error Error object from the RPC query.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"retryRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,3 +7,10 @@ export interface SolanaRateLimitTask {
|
|
|
7
7
|
resolve: (result: unknown) => void;
|
|
8
8
|
reject: (err: unknown) => void;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Determine whether a Solana RPC error indicates an unrecoverable error that should not be retried.
|
|
12
|
+
* @param method RPC method name.
|
|
13
|
+
* @param error Error object from the RPC call.
|
|
14
|
+
* @returns True if the request should be aborted immediately, otherwise false.
|
|
15
|
+
*/
|
|
16
|
+
export declare function shouldFailImmediate(method: string, error: unknown): boolean;
|
|
@@ -1,2 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
import { isSolanaError, SVM_SLOT_SKIPPED, SVM_LONG_TERM_STORAGE_SLOT_SKIPPED } from "../../arch/svm";
|
|
2
|
+
/**
|
|
3
|
+
* Determine whether a Solana RPC error indicates an unrecoverable error that should not be retried.
|
|
4
|
+
* @param method RPC method name.
|
|
5
|
+
* @param error Error object from the RPC call.
|
|
6
|
+
* @returns True if the request should be aborted immediately, otherwise false.
|
|
7
|
+
*/
|
|
8
|
+
export function shouldFailImmediate(method, error) {
|
|
9
|
+
if (!isSolanaError(error)) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
// JSON-RPC errors: https://www.quicknode.com/docs/solana/error-references
|
|
13
|
+
var code = error.context.__code;
|
|
14
|
+
switch (method) {
|
|
15
|
+
case "getBlock":
|
|
16
|
+
case "getBlockTime":
|
|
17
|
+
// No block at the requested slot. This may not be correct for blocks > 1 year old.
|
|
18
|
+
return [SVM_SLOT_SKIPPED, SVM_LONG_TERM_STORAGE_SLOT_SKIPPED].includes(code);
|
|
19
|
+
default:
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
2
23
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/providers/solana/utils.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/providers/solana/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,kCAAkC,EAAE,MAAM,gBAAgB,CAAC;AAerG;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,KAAc;IAChE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0EAA0E;IAClE,IAAQ,IAAI,GAAK,KAAK,CAAC,OAAO,OAAlB,CAAmB;IACvC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,cAAc;YACjB,mFAAmF;YACnF,OAAO,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/E;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { DepositWithBlock, FillStatus, FillWithBlock, RelayData, RelayDataWithMe
|
|
|
6
6
|
import { BigNumber, EvmAddress, Address as SdkAddress, SvmAddress } from "../../utils";
|
|
7
7
|
import { type AcrossPlusMessage } from "./";
|
|
8
8
|
import { SvmCpiEventsClient } from "./eventsClient";
|
|
9
|
-
import { AttestedCCTPMessage, SVMProvider } from "./types";
|
|
9
|
+
import { AttestedCCTPMessage, SVMProvider, LatestBlockhash } from "./types";
|
|
10
10
|
/**
|
|
11
11
|
* @note: Average Solana slot duration is about 400-500ms. We can be conservative
|
|
12
12
|
* and choose 400 to ensure that the most slots get included in our ranges
|
|
@@ -292,7 +292,7 @@ export declare function getFillRelayDelegatePda(relayHash: Uint8Array, repayment
|
|
|
292
292
|
* the error handling would have to account for the asynchronous opening/closing of PDAs, which is better handled downstream,
|
|
293
293
|
* where the caller of this function has more context.
|
|
294
294
|
*/
|
|
295
|
-
export declare const hasCCTPV1MessageBeenProcessed: (solanaClient: SVMProvider, signer: KeyPairSigner, nonce: number, sourceDomain: number) => Promise<boolean>;
|
|
295
|
+
export declare const hasCCTPV1MessageBeenProcessed: (solanaClient: SVMProvider, signer: KeyPairSigner, nonce: number, sourceDomain: number, latestBlockhash?: LatestBlockhash) => Promise<boolean>;
|
|
296
296
|
/**
|
|
297
297
|
* Returns the account metas for a tokenless message.
|
|
298
298
|
* @returns The account metas for a tokenless message.
|
|
@@ -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,EAalB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,SAAS,EACT,wBAAwB,EAEzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,UAAU,EACV,OAAO,IAAI,UAAU,EACrB,UAAU,EAYX,MAAM,aAAa,CAAC;AACrB,OAAO,EAeL,KAAK,iBAAiB,EAEvB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAiB,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"SpokeUtils.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/SpokeUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,32 @@
|
|
|
2
2
|
* SVM RPC provider error codes
|
|
3
3
|
* See https://www.quicknode.com/docs/solana/error-references
|
|
4
4
|
*/
|
|
5
|
-
export {
|
|
5
|
+
export { SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE as SVM_BLOCK_NOT_AVAILABLE, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED as SVM_SLOT_SKIPPED, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED as SVM_LONG_TERM_STORAGE_SLOT_SKIPPED, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE as SVM_TRANSACTION_PREFLIGHT_FAILURE, } from "@solana/kit";
|
|
6
|
+
/**
|
|
7
|
+
* Type definition for SolanaError structure.
|
|
8
|
+
* Includes common context properties for better type inference.
|
|
9
|
+
*/
|
|
10
|
+
export interface SolanaErrorLike {
|
|
11
|
+
name: string;
|
|
12
|
+
context: {
|
|
13
|
+
__code: number;
|
|
14
|
+
__serverMessage?: string;
|
|
15
|
+
statusCode?: number;
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
};
|
|
18
|
+
cause?: unknown;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Enhanced type guard to check if an error is a SolanaError.
|
|
22
|
+
*
|
|
23
|
+
* This function uses a two-tier approach:
|
|
24
|
+
* 1. First attempts the official instanceof-based check from @solana/kit
|
|
25
|
+
* 2. Falls back to structural validation using superstruct for errors that have been
|
|
26
|
+
* serialized/deserialized (e.g., when crossing async boundaries or through JSON parsing)
|
|
27
|
+
*
|
|
28
|
+
* @param error The error to check
|
|
29
|
+
* @param code Optional error code to match against context.__code
|
|
30
|
+
* @returns True if the error is a SolanaError (or has valid SolanaError structure)
|
|
31
|
+
*/
|
|
32
|
+
export declare function isSolanaError(error: unknown): error is SolanaErrorLike;
|
|
6
33
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/provider.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,OAAO,EACL,wDAAwD,IAAI,uBAAuB,EACnF,iDAAiD,IAAI,gBAAgB,EACrE,mEAAmE,IAAI,kCAAkC,EACzG,uEAAuE,IAAI,iCAAiC,GAC7G,MAAM,aAAa,CAAC;AAcrB;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAEtE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SvmSpokeClient } from "@across-protocol/contracts";
|
|
2
|
-
import { Address, Rpc, RpcSubscriptions, RpcTransport, Signature, SignatureNotificationsApi, SlotNotificationsApi, SolanaRpcApiFromTransport, UnixTimestamp } from "@solana/kit";
|
|
2
|
+
import { Address, Rpc, RpcSubscriptions, RpcTransport, Signature, SignatureNotificationsApi, SlotNotificationsApi, SolanaRpcApiFromTransport, UnixTimestamp, type Blockhash } from "@solana/kit";
|
|
3
3
|
export type EventData = SvmSpokeClient.BridgedToHubPool | SvmSpokeClient.TokensBridged | SvmSpokeClient.ExecutedRelayerRefundRoot | SvmSpokeClient.RelayedRootBundle | SvmSpokeClient.PausedDeposits | SvmSpokeClient.PausedFills | SvmSpokeClient.SetXDomainAdmin | SvmSpokeClient.FilledRelay | SvmSpokeClient.FundsDeposited | SvmSpokeClient.EmergencyDeletedRootBundle | SvmSpokeClient.RequestedSlowFill | SvmSpokeClient.ClaimedRelayerRefund | SvmSpokeClient.TransferredOwnership;
|
|
4
4
|
export declare enum SVMEventNames {
|
|
5
5
|
FilledRelay = "FilledRelay",
|
|
@@ -38,4 +38,8 @@ export type AttestedCCTPMessage = {
|
|
|
38
38
|
attestation: string;
|
|
39
39
|
type: "transfer" | "message";
|
|
40
40
|
};
|
|
41
|
+
export type LatestBlockhash = {
|
|
42
|
+
blockhash: Blockhash;
|
|
43
|
+
lastValidBlockHeight: bigint;
|
|
44
|
+
};
|
|
41
45
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EACL,OAAO,EACP,GAAG,EACH,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,aAAa,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EACL,OAAO,EACP,GAAG,EACH,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,aAAa,EACb,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,SAAS,GACjB,cAAc,CAAC,gBAAgB,GAC/B,cAAc,CAAC,aAAa,GAC5B,cAAc,CAAC,yBAAyB,GACxC,cAAc,CAAC,iBAAiB,GAChC,cAAc,CAAC,cAAc,GAC7B,cAAc,CAAC,WAAW,GAC1B,cAAc,CAAC,eAAe,GAC9B,cAAc,CAAC,WAAW,GAC1B,cAAc,CAAC,cAAc,GAC7B,cAAc,CAAC,0BAA0B,GACzC,cAAc,CAAC,iBAAiB,GAChC,cAAc,CAAC,oBAAoB,GACnC,cAAc,CAAC,oBAAoB,CAAC;AAExC,oBAAY,aAAa;IACvB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,yBAAyB,8BAA8B;IACvD,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,eAAe,oBAAoB;IACnC,0BAA0B,+BAA+B;IACzD,iBAAiB,sBAAsB;IACvC,oBAAoB,yBAAyB;IAC7C,aAAa,kBAAkB;IAC/B,oBAAoB,yBAAyB;CAC9C;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,aAAa,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG;IAC1B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC;AAGvE,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,WAAW,CAAC;IACjB,gBAAgB,EAAE,gBAAgB,CAAC,yBAAyB,GAAG,oBAAoB,CAAC,CAAC;CACtF,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC"}
|
|
@@ -3,9 +3,8 @@ import { Idl } from "@coral-xyz/anchor";
|
|
|
3
3
|
import { Address, IInstruction, KeyPairSigner, type Commitment, type TransactionSigner } from "@solana/kit";
|
|
4
4
|
import { RelayData, RelayDataWithMessageHash } from "../../interfaces";
|
|
5
5
|
import { BigNumber, Address as SdkAddress } from "../../utils";
|
|
6
|
-
import { AttestedCCTPMessage, EventName, SVMProvider } from "./types";
|
|
6
|
+
import { AttestedCCTPMessage, EventName, SVMProvider, LatestBlockhash } from "./types";
|
|
7
7
|
import winston from "winston";
|
|
8
|
-
export { isSolanaError } from "@solana/kit";
|
|
9
8
|
/**
|
|
10
9
|
* Basic void TransactionSigner type
|
|
11
10
|
*/
|
|
@@ -125,7 +124,7 @@ export declare function getRandomSvmAddress(): Address<string>;
|
|
|
125
124
|
* @param signer - The signer of the transaction.
|
|
126
125
|
* @returns The default transaction.
|
|
127
126
|
*/
|
|
128
|
-
export declare const createDefaultTransaction: (rpcClient: SVMProvider, signer: TransactionSigner) => Promise<import("@solana/kit").TransactionMessageWithBlockhashLifetime & import("@solana/kit").ITransactionMessageWithFeePayerSigner<string, TransactionSigner<string>> & Omit<Readonly<{
|
|
127
|
+
export declare const createDefaultTransaction: (rpcClient: SVMProvider, signer: TransactionSigner, latestBlockhash?: LatestBlockhash) => Promise<import("@solana/kit").TransactionMessageWithBlockhashLifetime & import("@solana/kit").ITransactionMessageWithFeePayerSigner<string, TransactionSigner<string>> & Omit<Readonly<{
|
|
129
128
|
instructions: readonly IInstruction<string, readonly (import("@solana/kit").IAccountMeta<string> | import("@solana/kit").IAccountLookupMeta<string, string>)[]>[];
|
|
130
129
|
version: 0;
|
|
131
130
|
}>, "feePayer">>;
|
|
@@ -137,7 +136,7 @@ export declare const createDefaultTransaction: (rpcClient: SVMProvider, signer:
|
|
|
137
136
|
* @param parser - The parser function to decode the result.
|
|
138
137
|
* @returns The decoded result.
|
|
139
138
|
*/
|
|
140
|
-
export declare const simulateAndDecode: <P extends (buf: Buffer) => unknown>(solanaClient: SVMProvider, ix: IInstruction, signer: KeyPairSigner, parser: P) => Promise<ReturnType<P>>;
|
|
139
|
+
export declare const simulateAndDecode: <P extends (buf: Buffer) => unknown>(solanaClient: SVMProvider, ix: IInstruction, signer: KeyPairSigner, parser: P, latestBlockhash?: LatestBlockhash) => Promise<ReturnType<P>>;
|
|
141
140
|
/**
|
|
142
141
|
* Converts a common `RelayData` type to an SvmSpokeClient.RelayData` type. This is useful for when we need
|
|
143
142
|
* to interface directly with the SvmSpoke.
|
|
@@ -153,7 +152,7 @@ export declare function toSvmRelayData(relayData: RelayData): SvmSpokeClient.Rel
|
|
|
153
152
|
* @param sourceDomain The source domain.
|
|
154
153
|
* @returns The PDA for the CCTP nonce.
|
|
155
154
|
*/
|
|
156
|
-
export declare const getCCTPNoncePda: (solanaClient: SVMProvider, signer: KeyPairSigner, nonce: number, sourceDomain: number) => Promise<Address>;
|
|
155
|
+
export declare const getCCTPNoncePda: (solanaClient: SVMProvider, signer: KeyPairSigner, nonce: number, sourceDomain: number, latestBlockhash?: LatestBlockhash) => Promise<Address>;
|
|
157
156
|
/**
|
|
158
157
|
* Checks if a CCTP message is a deposit for burn event.
|
|
159
158
|
* @param event The CCTP message event.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC1G,OAAO,EAAuB,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,OAAO,EACP,YAAY,EACZ,aAAa,EAcb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAY,SAAS,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,UAAU,EAAkD,MAAM,aAAa,CAAC;AAE/G,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAiB,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/arch/svm/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { Logger } from "winston";
|
|
1
2
|
import { RpcFromTransport, RpcTransport, SolanaRpcApiFromTransport } from "@solana/kit";
|
|
2
3
|
import { CachedSolanaRpcFactory } from "./cachedRpcFactory";
|
|
3
4
|
import { SolanaBaseRpcFactory } from "./baseRpcFactories";
|
|
4
|
-
import { Logger } from "winston";
|
|
5
5
|
export declare class QuorumFallbackSolanaRpcFactory extends SolanaBaseRpcFactory {
|
|
6
6
|
readonly nodeQuorumThreshold: number;
|
|
7
7
|
readonly logger: Logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quorumFallbackRpcFactory.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/quorumFallbackRpcFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAe,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"quorumFallbackRpcFactory.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/quorumFallbackRpcFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAe,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAGrG,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAA2B,MAAM,oBAAoB,CAAC;AAMnF,qBAAa,8BAA+B,SAAQ,oBAAoB;IASpE,QAAQ,CAAC,mBAAmB,EAAE,MAAM;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM;IATzB,QAAQ,CAAC,YAAY,EAAE;QACrB,SAAS,EAAE,YAAY,CAAC;QACxB,SAAS,EAAE,gBAAgB,CAAC,yBAAyB,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC;QACnF,UAAU,EAAE,sBAAsB,CAAC;KACpC,EAAE,CAAM;gBAGP,wBAAwB,EAAE,qBAAqB,CAAC,OAAO,sBAAsB,CAAC,EAAE,EACvE,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM;IAkBlB,eAAe,IAAI,YAAY;IAsMtC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM;CAY5D"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { Logger } from "winston";
|
|
1
2
|
import { RpcTransport } from "@solana/kit";
|
|
2
3
|
import { SolanaClusterRpcFactory } from "./baseRpcFactories";
|
|
3
4
|
import { RateLimitedSolanaRpcFactory } from "./rateLimitedRpcFactory";
|
|
4
|
-
import { Logger } from "winston";
|
|
5
5
|
export declare class RetrySolanaRpcFactory extends SolanaClusterRpcFactory {
|
|
6
6
|
readonly retries: number;
|
|
7
7
|
readonly retryDelaySeconds: number;
|
|
@@ -16,13 +16,6 @@ export declare class RetrySolanaRpcFactory extends SolanaClusterRpcFactory {
|
|
|
16
16
|
* @returns Promise that resolves to the transport response
|
|
17
17
|
*/
|
|
18
18
|
private _tryCall;
|
|
19
|
-
/**
|
|
20
|
-
* Determine whether a Solana RPC error indicates an unrecoverable error that should not be retried.
|
|
21
|
-
* @param method RPC method name
|
|
22
|
-
* @param error Error object from the RPC call
|
|
23
|
-
* @returns True if the request should be aborted immediately, otherwise false
|
|
24
|
-
*/
|
|
25
|
-
private shouldFailImmediate;
|
|
26
19
|
/**
|
|
27
20
|
* Identify whether an error thrown was the result of an RPC provider 429 response.
|
|
28
21
|
* @param error Error object from the RPC query.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryRpcFactory.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"retryRpcFactory.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,YAAY,EAA2C,MAAM,aAAa,CAAC;AAIpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAKtE,qBAAa,qBAAsB,SAAQ,uBAAuB;IAO9D,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IANpC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGd,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EAClC,GAAG,4BAA4B,EAAE,qBAAqB,CAAC,OAAO,2BAA2B,CAAC;IAuBrF,eAAe,IAAI,YAAY;IAMtC;;;;;OAKG;YACW,QAAQ;IA8BtB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}
|
|
@@ -7,4 +7,11 @@ export interface SolanaRateLimitTask {
|
|
|
7
7
|
resolve: (result: unknown) => void;
|
|
8
8
|
reject: (err: unknown) => void;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Determine whether a Solana RPC error indicates an unrecoverable error that should not be retried.
|
|
12
|
+
* @param method RPC method name.
|
|
13
|
+
* @param error Error object from the RPC call.
|
|
14
|
+
* @returns True if the request should be aborted immediately, otherwise false.
|
|
15
|
+
*/
|
|
16
|
+
export declare function shouldFailImmediate(method: string, error: unknown): boolean;
|
|
10
17
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -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;AAGhD;;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;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAe3E"}
|
package/package.json
CHANGED
|
@@ -86,7 +86,7 @@ import {
|
|
|
86
86
|
} from "./";
|
|
87
87
|
import { SvmCpiEventsClient } from "./eventsClient";
|
|
88
88
|
import { SVM_LONG_TERM_STORAGE_SLOT_SKIPPED, SVM_SLOT_SKIPPED, isSolanaError } from "./provider";
|
|
89
|
-
import { AttestedCCTPMessage, SVMEventNames, SVMProvider } from "./types";
|
|
89
|
+
import { AttestedCCTPMessage, SVMEventNames, SVMProvider, LatestBlockhash } from "./types";
|
|
90
90
|
import {
|
|
91
91
|
getEmergencyDeleteRootBundleRootBundleId,
|
|
92
92
|
getNearestSlotTime,
|
|
@@ -176,7 +176,7 @@ async function _callGetTimestampForSlotWithRetry(
|
|
|
176
176
|
const at = "getTimestampForSlot";
|
|
177
177
|
const { __code: code } = err.context;
|
|
178
178
|
|
|
179
|
-
switch (
|
|
179
|
+
switch (code) {
|
|
180
180
|
case SVM_SLOT_SKIPPED:
|
|
181
181
|
case SVM_LONG_TERM_STORAGE_SLOT_SKIPPED:
|
|
182
182
|
// No block available for this slot; caller must decide on how to handle this.
|
|
@@ -1268,7 +1268,8 @@ export const hasCCTPV1MessageBeenProcessed = async (
|
|
|
1268
1268
|
solanaClient: SVMProvider,
|
|
1269
1269
|
signer: KeyPairSigner,
|
|
1270
1270
|
nonce: number,
|
|
1271
|
-
sourceDomain: number
|
|
1271
|
+
sourceDomain: number,
|
|
1272
|
+
latestBlockhash?: LatestBlockhash
|
|
1272
1273
|
): Promise<boolean> => {
|
|
1273
1274
|
const noncePda = await getCCTPNoncePda(solanaClient, signer, nonce, sourceDomain);
|
|
1274
1275
|
const isNonceUsedIx = MessageTransmitterClient.getIsNonceUsedInstruction({
|
|
@@ -1281,7 +1282,7 @@ export const hasCCTPV1MessageBeenProcessed = async (
|
|
|
1281
1282
|
}
|
|
1282
1283
|
return Boolean(buf[0]);
|
|
1283
1284
|
};
|
|
1284
|
-
return await simulateAndDecode(solanaClient, isNonceUsedIx, signer, parserFunction);
|
|
1285
|
+
return await simulateAndDecode(solanaClient, isNonceUsedIx, signer, parserFunction, latestBlockhash);
|
|
1285
1286
|
};
|
|
1286
1287
|
|
|
1287
1288
|
/**
|
package/src/arch/svm/provider.ts
CHANGED
|
@@ -1,11 +1,56 @@
|
|
|
1
|
+
import { isSolanaError as _isSolanaError } from "@solana/kit";
|
|
2
|
+
import { is, type, number, string } from "superstruct";
|
|
3
|
+
|
|
1
4
|
/**
|
|
2
5
|
* SVM RPC provider error codes
|
|
3
6
|
* See https://www.quicknode.com/docs/solana/error-references
|
|
4
7
|
*/
|
|
5
8
|
export {
|
|
6
|
-
isSolanaError,
|
|
7
9
|
SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE as SVM_BLOCK_NOT_AVAILABLE,
|
|
8
10
|
SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED as SVM_SLOT_SKIPPED,
|
|
9
11
|
SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED as SVM_LONG_TERM_STORAGE_SLOT_SKIPPED,
|
|
10
12
|
SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE as SVM_TRANSACTION_PREFLIGHT_FAILURE,
|
|
11
13
|
} from "@solana/kit";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Superstruct schema for validating SolanaError structure.
|
|
17
|
+
* Handles serialized errors that have lost their prototype chain.
|
|
18
|
+
* Uses partial validation to allow additional properties in the context object.
|
|
19
|
+
*/
|
|
20
|
+
const SolanaErrorStruct = type({
|
|
21
|
+
name: string(),
|
|
22
|
+
context: type({
|
|
23
|
+
__code: number(),
|
|
24
|
+
}),
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Type definition for SolanaError structure.
|
|
29
|
+
* Includes common context properties for better type inference.
|
|
30
|
+
*/
|
|
31
|
+
export interface SolanaErrorLike {
|
|
32
|
+
name: string;
|
|
33
|
+
context: {
|
|
34
|
+
__code: number;
|
|
35
|
+
__serverMessage?: string;
|
|
36
|
+
statusCode?: number;
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
};
|
|
39
|
+
cause?: unknown;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Enhanced type guard to check if an error is a SolanaError.
|
|
44
|
+
*
|
|
45
|
+
* This function uses a two-tier approach:
|
|
46
|
+
* 1. First attempts the official instanceof-based check from @solana/kit
|
|
47
|
+
* 2. Falls back to structural validation using superstruct for errors that have been
|
|
48
|
+
* serialized/deserialized (e.g., when crossing async boundaries or through JSON parsing)
|
|
49
|
+
*
|
|
50
|
+
* @param error The error to check
|
|
51
|
+
* @param code Optional error code to match against context.__code
|
|
52
|
+
* @returns True if the error is a SolanaError (or has valid SolanaError structure)
|
|
53
|
+
*/
|
|
54
|
+
export function isSolanaError(error: unknown): error is SolanaErrorLike {
|
|
55
|
+
return _isSolanaError(error) || is(error, SolanaErrorStruct);
|
|
56
|
+
}
|
package/src/arch/svm/types.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
SlotNotificationsApi,
|
|
10
10
|
SolanaRpcApiFromTransport,
|
|
11
11
|
UnixTimestamp,
|
|
12
|
+
type Blockhash,
|
|
12
13
|
} from "@solana/kit";
|
|
13
14
|
|
|
14
15
|
export type EventData =
|
|
@@ -69,3 +70,8 @@ export type AttestedCCTPMessage = {
|
|
|
69
70
|
attestation: string;
|
|
70
71
|
type: "transfer" | "message";
|
|
71
72
|
};
|
|
73
|
+
|
|
74
|
+
export type LatestBlockhash = {
|
|
75
|
+
blockhash: Blockhash;
|
|
76
|
+
lastValidBlockHeight: bigint;
|
|
77
|
+
};
|