@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.
Files changed (222) hide show
  1. package/LICENSE.md +193 -0
  2. package/dist/accounts/mint.d.ts +43 -0
  3. package/dist/accounts/mint.d.ts.map +1 -0
  4. package/dist/accounts/mint.js +159 -0
  5. package/dist/accounts/mint.js.map +1 -0
  6. package/dist/accounts/multisig-ism-message-id.d.ts +14 -0
  7. package/dist/accounts/multisig-ism-message-id.d.ts.map +1 -0
  8. package/dist/accounts/multisig-ism-message-id.js +32 -0
  9. package/dist/accounts/multisig-ism-message-id.js.map +1 -0
  10. package/dist/accounts/test-ism.d.ts +5 -0
  11. package/dist/accounts/test-ism.d.ts.map +1 -0
  12. package/dist/accounts/test-ism.js +8 -0
  13. package/dist/accounts/test-ism.js.map +1 -0
  14. package/dist/accounts/token.d.ts +60 -0
  15. package/dist/accounts/token.d.ts.map +1 -0
  16. package/dist/accounts/token.js +127 -0
  17. package/dist/accounts/token.js.map +1 -0
  18. package/dist/clients/protocol.d.ts +21 -0
  19. package/dist/clients/protocol.d.ts.map +1 -0
  20. package/dist/clients/protocol.js +51 -0
  21. package/dist/clients/protocol.js.map +1 -0
  22. package/dist/clients/provider.d.ts +66 -0
  23. package/dist/clients/provider.d.ts.map +1 -0
  24. package/dist/clients/provider.js +237 -0
  25. package/dist/clients/provider.js.map +1 -0
  26. package/dist/clients/signer.d.ts +61 -0
  27. package/dist/clients/signer.d.ts.map +1 -0
  28. package/dist/clients/signer.js +314 -0
  29. package/dist/clients/signer.js.map +1 -0
  30. package/dist/codecs/account-data.d.ts +8 -0
  31. package/dist/codecs/account-data.d.ts.map +1 -0
  32. package/dist/codecs/account-data.js +20 -0
  33. package/dist/codecs/account-data.js.map +1 -0
  34. package/dist/codecs/binary.d.ts +34 -0
  35. package/dist/codecs/binary.d.ts.map +1 -0
  36. package/dist/codecs/binary.js +165 -0
  37. package/dist/codecs/binary.js.map +1 -0
  38. package/dist/codecs/shared.d.ts +81 -0
  39. package/dist/codecs/shared.d.ts.map +1 -0
  40. package/dist/codecs/shared.js +241 -0
  41. package/dist/codecs/shared.js.map +1 -0
  42. package/dist/constants.d.ts +13 -0
  43. package/dist/constants.d.ts.map +1 -0
  44. package/dist/constants.js +21 -0
  45. package/dist/constants.js.map +1 -0
  46. package/dist/deploy/program-deployer.d.ts +51 -0
  47. package/dist/deploy/program-deployer.d.ts.map +1 -0
  48. package/dist/deploy/program-deployer.js +176 -0
  49. package/dist/deploy/program-deployer.js.map +1 -0
  50. package/dist/deploy/resolve-program.d.ts +9 -0
  51. package/dist/deploy/resolve-program.d.ts.map +1 -0
  52. package/dist/deploy/resolve-program.js +24 -0
  53. package/dist/deploy/resolve-program.js.map +1 -0
  54. package/dist/generated/core-addresses.d.ts +14 -0
  55. package/dist/generated/core-addresses.d.ts.map +1 -0
  56. package/dist/generated/core-addresses.js +55 -0
  57. package/dist/generated/core-addresses.js.map +1 -0
  58. package/dist/hook/hook-artifact-manager.d.ts +17 -0
  59. package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
  60. package/dist/hook/hook-artifact-manager.js +58 -0
  61. package/dist/hook/hook-artifact-manager.js.map +1 -0
  62. package/dist/hook/hook-query.d.ts +25 -0
  63. package/dist/hook/hook-query.d.ts.map +1 -0
  64. package/dist/hook/hook-query.js +46 -0
  65. package/dist/hook/hook-query.js.map +1 -0
  66. package/dist/hook/igp-hook.d.ts +28 -0
  67. package/dist/hook/igp-hook.d.ts.map +1 -0
  68. package/dist/hook/igp-hook.js +242 -0
  69. package/dist/hook/igp-hook.js.map +1 -0
  70. package/dist/hook/merkle-tree-hook.d.ts +23 -0
  71. package/dist/hook/merkle-tree-hook.d.ts.map +1 -0
  72. package/dist/hook/merkle-tree-hook.js +46 -0
  73. package/dist/hook/merkle-tree-hook.js.map +1 -0
  74. package/dist/hyperlane/program-bytes.d.ts +20 -0
  75. package/dist/hyperlane/program-bytes.d.ts.map +1 -0
  76. package/dist/hyperlane/program-bytes.js +80534 -0
  77. package/dist/hyperlane/program-bytes.js.map +1 -0
  78. package/dist/index.d.ts +21 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +27 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/instructions/igp.d.ts +66 -0
  83. package/dist/instructions/igp.d.ts.map +1 -0
  84. package/dist/instructions/igp.js +168 -0
  85. package/dist/instructions/igp.js.map +1 -0
  86. package/dist/instructions/interfaces.d.ts +52 -0
  87. package/dist/instructions/interfaces.d.ts.map +1 -0
  88. package/dist/instructions/interfaces.js +126 -0
  89. package/dist/instructions/interfaces.js.map +1 -0
  90. package/dist/instructions/loader.d.ts +11 -0
  91. package/dist/instructions/loader.d.ts.map +1 -0
  92. package/dist/instructions/loader.js +24 -0
  93. package/dist/instructions/loader.js.map +1 -0
  94. package/dist/instructions/multisig-ism-message-id.d.ts +32 -0
  95. package/dist/instructions/multisig-ism-message-id.d.ts.map +1 -0
  96. package/dist/instructions/multisig-ism-message-id.js +105 -0
  97. package/dist/instructions/multisig-ism-message-id.js.map +1 -0
  98. package/dist/instructions/test-ism.d.ts +16 -0
  99. package/dist/instructions/test-ism.d.ts.map +1 -0
  100. package/dist/instructions/test-ism.js +47 -0
  101. package/dist/instructions/test-ism.js.map +1 -0
  102. package/dist/instructions/token.d.ts +62 -0
  103. package/dist/instructions/token.d.ts.map +1 -0
  104. package/dist/instructions/token.js +257 -0
  105. package/dist/instructions/token.js.map +1 -0
  106. package/dist/instructions/utils.d.ts +19 -0
  107. package/dist/instructions/utils.d.ts.map +1 -0
  108. package/dist/instructions/utils.js +36 -0
  109. package/dist/instructions/utils.js.map +1 -0
  110. package/dist/ism/ism-artifact-manager.d.ts +14 -0
  111. package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
  112. package/dist/ism/ism-artifact-manager.js +49 -0
  113. package/dist/ism/ism-artifact-manager.js.map +1 -0
  114. package/dist/ism/ism-query.d.ts +22 -0
  115. package/dist/ism/ism-query.d.ts.map +1 -0
  116. package/dist/ism/ism-query.js +53 -0
  117. package/dist/ism/ism-query.js.map +1 -0
  118. package/dist/ism/multisig-ism.d.ts +33 -0
  119. package/dist/ism/multisig-ism.d.ts.map +1 -0
  120. package/dist/ism/multisig-ism.js +113 -0
  121. package/dist/ism/multisig-ism.js.map +1 -0
  122. package/dist/ism/test-ism.d.ts +20 -0
  123. package/dist/ism/test-ism.d.ts.map +1 -0
  124. package/dist/ism/test-ism.js +57 -0
  125. package/dist/ism/test-ism.js.map +1 -0
  126. package/dist/pda.d.ts +17 -0
  127. package/dist/pda.d.ts.map +1 -0
  128. package/dist/pda.js +118 -0
  129. package/dist/pda.js.map +1 -0
  130. package/dist/rpc.d.ts +9 -0
  131. package/dist/rpc.d.ts.map +1 -0
  132. package/dist/rpc.js +21 -0
  133. package/dist/rpc.js.map +1 -0
  134. package/dist/testing/index.d.ts +3 -0
  135. package/dist/testing/index.d.ts.map +1 -0
  136. package/dist/testing/index.js +3 -0
  137. package/dist/testing/index.js.map +1 -0
  138. package/dist/testing/setup.d.ts +33 -0
  139. package/dist/testing/setup.d.ts.map +1 -0
  140. package/dist/testing/setup.js +120 -0
  141. package/dist/testing/setup.js.map +1 -0
  142. package/dist/testing/solana-container.d.ts +32 -0
  143. package/dist/testing/solana-container.d.ts.map +1 -0
  144. package/dist/testing/solana-container.js +289 -0
  145. package/dist/testing/solana-container.js.map +1 -0
  146. package/dist/tests/collateral-token.e2e-test.d.ts +2 -0
  147. package/dist/tests/collateral-token.e2e-test.d.ts.map +1 -0
  148. package/dist/tests/collateral-token.e2e-test.js +112 -0
  149. package/dist/tests/collateral-token.e2e-test.js.map +1 -0
  150. package/dist/tests/deploy.e2e-test.d.ts +2 -0
  151. package/dist/tests/deploy.e2e-test.d.ts.map +1 -0
  152. package/dist/tests/deploy.e2e-test.js +76 -0
  153. package/dist/tests/deploy.e2e-test.js.map +1 -0
  154. package/dist/tests/hook.e2e-test.d.ts +2 -0
  155. package/dist/tests/hook.e2e-test.d.ts.map +1 -0
  156. package/dist/tests/hook.e2e-test.js +176 -0
  157. package/dist/tests/hook.e2e-test.js.map +1 -0
  158. package/dist/tests/ism.e2e-test.d.ts +2 -0
  159. package/dist/tests/ism.e2e-test.d.ts.map +1 -0
  160. package/dist/tests/ism.e2e-test.js +167 -0
  161. package/dist/tests/ism.e2e-test.js.map +1 -0
  162. package/dist/tests/native-token.e2e-test.d.ts +2 -0
  163. package/dist/tests/native-token.e2e-test.d.ts.map +1 -0
  164. package/dist/tests/native-token.e2e-test.js +93 -0
  165. package/dist/tests/native-token.e2e-test.js.map +1 -0
  166. package/dist/tests/provider.e2e-test.d.ts +2 -0
  167. package/dist/tests/provider.e2e-test.d.ts.map +1 -0
  168. package/dist/tests/provider.e2e-test.js +87 -0
  169. package/dist/tests/provider.e2e-test.js.map +1 -0
  170. package/dist/tests/read-token.e2e-test.d.ts +2 -0
  171. package/dist/tests/read-token.e2e-test.d.ts.map +1 -0
  172. package/dist/tests/read-token.e2e-test.js +79 -0
  173. package/dist/tests/read-token.e2e-test.js.map +1 -0
  174. package/dist/tests/scale.unit-test.d.ts +2 -0
  175. package/dist/tests/scale.unit-test.d.ts.map +1 -0
  176. package/dist/tests/scale.unit-test.js +65 -0
  177. package/dist/tests/scale.unit-test.js.map +1 -0
  178. package/dist/tests/synthetic-token.e2e-test.d.ts +2 -0
  179. package/dist/tests/synthetic-token.e2e-test.d.ts.map +1 -0
  180. package/dist/tests/synthetic-token.e2e-test.js +115 -0
  181. package/dist/tests/synthetic-token.e2e-test.js.map +1 -0
  182. package/dist/tests/warp-token-suite.d.ts +26 -0
  183. package/dist/tests/warp-token-suite.d.ts.map +1 -0
  184. package/dist/tests/warp-token-suite.js +208 -0
  185. package/dist/tests/warp-token-suite.js.map +1 -0
  186. package/dist/tx.d.ts +23 -0
  187. package/dist/tx.d.ts.map +1 -0
  188. package/dist/tx.js +43 -0
  189. package/dist/tx.js.map +1 -0
  190. package/dist/types.d.ts +50 -0
  191. package/dist/types.d.ts.map +1 -0
  192. package/dist/types.js +2 -0
  193. package/dist/types.js.map +1 -0
  194. package/dist/warp/collateral-token.d.ts +21 -0
  195. package/dist/warp/collateral-token.d.ts.map +1 -0
  196. package/dist/warp/collateral-token.js +129 -0
  197. package/dist/warp/collateral-token.js.map +1 -0
  198. package/dist/warp/native-token.d.ts +21 -0
  199. package/dist/warp/native-token.d.ts.map +1 -0
  200. package/dist/warp/native-token.js +99 -0
  201. package/dist/warp/native-token.js.map +1 -0
  202. package/dist/warp/synthetic-token.d.ts +21 -0
  203. package/dist/warp/synthetic-token.d.ts.map +1 -0
  204. package/dist/warp/synthetic-token.js +180 -0
  205. package/dist/warp/synthetic-token.js.map +1 -0
  206. package/dist/warp/types.d.ts +16 -0
  207. package/dist/warp/types.d.ts.map +1 -0
  208. package/dist/warp/types.js +2 -0
  209. package/dist/warp/types.js.map +1 -0
  210. package/dist/warp/warp-artifact-manager.d.ts +14 -0
  211. package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
  212. package/dist/warp/warp-artifact-manager.js +52 -0
  213. package/dist/warp/warp-artifact-manager.js.map +1 -0
  214. package/dist/warp/warp-query.d.ts +30 -0
  215. package/dist/warp/warp-query.d.ts.map +1 -0
  216. package/dist/warp/warp-query.js +66 -0
  217. package/dist/warp/warp-query.js.map +1 -0
  218. package/dist/warp/warp-tx.d.ts +64 -0
  219. package/dist/warp/warp-tx.d.ts.map +1 -0
  220. package/dist/warp/warp-tx.js +291 -0
  221. package/dist/warp/warp-tx.js.map +1 -0
  222. package/package.json +76 -0
@@ -0,0 +1,81 @@
1
+ import type { Address, ReadonlyUint8Array } from '@solana/kit';
2
+ import { type ByteCursor } from './binary.js';
3
+ export type H160 = Uint8Array;
4
+ export type H256 = Uint8Array;
5
+ export interface RemoteRouterConfig {
6
+ domain: number;
7
+ router: H256 | null;
8
+ }
9
+ export interface GasRouterConfig {
10
+ domain: number;
11
+ gas: bigint | null;
12
+ }
13
+ export interface VerifyInstruction {
14
+ metadata: Uint8Array;
15
+ message: Uint8Array;
16
+ }
17
+ export interface HandleInstruction {
18
+ origin: number;
19
+ sender: H256;
20
+ message: Uint8Array;
21
+ }
22
+ export interface ValidatorsAndThreshold {
23
+ validators: H160[];
24
+ threshold: number;
25
+ }
26
+ export interface Domained<T> {
27
+ domain: number;
28
+ data: T;
29
+ }
30
+ export declare enum InterchainGasPaymasterTypeKind {
31
+ Igp = 0,
32
+ OverheadIgp = 1
33
+ }
34
+ export interface InterchainGasPaymasterType {
35
+ kind: InterchainGasPaymasterTypeKind;
36
+ account: Address;
37
+ }
38
+ export interface RemoteGasData {
39
+ tokenExchangeRate: bigint;
40
+ gasPrice: bigint;
41
+ tokenDecimals: number;
42
+ }
43
+ export interface GasOracleRemoteGasData {
44
+ kind: 0;
45
+ value: RemoteGasData;
46
+ }
47
+ export type GasOracle = GasOracleRemoteGasData;
48
+ export interface GasOverheadConfig {
49
+ destinationDomain: number;
50
+ gasOverhead: bigint | null;
51
+ }
52
+ export interface GasOracleConfig {
53
+ domain: number;
54
+ gasOracle: GasOracle | null;
55
+ }
56
+ export declare function encodeH160(value: string | ReadonlyUint8Array): ReadonlyUint8Array;
57
+ export declare function encodeH256(value: string | ReadonlyUint8Array): ReadonlyUint8Array;
58
+ export declare function decodeH160(cursor: ByteCursor): H160;
59
+ export declare function decodeH256(cursor: ByteCursor): H256;
60
+ export declare function encodeVerifyInstruction(value: VerifyInstruction): Uint8Array;
61
+ export declare function decodeVerifyInstruction(cursor: ByteCursor): VerifyInstruction;
62
+ export declare function encodeHandleInstruction(value: HandleInstruction): Uint8Array;
63
+ export declare function decodeHandleInstruction(cursor: ByteCursor): HandleInstruction;
64
+ export declare function encodeRemoteRouterConfig(value: RemoteRouterConfig): Uint8Array;
65
+ export declare function encodeGasRouterConfig(value: GasRouterConfig): Uint8Array;
66
+ export declare function encodeValidatorsAndThreshold(value: ValidatorsAndThreshold): Uint8Array;
67
+ export declare function decodeValidatorsAndThreshold(cursor: ByteCursor): ValidatorsAndThreshold;
68
+ export declare function encodeDomainedValidatorsAndThreshold(value: Domained<ValidatorsAndThreshold>): Uint8Array;
69
+ export declare function decodeDomainedValidatorsAndThreshold(cursor: ByteCursor): Domained<ValidatorsAndThreshold>;
70
+ export declare function encodeInterchainGasPaymasterType(value: InterchainGasPaymasterType): Uint8Array;
71
+ export declare function decodeInterchainGasPaymasterType(cursor: ByteCursor): InterchainGasPaymasterType;
72
+ export declare function encodeGasOracle(value: GasOracle): Uint8Array;
73
+ export declare function decodeGasOracle(cursor: ByteCursor): GasOracle;
74
+ export declare function encodeGasOverheadConfig(value: GasOverheadConfig): Uint8Array;
75
+ export declare function encodeGasOracleConfig(value: GasOracleConfig): Uint8Array;
76
+ export declare function decodeMapU32U64(cursor: ByteCursor): Map<number, bigint>;
77
+ export declare function decodeMapU32H256(cursor: ByteCursor): Map<number, H256>;
78
+ export declare function decodeMapU32GasOracle(cursor: ByteCursor): Map<number, GasOracle>;
79
+ export declare function encodeMapU32H256(entries: Map<number, H256>): ReadonlyUint8Array;
80
+ export declare function encodeMapU32U64(entries: Map<number, bigint>): ReadonlyUint8Array;
81
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/codecs/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ import { assert } from '@hyperlane-xyz/utils';
2
+ import { addCodecSizePrefix, fixCodecSize, getAddressCodec, getArrayDecoder, getArrayEncoder, getBytesCodec, getNullableEncoder, getNullableCodec, getStructDecoder, getStructEncoder, getU128Codec, getU32Codec, getU64Codec, getU8Codec, } from '@solana/kit';
3
+ import { addressBytes, ensureLength, mapU32, u64le, } from './binary.js';
4
+ export var InterchainGasPaymasterTypeKind;
5
+ (function (InterchainGasPaymasterTypeKind) {
6
+ InterchainGasPaymasterTypeKind[InterchainGasPaymasterTypeKind["Igp"] = 0] = "Igp";
7
+ InterchainGasPaymasterTypeKind[InterchainGasPaymasterTypeKind["OverheadIgp"] = 1] = "OverheadIgp";
8
+ })(InterchainGasPaymasterTypeKind || (InterchainGasPaymasterTypeKind = {}));
9
+ const U8_CODEC = getU8Codec();
10
+ const U32_CODEC = getU32Codec();
11
+ const U64_CODEC = getU64Codec();
12
+ const U128_CODEC = getU128Codec();
13
+ const BYTES_CODEC = getBytesCodec();
14
+ const BYTES20_CODEC = fixCodecSize(BYTES_CODEC, 20);
15
+ const BYTES32_CODEC = fixCodecSize(BYTES_CODEC, 32);
16
+ const OPTIONAL_BYTES32_CODEC = getNullableCodec(BYTES32_CODEC);
17
+ const OPTIONAL_U64_CODEC = getNullableCodec(U64_CODEC);
18
+ const VEC_BYTES_CODEC = addCodecSizePrefix(BYTES_CODEC, U32_CODEC);
19
+ const VALIDATOR_ARRAY_ENCODER = getArrayEncoder(BYTES20_CODEC, {
20
+ size: U32_CODEC,
21
+ });
22
+ const VALIDATOR_ARRAY_DECODER = getArrayDecoder(BYTES20_CODEC, {
23
+ size: U32_CODEC,
24
+ });
25
+ // Separate encoder/decoder forms are kept to support asymmetric composition when needed.
26
+ const VERIFY_INSTRUCTION_ENCODER = getStructEncoder([
27
+ ['metadata', VEC_BYTES_CODEC],
28
+ ['message', VEC_BYTES_CODEC],
29
+ ]);
30
+ const VERIFY_INSTRUCTION_DECODER = getStructDecoder([
31
+ ['metadata', VEC_BYTES_CODEC],
32
+ ['message', VEC_BYTES_CODEC],
33
+ ]);
34
+ const HANDLE_INSTRUCTION_ENCODER = getStructEncoder([
35
+ ['origin', U32_CODEC],
36
+ ['sender', BYTES32_CODEC],
37
+ ['message', VEC_BYTES_CODEC],
38
+ ]);
39
+ const HANDLE_INSTRUCTION_DECODER = getStructDecoder([
40
+ ['origin', U32_CODEC],
41
+ ['sender', BYTES32_CODEC],
42
+ ['message', VEC_BYTES_CODEC],
43
+ ]);
44
+ const REMOTE_ROUTER_CONFIG_ENCODER = getStructEncoder([
45
+ ['domain', U32_CODEC],
46
+ ['router', OPTIONAL_BYTES32_CODEC],
47
+ ]);
48
+ const GAS_ROUTER_CONFIG_ENCODER = getStructEncoder([
49
+ ['domain', U32_CODEC],
50
+ ['gas', OPTIONAL_U64_CODEC],
51
+ ]);
52
+ const VALIDATORS_AND_THRESHOLD_ENCODER = getStructEncoder([
53
+ ['validators', VALIDATOR_ARRAY_ENCODER],
54
+ ['threshold', U8_CODEC],
55
+ ]);
56
+ const VALIDATORS_AND_THRESHOLD_DECODER = getStructDecoder([
57
+ ['validators', VALIDATOR_ARRAY_DECODER],
58
+ ['threshold', U8_CODEC],
59
+ ]);
60
+ const DOMAINED_VALIDATORS_AND_THRESHOLD_ENCODER = getStructEncoder([
61
+ ['domain', U32_CODEC],
62
+ ['data', VALIDATORS_AND_THRESHOLD_ENCODER],
63
+ ]);
64
+ const DOMAINED_VALIDATORS_AND_THRESHOLD_DECODER = getStructDecoder([
65
+ ['domain', U32_CODEC],
66
+ ['data', VALIDATORS_AND_THRESHOLD_DECODER],
67
+ ]);
68
+ const ADDRESS_CODEC = getAddressCodec();
69
+ const INTERCHAIN_GAS_PAYMASTER_TYPE_ENCODER = getStructEncoder([
70
+ ['kind', U8_CODEC],
71
+ ['account', ADDRESS_CODEC],
72
+ ]);
73
+ const INTERCHAIN_GAS_PAYMASTER_TYPE_DECODER = getStructDecoder([
74
+ ['kind', U8_CODEC],
75
+ ['account', ADDRESS_CODEC],
76
+ ]);
77
+ const GAS_ORACLE_INNER_ENCODER = getStructEncoder([
78
+ ['kind', U8_CODEC],
79
+ ['tokenExchangeRate', U128_CODEC],
80
+ ['gasPrice', U128_CODEC],
81
+ ['tokenDecimals', U8_CODEC],
82
+ ]);
83
+ const GAS_ORACLE_INNER_DECODER = getStructDecoder([
84
+ ['kind', U8_CODEC],
85
+ ['tokenExchangeRate', U128_CODEC],
86
+ ['gasPrice', U128_CODEC],
87
+ ['tokenDecimals', U8_CODEC],
88
+ ]);
89
+ const OPTIONAL_GAS_ORACLE_ENCODER = getNullableEncoder(GAS_ORACLE_INNER_ENCODER);
90
+ const GAS_OVERHEAD_CONFIG_ENCODER = getStructEncoder([
91
+ ['destinationDomain', U32_CODEC],
92
+ ['gasOverhead', OPTIONAL_U64_CODEC],
93
+ ]);
94
+ const GAS_ORACLE_CONFIG_ENCODER = getStructEncoder([
95
+ ['domain', U32_CODEC],
96
+ ['gasOracle', OPTIONAL_GAS_ORACLE_ENCODER],
97
+ ]);
98
+ export function encodeH160(value) {
99
+ return ensureLength(addressBytes(value), 20, 'H160');
100
+ }
101
+ export function encodeH256(value) {
102
+ return ensureLength(addressBytes(value), 32, 'H256');
103
+ }
104
+ export function decodeH160(cursor) {
105
+ return cursor.readBytes(20);
106
+ }
107
+ export function decodeH256(cursor) {
108
+ return cursor.readBytes(32);
109
+ }
110
+ export function encodeVerifyInstruction(value) {
111
+ return Uint8Array.from(VERIFY_INSTRUCTION_ENCODER.encode(value));
112
+ }
113
+ export function decodeVerifyInstruction(cursor) {
114
+ const decoded = cursor.readWithDecoder(VERIFY_INSTRUCTION_DECODER);
115
+ return {
116
+ metadata: Uint8Array.from(decoded.metadata),
117
+ message: Uint8Array.from(decoded.message),
118
+ };
119
+ }
120
+ export function encodeHandleInstruction(value) {
121
+ return Uint8Array.from(HANDLE_INSTRUCTION_ENCODER.encode(value));
122
+ }
123
+ export function decodeHandleInstruction(cursor) {
124
+ const decoded = cursor.readWithDecoder(HANDLE_INSTRUCTION_DECODER);
125
+ return {
126
+ origin: decoded.origin,
127
+ sender: Uint8Array.from(decoded.sender),
128
+ message: Uint8Array.from(decoded.message),
129
+ };
130
+ }
131
+ export function encodeRemoteRouterConfig(value) {
132
+ return Uint8Array.from(REMOTE_ROUTER_CONFIG_ENCODER.encode(value));
133
+ }
134
+ export function encodeGasRouterConfig(value) {
135
+ return Uint8Array.from(GAS_ROUTER_CONFIG_ENCODER.encode(value));
136
+ }
137
+ export function encodeValidatorsAndThreshold(value) {
138
+ return Uint8Array.from(VALIDATORS_AND_THRESHOLD_ENCODER.encode(value));
139
+ }
140
+ export function decodeValidatorsAndThreshold(cursor) {
141
+ const decoded = cursor.readWithDecoder(VALIDATORS_AND_THRESHOLD_DECODER);
142
+ return {
143
+ validators: decoded.validators.map((validator) => Uint8Array.from(validator)),
144
+ threshold: decoded.threshold,
145
+ };
146
+ }
147
+ export function encodeDomainedValidatorsAndThreshold(value) {
148
+ return Uint8Array.from(DOMAINED_VALIDATORS_AND_THRESHOLD_ENCODER.encode(value));
149
+ }
150
+ export function decodeDomainedValidatorsAndThreshold(cursor) {
151
+ const decoded = cursor.readWithDecoder(DOMAINED_VALIDATORS_AND_THRESHOLD_DECODER);
152
+ return {
153
+ domain: decoded.domain,
154
+ data: {
155
+ validators: decoded.data.validators.map((validator) => Uint8Array.from(validator)),
156
+ threshold: decoded.data.threshold,
157
+ },
158
+ };
159
+ }
160
+ export function encodeInterchainGasPaymasterType(value) {
161
+ return Uint8Array.from(INTERCHAIN_GAS_PAYMASTER_TYPE_ENCODER.encode(value));
162
+ }
163
+ export function decodeInterchainGasPaymasterType(cursor) {
164
+ const decoded = cursor.readWithDecoder(INTERCHAIN_GAS_PAYMASTER_TYPE_DECODER);
165
+ assert(decoded.kind === InterchainGasPaymasterTypeKind.Igp ||
166
+ decoded.kind === InterchainGasPaymasterTypeKind.OverheadIgp, `Unknown InterchainGasPaymasterType kind: ${decoded.kind}`);
167
+ return {
168
+ kind: decoded.kind,
169
+ account: decoded.account,
170
+ };
171
+ }
172
+ export function encodeGasOracle(value) {
173
+ return Uint8Array.from(GAS_ORACLE_INNER_ENCODER.encode({
174
+ kind: value.kind,
175
+ tokenExchangeRate: value.value.tokenExchangeRate,
176
+ gasPrice: value.value.gasPrice,
177
+ tokenDecimals: value.value.tokenDecimals,
178
+ }));
179
+ }
180
+ export function decodeGasOracle(cursor) {
181
+ const decoded = cursor.readWithDecoder(GAS_ORACLE_INNER_DECODER);
182
+ const kind = decoded.kind;
183
+ if (kind !== 0) {
184
+ throw new Error(`Unsupported gas oracle kind: ${kind}`);
185
+ }
186
+ return {
187
+ kind: 0,
188
+ value: {
189
+ tokenExchangeRate: decoded.tokenExchangeRate,
190
+ gasPrice: decoded.gasPrice,
191
+ tokenDecimals: decoded.tokenDecimals,
192
+ },
193
+ };
194
+ }
195
+ export function encodeGasOverheadConfig(value) {
196
+ return Uint8Array.from(GAS_OVERHEAD_CONFIG_ENCODER.encode(value));
197
+ }
198
+ export function encodeGasOracleConfig(value) {
199
+ return Uint8Array.from(GAS_ORACLE_CONFIG_ENCODER.encode({
200
+ domain: value.domain,
201
+ gasOracle: value.gasOracle
202
+ ? {
203
+ kind: value.gasOracle.kind,
204
+ tokenExchangeRate: value.gasOracle.value.tokenExchangeRate,
205
+ gasPrice: value.gasOracle.value.gasPrice,
206
+ tokenDecimals: value.gasOracle.value.tokenDecimals,
207
+ }
208
+ : null,
209
+ }));
210
+ }
211
+ export function decodeMapU32U64(cursor) {
212
+ const count = cursor.readU32LE();
213
+ const entries = new Map();
214
+ for (let i = 0; i < count; i += 1) {
215
+ entries.set(cursor.readU32LE(), cursor.readU64LE());
216
+ }
217
+ return entries;
218
+ }
219
+ export function decodeMapU32H256(cursor) {
220
+ const count = cursor.readU32LE();
221
+ const entries = new Map();
222
+ for (let i = 0; i < count; i += 1) {
223
+ entries.set(cursor.readU32LE(), cursor.readBytes(32));
224
+ }
225
+ return entries;
226
+ }
227
+ export function decodeMapU32GasOracle(cursor) {
228
+ const count = cursor.readU32LE();
229
+ const entries = new Map();
230
+ for (let i = 0; i < count; i += 1) {
231
+ entries.set(cursor.readU32LE(), decodeGasOracle(cursor));
232
+ }
233
+ return entries;
234
+ }
235
+ export function encodeMapU32H256(entries) {
236
+ return mapU32(entries, (v) => ensureLength(v, 32, 'H256'));
237
+ }
238
+ export function encodeMapU32U64(entries) {
239
+ return mapU32(entries, u64le);
240
+ }
241
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/codecs/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Address } from '@solana/kit';
2
+ export declare const PROGRAM_INSTRUCTION_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
3
+ export declare const SYSTEM_PROGRAM_ADDRESS: Address;
4
+ export declare const RENT_SYSVAR_ADDRESS: Address;
5
+ export declare const CLOCK_SYSVAR_ADDRESS: Address;
6
+ export declare const SPL_NOOP_PROGRAM_ADDRESS: Address;
7
+ export declare const LOADER_V3_PROGRAM_ADDRESS: Address;
8
+ export declare const MAX_ACCOUNT_DATA_SIZE = 10485760;
9
+ export declare const LAMPORTS_PER_SIGNATURE = 5000;
10
+ export declare const SPL_TOKEN_PROGRAM_ADDRESS: Address;
11
+ export declare const TOKEN_2022_PROGRAM_ADDRESS: Address;
12
+ export declare const METAPLEX_METADATA_PROGRAM_ADDRESS: Address;
13
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,iCAAiC,yBAE5C,CAAC;AAEH,eAAO,MAAM,sBAAsB,EACK,OAAO,CAAC;AAEhD,eAAO,MAAM,mBAAmB,EACmB,OAAO,CAAC;AAE3D,eAAO,MAAM,oBAAoB,EACkB,OAAO,CAAC;AAG3D,eAAO,MAAM,wBAAwB,EACc,OAAO,CAAC;AAE3D,eAAO,MAAM,yBAAyB,EACa,OAAO,CAAC;AAG3D,eAAO,MAAM,qBAAqB,WAAa,CAAC;AAIhD,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAG5C,eAAO,MAAM,yBAAyB,EACa,OAAO,CAAC;AAG3D,eAAO,MAAM,0BAA0B,EACY,OAAO,CAAC;AAG3D,eAAO,MAAM,iCAAiC,EACK,OAAO,CAAC"}
@@ -0,0 +1,21 @@
1
+ export const PROGRAM_INSTRUCTION_DISCRIMINATOR = new Uint8Array([
2
+ 1, 1, 1, 1, 1, 1, 1, 1,
3
+ ]);
4
+ export const SYSTEM_PROGRAM_ADDRESS = '11111111111111111111111111111111';
5
+ export const RENT_SYSVAR_ADDRESS = 'SysvarRent111111111111111111111111111111111';
6
+ export const CLOCK_SYSVAR_ADDRESS = 'SysvarC1ock11111111111111111111111111111111';
7
+ // Kept as literals to avoid adding a direct '@solana/sysvars' dependency here.
8
+ export const SPL_NOOP_PROGRAM_ADDRESS = 'noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV';
9
+ export const LOADER_V3_PROGRAM_ADDRESS = 'BPFLoaderUpgradeab1e11111111111111111111111';
10
+ // Solana hard limit on account data size.
11
+ export const MAX_ACCOUNT_DATA_SIZE = 10_485_760;
12
+ // Fixed base fee per signature on Solana.
13
+ // https://solana.com/docs/core/fees#base-fee
14
+ export const LAMPORTS_PER_SIGNATURE = 5_000;
15
+ // https://spl.solana.com/token
16
+ export const SPL_TOKEN_PROGRAM_ADDRESS = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA';
17
+ // https://spl.solana.com/token-2022
18
+ export const TOKEN_2022_PROGRAM_ADDRESS = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
19
+ // https://github.com/metaplex-foundation/mpl-token-metadata/blob/c314930196b6b16e1ba8fefdf206e9af7b0e4c37/programs/token-metadata/program/src/lib.rs#L25
20
+ export const METAPLEX_METADATA_PROGRAM_ADDRESS = 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s';
21
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,UAAU,CAAC;IAC9D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GACjC,kCAA6C,CAAC;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,6CAAwD,CAAC;AAE3D,MAAM,CAAC,MAAM,oBAAoB,GAC/B,6CAAwD,CAAC;AAC3D,+EAA+E;AAE/E,MAAM,CAAC,MAAM,wBAAwB,GACnC,6CAAwD,CAAC;AAE3D,MAAM,CAAC,MAAM,yBAAyB,GACpC,6CAAwD,CAAC;AAE3D,0CAA0C;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAEhD,0CAA0C;AAC1C,6CAA6C;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C,+BAA+B;AAC/B,MAAM,CAAC,MAAM,yBAAyB,GACpC,6CAAwD,CAAC;AAE3D,oCAAoC;AACpC,MAAM,CAAC,MAAM,0BAA0B,GACrC,6CAAwD,CAAC;AAE3D,yJAAyJ;AACzJ,MAAM,CAAC,MAAM,iCAAiC,GAC5C,6CAAwD,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { type Address, type Instruction, type TransactionSigner } from '@solana/kit';
2
+ import type { SvmReceipt, SvmRpc } from '../types.js';
3
+ export interface DeployProgramPlan {
4
+ programAddress: Address;
5
+ programDataAddress: Address;
6
+ stages: DeployStage[];
7
+ }
8
+ export interface DeployStage {
9
+ label: string;
10
+ instructions: Instruction[];
11
+ additionalSigners?: TransactionSigner[];
12
+ }
13
+ export interface DeployProgramPlanArgs {
14
+ payer: TransactionSigner;
15
+ authority?: TransactionSigner;
16
+ programBytes: Uint8Array;
17
+ getMinimumBalanceForRentExemption: (size: number) => Promise<bigint>;
18
+ writeChunkSize?: number;
19
+ maxDataLen?: bigint;
20
+ programSigner?: TransactionSigner;
21
+ bufferSigner?: TransactionSigner;
22
+ }
23
+ export interface ExecutePlanArgs {
24
+ plan: DeployProgramPlan;
25
+ executeStage: (stage: DeployStage) => Promise<SvmReceipt>;
26
+ }
27
+ export interface UpgradeProgramPlanArgs {
28
+ payer: TransactionSigner;
29
+ authority: TransactionSigner;
30
+ programAddress: Address;
31
+ newProgramBytes: Uint8Array;
32
+ getMinimumBalanceForRentExemption: (size: number) => Promise<bigint>;
33
+ writeChunkSize?: number;
34
+ bufferSigner?: TransactionSigner;
35
+ }
36
+ export declare function createDeployProgramPlan(args: DeployProgramPlanArgs): Promise<DeployProgramPlan>;
37
+ export declare function createUpgradeProgramPlan(args: UpgradeProgramPlanArgs): Promise<DeployProgramPlan>;
38
+ export declare function executeDeployPlan(args: ExecutePlanArgs): Promise<SvmReceipt[]>;
39
+ export declare function deriveProgramDataAddress(programAddress: Address): Promise<Address>;
40
+ /**
41
+ * Reads the BPF loader upgradeable ProgramData account to return the current
42
+ * upgrade authority, or null if the program is immutable or not found.
43
+ *
44
+ * ProgramData binary layout:
45
+ * [0-3] u32 discriminant (= 3)
46
+ * [4-11] u64 slot
47
+ * [12] u8 option tag (0 = None, 1 = Some)
48
+ * [13-44] [u8; 32] upgrade authority pubkey (only when tag = 1)
49
+ */
50
+ export declare function getProgramUpgradeAuthority(rpc: SvmRpc, programAddress: Address): Promise<Address | null>;
51
+ //# sourceMappingURL=program-deployer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-deployer.d.ts","sourceRoot":"","sources":["../../src/deploy/program-deployer.ts"],"names":[],"mappings":"AAOA,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAMrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMtD,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,iBAAiB,CAAC;IACzB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,YAAY,EAAE,UAAU,CAAC;IACzB,iCAAiC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,iBAAiB,CAAC;IACzB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,UAAU,CAAC;IAC5B,iCAAiC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAkF5B;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAoE5B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,UAAU,EAAE,CAAC,CAMvB;AAED,wBAAsB,wBAAwB,CAC5C,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAWzB"}
@@ -0,0 +1,176 @@
1
+ import { getDeployWithMaxDataLenInstruction, getInitializeBufferInstruction, getUpgradeInstruction, getWriteInstruction, } from '@solana-program/loader-v3';
2
+ import { getCreateAccountInstruction } from '@solana-program/system';
3
+ import { generateKeyPairSigner, getAddressCodec, getAddressDecoder, getProgramDerivedAddress, } from '@solana/kit';
4
+ import { assert } from '@hyperlane-xyz/utils';
5
+ import { LOADER_V3_PROGRAM_ADDRESS } from '../constants.js';
6
+ import { DEFAULT_WRITE_CHUNK_SIZE } from '../tx.js';
7
+ const ADDRESS_CODEC = getAddressCodec();
8
+ const BUFFER_METADATA_SIZE = 37;
9
+ const PROGRAM_ACCOUNT_SIZE = 36;
10
+ export async function createDeployProgramPlan(args) {
11
+ const authority = args.authority ?? args.payer;
12
+ const programSigner = args.programSigner ?? (await generateKeyPairSigner());
13
+ const bufferSigner = args.bufferSigner ?? (await generateKeyPairSigner());
14
+ const chunkSize = args.writeChunkSize ?? DEFAULT_WRITE_CHUNK_SIZE;
15
+ assert(chunkSize > 0, 'writeChunkSize must be positive');
16
+ const maxDataLen = args.maxDataLen ?? BigInt(args.programBytes.length * 2);
17
+ const bufferSize = BUFFER_METADATA_SIZE + args.programBytes.length;
18
+ const bufferRent = await args.getMinimumBalanceForRentExemption(bufferSize);
19
+ const programRent = await args.getMinimumBalanceForRentExemption(PROGRAM_ACCOUNT_SIZE);
20
+ const programDataAddress = await deriveProgramDataAddress(programSigner.address);
21
+ const createBufferInstruction = getCreateAccountInstruction({
22
+ payer: args.payer,
23
+ newAccount: bufferSigner,
24
+ lamports: bufferRent,
25
+ space: BigInt(bufferSize),
26
+ programAddress: LOADER_V3_PROGRAM_ADDRESS,
27
+ });
28
+ const initializeBufferInstruction = getInitializeBufferInstruction({
29
+ sourceAccount: bufferSigner.address,
30
+ bufferAuthority: authority.address,
31
+ });
32
+ const stages = [
33
+ {
34
+ label: 'create-and-init-buffer',
35
+ instructions: [createBufferInstruction, initializeBufferInstruction],
36
+ additionalSigners: [bufferSigner],
37
+ },
38
+ ];
39
+ for (let offset = 0; offset < args.programBytes.length; offset += chunkSize) {
40
+ const bytes = args.programBytes.slice(offset, offset + chunkSize);
41
+ stages.push({
42
+ label: `write-${offset}`,
43
+ instructions: [
44
+ getWriteInstruction({
45
+ bufferAccount: bufferSigner.address,
46
+ bufferAuthority: authority,
47
+ offset,
48
+ bytes,
49
+ }),
50
+ ],
51
+ });
52
+ }
53
+ const createProgramInstruction = getCreateAccountInstruction({
54
+ payer: args.payer,
55
+ newAccount: programSigner,
56
+ lamports: programRent,
57
+ space: BigInt(PROGRAM_ACCOUNT_SIZE),
58
+ programAddress: LOADER_V3_PROGRAM_ADDRESS,
59
+ });
60
+ const deployInstruction = getDeployWithMaxDataLenInstruction({
61
+ payerAccount: args.payer,
62
+ programDataAccount: programDataAddress,
63
+ programAccount: programSigner.address,
64
+ bufferAccount: bufferSigner.address,
65
+ authority,
66
+ maxDataLen,
67
+ });
68
+ stages.push({
69
+ label: 'create-and-deploy-program',
70
+ instructions: [createProgramInstruction, deployInstruction],
71
+ additionalSigners: [programSigner],
72
+ });
73
+ return {
74
+ programAddress: programSigner.address,
75
+ programDataAddress,
76
+ stages,
77
+ };
78
+ }
79
+ export async function createUpgradeProgramPlan(args) {
80
+ const bufferSigner = args.bufferSigner ?? (await generateKeyPairSigner());
81
+ const chunkSize = args.writeChunkSize ?? DEFAULT_WRITE_CHUNK_SIZE;
82
+ assert(chunkSize > 0, 'writeChunkSize must be positive');
83
+ const bufferSize = BUFFER_METADATA_SIZE + args.newProgramBytes.length;
84
+ const bufferRent = await args.getMinimumBalanceForRentExemption(bufferSize);
85
+ const programDataAddress = await deriveProgramDataAddress(args.programAddress);
86
+ const stages = [
87
+ {
88
+ label: 'create-and-init-buffer',
89
+ instructions: [
90
+ getCreateAccountInstruction({
91
+ payer: args.payer,
92
+ newAccount: bufferSigner,
93
+ lamports: bufferRent,
94
+ space: BigInt(bufferSize),
95
+ programAddress: LOADER_V3_PROGRAM_ADDRESS,
96
+ }),
97
+ getInitializeBufferInstruction({
98
+ sourceAccount: bufferSigner.address,
99
+ bufferAuthority: args.authority.address,
100
+ }),
101
+ ],
102
+ additionalSigners: [bufferSigner],
103
+ },
104
+ ];
105
+ for (let offset = 0; offset < args.newProgramBytes.length; offset += chunkSize) {
106
+ const bytes = args.newProgramBytes.slice(offset, offset + chunkSize);
107
+ stages.push({
108
+ label: `write-${offset}`,
109
+ instructions: [
110
+ getWriteInstruction({
111
+ bufferAccount: bufferSigner.address,
112
+ bufferAuthority: args.authority,
113
+ offset,
114
+ bytes,
115
+ }),
116
+ ],
117
+ });
118
+ }
119
+ stages.push({
120
+ label: 'upgrade-program',
121
+ instructions: [
122
+ getUpgradeInstruction({
123
+ programDataAccount: programDataAddress,
124
+ programAccount: args.programAddress,
125
+ bufferAccount: bufferSigner.address,
126
+ spillAccount: args.payer.address,
127
+ authority: args.authority,
128
+ }),
129
+ ],
130
+ });
131
+ return {
132
+ programAddress: args.programAddress,
133
+ programDataAddress,
134
+ stages,
135
+ };
136
+ }
137
+ export async function executeDeployPlan(args) {
138
+ const receipts = [];
139
+ for (const stage of args.plan.stages) {
140
+ receipts.push(await args.executeStage(stage));
141
+ }
142
+ return receipts;
143
+ }
144
+ export async function deriveProgramDataAddress(programAddress) {
145
+ const pda = await getProgramDerivedAddress({
146
+ programAddress: LOADER_V3_PROGRAM_ADDRESS,
147
+ seeds: [ADDRESS_CODEC.encode(programAddress)],
148
+ });
149
+ return pda[0];
150
+ }
151
+ /**
152
+ * Reads the BPF loader upgradeable ProgramData account to return the current
153
+ * upgrade authority, or null if the program is immutable or not found.
154
+ *
155
+ * ProgramData binary layout:
156
+ * [0-3] u32 discriminant (= 3)
157
+ * [4-11] u64 slot
158
+ * [12] u8 option tag (0 = None, 1 = Some)
159
+ * [13-44] [u8; 32] upgrade authority pubkey (only when tag = 1)
160
+ */
161
+ export async function getProgramUpgradeAuthority(rpc, programAddress) {
162
+ const programDataAddress = await deriveProgramDataAddress(programAddress);
163
+ const account = await rpc
164
+ .getAccountInfo(programDataAddress, { encoding: 'base64' })
165
+ .send();
166
+ if (!account.value)
167
+ return null;
168
+ const data = Buffer.from(account.value.data[0], 'base64');
169
+ if (data.length < 45)
170
+ return null;
171
+ const hasAuthority = data[12] === 1;
172
+ if (!hasAuthority)
173
+ return null;
174
+ return getAddressDecoder().decode(data.slice(13, 45));
175
+ }
176
+ //# sourceMappingURL=program-deployer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-deployer.js","sourceRoot":"","sources":["../../src/deploy/program-deployer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,8BAA8B,EAC9B,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GAIzB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGpD,MAAM,aAAa,GAAG,eAAe,EAAE,CAAC;AACxC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAwChC,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAA2B;IAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC;IAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,IAAI,wBAAwB,CAAC;IAClE,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,iCAAiC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE3E,MAAM,UAAU,GAAG,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IACnE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,UAAU,CAAC,CAAC;IAC5E,MAAM,WAAW,GACf,MAAM,IAAI,CAAC,iCAAiC,CAAC,oBAAoB,CAAC,CAAC;IAErE,MAAM,kBAAkB,GAAG,MAAM,wBAAwB,CACvD,aAAa,CAAC,OAAO,CACtB,CAAC;IAEF,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;QAC1D,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;QACzB,cAAc,EAAE,yBAAyB;KAC1C,CAAC,CAAC;IAEH,MAAM,2BAA2B,GAAG,8BAA8B,CAAC;QACjE,aAAa,EAAE,YAAY,CAAC,OAAO;QACnC,eAAe,EAAE,SAAS,CAAC,OAAO;KACnC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAkB;QAC5B;YACE,KAAK,EAAE,wBAAwB;YAC/B,YAAY,EAAE,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;YACpE,iBAAiB,EAAE,CAAC,YAAY,CAAC;SAClC;KACF,CAAC;IAEF,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,SAAS,MAAM,EAAE;YACxB,YAAY,EAAE;gBACZ,mBAAmB,CAAC;oBAClB,aAAa,EAAE,YAAY,CAAC,OAAO;oBACnC,eAAe,EAAE,SAAS;oBAC1B,MAAM;oBACN,KAAK;iBACN,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;QAC3D,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,aAAa;QACzB,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,MAAM,CAAC,oBAAoB,CAAC;QACnC,cAAc,EAAE,yBAAyB;KAC1C,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,kCAAkC,CAAC;QAC3D,YAAY,EAAE,IAAI,CAAC,KAAK;QACxB,kBAAkB,EAAE,kBAAkB;QACtC,cAAc,EAAE,aAAa,CAAC,OAAO;QACrC,aAAa,EAAE,YAAY,CAAC,OAAO;QACnC,SAAS;QACT,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC;QACV,KAAK,EAAE,2BAA2B;QAClC,YAAY,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,CAAC;QAC3D,iBAAiB,EAAE,CAAC,aAAa,CAAC;KACnC,CAAC,CAAC;IAEH,OAAO;QACL,cAAc,EAAE,aAAa,CAAC,OAAO;QACrC,kBAAkB;QAClB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAA4B;IAE5B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,IAAI,wBAAwB,CAAC;IAClE,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,iCAAiC,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,UAAU,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,MAAM,wBAAwB,CACvD,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,MAAM,MAAM,GAAkB;QAC5B;YACE,KAAK,EAAE,wBAAwB;YAC/B,YAAY,EAAE;gBACZ,2BAA2B,CAAC;oBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,YAAY;oBACxB,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;oBACzB,cAAc,EAAE,yBAAyB;iBAC1C,CAAC;gBACF,8BAA8B,CAAC;oBAC7B,aAAa,EAAE,YAAY,CAAC,OAAO;oBACnC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;iBACxC,CAAC;aACH;YACD,iBAAiB,EAAE,CAAC,YAAY,CAAC;SAClC;KACF,CAAC;IAEF,KACE,IAAI,MAAM,GAAG,CAAC,EACd,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EACpC,MAAM,IAAI,SAAS,EACnB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,SAAS,MAAM,EAAE;YACxB,YAAY,EAAE;gBACZ,mBAAmB,CAAC;oBAClB,aAAa,EAAE,YAAY,CAAC,OAAO;oBACnC,eAAe,EAAE,IAAI,CAAC,SAAS;oBAC/B,MAAM;oBACN,KAAK;iBACN,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;QACV,KAAK,EAAE,iBAAiB;QACxB,YAAY,EAAE;YACZ,qBAAqB,CAAC;gBACpB,kBAAkB,EAAE,kBAAkB;gBACtC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,aAAa,EAAE,YAAY,CAAC,OAAO;gBACnC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAChC,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;SACH;KACF,CAAC,CAAC;IAEH,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,kBAAkB;QAClB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAqB;IAErB,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,cAAuB;IAEvB,MAAM,GAAG,GAAG,MAAM,wBAAwB,CAAC;QACzC,cAAc,EAAE,yBAAyB;QACzC,KAAK,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KAC9C,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAW,EACX,cAAuB;IAEvB,MAAM,kBAAkB,GAAG,MAAM,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,MAAM,GAAG;SACtB,cAAc,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;SAC1D,IAAI,EAAE,CAAC;IACV,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAW,EAAE,QAAQ,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Address } from '@solana/kit';
2
+ import type { SvmSigner } from '../clients/signer.js';
3
+ import type { SvmProgramTarget, SvmReceipt, SvmRpc } from '../types.js';
4
+ export interface ResolvedProgram {
5
+ programAddress: Address;
6
+ receipts: SvmReceipt[];
7
+ }
8
+ export declare function resolveProgram(target: SvmProgramTarget, signer: SvmSigner, rpc: SvmRpc, useExactDataLen?: boolean): Promise<ResolvedProgram>;
9
+ //# sourceMappingURL=resolve-program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-program.d.ts","sourceRoot":"","sources":["../../src/deploy/resolve-program.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQxE,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,eAAe,CAAC,CA0B1B"}