@hyperlane-xyz/sealevel-sdk 27.0.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/LICENSE.md +193 -0
- package/dist/accounts/mint.d.ts +43 -0
- package/dist/accounts/mint.d.ts.map +1 -0
- package/dist/accounts/mint.js +159 -0
- package/dist/accounts/mint.js.map +1 -0
- package/dist/accounts/multisig-ism-message-id.d.ts +14 -0
- package/dist/accounts/multisig-ism-message-id.d.ts.map +1 -0
- package/dist/accounts/multisig-ism-message-id.js +32 -0
- package/dist/accounts/multisig-ism-message-id.js.map +1 -0
- package/dist/accounts/test-ism.d.ts +5 -0
- package/dist/accounts/test-ism.d.ts.map +1 -0
- package/dist/accounts/test-ism.js +8 -0
- package/dist/accounts/test-ism.js.map +1 -0
- package/dist/accounts/token.d.ts +60 -0
- package/dist/accounts/token.d.ts.map +1 -0
- package/dist/accounts/token.js +127 -0
- package/dist/accounts/token.js.map +1 -0
- package/dist/clients/protocol.d.ts +21 -0
- package/dist/clients/protocol.d.ts.map +1 -0
- package/dist/clients/protocol.js +51 -0
- package/dist/clients/protocol.js.map +1 -0
- package/dist/clients/provider.d.ts +66 -0
- package/dist/clients/provider.d.ts.map +1 -0
- package/dist/clients/provider.js +237 -0
- package/dist/clients/provider.js.map +1 -0
- package/dist/clients/signer.d.ts +61 -0
- package/dist/clients/signer.d.ts.map +1 -0
- package/dist/clients/signer.js +314 -0
- package/dist/clients/signer.js.map +1 -0
- package/dist/codecs/account-data.d.ts +8 -0
- package/dist/codecs/account-data.d.ts.map +1 -0
- package/dist/codecs/account-data.js +20 -0
- package/dist/codecs/account-data.js.map +1 -0
- package/dist/codecs/binary.d.ts +34 -0
- package/dist/codecs/binary.d.ts.map +1 -0
- package/dist/codecs/binary.js +165 -0
- package/dist/codecs/binary.js.map +1 -0
- package/dist/codecs/shared.d.ts +81 -0
- package/dist/codecs/shared.d.ts.map +1 -0
- package/dist/codecs/shared.js +241 -0
- package/dist/codecs/shared.js.map +1 -0
- package/dist/constants.d.ts +13 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +21 -0
- package/dist/constants.js.map +1 -0
- package/dist/deploy/program-deployer.d.ts +51 -0
- package/dist/deploy/program-deployer.d.ts.map +1 -0
- package/dist/deploy/program-deployer.js +176 -0
- package/dist/deploy/program-deployer.js.map +1 -0
- package/dist/deploy/resolve-program.d.ts +9 -0
- package/dist/deploy/resolve-program.d.ts.map +1 -0
- package/dist/deploy/resolve-program.js +24 -0
- package/dist/deploy/resolve-program.js.map +1 -0
- package/dist/generated/core-addresses.d.ts +14 -0
- package/dist/generated/core-addresses.d.ts.map +1 -0
- package/dist/generated/core-addresses.js +55 -0
- package/dist/generated/core-addresses.js.map +1 -0
- package/dist/hook/hook-artifact-manager.d.ts +17 -0
- package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
- package/dist/hook/hook-artifact-manager.js +58 -0
- package/dist/hook/hook-artifact-manager.js.map +1 -0
- package/dist/hook/hook-query.d.ts +25 -0
- package/dist/hook/hook-query.d.ts.map +1 -0
- package/dist/hook/hook-query.js +46 -0
- package/dist/hook/hook-query.js.map +1 -0
- package/dist/hook/igp-hook.d.ts +28 -0
- package/dist/hook/igp-hook.d.ts.map +1 -0
- package/dist/hook/igp-hook.js +242 -0
- package/dist/hook/igp-hook.js.map +1 -0
- package/dist/hook/merkle-tree-hook.d.ts +23 -0
- package/dist/hook/merkle-tree-hook.d.ts.map +1 -0
- package/dist/hook/merkle-tree-hook.js +46 -0
- package/dist/hook/merkle-tree-hook.js.map +1 -0
- package/dist/hyperlane/program-bytes.d.ts +20 -0
- package/dist/hyperlane/program-bytes.d.ts.map +1 -0
- package/dist/hyperlane/program-bytes.js +80534 -0
- package/dist/hyperlane/program-bytes.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/instructions/igp.d.ts +66 -0
- package/dist/instructions/igp.d.ts.map +1 -0
- package/dist/instructions/igp.js +168 -0
- package/dist/instructions/igp.js.map +1 -0
- package/dist/instructions/interfaces.d.ts +52 -0
- package/dist/instructions/interfaces.d.ts.map +1 -0
- package/dist/instructions/interfaces.js +126 -0
- package/dist/instructions/interfaces.js.map +1 -0
- package/dist/instructions/loader.d.ts +11 -0
- package/dist/instructions/loader.d.ts.map +1 -0
- package/dist/instructions/loader.js +24 -0
- package/dist/instructions/loader.js.map +1 -0
- package/dist/instructions/multisig-ism-message-id.d.ts +32 -0
- package/dist/instructions/multisig-ism-message-id.d.ts.map +1 -0
- package/dist/instructions/multisig-ism-message-id.js +105 -0
- package/dist/instructions/multisig-ism-message-id.js.map +1 -0
- package/dist/instructions/test-ism.d.ts +16 -0
- package/dist/instructions/test-ism.d.ts.map +1 -0
- package/dist/instructions/test-ism.js +47 -0
- package/dist/instructions/test-ism.js.map +1 -0
- package/dist/instructions/token.d.ts +62 -0
- package/dist/instructions/token.d.ts.map +1 -0
- package/dist/instructions/token.js +257 -0
- package/dist/instructions/token.js.map +1 -0
- package/dist/instructions/utils.d.ts +19 -0
- package/dist/instructions/utils.d.ts.map +1 -0
- package/dist/instructions/utils.js +36 -0
- package/dist/instructions/utils.js.map +1 -0
- package/dist/ism/ism-artifact-manager.d.ts +14 -0
- package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
- package/dist/ism/ism-artifact-manager.js +49 -0
- package/dist/ism/ism-artifact-manager.js.map +1 -0
- package/dist/ism/ism-query.d.ts +22 -0
- package/dist/ism/ism-query.d.ts.map +1 -0
- package/dist/ism/ism-query.js +53 -0
- package/dist/ism/ism-query.js.map +1 -0
- package/dist/ism/multisig-ism.d.ts +33 -0
- package/dist/ism/multisig-ism.d.ts.map +1 -0
- package/dist/ism/multisig-ism.js +113 -0
- package/dist/ism/multisig-ism.js.map +1 -0
- package/dist/ism/test-ism.d.ts +20 -0
- package/dist/ism/test-ism.d.ts.map +1 -0
- package/dist/ism/test-ism.js +57 -0
- package/dist/ism/test-ism.js.map +1 -0
- package/dist/pda.d.ts +17 -0
- package/dist/pda.d.ts.map +1 -0
- package/dist/pda.js +118 -0
- package/dist/pda.js.map +1 -0
- package/dist/rpc.d.ts +9 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +21 -0
- package/dist/rpc.js.map +1 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +3 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/setup.d.ts +33 -0
- package/dist/testing/setup.d.ts.map +1 -0
- package/dist/testing/setup.js +120 -0
- package/dist/testing/setup.js.map +1 -0
- package/dist/testing/solana-container.d.ts +32 -0
- package/dist/testing/solana-container.d.ts.map +1 -0
- package/dist/testing/solana-container.js +289 -0
- package/dist/testing/solana-container.js.map +1 -0
- package/dist/tests/collateral-token.e2e-test.d.ts +2 -0
- package/dist/tests/collateral-token.e2e-test.d.ts.map +1 -0
- package/dist/tests/collateral-token.e2e-test.js +112 -0
- package/dist/tests/collateral-token.e2e-test.js.map +1 -0
- package/dist/tests/deploy.e2e-test.d.ts +2 -0
- package/dist/tests/deploy.e2e-test.d.ts.map +1 -0
- package/dist/tests/deploy.e2e-test.js +76 -0
- package/dist/tests/deploy.e2e-test.js.map +1 -0
- package/dist/tests/hook.e2e-test.d.ts +2 -0
- package/dist/tests/hook.e2e-test.d.ts.map +1 -0
- package/dist/tests/hook.e2e-test.js +176 -0
- package/dist/tests/hook.e2e-test.js.map +1 -0
- package/dist/tests/ism.e2e-test.d.ts +2 -0
- package/dist/tests/ism.e2e-test.d.ts.map +1 -0
- package/dist/tests/ism.e2e-test.js +167 -0
- package/dist/tests/ism.e2e-test.js.map +1 -0
- package/dist/tests/native-token.e2e-test.d.ts +2 -0
- package/dist/tests/native-token.e2e-test.d.ts.map +1 -0
- package/dist/tests/native-token.e2e-test.js +93 -0
- package/dist/tests/native-token.e2e-test.js.map +1 -0
- package/dist/tests/provider.e2e-test.d.ts +2 -0
- package/dist/tests/provider.e2e-test.d.ts.map +1 -0
- package/dist/tests/provider.e2e-test.js +87 -0
- package/dist/tests/provider.e2e-test.js.map +1 -0
- package/dist/tests/read-token.e2e-test.d.ts +2 -0
- package/dist/tests/read-token.e2e-test.d.ts.map +1 -0
- package/dist/tests/read-token.e2e-test.js +79 -0
- package/dist/tests/read-token.e2e-test.js.map +1 -0
- package/dist/tests/scale.unit-test.d.ts +2 -0
- package/dist/tests/scale.unit-test.d.ts.map +1 -0
- package/dist/tests/scale.unit-test.js +65 -0
- package/dist/tests/scale.unit-test.js.map +1 -0
- package/dist/tests/synthetic-token.e2e-test.d.ts +2 -0
- package/dist/tests/synthetic-token.e2e-test.d.ts.map +1 -0
- package/dist/tests/synthetic-token.e2e-test.js +115 -0
- package/dist/tests/synthetic-token.e2e-test.js.map +1 -0
- package/dist/tests/warp-token-suite.d.ts +26 -0
- package/dist/tests/warp-token-suite.d.ts.map +1 -0
- package/dist/tests/warp-token-suite.js +208 -0
- package/dist/tests/warp-token-suite.js.map +1 -0
- package/dist/tx.d.ts +23 -0
- package/dist/tx.d.ts.map +1 -0
- package/dist/tx.js +43 -0
- package/dist/tx.js.map +1 -0
- package/dist/types.d.ts +50 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/warp/collateral-token.d.ts +21 -0
- package/dist/warp/collateral-token.d.ts.map +1 -0
- package/dist/warp/collateral-token.js +129 -0
- package/dist/warp/collateral-token.js.map +1 -0
- package/dist/warp/native-token.d.ts +21 -0
- package/dist/warp/native-token.d.ts.map +1 -0
- package/dist/warp/native-token.js +99 -0
- package/dist/warp/native-token.js.map +1 -0
- package/dist/warp/synthetic-token.d.ts +21 -0
- package/dist/warp/synthetic-token.d.ts.map +1 -0
- package/dist/warp/synthetic-token.js +180 -0
- package/dist/warp/synthetic-token.js.map +1 -0
- package/dist/warp/types.d.ts +16 -0
- package/dist/warp/types.d.ts.map +1 -0
- package/dist/warp/types.js +2 -0
- package/dist/warp/types.js.map +1 -0
- package/dist/warp/warp-artifact-manager.d.ts +14 -0
- package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
- package/dist/warp/warp-artifact-manager.js +52 -0
- package/dist/warp/warp-artifact-manager.js.map +1 -0
- package/dist/warp/warp-query.d.ts +30 -0
- package/dist/warp/warp-query.d.ts.map +1 -0
- package/dist/warp/warp-query.js +66 -0
- package/dist/warp/warp-query.js.map +1 -0
- package/dist/warp/warp-tx.d.ts +64 -0
- package/dist/warp/warp-tx.d.ts.map +1 -0
- package/dist/warp/warp-tx.js +291 -0
- package/dist/warp/warp-tx.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { address as parseAddress, } from '@solana/kit';
|
|
2
|
+
import { IsmType } from '@hyperlane-xyz/provider-sdk/altvm';
|
|
3
|
+
import { detectIsmType } from './ism-query.js';
|
|
4
|
+
import { SvmMessageIdMultisigIsmReader, SvmMessageIdMultisigIsmWriter, } from './multisig-ism.js';
|
|
5
|
+
import { SvmTestIsmReader, SvmTestIsmWriter } from './test-ism.js';
|
|
6
|
+
export class SvmIsmArtifactManager {
|
|
7
|
+
rpc;
|
|
8
|
+
constructor(rpc) {
|
|
9
|
+
this.rpc = rpc;
|
|
10
|
+
}
|
|
11
|
+
async readIsm(address) {
|
|
12
|
+
const programId = parseAddress(address);
|
|
13
|
+
const ismType = await detectIsmType(this.rpc, programId);
|
|
14
|
+
const typeKey = this.altVmToTypeKey(ismType);
|
|
15
|
+
const reader = this.createReader(typeKey);
|
|
16
|
+
return reader.read(address);
|
|
17
|
+
}
|
|
18
|
+
createReader(type) {
|
|
19
|
+
const readers = {
|
|
20
|
+
testIsm: () => new SvmTestIsmReader(this.rpc),
|
|
21
|
+
messageIdMultisigIsm: () => new SvmMessageIdMultisigIsmReader(this.rpc),
|
|
22
|
+
};
|
|
23
|
+
const factory = readers[type];
|
|
24
|
+
if (!factory)
|
|
25
|
+
throw new Error(`Unsupported ISM type: ${type}`);
|
|
26
|
+
return factory();
|
|
27
|
+
}
|
|
28
|
+
createWriter(type, signer) {
|
|
29
|
+
const writers = {
|
|
30
|
+
testIsm: () => new SvmTestIsmWriter(this.rpc, signer),
|
|
31
|
+
messageIdMultisigIsm: () => new SvmMessageIdMultisigIsmWriter(this.rpc, signer),
|
|
32
|
+
};
|
|
33
|
+
const factory = writers[type];
|
|
34
|
+
if (!factory)
|
|
35
|
+
throw new Error(`Unsupported ISM type: ${type}`);
|
|
36
|
+
return factory();
|
|
37
|
+
}
|
|
38
|
+
altVmToTypeKey(ismType) {
|
|
39
|
+
switch (ismType) {
|
|
40
|
+
case IsmType.TEST_ISM:
|
|
41
|
+
return 'testIsm';
|
|
42
|
+
case IsmType.MESSAGE_ID_MULTISIG:
|
|
43
|
+
return 'messageIdMultisigIsm';
|
|
44
|
+
default:
|
|
45
|
+
throw new Error(`Unsupported ISM type on Solana: ${ismType}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=ism-artifact-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism-artifact-manager.js","sourceRoot":"","sources":["../../src/ism/ism-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,IAAI,YAAY,GAGxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAc5D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEnE,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,GAAsB;QAAtB,QAAG,GAAH,GAAG,CAAmB;IAAG,CAAC;IAEvD,KAAK,CAAC,OAAO,CAAC,OAAe;QAC3B,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY,CACV,IAAO;QAEP,MAAM,OAAO,GAKT;YACF,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7C,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC;SACxE,CAAC;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,YAAY,CACV,IAAO,EACP,MAAiB;QAEjB,MAAM,OAAO,GAKT;YACF,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;YACrD,oBAAoB,EAAE,GAAG,EAAE,CACzB,IAAI,6BAA6B,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;SACtD,CAAC;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,cAAc,CAAC,OAAgB;QACrC,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,OAAO,CAAC,QAAQ;gBACnB,OAAO,SAAS,CAAC;YACnB,KAAK,OAAO,CAAC,mBAAmB;gBAC9B,OAAO,sBAAsB,CAAC;YAChC;gBACE,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type Address, type Rpc, type SolanaRpcApi } from '@solana/kit';
|
|
2
|
+
import { IsmType } from '@hyperlane-xyz/provider-sdk/altvm';
|
|
3
|
+
import { type AccessControlData, type DomainData, decodeMultisigIsmAccessControlAccount, decodeMultisigIsmDomainDataAccount } from '../accounts/multisig-ism-message-id.js';
|
|
4
|
+
import { decodeTestIsmStorageAccount, type TestIsmStorage } from '../accounts/test-ism.js';
|
|
5
|
+
import { decodeInterchainSecurityModuleInterfaceInstruction, decodeMultisigIsmInterfaceInstruction } from '../instructions/interfaces.js';
|
|
6
|
+
import { decodeMultisigIsmMessageIdProgramInstruction } from '../instructions/multisig-ism-message-id.js';
|
|
7
|
+
export declare const decodeIsmInstruction: {
|
|
8
|
+
interchainSecurityModule: typeof decodeInterchainSecurityModuleInterfaceInstruction;
|
|
9
|
+
multisigInterface: typeof decodeMultisigIsmInterfaceInstruction;
|
|
10
|
+
multisigProgram: typeof decodeMultisigIsmMessageIdProgramInstruction;
|
|
11
|
+
};
|
|
12
|
+
export declare const decodeIsmAccount: {
|
|
13
|
+
multisigAccessControl: typeof decodeMultisigIsmAccessControlAccount;
|
|
14
|
+
multisigDomainData: typeof decodeMultisigIsmDomainDataAccount;
|
|
15
|
+
testIsmStorage: typeof decodeTestIsmStorageAccount;
|
|
16
|
+
};
|
|
17
|
+
export declare function fetchTestIsmStorageAccount(rpc: Rpc<SolanaRpcApi>, programId: Address): Promise<TestIsmStorage | null>;
|
|
18
|
+
export declare function fetchMultisigIsmAccessControl(rpc: Rpc<SolanaRpcApi>, programId: Address): Promise<AccessControlData | null>;
|
|
19
|
+
export declare function fetchMultisigIsmDomainData(rpc: Rpc<SolanaRpcApi>, programId: Address, domain: number): Promise<DomainData | null>;
|
|
20
|
+
export declare function detectIsmType(rpc: Rpc<SolanaRpcApi>, programId: Address): Promise<IsmType>;
|
|
21
|
+
export declare function validatorBytesToHex(validators: Uint8Array[]): string[];
|
|
22
|
+
//# sourceMappingURL=ism-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism-query.d.ts","sourceRoot":"","sources":["../../src/ism/ism-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAE5D,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,qCAAqC,EACrC,kCAAkC,EACnC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,2BAA2B,EAC3B,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kDAAkD,EAClD,qCAAqC,EACtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,4CAA4C,EAAE,MAAM,4CAA4C,CAAC;AAQ1G,eAAO,MAAM,oBAAoB;;;;CAIhC,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;CAI5B,CAAC;AAEF,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAKhC;AAED,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAMnC;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAQ5B;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAEtE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { IsmType } from '@hyperlane-xyz/provider-sdk/altvm';
|
|
2
|
+
import { decodeMultisigIsmAccessControlAccount, decodeMultisigIsmDomainDataAccount, } from '../accounts/multisig-ism-message-id.js';
|
|
3
|
+
import { decodeTestIsmStorageAccount, } from '../accounts/test-ism.js';
|
|
4
|
+
import { decodeInterchainSecurityModuleInterfaceInstruction, decodeMultisigIsmInterfaceInstruction, } from '../instructions/interfaces.js';
|
|
5
|
+
import { decodeMultisigIsmMessageIdProgramInstruction } from '../instructions/multisig-ism-message-id.js';
|
|
6
|
+
import { deriveMultisigIsmAccessControlPda, deriveMultisigIsmDomainDataPda, deriveTestIsmStoragePda, } from '../pda.js';
|
|
7
|
+
import { fetchAccountDataRaw } from '../rpc.js';
|
|
8
|
+
export const decodeIsmInstruction = {
|
|
9
|
+
interchainSecurityModule: decodeInterchainSecurityModuleInterfaceInstruction,
|
|
10
|
+
multisigInterface: decodeMultisigIsmInterfaceInstruction,
|
|
11
|
+
multisigProgram: decodeMultisigIsmMessageIdProgramInstruction,
|
|
12
|
+
};
|
|
13
|
+
export const decodeIsmAccount = {
|
|
14
|
+
multisigAccessControl: decodeMultisigIsmAccessControlAccount,
|
|
15
|
+
multisigDomainData: decodeMultisigIsmDomainDataAccount,
|
|
16
|
+
testIsmStorage: decodeTestIsmStorageAccount,
|
|
17
|
+
};
|
|
18
|
+
export async function fetchTestIsmStorageAccount(rpc, programId) {
|
|
19
|
+
const { address: storagePda } = await deriveTestIsmStoragePda(programId);
|
|
20
|
+
const raw = await fetchAccountDataRaw(rpc, storagePda);
|
|
21
|
+
if (!raw || raw.length === 0)
|
|
22
|
+
return null;
|
|
23
|
+
return decodeTestIsmStorageAccount(raw);
|
|
24
|
+
}
|
|
25
|
+
export async function fetchMultisigIsmAccessControl(rpc, programId) {
|
|
26
|
+
const { address: accessControlPda } = await deriveMultisigIsmAccessControlPda(programId);
|
|
27
|
+
const raw = await fetchAccountDataRaw(rpc, accessControlPda);
|
|
28
|
+
if (!raw || raw.length === 0)
|
|
29
|
+
return null;
|
|
30
|
+
return decodeMultisigIsmAccessControlAccount(raw);
|
|
31
|
+
}
|
|
32
|
+
export async function fetchMultisigIsmDomainData(rpc, programId, domain) {
|
|
33
|
+
const { address: domainPda } = await deriveMultisigIsmDomainDataPda(programId, domain);
|
|
34
|
+
const raw = await fetchAccountDataRaw(rpc, domainPda);
|
|
35
|
+
if (!raw || raw.length === 0)
|
|
36
|
+
return null;
|
|
37
|
+
return decodeMultisigIsmDomainDataAccount(raw);
|
|
38
|
+
}
|
|
39
|
+
export async function detectIsmType(rpc, programId) {
|
|
40
|
+
const testIsmStorage = await fetchTestIsmStorageAccount(rpc, programId);
|
|
41
|
+
if (testIsmStorage !== null) {
|
|
42
|
+
return IsmType.TEST_ISM;
|
|
43
|
+
}
|
|
44
|
+
const accessControl = await fetchMultisigIsmAccessControl(rpc, programId);
|
|
45
|
+
if (accessControl !== null) {
|
|
46
|
+
return IsmType.MESSAGE_ID_MULTISIG;
|
|
47
|
+
}
|
|
48
|
+
throw new Error(`Unable to detect ISM type for program: ${programId}`);
|
|
49
|
+
}
|
|
50
|
+
export function validatorBytesToHex(validators) {
|
|
51
|
+
return validators.map((v) => '0x' + Buffer.from(v).toString('hex'));
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=ism-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism-query.js","sourceRoot":"","sources":["../../src/ism/ism-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type Address, type Rpc, type SolanaRpcApi } from '@solana/kit';
|
|
2
|
+
import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
3
|
+
import type { MultisigIsmConfig } from '@hyperlane-xyz/provider-sdk/ism';
|
|
4
|
+
import type { SvmSigner } from '../clients/signer.js';
|
|
5
|
+
import type { AnnotatedSvmTransaction, SvmDeployedIsm, SvmProgramTarget, SvmReceipt } from '../types.js';
|
|
6
|
+
export interface SvmMultisigIsmConfig extends MultisigIsmConfig {
|
|
7
|
+
program: SvmProgramTarget;
|
|
8
|
+
domains?: Record<number, {
|
|
9
|
+
validators: string[];
|
|
10
|
+
threshold: number;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
export declare class SvmMessageIdMultisigIsmReader implements ArtifactReader<MultisigIsmConfig, SvmDeployedIsm> {
|
|
14
|
+
protected readonly rpc: Rpc<SolanaRpcApi>;
|
|
15
|
+
constructor(rpc: Rpc<SolanaRpcApi>);
|
|
16
|
+
read(address: string): Promise<ArtifactDeployed<MultisigIsmConfig, SvmDeployedIsm>>;
|
|
17
|
+
readDomain(programId: Address, domain: number): Promise<{
|
|
18
|
+
validators: string[];
|
|
19
|
+
threshold: number;
|
|
20
|
+
} | null>;
|
|
21
|
+
}
|
|
22
|
+
export declare class SvmMessageIdMultisigIsmWriter extends SvmMessageIdMultisigIsmReader implements ArtifactWriter<MultisigIsmConfig, SvmDeployedIsm> {
|
|
23
|
+
private readonly svmSigner;
|
|
24
|
+
constructor(rpc: Rpc<SolanaRpcApi>, svmSigner: SvmSigner);
|
|
25
|
+
create(artifact: ArtifactNew<MultisigIsmConfig>): Promise<[
|
|
26
|
+
ArtifactDeployed<MultisigIsmConfig, SvmDeployedIsm>,
|
|
27
|
+
SvmReceipt[]
|
|
28
|
+
]>;
|
|
29
|
+
update(artifact: ArtifactDeployed<MultisigIsmConfig, SvmDeployedIsm>): Promise<AnnotatedSvmTransaction[]>;
|
|
30
|
+
private getUpdateDomainTxs;
|
|
31
|
+
getUpdateDomainTx(programId: Address, domain: number, validators: string[], threshold: number): Promise<AnnotatedSvmTransaction>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=multisig-ism.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multisig-ism.d.ts","sourceRoot":"","sources":["../../src/ism/multisig-ism.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAQzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EACV,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,UAAU,EAEX,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvE;AAED,qBAAa,6BAA8B,YAAW,cAAc,CAClE,iBAAiB,EACjB,cAAc,CACf;IACa,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC;gBAAtB,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC;IAE/C,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAuBzD,UAAU,CACd,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAc/D;AAED,qBAAa,6BACX,SAAQ,6BACR,YAAW,cAAc,CAAC,iBAAiB,EAAE,cAAc,CAAC;IAI1D,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAD1B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACL,SAAS,EAAE,SAAS;IAKjC,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,iBAAiB,CAAC,GACvC,OAAO,CACR;QAAC,gBAAgB,CAAC,iBAAiB,EAAE,cAAc,CAAC;QAAE,UAAU,EAAE;KAAC,CACpE;IAkEK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,cAAc,CAAC,GAC5D,OAAO,CAAC,uBAAuB,EAAE,CAAC;YAOvB,kBAAkB;IAO1B,iBAAiB,CACrB,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,uBAAuB,CAAC;CAcpC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { address as parseAddress, } from '@solana/kit';
|
|
2
|
+
import { IsmType } from '@hyperlane-xyz/provider-sdk/altvm';
|
|
3
|
+
import { ArtifactState, } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
4
|
+
import { assert } from '@hyperlane-xyz/utils';
|
|
5
|
+
import { resolveProgram } from '../deploy/resolve-program.js';
|
|
6
|
+
import { getInitializeMultisigIsmMessageIdInstruction, getSetValidatorsAndThresholdInstruction, } from '../instructions/multisig-ism-message-id.js';
|
|
7
|
+
import { fetchMultisigIsmAccessControl, fetchMultisigIsmDomainData, validatorBytesToHex, } from './ism-query.js';
|
|
8
|
+
const CHUNK_SIZE = 5;
|
|
9
|
+
export class SvmMessageIdMultisigIsmReader {
|
|
10
|
+
rpc;
|
|
11
|
+
constructor(rpc) {
|
|
12
|
+
this.rpc = rpc;
|
|
13
|
+
}
|
|
14
|
+
async read(address) {
|
|
15
|
+
const programId = parseAddress(address);
|
|
16
|
+
const accessControl = await fetchMultisigIsmAccessControl(this.rpc, programId);
|
|
17
|
+
if (accessControl === null) {
|
|
18
|
+
throw new Error(`Multisig ISM not initialized at program: ${programId}`);
|
|
19
|
+
}
|
|
20
|
+
// TODO: The SVM multisig ISM stores validators/threshold per-domain rather
|
|
21
|
+
// than globally. Proper reading will be added in a future PR.
|
|
22
|
+
return {
|
|
23
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
24
|
+
config: {
|
|
25
|
+
type: IsmType.MESSAGE_ID_MULTISIG,
|
|
26
|
+
validators: [],
|
|
27
|
+
threshold: 0,
|
|
28
|
+
},
|
|
29
|
+
deployed: { address: programId, programId },
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async readDomain(programId, domain) {
|
|
33
|
+
const domainData = await fetchMultisigIsmDomainData(this.rpc, programId, domain);
|
|
34
|
+
if (domainData === null)
|
|
35
|
+
return null;
|
|
36
|
+
return {
|
|
37
|
+
validators: validatorBytesToHex(domainData.validatorsAndThreshold.validators),
|
|
38
|
+
threshold: domainData.validatorsAndThreshold.threshold,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export class SvmMessageIdMultisigIsmWriter extends SvmMessageIdMultisigIsmReader {
|
|
43
|
+
svmSigner;
|
|
44
|
+
constructor(rpc, svmSigner) {
|
|
45
|
+
super(rpc);
|
|
46
|
+
this.svmSigner = svmSigner;
|
|
47
|
+
}
|
|
48
|
+
async create(artifact) {
|
|
49
|
+
const config = artifact.config;
|
|
50
|
+
const { programAddress, receipts } = await resolveProgram(config.program, this.svmSigner, this.rpc);
|
|
51
|
+
const accessControl = await fetchMultisigIsmAccessControl(this.rpc, programAddress);
|
|
52
|
+
if (accessControl === null) {
|
|
53
|
+
const initIx = await getInitializeMultisigIsmMessageIdInstruction(programAddress, this.svmSigner.signer);
|
|
54
|
+
const initReceipt = await this.svmSigner.send({
|
|
55
|
+
instructions: [initIx],
|
|
56
|
+
});
|
|
57
|
+
receipts.push(initReceipt);
|
|
58
|
+
}
|
|
59
|
+
if (config.domains) {
|
|
60
|
+
const domainInstructions = await Promise.all(Object.entries(config.domains).map(async ([domainStr, domainConfig]) => {
|
|
61
|
+
const domain = Number(domainStr);
|
|
62
|
+
assert(Number.isInteger(domain) && domain >= 0, `Invalid domain: '${domainStr}'`);
|
|
63
|
+
return getSetValidatorsAndThresholdInstruction({
|
|
64
|
+
programAddress,
|
|
65
|
+
owner: this.svmSigner.signer,
|
|
66
|
+
domain,
|
|
67
|
+
validators: domainConfig.validators,
|
|
68
|
+
threshold: domainConfig.threshold,
|
|
69
|
+
});
|
|
70
|
+
}));
|
|
71
|
+
for (let i = 0; i < domainInstructions.length; i += CHUNK_SIZE) {
|
|
72
|
+
const chunk = domainInstructions.slice(i, i + CHUNK_SIZE);
|
|
73
|
+
const tx = { instructions: chunk };
|
|
74
|
+
const receipt = await this.svmSigner.send(tx);
|
|
75
|
+
receipts.push(receipt);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else if (config.validators.length > 0) {
|
|
79
|
+
throw new Error('Single validators/threshold config not supported on Solana. Use domains map.');
|
|
80
|
+
}
|
|
81
|
+
return [
|
|
82
|
+
{
|
|
83
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
84
|
+
config: config,
|
|
85
|
+
deployed: { address: programAddress, programId: programAddress },
|
|
86
|
+
},
|
|
87
|
+
receipts,
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
async update(artifact) {
|
|
91
|
+
const programId = artifact.deployed.programId;
|
|
92
|
+
return this.getUpdateDomainTxs(artifact, programId);
|
|
93
|
+
}
|
|
94
|
+
// TODO: The SVM multisig ISM requires per-domain diffing to compute updates.
|
|
95
|
+
// Proper update logic will be added in a future PR.
|
|
96
|
+
async getUpdateDomainTxs(_artifact, _programId) {
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
async getUpdateDomainTx(programId, domain, validators, threshold) {
|
|
100
|
+
const ix = await getSetValidatorsAndThresholdInstruction({
|
|
101
|
+
programAddress: programId,
|
|
102
|
+
owner: this.svmSigner.signer,
|
|
103
|
+
domain,
|
|
104
|
+
validators,
|
|
105
|
+
threshold,
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
instructions: [ix],
|
|
109
|
+
annotation: `Set validators for domain ${domain}`,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=multisig-ism.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multisig-ism.js","sourceRoot":"","sources":["../../src/ism/multisig-ism.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,IAAI,YAAY,GAIxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAIL,aAAa,GAEd,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EACL,4CAA4C,EAC5C,uCAAuC,GACxC,MAAM,4CAA4C,CAAC;AAUpD,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,MAAM,UAAU,GAAG,CAAC,CAAC;AAOrB,MAAM,OAAO,6BAA6B;IAIT;IAA/B,YAA+B,GAAsB;QAAtB,QAAG,GAAH,GAAG,CAAmB;IAAG,CAAC;IAEzD,KAAK,CAAC,IAAI,CACR,OAAe;QAEf,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,aAAa,GAAG,MAAM,6BAA6B,CACvD,IAAI,CAAC,GAAG,EACR,SAAS,CACV,CAAC;QACF,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,4CAA4C,SAAS,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,2EAA2E;QAC3E,8DAA8D;QAC9D,OAAO;YACL,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM,EAAE;gBACN,IAAI,EAAE,OAAO,CAAC,mBAAmB;gBACjC,UAAU,EAAE,EAAE;gBACd,SAAS,EAAE,CAAC;aACb;YACD,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE;SAC5C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CACd,SAAkB,EAClB,MAAc;QAEd,MAAM,UAAU,GAAG,MAAM,0BAA0B,CACjD,IAAI,CAAC,GAAG,EACR,SAAS,EACT,MAAM,CACP,CAAC;QACF,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO;YACL,UAAU,EAAE,mBAAmB,CAC7B,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAC7C;YACD,SAAS,EAAE,UAAU,CAAC,sBAAsB,CAAC,SAAS;SACvD,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,6BACX,SAAQ,6BAA6B;IAKlB;IAFnB,YACE,GAAsB,EACL,SAAoB;QAErC,KAAK,CAAC,GAAG,CAAC,CAAC;QAFM,cAAS,GAAT,SAAS,CAAW;IAGvC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,QAAwC;QAIxC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAA8B,CAAC;QACvD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CACvD,MAAM,CAAC,OAAO,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,GAAG,CACT,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,6BAA6B,CACvD,IAAI,CAAC,GAAG,EACR,cAAc,CACf,CAAC;QAEF,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,4CAA4C,CAC/D,cAAc,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CACtB,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC5C,YAAY,EAAE,CAAC,MAAM,CAAC;aACvB,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAChC,KAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;gBACjC,MAAM,CACJ,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EACvC,oBAAoB,SAAS,GAAG,CACjC,CAAC;gBACF,OAAO,uCAAuC,CAAC;oBAC7C,cAAc;oBACd,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;oBAC5B,MAAM;oBACN,UAAU,EAAE,YAAY,CAAC,UAAU;oBACnC,SAAS,EAAE,YAAY,CAAC,SAAS;iBAClC,CAAC,CAAC;YACL,CAAC,CACF,CACF,CAAC;YAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC/D,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;gBAC1D,MAAM,EAAE,GAAmB,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;gBACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QAED,OAAO;YACL;gBACE,aAAa,EAAE,aAAa,CAAC,QAAQ;gBACrC,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE;aACjE;YACD,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,QAA6D;QAE7D,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC9C,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,6EAA6E;IAC7E,oDAAoD;IAC5C,KAAK,CAAC,kBAAkB,CAC9B,SAA8D,EAC9D,UAAmB;QAEnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,SAAkB,EAClB,MAAc,EACd,UAAoB,EACpB,SAAiB;QAEjB,MAAM,EAAE,GAAG,MAAM,uCAAuC,CAAC;YACvD,cAAc,EAAE,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;YAC5B,MAAM;YACN,UAAU;YACV,SAAS;SACV,CAAC,CAAC;QAEH,OAAO;YACL,YAAY,EAAE,CAAC,EAAE,CAAC;YAClB,UAAU,EAAE,6BAA6B,MAAM,EAAE;SAClD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Rpc, type SolanaRpcApi } from '@solana/kit';
|
|
2
|
+
import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
3
|
+
import type { TestIsmConfig } from '@hyperlane-xyz/provider-sdk/ism';
|
|
4
|
+
import type { SvmSigner } from '../clients/signer.js';
|
|
5
|
+
import type { AnnotatedSvmTransaction, SvmDeployedIsm, SvmProgramTarget, SvmReceipt } from '../types.js';
|
|
6
|
+
export interface SvmTestIsmConfig extends TestIsmConfig {
|
|
7
|
+
program: SvmProgramTarget;
|
|
8
|
+
}
|
|
9
|
+
export declare class SvmTestIsmReader implements ArtifactReader<TestIsmConfig, SvmDeployedIsm> {
|
|
10
|
+
protected readonly rpc: Rpc<SolanaRpcApi>;
|
|
11
|
+
constructor(rpc: Rpc<SolanaRpcApi>);
|
|
12
|
+
read(address: string): Promise<ArtifactDeployed<TestIsmConfig, SvmDeployedIsm>>;
|
|
13
|
+
}
|
|
14
|
+
export declare class SvmTestIsmWriter extends SvmTestIsmReader implements ArtifactWriter<TestIsmConfig, SvmDeployedIsm> {
|
|
15
|
+
private readonly svmSigner;
|
|
16
|
+
constructor(rpc: Rpc<SolanaRpcApi>, svmSigner: SvmSigner);
|
|
17
|
+
create(artifact: ArtifactNew<TestIsmConfig>): Promise<[ArtifactDeployed<TestIsmConfig, SvmDeployedIsm>, SvmReceipt[]]>;
|
|
18
|
+
update(_artifact: ArtifactDeployed<TestIsmConfig, SvmDeployedIsm>): Promise<AnnotatedSvmTransaction[]>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=test-ism.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-ism.d.ts","sourceRoot":"","sources":["../../src/ism/test-ism.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EACV,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACX,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,qBAAa,gBAAiB,YAAW,cAAc,CACrD,aAAa,EACb,cAAc,CACf;IACa,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC;gBAAtB,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC;IAE/C,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;CAa5D;AAED,qBAAa,gBACX,SAAQ,gBACR,YAAW,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC;IAItD,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAD1B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACL,SAAS,EAAE,SAAS;IAKjC,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,aAAa,CAAC,GACnC,OAAO,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAgCrE,MAAM,CACV,SAAS,EAAE,gBAAgB,CAAC,aAAa,EAAE,cAAc,CAAC,GACzD,OAAO,CAAC,uBAAuB,EAAE,CAAC;CAGtC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { address as parseAddress, } from '@solana/kit';
|
|
2
|
+
import { IsmType } from '@hyperlane-xyz/provider-sdk/altvm';
|
|
3
|
+
import { ArtifactState, } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
4
|
+
import { resolveProgram } from '../deploy/resolve-program.js';
|
|
5
|
+
import { getInitTestIsmInstruction } from '../instructions/test-ism.js';
|
|
6
|
+
import { fetchTestIsmStorageAccount } from './ism-query.js';
|
|
7
|
+
export class SvmTestIsmReader {
|
|
8
|
+
rpc;
|
|
9
|
+
constructor(rpc) {
|
|
10
|
+
this.rpc = rpc;
|
|
11
|
+
}
|
|
12
|
+
async read(address) {
|
|
13
|
+
const programId = parseAddress(address);
|
|
14
|
+
const storage = await fetchTestIsmStorageAccount(this.rpc, programId);
|
|
15
|
+
if (storage === null) {
|
|
16
|
+
throw new Error(`Test ISM not initialized at program: ${programId}`);
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
20
|
+
config: { type: IsmType.TEST_ISM },
|
|
21
|
+
deployed: { address: programId, programId },
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class SvmTestIsmWriter extends SvmTestIsmReader {
|
|
26
|
+
svmSigner;
|
|
27
|
+
constructor(rpc, svmSigner) {
|
|
28
|
+
super(rpc);
|
|
29
|
+
this.svmSigner = svmSigner;
|
|
30
|
+
}
|
|
31
|
+
async create(artifact) {
|
|
32
|
+
// CAST: ArtifactWriter interface uses base TestIsmConfig, but SVM
|
|
33
|
+
// needs the extra `program` field from SvmTestIsmConfig.
|
|
34
|
+
const config = artifact.config;
|
|
35
|
+
const { programAddress, receipts } = await resolveProgram(config.program, this.svmSigner, this.rpc);
|
|
36
|
+
const storage = await fetchTestIsmStorageAccount(this.rpc, programAddress);
|
|
37
|
+
if (storage === null) {
|
|
38
|
+
const instruction = await getInitTestIsmInstruction(programAddress, this.svmSigner.signer);
|
|
39
|
+
const initReceipt = await this.svmSigner.send({
|
|
40
|
+
instructions: [instruction],
|
|
41
|
+
});
|
|
42
|
+
receipts.push(initReceipt);
|
|
43
|
+
}
|
|
44
|
+
return [
|
|
45
|
+
{
|
|
46
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
47
|
+
config: { type: IsmType.TEST_ISM },
|
|
48
|
+
deployed: { address: programAddress, programId: programAddress },
|
|
49
|
+
},
|
|
50
|
+
receipts,
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
async update(_artifact) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=test-ism.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-ism.js","sourceRoot":"","sources":["../../src/ism/test-ism.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,IAAI,YAAY,GAGxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAIL,aAAa,GAEd,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AASxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAM5D,MAAM,OAAO,gBAAgB;IAII;IAA/B,YAA+B,GAAsB;QAAtB,QAAG,GAAH,GAAG,CAAmB;IAAG,CAAC;IAEzD,KAAK,CAAC,IAAI,CACR,OAAe;QAEf,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACtE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO;YACL,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;YAClC,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE;SAC5C,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,gBACX,SAAQ,gBAAgB;IAKL;IAFnB,YACE,GAAsB,EACL,SAAoB;QAErC,KAAK,CAAC,GAAG,CAAC,CAAC;QAFM,cAAS,GAAT,SAAS,CAAW;IAGvC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,QAAoC;QAEpC,kEAAkE;QAClE,yDAAyD;QACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAA0B,CAAC;QACnD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CACvD,MAAM,CAAC,OAAO,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,GAAG,CACT,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC3E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,MAAM,yBAAyB,CACjD,cAAc,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CACtB,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC5C,YAAY,EAAE,CAAC,WAAW,CAAC;aAC5B,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO;YACL;gBACE,aAAa,EAAE,aAAa,CAAC,QAAQ;gBACrC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;gBAClC,QAAQ,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE;aACjE;YACD,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,SAA0D;QAE1D,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
package/dist/pda.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Address } from '@solana/kit';
|
|
2
|
+
import type { PdaWithBump } from './types.js';
|
|
3
|
+
export declare function deriveMultisigIsmAccessControlPda(programAddress: Address): Promise<PdaWithBump>;
|
|
4
|
+
export declare function deriveMultisigIsmDomainDataPda(programAddress: Address, domain: number): Promise<PdaWithBump>;
|
|
5
|
+
export declare function deriveTestIsmStoragePda(programAddress: Address): Promise<PdaWithBump>;
|
|
6
|
+
export declare function deriveHyperlaneTokenPda(programAddress: Address): Promise<PdaWithBump>;
|
|
7
|
+
export declare function deriveMailboxDispatchAuthorityPda(programAddress: Address): Promise<PdaWithBump>;
|
|
8
|
+
export declare function deriveMailboxProcessAuthorityPda(mailboxProgramAddress: Address, recipientProgramAddress: Address): Promise<PdaWithBump>;
|
|
9
|
+
export declare function deriveIgpProgramDataPda(programAddress: Address): Promise<PdaWithBump>;
|
|
10
|
+
export declare function deriveIgpAccountPda(programAddress: Address, salt: Uint8Array): Promise<PdaWithBump>;
|
|
11
|
+
export declare function deriveOverheadIgpAccountPda(programAddress: Address, salt: Uint8Array): Promise<PdaWithBump>;
|
|
12
|
+
export declare function deriveValidatorAnnouncePda(programAddress: Address): Promise<PdaWithBump>;
|
|
13
|
+
export declare function deriveNativeCollateralPda(programAddress: Address): Promise<PdaWithBump>;
|
|
14
|
+
export declare function deriveSyntheticMintPda(programAddress: Address): Promise<PdaWithBump>;
|
|
15
|
+
export declare function deriveAtaPayerPda(programAddress: Address): Promise<PdaWithBump>;
|
|
16
|
+
export declare function deriveEscrowPda(programAddress: Address): Promise<PdaWithBump>;
|
|
17
|
+
//# sourceMappingURL=pda.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pda.d.ts","sourceRoot":"","sources":["../src/pda.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,OAAO,EAEb,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAe9C,wBAAsB,iCAAiC,CACrD,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,8BAA8B,CAClD,cAAc,EAAE,OAAO,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,wBAAsB,uBAAuB,CAC3C,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,uBAAuB,CAC3C,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,wBAAsB,iCAAiC,CACrD,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,gCAAgC,CACpD,qBAAqB,EAAE,OAAO,EAC9B,uBAAuB,EAAE,OAAO,GAC/B,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,wBAAsB,uBAAuB,CAC3C,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,wBAAsB,2BAA2B,CAC/C,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,wBAAsB,0BAA0B,CAC9C,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,yBAAyB,CAC7C,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,eAAe,CACnC,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,WAAW,CAAC,CAMtB"}
|
package/dist/pda.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { getAddressEncoder, getProgramDerivedAddress, getU32Encoder, getUtf8Encoder, } from '@solana/kit';
|
|
2
|
+
const utf8 = getUtf8Encoder();
|
|
3
|
+
const u32 = getU32Encoder();
|
|
4
|
+
const addressEncoder = getAddressEncoder();
|
|
5
|
+
// Intentionally using @solana/kit re-exports for consistency with package-wide imports.
|
|
6
|
+
async function derive(programAddress, seeds) {
|
|
7
|
+
const pda = await getProgramDerivedAddress({ programAddress, seeds });
|
|
8
|
+
return { pda, address: pda[0], bump: pda[1] };
|
|
9
|
+
}
|
|
10
|
+
export async function deriveMultisigIsmAccessControlPda(programAddress) {
|
|
11
|
+
return derive(programAddress, [
|
|
12
|
+
utf8.encode('multisig_ism_message_id'),
|
|
13
|
+
utf8.encode('-'),
|
|
14
|
+
utf8.encode('access_control'),
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
export async function deriveMultisigIsmDomainDataPda(programAddress, domain) {
|
|
18
|
+
return derive(programAddress, [
|
|
19
|
+
utf8.encode('multisig_ism_message_id'),
|
|
20
|
+
utf8.encode('-'),
|
|
21
|
+
u32.encode(domain),
|
|
22
|
+
utf8.encode('-'),
|
|
23
|
+
utf8.encode('domain_data'),
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
export async function deriveTestIsmStoragePda(programAddress) {
|
|
27
|
+
return derive(programAddress, [
|
|
28
|
+
utf8.encode('test_ism'),
|
|
29
|
+
utf8.encode('-'),
|
|
30
|
+
utf8.encode('storage'),
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
export async function deriveHyperlaneTokenPda(programAddress) {
|
|
34
|
+
return derive(programAddress, [
|
|
35
|
+
utf8.encode('hyperlane_message_recipient'),
|
|
36
|
+
utf8.encode('-'),
|
|
37
|
+
utf8.encode('handle'),
|
|
38
|
+
utf8.encode('-'),
|
|
39
|
+
utf8.encode('account_metas'),
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
42
|
+
export async function deriveMailboxDispatchAuthorityPda(programAddress) {
|
|
43
|
+
return derive(programAddress, [
|
|
44
|
+
utf8.encode('hyperlane_dispatcher'),
|
|
45
|
+
utf8.encode('-'),
|
|
46
|
+
utf8.encode('dispatch_authority'),
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
export async function deriveMailboxProcessAuthorityPda(mailboxProgramAddress, recipientProgramAddress) {
|
|
50
|
+
return derive(mailboxProgramAddress, [
|
|
51
|
+
utf8.encode('hyperlane'),
|
|
52
|
+
utf8.encode('-'),
|
|
53
|
+
utf8.encode('process_authority'),
|
|
54
|
+
utf8.encode('-'),
|
|
55
|
+
addressEncoder.encode(recipientProgramAddress),
|
|
56
|
+
]);
|
|
57
|
+
}
|
|
58
|
+
export async function deriveIgpProgramDataPda(programAddress) {
|
|
59
|
+
return derive(programAddress, [
|
|
60
|
+
utf8.encode('hyperlane_igp'),
|
|
61
|
+
utf8.encode('-'),
|
|
62
|
+
utf8.encode('program_data'),
|
|
63
|
+
]);
|
|
64
|
+
}
|
|
65
|
+
export async function deriveIgpAccountPda(programAddress, salt) {
|
|
66
|
+
return derive(programAddress, [
|
|
67
|
+
utf8.encode('hyperlane_igp'),
|
|
68
|
+
utf8.encode('-'),
|
|
69
|
+
utf8.encode('igp'),
|
|
70
|
+
utf8.encode('-'),
|
|
71
|
+
salt,
|
|
72
|
+
]);
|
|
73
|
+
}
|
|
74
|
+
export async function deriveOverheadIgpAccountPda(programAddress, salt) {
|
|
75
|
+
return derive(programAddress, [
|
|
76
|
+
utf8.encode('hyperlane_igp'),
|
|
77
|
+
utf8.encode('-'),
|
|
78
|
+
utf8.encode('overhead_igp'),
|
|
79
|
+
utf8.encode('-'),
|
|
80
|
+
salt,
|
|
81
|
+
]);
|
|
82
|
+
}
|
|
83
|
+
export async function deriveValidatorAnnouncePda(programAddress) {
|
|
84
|
+
return derive(programAddress, [
|
|
85
|
+
utf8.encode('hyperlane_validator_announce'),
|
|
86
|
+
utf8.encode('-'),
|
|
87
|
+
utf8.encode('validator_announce'),
|
|
88
|
+
]);
|
|
89
|
+
}
|
|
90
|
+
export async function deriveNativeCollateralPda(programAddress) {
|
|
91
|
+
return derive(programAddress, [
|
|
92
|
+
utf8.encode('hyperlane_token'),
|
|
93
|
+
utf8.encode('-'),
|
|
94
|
+
utf8.encode('native_collateral'),
|
|
95
|
+
]);
|
|
96
|
+
}
|
|
97
|
+
export async function deriveSyntheticMintPda(programAddress) {
|
|
98
|
+
return derive(programAddress, [
|
|
99
|
+
utf8.encode('hyperlane_token'),
|
|
100
|
+
utf8.encode('-'),
|
|
101
|
+
utf8.encode('mint'),
|
|
102
|
+
]);
|
|
103
|
+
}
|
|
104
|
+
export async function deriveAtaPayerPda(programAddress) {
|
|
105
|
+
return derive(programAddress, [
|
|
106
|
+
utf8.encode('hyperlane_token'),
|
|
107
|
+
utf8.encode('-'),
|
|
108
|
+
utf8.encode('ata_payer'),
|
|
109
|
+
]);
|
|
110
|
+
}
|
|
111
|
+
export async function deriveEscrowPda(programAddress) {
|
|
112
|
+
return derive(programAddress, [
|
|
113
|
+
utf8.encode('hyperlane_token'),
|
|
114
|
+
utf8.encode('-'),
|
|
115
|
+
utf8.encode('escrow'),
|
|
116
|
+
]);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=pda.js.map
|
package/dist/pda.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pda.js","sourceRoot":"","sources":["../src/pda.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Address, type MaybeEncodedAccount, type Rpc, type SolanaRpcApi } from '@solana/kit';
|
|
2
|
+
export declare function createRpc(url: string): Rpc<SolanaRpcApi>;
|
|
3
|
+
export declare function fetchAccount(rpc: Rpc<SolanaRpcApi>, address: Address): Promise<MaybeEncodedAccount>;
|
|
4
|
+
/**
|
|
5
|
+
* Fetches raw account data bytes, returning null when the account does not exist.
|
|
6
|
+
*/
|
|
7
|
+
export declare function fetchAccountDataRaw(rpc: Rpc<SolanaRpcApi>, address: Address): Promise<Uint8Array | null>;
|
|
8
|
+
export type SolanaRpcClient = Rpc<SolanaRpcApi>;
|
|
9
|
+
//# sourceMappingURL=rpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,GAAG,EACR,KAAK,YAAY,EAGlB,MAAM,aAAa,CAAC;AAErB,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAExD;AAID,wBAAsB,YAAY,CAChC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,mBAAmB,CAAC,CAE9B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAM5B;AAED,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC"}
|
package/dist/rpc.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createSolanaRpc, fetchEncodedAccount, } from '@solana/kit';
|
|
2
|
+
export function createRpc(url) {
|
|
3
|
+
return createSolanaRpc(url);
|
|
4
|
+
}
|
|
5
|
+
// Returns MaybeEncodedAccount to preserve Kit's explicit existence-check shape.
|
|
6
|
+
// Callers should branch on .exists or use assertAccountExists().
|
|
7
|
+
export async function fetchAccount(rpc, address) {
|
|
8
|
+
return fetchEncodedAccount(rpc, address);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Fetches raw account data bytes, returning null when the account does not exist.
|
|
12
|
+
*/
|
|
13
|
+
export async function fetchAccountDataRaw(rpc, address) {
|
|
14
|
+
const maybeAccount = await fetchEncodedAccount(rpc, address, {
|
|
15
|
+
commitment: 'confirmed',
|
|
16
|
+
});
|
|
17
|
+
if (!maybeAccount.exists)
|
|
18
|
+
return null;
|
|
19
|
+
return maybeAccount.data;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=rpc.js.map
|
package/dist/rpc.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,eAAe,EACf,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,gFAAgF;AAChF,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAsB,EACtB,OAAgB;IAEhB,OAAO,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAsB,EACtB,OAAgB;IAEhB,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE;QAC3D,UAAU,EAAE,WAAW;KACxB,CAAC,CAAC;IACH,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,YAAY,CAAC,IAAI,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC"}
|