@hyperlane-xyz/sdk 19.2.0 → 19.4.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/app/MultiProtocolApp.d.ts +2 -0
- package/dist/app/MultiProtocolApp.d.ts.map +1 -1
- package/dist/app/MultiProtocolApp.js +9 -3
- package/dist/app/MultiProtocolApp.js.map +1 -1
- package/dist/gas/adapters/SealevelIgpAdapter.d.ts +29 -2
- package/dist/gas/adapters/SealevelIgpAdapter.d.ts.map +1 -1
- package/dist/gas/adapters/SealevelIgpAdapter.js +109 -5
- package/dist/gas/adapters/SealevelIgpAdapter.js.map +1 -1
- package/dist/gas/adapters/SealevelIgpAdapter.test.d.ts +2 -0
- package/dist/gas/adapters/SealevelIgpAdapter.test.d.ts.map +1 -0
- package/dist/gas/adapters/SealevelIgpAdapter.test.js +189 -0
- package/dist/gas/adapters/SealevelIgpAdapter.test.js.map +1 -0
- package/dist/gas/adapters/serialization.d.ts +69 -2
- package/dist/gas/adapters/serialization.d.ts.map +1 -1
- package/dist/gas/adapters/serialization.js +150 -15
- package/dist/gas/adapters/serialization.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/ism/EvmIsmModule.d.ts +13 -1
- package/dist/ism/EvmIsmModule.d.ts.map +1 -1
- package/dist/ism/EvmIsmModule.js +92 -38
- package/dist/ism/EvmIsmModule.js.map +1 -1
- package/dist/ism/types.js +1 -1
- package/dist/ism/types.js.map +1 -1
- package/dist/signers/signers.d.ts.map +1 -1
- package/dist/signers/signers.js +2 -2
- package/dist/signers/signers.js.map +1 -1
- package/dist/signers/svm/solana-web3js.d.ts +74 -6
- package/dist/signers/svm/solana-web3js.d.ts.map +1 -1
- package/dist/signers/svm/solana-web3js.js +178 -30
- package/dist/signers/svm/solana-web3js.js.map +1 -1
- package/dist/token/EvmERC20WarpModule.d.ts.map +1 -1
- package/dist/token/EvmERC20WarpModule.hardhat-test.js +19 -17
- package/dist/token/EvmERC20WarpModule.hardhat-test.js.map +1 -1
- package/dist/token/EvmERC20WarpModule.js +12 -7
- package/dist/token/EvmERC20WarpModule.js.map +1 -1
- package/dist/token/config.d.ts +1 -1
- package/dist/token/config.js +1 -1
- package/dist/token/types.d.ts +1 -1
- package/dist/warp/WarpCore.js +1 -1
- package/package.json +7 -7
|
@@ -41,7 +41,9 @@ export declare class BaseSealevelAdapter extends BaseAppAdapter {
|
|
|
41
41
|
readonly protocol: ProtocolType;
|
|
42
42
|
getProvider(): SolanaWeb3Provider['provider'];
|
|
43
43
|
static derivePda(seeds: Array<string | Buffer>, programId: string | PublicKey): PublicKey;
|
|
44
|
+
static derivePdaWithBump(seeds: Array<string | Buffer>, programId: string | PublicKey): [PublicKey, number];
|
|
44
45
|
derivePda(seeds: Array<string | Buffer>, programId: string | PublicKey): PublicKey;
|
|
46
|
+
derivePdaWithBump(seeds: Array<string | Buffer>, programId: string | PublicKey): [PublicKey, number];
|
|
45
47
|
}
|
|
46
48
|
export declare class BaseStarknetAdapter extends BaseAppAdapter {
|
|
47
49
|
readonly protocol: ProtocolType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiProtocolApp.d.ts","sourceRoot":"","sources":["../../src/app/MultiProtocolApp.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EACL,OAAO,EACP,YAAY,EAKb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD;;;;;GAKG;AACH,8BAAsB,cAAc;aAGhB,SAAS,EAAE,SAAS;aACpB,aAAa,EAAE,qBAAqB,CAAC,GAAG,CAAC;aACzC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;aAClC,MAAM;IALxB,kBAAyB,QAAQ,EAAE,YAAY,CAAC;gBAE9B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,qBAAqB,CAAC,GAAG,CAAC,EACzC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,MAAM,uCAA6C;CAEtE;AAED,MAAM,MAAM,gBAAgB,CAAC,GAAG,IAAI,KAClC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,qBAAqB,CAAC,GAAG,CAAC,EACzC,SAAS,EAAE,GAAG,EACd,GAAG,IAAI,EAAE,GAAG,KACT,GAAG,CAAC;AAET,qBAAa,cAAe,SAAQ,cAAc;IAChD,SAAgB,QAAQ,EAAE,YAAY,CAAyB;IAExD,WAAW,IAAI,gBAAgB,CAAC,UAAU,CAAC;CAGnD;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,SAAgB,QAAQ,EAAE,YAAY,CAAuB;IAEtD,WAAW,IAAI,kBAAkB,CAAC,UAAU,CAAC;CAGrD;AAED,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,SAAgB,QAAQ,EAAE,YAAY,CAAuB;IAEtD,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC;CAGjD;AAED,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,SAAgB,QAAQ,EAAE,YAAY,CAA6B;IAE5D,WAAW,IAAI,oBAAoB,CAAC,UAAU,CAAC;CAGvD;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,SAAgB,QAAQ,EAAE,YAAY,CAAyB;IAExD,WAAW,IAAI,kBAAkB,CAAC,UAAU,CAAC;IAIpD,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,SAAS;
|
|
1
|
+
{"version":3,"file":"MultiProtocolApp.d.ts","sourceRoot":"","sources":["../../src/app/MultiProtocolApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,13 +49,19 @@ export class BaseSealevelAdapter extends BaseAppAdapter {
|
|
|
49
49
|
return this.multiProvider.getSolanaWeb3Provider(this.chainName);
|
|
50
50
|
}
|
|
51
51
|
static derivePda(seeds, programId) {
|
|
52
|
-
|
|
53
|
-
return pda;
|
|
52
|
+
return this.derivePdaWithBump(seeds, programId)[0];
|
|
54
53
|
}
|
|
55
|
-
|
|
54
|
+
static derivePdaWithBump(seeds, programId) {
|
|
55
|
+
const [pda, bump] = PublicKey.findProgramAddressSync(seeds.map((s) => Buffer.from(s)), new PublicKey(programId));
|
|
56
|
+
return [pda, bump];
|
|
57
|
+
}
|
|
58
|
+
// Dynamic aliases for static methods above for convenience
|
|
56
59
|
derivePda(seeds, programId) {
|
|
57
60
|
return BaseSealevelAdapter.derivePda(seeds, programId);
|
|
58
61
|
}
|
|
62
|
+
derivePdaWithBump(seeds, programId) {
|
|
63
|
+
return BaseSealevelAdapter.derivePdaWithBump(seeds, programId);
|
|
64
|
+
}
|
|
59
65
|
}
|
|
60
66
|
export class BaseStarknetAdapter extends BaseAppAdapter {
|
|
61
67
|
protocol = ProtocolType.Starknet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiProtocolApp.js","sourceRoot":"","sources":["../../src/app/MultiProtocolApp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAEL,YAAY,EACZ,MAAM,EACN,aAAa,EACb,UAAU,EACV,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAe9B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD;;;;;GAKG;AACH,MAAM,OAAgB,cAAc;IAGhB;IACA;IACA;IACA;IAJlB,YACkB,SAAoB,EACpB,aAAyC,EACzC,SAAkC,EAClC,SAAS,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAHnD,cAAS,GAAT,SAAS,CAAW;QACpB,kBAAa,GAAb,aAAa,CAA4B;QACzC,cAAS,GAAT,SAAS,CAAyB;QAClC,WAAM,GAAN,MAAM,CAA6C;IAClE,CAAC;CACL;AASD,MAAM,OAAO,cAAe,SAAQ,cAAc;IAChC,QAAQ,GAAiB,YAAY,CAAC,QAAQ,CAAC;IAExD,WAAW;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACrC,QAAQ,GAAiB,YAAY,CAAC,MAAM,CAAC;IAEtD,WAAW;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IACnC,QAAQ,GAAiB,YAAY,CAAC,MAAM,CAAC;IAEtD,WAAW;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IACvC,QAAQ,GAAiB,YAAY,CAAC,YAAY,CAAC;IAE5D,WAAW;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACrC,QAAQ,GAAiB,YAAY,CAAC,QAAQ,CAAC;IAExD,WAAW;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,SAAS,CACd,KAA6B,EAC7B,SAA6B;QAE7B,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"MultiProtocolApp.js","sourceRoot":"","sources":["../../src/app/MultiProtocolApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AccountMeta, PublicKey, Transaction } from '@solana/web3.js';
|
|
1
|
+
import { AccountMeta, PublicKey, Transaction, TransactionInstruction } from '@solana/web3.js';
|
|
2
2
|
import { Address, Domain } from '@hyperlane-xyz/utils';
|
|
3
3
|
import { BaseSealevelAdapter } from '../../app/MultiProtocolApp.js';
|
|
4
4
|
import { MultiProtocolProvider } from '../../providers/MultiProtocolProvider.js';
|
|
5
5
|
import { ChainName } from '../../types.js';
|
|
6
|
-
import { SealevelIgpData, SealevelOverheadIgpData } from './serialization.js';
|
|
6
|
+
import { SealevelGasOracle, SealevelGasOracleConfig, SealevelGasOverheadConfig, SealevelIgpData, SealevelOverheadIgpData, SealevelRemoteGasData } from './serialization.js';
|
|
7
7
|
export interface IgpPaymentKeys {
|
|
8
8
|
programId: PublicKey;
|
|
9
9
|
igpAccount: PublicKey;
|
|
@@ -23,6 +23,10 @@ export declare abstract class SealevelIgpProgramAdapter extends BaseSealevelAdap
|
|
|
23
23
|
quoteGasPayment(destination: Domain, gasAmount: bigint, payerKey: PublicKey): Promise<bigint>;
|
|
24
24
|
static deriveIgpProgramPda(igpProgramId: string | PublicKey): PublicKey;
|
|
25
25
|
static deriveGasPaymentPda(igpProgramId: string | PublicKey, randomWalletPubKey: PublicKey): PublicKey;
|
|
26
|
+
static deriveIgpAccountPda(programId: string | PublicKey, salt: Uint8Array): PublicKey;
|
|
27
|
+
static deriveIgpAccountPdaWithBump(programId: string | PublicKey, salt: Uint8Array): [PublicKey, number];
|
|
28
|
+
static deriveOverheadIgpAccountPda(programId: string | PublicKey, salt: Uint8Array): PublicKey;
|
|
29
|
+
static deriveOverheadIgpAccountPdaWithBump(programId: string | PublicKey, salt: Uint8Array): [PublicKey, number];
|
|
26
30
|
}
|
|
27
31
|
export declare class SealevelIgpAdapter extends SealevelIgpProgramAdapter {
|
|
28
32
|
readonly chainName: ChainName;
|
|
@@ -45,6 +49,21 @@ export declare class SealevelIgpAdapter extends SealevelIgpProgramAdapter {
|
|
|
45
49
|
* @returns {Promise<TransactionInstruction>} The claim instruction.
|
|
46
50
|
*/
|
|
47
51
|
populateClaimTx(beneficiary: PublicKey): Promise<Transaction>;
|
|
52
|
+
/**
|
|
53
|
+
* Create a SetGasOracleConfigs instruction
|
|
54
|
+
*/
|
|
55
|
+
createSetGasOracleConfigsInstruction(igpAccount: PublicKey, owner: PublicKey, configs: SealevelGasOracleConfig[]): TransactionInstruction;
|
|
56
|
+
/**
|
|
57
|
+
* Create a gas oracle config from remote gas data
|
|
58
|
+
*/
|
|
59
|
+
createGasOracleConfig(domain: number, remoteGasData: SealevelRemoteGasData | null): SealevelGasOracleConfig;
|
|
60
|
+
/**
|
|
61
|
+
* Check if gas oracle matches expected config
|
|
62
|
+
*/
|
|
63
|
+
gasOracleMatches(currentOracle: SealevelGasOracle | undefined, expected: SealevelRemoteGasData): {
|
|
64
|
+
matches: boolean;
|
|
65
|
+
actual: SealevelRemoteGasData | null;
|
|
66
|
+
};
|
|
48
67
|
}
|
|
49
68
|
export declare class SealevelOverheadIgpAdapter extends SealevelIgpProgramAdapter {
|
|
50
69
|
readonly chainName: ChainName;
|
|
@@ -60,5 +79,13 @@ export declare class SealevelOverheadIgpAdapter extends SealevelIgpProgramAdapte
|
|
|
60
79
|
});
|
|
61
80
|
getAccountInfo(): Promise<SealevelOverheadIgpData>;
|
|
62
81
|
getPaymentKeys(): Promise<IgpPaymentKeys>;
|
|
82
|
+
/**
|
|
83
|
+
* Create a SetDestinationGasOverheads instruction
|
|
84
|
+
*/
|
|
85
|
+
createSetDestinationGasOverheadsInstruction(overheadIgpAccount: PublicKey, owner: PublicKey, configs: SealevelGasOverheadConfig[]): TransactionInstruction;
|
|
86
|
+
/**
|
|
87
|
+
* Create a gas overhead config
|
|
88
|
+
*/
|
|
89
|
+
createGasOverheadConfig(destination_domain: number, gas_overhead: bigint | null): SealevelGasOverheadConfig;
|
|
63
90
|
}
|
|
64
91
|
//# sourceMappingURL=SealevelIgpAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SealevelIgpAdapter.d.ts","sourceRoot":"","sources":["../../../src/gas/adapters/SealevelIgpAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAGX,SAAS,EAET,WAAW,
|
|
1
|
+
{"version":3,"file":"SealevelIgpAdapter.d.ts","sourceRoot":"","sources":["../../../src/gas/adapters/SealevelIgpAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { assert } from '@hyperlane-xyz/utils';
|
|
|
4
4
|
import { BaseSealevelAdapter } from '../../app/MultiProtocolApp.js';
|
|
5
5
|
import { SEALEVEL_PRIORITY_FEES } from '../../consts/sealevel.js';
|
|
6
6
|
import { SealevelAccountDataWrapper, SealevelInstructionWrapper, } from '../../utils/sealevelSerialization.js';
|
|
7
|
-
import {
|
|
7
|
+
import { SealevelGasOracle, SealevelGasOracleConfig, SealevelGasOracleType, SealevelGasOverheadConfig, SealevelIgpDataSchema, SealevelIgpInstruction, SealevelIgpQuoteGasPaymentInstruction, SealevelIgpQuoteGasPaymentResponse, SealevelIgpQuoteGasPaymentResponseSchema, SealevelIgpQuoteGasPaymentSchema, SealevelOverheadIgpDataSchema, SealevelSetDestinationGasOverheadsInstruction, SealevelSetDestinationGasOverheadsInstructionSchema, SealevelSetGasOracleConfigsInstruction, SealevelSetGasOracleConfigsInstructionSchema, } from './serialization.js';
|
|
8
8
|
export class SealevelIgpProgramAdapter extends BaseSealevelAdapter {
|
|
9
9
|
chainName;
|
|
10
10
|
multiProvider;
|
|
@@ -39,7 +39,7 @@ export class SealevelIgpProgramAdapter extends BaseSealevelAdapter {
|
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
41
|
const value = new SealevelInstructionWrapper({
|
|
42
|
-
instruction:
|
|
42
|
+
instruction: SealevelIgpInstruction.QuoteGasPayment,
|
|
43
43
|
data: new SealevelIgpQuoteGasPaymentInstruction({
|
|
44
44
|
destination_domain: destination,
|
|
45
45
|
gas_amount: BigInt(gasAmount),
|
|
@@ -78,6 +78,22 @@ export class SealevelIgpProgramAdapter extends BaseSealevelAdapter {
|
|
|
78
78
|
static deriveGasPaymentPda(igpProgramId, randomWalletPubKey) {
|
|
79
79
|
return super.derivePda(['hyperlane_igp', '-', 'gas_payment', '-', randomWalletPubKey.toBuffer()], igpProgramId);
|
|
80
80
|
}
|
|
81
|
+
// https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/programs/hyperlane-sealevel-igp/src/pda_seeds.rs
|
|
82
|
+
static deriveIgpAccountPda(programId, salt) {
|
|
83
|
+
return this.deriveIgpAccountPdaWithBump(programId, salt)[0];
|
|
84
|
+
}
|
|
85
|
+
static deriveIgpAccountPdaWithBump(programId, salt) {
|
|
86
|
+
const programIdKey = typeof programId === 'string' ? new PublicKey(programId) : programId;
|
|
87
|
+
return super.derivePdaWithBump(['hyperlane_igp', '-', 'igp', '-', Buffer.from(salt)], programIdKey);
|
|
88
|
+
}
|
|
89
|
+
// https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/programs/hyperlane-sealevel-igp/src/pda_seeds.rs
|
|
90
|
+
static deriveOverheadIgpAccountPda(programId, salt) {
|
|
91
|
+
return this.deriveOverheadIgpAccountPdaWithBump(programId, salt)[0];
|
|
92
|
+
}
|
|
93
|
+
static deriveOverheadIgpAccountPdaWithBump(programId, salt) {
|
|
94
|
+
const programIdKey = typeof programId === 'string' ? new PublicKey(programId) : programId;
|
|
95
|
+
return super.derivePdaWithBump(['hyperlane_igp', '-', 'overhead_igp', '-', Buffer.from(salt)], programIdKey);
|
|
96
|
+
}
|
|
81
97
|
}
|
|
82
98
|
export class SealevelIgpAdapter extends SealevelIgpProgramAdapter {
|
|
83
99
|
chainName;
|
|
@@ -101,7 +117,7 @@ export class SealevelIgpAdapter extends SealevelIgpProgramAdapter {
|
|
|
101
117
|
const address = this.addresses.igp;
|
|
102
118
|
const connection = this.getProvider();
|
|
103
119
|
const accountInfo = await connection.getAccountInfo(new PublicKey(address));
|
|
104
|
-
assert(accountInfo, `No account info found for ${address}
|
|
120
|
+
assert(accountInfo, `No account info found for ${address}`);
|
|
105
121
|
const accountData = deserializeUnchecked(SealevelIgpDataSchema, SealevelAccountDataWrapper, accountInfo.data);
|
|
106
122
|
return accountData.data;
|
|
107
123
|
}
|
|
@@ -128,7 +144,7 @@ export class SealevelIgpAdapter extends SealevelIgpProgramAdapter {
|
|
|
128
144
|
throw new Error('Beneficiary account mismatch');
|
|
129
145
|
}
|
|
130
146
|
const keys = this.getClaimInstructionKeyList(beneficiary);
|
|
131
|
-
const data = Buffer.from([
|
|
147
|
+
const data = Buffer.from([SealevelIgpInstruction.Claim]);
|
|
132
148
|
const claimIgpInstruction = new TransactionInstruction({
|
|
133
149
|
keys,
|
|
134
150
|
programId: this.programId,
|
|
@@ -148,6 +164,68 @@ export class SealevelIgpAdapter extends SealevelIgpProgramAdapter {
|
|
|
148
164
|
transaction.add(claimIgpInstruction);
|
|
149
165
|
return transaction;
|
|
150
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Create a SetGasOracleConfigs instruction
|
|
169
|
+
*/
|
|
170
|
+
createSetGasOracleConfigsInstruction(igpAccount, owner, configs) {
|
|
171
|
+
const keys = [
|
|
172
|
+
{ pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
|
|
173
|
+
{ pubkey: igpAccount, isSigner: false, isWritable: true },
|
|
174
|
+
{ pubkey: owner, isSigner: true, isWritable: true },
|
|
175
|
+
];
|
|
176
|
+
const value = new SealevelInstructionWrapper({
|
|
177
|
+
instruction: SealevelIgpInstruction.SetGasOracleConfigs,
|
|
178
|
+
data: new SealevelSetGasOracleConfigsInstruction(configs),
|
|
179
|
+
});
|
|
180
|
+
const data = Buffer.from(serialize(SealevelSetGasOracleConfigsInstructionSchema, value));
|
|
181
|
+
return new TransactionInstruction({
|
|
182
|
+
keys,
|
|
183
|
+
programId: this.programId,
|
|
184
|
+
data,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Create a gas oracle config from remote gas data
|
|
189
|
+
*/
|
|
190
|
+
createGasOracleConfig(domain, remoteGasData) {
|
|
191
|
+
const gasOracle = remoteGasData
|
|
192
|
+
? new SealevelGasOracle({
|
|
193
|
+
type: SealevelGasOracleType.RemoteGasData,
|
|
194
|
+
data: remoteGasData,
|
|
195
|
+
})
|
|
196
|
+
: null;
|
|
197
|
+
return new SealevelGasOracleConfig(domain, gasOracle);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Check if gas oracle matches expected config
|
|
201
|
+
*/
|
|
202
|
+
gasOracleMatches(currentOracle, expected) {
|
|
203
|
+
if (!currentOracle) {
|
|
204
|
+
return { matches: false, actual: null };
|
|
205
|
+
}
|
|
206
|
+
// Guard: only proceed if currentOracle is the remote-gas variant (type 0)
|
|
207
|
+
if (currentOracle.type !== SealevelGasOracleType.RemoteGasData) {
|
|
208
|
+
return { matches: false, actual: null };
|
|
209
|
+
}
|
|
210
|
+
const actual = currentOracle.data;
|
|
211
|
+
// Ensure BigInt comparison works correctly (Borsh might deserialize as different types)
|
|
212
|
+
const actualExchangeRate = typeof actual.token_exchange_rate === 'bigint'
|
|
213
|
+
? actual.token_exchange_rate
|
|
214
|
+
: BigInt(actual.token_exchange_rate);
|
|
215
|
+
const actualGasPrice = typeof actual.gas_price === 'bigint'
|
|
216
|
+
? actual.gas_price
|
|
217
|
+
: BigInt(actual.gas_price);
|
|
218
|
+
const expectedExchangeRate = typeof expected.token_exchange_rate === 'bigint'
|
|
219
|
+
? expected.token_exchange_rate
|
|
220
|
+
: BigInt(expected.token_exchange_rate);
|
|
221
|
+
const expectedGasPrice = typeof expected.gas_price === 'bigint'
|
|
222
|
+
? expected.gas_price
|
|
223
|
+
: BigInt(expected.gas_price);
|
|
224
|
+
const matches = actualExchangeRate === expectedExchangeRate &&
|
|
225
|
+
actualGasPrice === expectedGasPrice &&
|
|
226
|
+
actual.token_decimals === expected.token_decimals;
|
|
227
|
+
return { matches, actual };
|
|
228
|
+
}
|
|
151
229
|
}
|
|
152
230
|
export class SealevelOverheadIgpAdapter extends SealevelIgpProgramAdapter {
|
|
153
231
|
chainName;
|
|
@@ -165,7 +243,7 @@ export class SealevelOverheadIgpAdapter extends SealevelIgpProgramAdapter {
|
|
|
165
243
|
const address = this.addresses.overheadIgp;
|
|
166
244
|
const connection = this.getProvider();
|
|
167
245
|
const accountInfo = await connection.getAccountInfo(new PublicKey(address));
|
|
168
|
-
assert(accountInfo, `No account info found for ${address}
|
|
246
|
+
assert(accountInfo, `No account info found for ${address}`);
|
|
169
247
|
const accountData = deserializeUnchecked(SealevelOverheadIgpDataSchema, SealevelAccountDataWrapper, accountInfo.data);
|
|
170
248
|
return accountData.data;
|
|
171
249
|
}
|
|
@@ -177,5 +255,31 @@ export class SealevelOverheadIgpAdapter extends SealevelIgpProgramAdapter {
|
|
|
177
255
|
overheadIgpAccount: this.overheadIgp,
|
|
178
256
|
};
|
|
179
257
|
}
|
|
258
|
+
/**
|
|
259
|
+
* Create a SetDestinationGasOverheads instruction
|
|
260
|
+
*/
|
|
261
|
+
createSetDestinationGasOverheadsInstruction(overheadIgpAccount, owner, configs) {
|
|
262
|
+
const keys = [
|
|
263
|
+
{ pubkey: SystemProgram.programId, isSigner: false, isWritable: false },
|
|
264
|
+
{ pubkey: overheadIgpAccount, isSigner: false, isWritable: true },
|
|
265
|
+
{ pubkey: owner, isSigner: true, isWritable: true },
|
|
266
|
+
];
|
|
267
|
+
const value = new SealevelInstructionWrapper({
|
|
268
|
+
instruction: SealevelIgpInstruction.SetDestinationGasOverheads,
|
|
269
|
+
data: new SealevelSetDestinationGasOverheadsInstruction(configs),
|
|
270
|
+
});
|
|
271
|
+
const data = Buffer.from(serialize(SealevelSetDestinationGasOverheadsInstructionSchema, value));
|
|
272
|
+
return new TransactionInstruction({
|
|
273
|
+
keys,
|
|
274
|
+
programId: this.programId,
|
|
275
|
+
data,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Create a gas overhead config
|
|
280
|
+
*/
|
|
281
|
+
createGasOverheadConfig(destination_domain, gas_overhead) {
|
|
282
|
+
return new SealevelGasOverheadConfig(destination_domain, gas_overhead);
|
|
283
|
+
}
|
|
180
284
|
}
|
|
181
285
|
//# sourceMappingURL=SealevelIgpAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SealevelIgpAdapter.js","sourceRoot":"","sources":["../../../src/gas/adapters/SealevelIgpAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EACpB,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,EAAmB,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,qBAAqB,
|
|
1
|
+
{"version":3,"file":"SealevelIgpAdapter.js","sourceRoot":"","sources":["../../../src/gas/adapters/SealevelIgpAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SealevelIgpAdapter.test.d.ts","sourceRoot":"","sources":["../../../src/gas/adapters/SealevelIgpAdapter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { TestChainName, testChainMetadata } from '../../consts/testChains.js';
|
|
3
|
+
import { MultiProtocolProvider } from '../../providers/MultiProtocolProvider.js';
|
|
4
|
+
import { SealevelIgpAdapter } from './SealevelIgpAdapter.js';
|
|
5
|
+
import { SealevelGasOracle, SealevelGasOracleType, SealevelRemoteGasData, } from './serialization.js';
|
|
6
|
+
describe('SealevelIgpAdapter', () => {
|
|
7
|
+
let adapter;
|
|
8
|
+
let multiProvider;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
multiProvider = new MultiProtocolProvider(testChainMetadata);
|
|
11
|
+
adapter = new SealevelIgpAdapter(TestChainName.test1, multiProvider, {
|
|
12
|
+
igp: '11111111111111111111111111111111',
|
|
13
|
+
programId: '11111111111111111111111111111111',
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
describe('gasOracleMatches', () => {
|
|
17
|
+
const createMockRemoteGasData = (tokenExchangeRate, gasPrice, tokenDecimals) => {
|
|
18
|
+
return new SealevelRemoteGasData({
|
|
19
|
+
token_exchange_rate: tokenExchangeRate,
|
|
20
|
+
gas_price: gasPrice,
|
|
21
|
+
token_decimals: tokenDecimals,
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
const createMockGasOracle = (remoteGasData) => {
|
|
25
|
+
return new SealevelGasOracle({
|
|
26
|
+
type: SealevelGasOracleType.RemoteGasData,
|
|
27
|
+
data: remoteGasData,
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
describe('when currentOracle is undefined', () => {
|
|
31
|
+
it('should return matches: false and actual: null', () => {
|
|
32
|
+
const expected = createMockRemoteGasData(1000n, 2000n, 18);
|
|
33
|
+
const result = adapter.gasOracleMatches(undefined, expected);
|
|
34
|
+
expect(result.matches).to.be.false;
|
|
35
|
+
expect(result.actual).to.be.null;
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('when currentOracle matches expected exactly', () => {
|
|
39
|
+
it('should return matches: true with correct actual data', () => {
|
|
40
|
+
const expected = createMockRemoteGasData(1000n, 2000n, 18);
|
|
41
|
+
const currentOracle = createMockGasOracle(expected);
|
|
42
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
43
|
+
expect(result.matches).to.be.true;
|
|
44
|
+
expect(result.actual).to.deep.equal(expected);
|
|
45
|
+
});
|
|
46
|
+
it('should work with number types instead of BigInt', () => {
|
|
47
|
+
const expected = createMockRemoteGasData(1000, 2000, 18);
|
|
48
|
+
const currentOracle = createMockGasOracle(expected);
|
|
49
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
50
|
+
expect(result.matches).to.be.true;
|
|
51
|
+
expect(result.actual).to.deep.equal(expected);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('when token_exchange_rate differs', () => {
|
|
55
|
+
it('should return matches: false', () => {
|
|
56
|
+
const expected = createMockRemoteGasData(1000n, 2000n, 18);
|
|
57
|
+
const actual = createMockRemoteGasData(1500n, 2000n, 18);
|
|
58
|
+
const currentOracle = createMockGasOracle(actual);
|
|
59
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
60
|
+
expect(result.matches).to.be.false;
|
|
61
|
+
expect(result.actual).to.deep.equal(actual);
|
|
62
|
+
});
|
|
63
|
+
it('should work with mixed BigInt and number types', () => {
|
|
64
|
+
const expected = createMockRemoteGasData(1000n, 2000n, 18);
|
|
65
|
+
const actual = createMockRemoteGasData(1000, 2000n, 18);
|
|
66
|
+
const currentOracle = createMockGasOracle(actual);
|
|
67
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
68
|
+
expect(result.matches).to.be.true;
|
|
69
|
+
expect(result.actual).to.deep.equal(actual);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('when gas_price differs', () => {
|
|
73
|
+
it('should return matches: false', () => {
|
|
74
|
+
const expected = createMockRemoteGasData(1000n, 2000n, 18);
|
|
75
|
+
const actual = createMockRemoteGasData(1000n, 2500n, 18);
|
|
76
|
+
const currentOracle = createMockGasOracle(actual);
|
|
77
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
78
|
+
expect(result.matches).to.be.false;
|
|
79
|
+
expect(result.actual).to.deep.equal(actual);
|
|
80
|
+
});
|
|
81
|
+
it('should work with mixed BigInt and number types', () => {
|
|
82
|
+
const expected = createMockRemoteGasData(1000n, 2000, 18);
|
|
83
|
+
const actual = createMockRemoteGasData(1000n, 2000n, 18);
|
|
84
|
+
const currentOracle = createMockGasOracle(actual);
|
|
85
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
86
|
+
expect(result.matches).to.be.true;
|
|
87
|
+
expect(result.actual).to.deep.equal(actual);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
describe('when token_decimals differs', () => {
|
|
91
|
+
it('should return matches: false', () => {
|
|
92
|
+
const expected = createMockRemoteGasData(1000n, 2000n, 18);
|
|
93
|
+
const actual = createMockRemoteGasData(1000n, 2000n, 6);
|
|
94
|
+
const currentOracle = createMockGasOracle(actual);
|
|
95
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
96
|
+
expect(result.matches).to.be.false;
|
|
97
|
+
expect(result.actual).to.deep.equal(actual);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe('BigInt type conversion handling', () => {
|
|
101
|
+
it('should handle BigInt to number conversion for token_exchange_rate', () => {
|
|
102
|
+
const expected = createMockRemoteGasData(1000, 2000n, 18);
|
|
103
|
+
const actual = createMockRemoteGasData(1000n, 2000n, 18);
|
|
104
|
+
const currentOracle = createMockGasOracle(actual);
|
|
105
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
106
|
+
expect(result.matches).to.be.true;
|
|
107
|
+
expect(result.actual).to.deep.equal(actual);
|
|
108
|
+
});
|
|
109
|
+
it('should handle BigInt to number conversion for gas_price', () => {
|
|
110
|
+
const expected = createMockRemoteGasData(1000n, 2000, 18);
|
|
111
|
+
const actual = createMockRemoteGasData(1000n, 2000n, 18);
|
|
112
|
+
const currentOracle = createMockGasOracle(actual);
|
|
113
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
114
|
+
expect(result.matches).to.be.true;
|
|
115
|
+
expect(result.actual).to.deep.equal(actual);
|
|
116
|
+
});
|
|
117
|
+
it('should handle number to BigInt conversion for token_exchange_rate', () => {
|
|
118
|
+
const expected = createMockRemoteGasData(1000n, 2000n, 18);
|
|
119
|
+
const actual = createMockRemoteGasData(1000, 2000n, 18);
|
|
120
|
+
const currentOracle = createMockGasOracle(actual);
|
|
121
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
122
|
+
expect(result.matches).to.be.true;
|
|
123
|
+
expect(result.actual).to.deep.equal(actual);
|
|
124
|
+
});
|
|
125
|
+
it('should handle number to BigInt conversion for gas_price', () => {
|
|
126
|
+
const expected = createMockRemoteGasData(1000n, 2000n, 18);
|
|
127
|
+
const actual = createMockRemoteGasData(1000n, 2000, 18);
|
|
128
|
+
const currentOracle = createMockGasOracle(actual);
|
|
129
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
130
|
+
expect(result.matches).to.be.true;
|
|
131
|
+
expect(result.actual).to.deep.equal(actual);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
describe('edge cases', () => {
|
|
135
|
+
it('should handle zero values correctly', () => {
|
|
136
|
+
const expected = createMockRemoteGasData(0n, 0n, 0);
|
|
137
|
+
const actual = createMockRemoteGasData(0n, 0n, 0);
|
|
138
|
+
const currentOracle = createMockGasOracle(actual);
|
|
139
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
140
|
+
expect(result.matches).to.be.true;
|
|
141
|
+
expect(result.actual).to.deep.equal(actual);
|
|
142
|
+
});
|
|
143
|
+
it('should handle very large BigInt values', () => {
|
|
144
|
+
const largeValue = BigInt('999999999999999999999999999999999999');
|
|
145
|
+
const expected = createMockRemoteGasData(largeValue, largeValue, 18);
|
|
146
|
+
const actual = createMockRemoteGasData(largeValue, largeValue, 18);
|
|
147
|
+
const currentOracle = createMockGasOracle(actual);
|
|
148
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
149
|
+
expect(result.matches).to.be.true;
|
|
150
|
+
expect(result.actual).to.deep.equal(actual);
|
|
151
|
+
});
|
|
152
|
+
it('should handle mixed zero and non-zero values', () => {
|
|
153
|
+
const expected = createMockRemoteGasData(0n, 1000n, 18);
|
|
154
|
+
const actual = createMockRemoteGasData(0n, 1000n, 18);
|
|
155
|
+
const currentOracle = createMockGasOracle(actual);
|
|
156
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
157
|
+
expect(result.matches).to.be.true;
|
|
158
|
+
expect(result.actual).to.deep.equal(actual);
|
|
159
|
+
});
|
|
160
|
+
it('should fail when zero values differ from non-zero', () => {
|
|
161
|
+
const expected = createMockRemoteGasData(0n, 1000n, 18);
|
|
162
|
+
const actual = createMockRemoteGasData(1000n, 0n, 18);
|
|
163
|
+
const currentOracle = createMockGasOracle(actual);
|
|
164
|
+
const result = adapter.gasOracleMatches(currentOracle, expected);
|
|
165
|
+
expect(result.matches).to.be.false;
|
|
166
|
+
expect(result.actual).to.deep.equal(actual);
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
describe('comprehensive type mixing scenarios', () => {
|
|
170
|
+
it('should handle all combinations of BigInt and number types', () => {
|
|
171
|
+
const testCases = [
|
|
172
|
+
{ expected: [1000n, 2000n], actual: [1000, 2000] },
|
|
173
|
+
{ expected: [1000, 2000n], actual: [1000n, 2000] },
|
|
174
|
+
{ expected: [1000n, 2000], actual: [1000, 2000n] },
|
|
175
|
+
{ expected: [1000, 2000], actual: [1000n, 2000n] },
|
|
176
|
+
];
|
|
177
|
+
testCases.forEach(({ expected, actual }) => {
|
|
178
|
+
const expectedData = createMockRemoteGasData(expected[0], expected[1], 18);
|
|
179
|
+
const actualData = createMockRemoteGasData(actual[0], actual[1], 18);
|
|
180
|
+
const currentOracle = createMockGasOracle(actualData);
|
|
181
|
+
const result = adapter.gasOracleMatches(currentOracle, expectedData);
|
|
182
|
+
expect(result.matches).to.be.true;
|
|
183
|
+
expect(result.actual).to.deep.equal(actualData);
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
//# sourceMappingURL=SealevelIgpAdapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SealevelIgpAdapter.test.js","sourceRoot":"","sources":["../../../src/gas/adapters/SealevelIgpAdapter.test.ts"],"names":[],"mappings":"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"}
|