@suzaku-network/suzaku-cli 1.0.2

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 (194) hide show
  1. package/LICENSE +96 -0
  2. package/README.md +1080 -0
  3. package/bin/cli.js +3 -0
  4. package/defaults/.env.anvil +4 -0
  5. package/defaults/.env.dexalot +7 -0
  6. package/defaults/.env.fuji +4 -0
  7. package/defaults/.env.kiteai +2 -0
  8. package/defaults/.env.mainnet +4 -0
  9. package/defaults/.env.template +10 -0
  10. package/dist/abis/AccessControl.d.ts +176 -0
  11. package/dist/abis/AccessControl.js +230 -0
  12. package/dist/abis/AccessControl.js.map +1 -0
  13. package/dist/abis/BalancerValidatorManager.d.ts +1121 -0
  14. package/dist/abis/BalancerValidatorManager.js +1469 -0
  15. package/dist/abis/BalancerValidatorManager.js.map +1 -0
  16. package/dist/abis/DefaultCollateral.d.ts +620 -0
  17. package/dist/abis/DefaultCollateral.js +811 -0
  18. package/dist/abis/DefaultCollateral.js.map +1 -0
  19. package/dist/abis/ERC20.d.ts +635 -0
  20. package/dist/abis/ERC20.js +831 -0
  21. package/dist/abis/ERC20.js.map +1 -0
  22. package/dist/abis/IWarpMessenger.d.ts +104 -0
  23. package/dist/abis/IWarpMessenger.js +139 -0
  24. package/dist/abis/IWarpMessenger.js.map +1 -0
  25. package/dist/abis/KiteStakingManager.d.ts +1459 -0
  26. package/dist/abis/KiteStakingManager.js +1886 -0
  27. package/dist/abis/KiteStakingManager.js.map +1 -0
  28. package/dist/abis/L1Middleware.d.ts +1712 -0
  29. package/dist/abis/L1Middleware.js +2242 -0
  30. package/dist/abis/L1Middleware.js.map +1 -0
  31. package/dist/abis/L1Registry.d.ts +415 -0
  32. package/dist/abis/L1Registry.js +544 -0
  33. package/dist/abis/L1Registry.js.map +1 -0
  34. package/dist/abis/L1RestakeDelegator.d.ts +865 -0
  35. package/dist/abis/L1RestakeDelegator.js +1118 -0
  36. package/dist/abis/L1RestakeDelegator.js.map +1 -0
  37. package/dist/abis/OperatorL1OptInService.d.ts +288 -0
  38. package/dist/abis/OperatorL1OptInService.js +374 -0
  39. package/dist/abis/OperatorL1OptInService.js.map +1 -0
  40. package/dist/abis/OperatorRegistry.d.ts +125 -0
  41. package/dist/abis/OperatorRegistry.js +166 -0
  42. package/dist/abis/OperatorRegistry.js.map +1 -0
  43. package/dist/abis/OperatorVaultOptInService.d.ts +288 -0
  44. package/dist/abis/OperatorVaultOptInService.js +374 -0
  45. package/dist/abis/OperatorVaultOptInService.js.map +1 -0
  46. package/dist/abis/Ownable.d.ts +59 -0
  47. package/dist/abis/Ownable.js +79 -0
  48. package/dist/abis/Ownable.js.map +1 -0
  49. package/dist/abis/PoASecurityModule.d.ts +225 -0
  50. package/dist/abis/PoASecurityModule.js +299 -0
  51. package/dist/abis/PoASecurityModule.js.map +1 -0
  52. package/dist/abis/RewardsNativeToken.d.ts +1334 -0
  53. package/dist/abis/RewardsNativeToken.js +1749 -0
  54. package/dist/abis/RewardsNativeToken.js.map +1 -0
  55. package/dist/abis/StakingVault.d.ts +2913 -0
  56. package/dist/abis/StakingVault.js +3780 -0
  57. package/dist/abis/StakingVault.js.map +1 -0
  58. package/dist/abis/StakingVaultOperations.d.ts +980 -0
  59. package/dist/abis/StakingVaultOperations.js +1270 -0
  60. package/dist/abis/StakingVaultOperations.js.map +1 -0
  61. package/dist/abis/UptimeTracker.d.ts +300 -0
  62. package/dist/abis/UptimeTracker.js +397 -0
  63. package/dist/abis/UptimeTracker.js.map +1 -0
  64. package/dist/abis/ValidatorManager.d.ts +842 -0
  65. package/dist/abis/ValidatorManager.js +1101 -0
  66. package/dist/abis/ValidatorManager.js.map +1 -0
  67. package/dist/abis/VaultFactory.d.ts +288 -0
  68. package/dist/abis/VaultFactory.js +378 -0
  69. package/dist/abis/VaultFactory.js.map +1 -0
  70. package/dist/abis/VaultManager.d.ts +519 -0
  71. package/dist/abis/VaultManager.js +678 -0
  72. package/dist/abis/VaultManager.js.map +1 -0
  73. package/dist/abis/VaultTokenized.d.ts +1626 -0
  74. package/dist/abis/VaultTokenized.js +2114 -0
  75. package/dist/abis/VaultTokenized.js.map +1 -0
  76. package/dist/abis/abi-selectors.json +700 -0
  77. package/dist/abis/index.d.ts +18356 -0
  78. package/dist/abis/index.js +58 -0
  79. package/dist/abis/index.js.map +1 -0
  80. package/dist/accessControl.d.ts +15 -0
  81. package/dist/accessControl.js +36 -0
  82. package/dist/accessControl.js.map +1 -0
  83. package/dist/balancer.d.ts +25 -0
  84. package/dist/balancer.js +42 -0
  85. package/dist/balancer.js.map +1 -0
  86. package/dist/cli.d.mts +1 -0
  87. package/dist/cli.d.ts +2 -0
  88. package/dist/cli.js +3183 -0
  89. package/dist/cli.js.map +1 -0
  90. package/dist/cli.mjs +31343 -0
  91. package/dist/cli.mjs.map +1 -0
  92. package/dist/client.d.ts +34 -0
  93. package/dist/client.js +76 -0
  94. package/dist/client.js.map +1 -0
  95. package/dist/config.d.ts +10 -0
  96. package/dist/config.js +63 -0
  97. package/dist/config.js.map +1 -0
  98. package/dist/delegator.d.ts +4 -0
  99. package/dist/delegator.js +16 -0
  100. package/dist/delegator.js.map +1 -0
  101. package/dist/index.d.mts +19770 -0
  102. package/dist/index.d.ts +7 -0
  103. package/dist/index.js +24 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/index.mjs +27451 -0
  106. package/dist/index.mjs.map +1 -0
  107. package/dist/keyStore.d.ts +3 -0
  108. package/dist/keyStore.js +105 -0
  109. package/dist/keyStore.js.map +1 -0
  110. package/dist/kiteStaking.d.ts +91 -0
  111. package/dist/kiteStaking.js +731 -0
  112. package/dist/kiteStaking.js.map +1 -0
  113. package/dist/l1.d.ts +5 -0
  114. package/dist/l1.js +22 -0
  115. package/dist/l1.js.map +1 -0
  116. package/dist/lib/autoCompletion.d.ts +3 -0
  117. package/dist/lib/autoCompletion.js +55 -0
  118. package/dist/lib/autoCompletion.js.map +1 -0
  119. package/dist/lib/cChainUtils.d.ts +42 -0
  120. package/dist/lib/cChainUtils.js +271 -0
  121. package/dist/lib/cChainUtils.js.map +1 -0
  122. package/dist/lib/castUtils.d.ts +18 -0
  123. package/dist/lib/castUtils.js +81 -0
  124. package/dist/lib/castUtils.js.map +1 -0
  125. package/dist/lib/chainList.d.ts +5 -0
  126. package/dist/lib/chainList.js +86 -0
  127. package/dist/lib/chainList.js.map +1 -0
  128. package/dist/lib/cliParser.d.ts +27 -0
  129. package/dist/lib/cliParser.js +167 -0
  130. package/dist/lib/cliParser.js.map +1 -0
  131. package/dist/lib/commandUtils.d.ts +13 -0
  132. package/dist/lib/commandUtils.js +38 -0
  133. package/dist/lib/commandUtils.js.map +1 -0
  134. package/dist/lib/coreWalletUtils.d.ts +3 -0
  135. package/dist/lib/coreWalletUtils.js +74 -0
  136. package/dist/lib/coreWalletUtils.js.map +1 -0
  137. package/dist/lib/justification.d.ts +90 -0
  138. package/dist/lib/justification.js +577 -0
  139. package/dist/lib/justification.js.map +1 -0
  140. package/dist/lib/ledgerUtils.d.ts +4 -0
  141. package/dist/lib/ledgerUtils.js +258 -0
  142. package/dist/lib/ledgerUtils.js.map +1 -0
  143. package/dist/lib/logger.d.ts +46 -0
  144. package/dist/lib/logger.js +226 -0
  145. package/dist/lib/logger.js.map +1 -0
  146. package/dist/lib/pChainUtils.d.ts +128 -0
  147. package/dist/lib/pChainUtils.js +436 -0
  148. package/dist/lib/pChainUtils.js.map +1 -0
  149. package/dist/lib/pass.d.ts +81 -0
  150. package/dist/lib/pass.js +353 -0
  151. package/dist/lib/pass.js.map +1 -0
  152. package/dist/lib/safeUtils.d.ts +25 -0
  153. package/dist/lib/safeUtils.js +93 -0
  154. package/dist/lib/safeUtils.js.map +1 -0
  155. package/dist/lib/transferUtils.d.ts +643 -0
  156. package/dist/lib/transferUtils.js +141 -0
  157. package/dist/lib/transferUtils.js.map +1 -0
  158. package/dist/lib/utils.d.ts +28 -0
  159. package/dist/lib/utils.js +166 -0
  160. package/dist/lib/utils.js.map +1 -0
  161. package/dist/lib/viemUtils.d.ts +80 -0
  162. package/dist/lib/viemUtils.js +317 -0
  163. package/dist/lib/viemUtils.js.map +1 -0
  164. package/dist/lib/warpUtils.d.ts +76 -0
  165. package/dist/lib/warpUtils.js +448 -0
  166. package/dist/lib/warpUtils.js.map +1 -0
  167. package/dist/middleware.d.ts +75 -0
  168. package/dist/middleware.js +430 -0
  169. package/dist/middleware.js.map +1 -0
  170. package/dist/operator.d.ts +4 -0
  171. package/dist/operator.js +22 -0
  172. package/dist/operator.js.map +1 -0
  173. package/dist/operatorOptIn.d.ts +8 -0
  174. package/dist/operatorOptIn.js +39 -0
  175. package/dist/operatorOptIn.js.map +1 -0
  176. package/dist/rewards.d.ts +116 -0
  177. package/dist/rewards.js +244 -0
  178. package/dist/rewards.js.map +1 -0
  179. package/dist/securityModule.d.ts +8 -0
  180. package/dist/securityModule.js +305 -0
  181. package/dist/securityModule.js.map +1 -0
  182. package/dist/stakingVault.d.ts +184 -0
  183. package/dist/stakingVault.js +1224 -0
  184. package/dist/stakingVault.js.map +1 -0
  185. package/dist/uptime.d.ts +54 -0
  186. package/dist/uptime.js +246 -0
  187. package/dist/uptime.js.map +1 -0
  188. package/dist/vault.d.ts +16 -0
  189. package/dist/vault.js +131 -0
  190. package/dist/vault.js.map +1 -0
  191. package/dist/vaultManager.d.ts +8 -0
  192. package/dist/vaultManager.js +40 -0
  193. package/dist/vaultManager.js.map +1 -0
  194. package/package.json +62 -0
@@ -0,0 +1,128 @@
1
+ import { pvm, UnsignedTx, networkIDs } from "@avalabs/avalanchejs";
2
+ import { NodeId } from "./utils";
3
+ import { ExtendedClient, ExtendedWalletClient } from "../client";
4
+ import { Hex } from "viem";
5
+ import { Result } from "@mobily/ts-belt";
6
+ export type GetValidatorAtObject = {
7
+ [nodeId: string]: {
8
+ publicKey: string;
9
+ weight: bigint;
10
+ };
11
+ };
12
+ export interface PChainBaseParams {
13
+ client: ExtendedWalletClient;
14
+ }
15
+ export interface CreateChainParams extends PChainBaseParams {
16
+ chainName: string;
17
+ subnetId: string;
18
+ genesisData: string;
19
+ SubnetEVMId?: string;
20
+ }
21
+ export interface ConvertToL1Params extends PChainBaseParams {
22
+ subnetId: string;
23
+ chainId: string;
24
+ managerAddress: Hex;
25
+ validators: {
26
+ nodeID: string;
27
+ blsPublicKey: string;
28
+ blsProofOfPossession: string;
29
+ weight: number;
30
+ balance: number;
31
+ }[];
32
+ }
33
+ export interface RegisterL1ValidatorParams extends PChainBaseParams {
34
+ blsProofOfPossession: string;
35
+ signedMessage: string;
36
+ initialBalance: bigint;
37
+ }
38
+ export interface RemoveL1ValidatorParams extends PChainBaseParams {
39
+ validationID: string;
40
+ }
41
+ export interface SetValidatorWeightParams extends PChainBaseParams {
42
+ validationID: string;
43
+ message: string;
44
+ }
45
+ export type ExtractWarpMessageFromTxParams = {
46
+ txId: string;
47
+ };
48
+ interface AddressObject {
49
+ threshold: number;
50
+ addresses: string[];
51
+ }
52
+ interface ValidatorSigner {
53
+ publicKey: string;
54
+ proofOfPossession: string;
55
+ }
56
+ interface Validator {
57
+ nodeID: string;
58
+ weight: number;
59
+ balance: number;
60
+ signer: ValidatorSigner;
61
+ remainingBalanceOwner: AddressObject;
62
+ deactivationOwner: AddressObject;
63
+ }
64
+ export type ExtractWarpMessageFromTxResponse = {
65
+ message: Hex;
66
+ justification: Hex;
67
+ subnetId: string;
68
+ signingSubnetId: string;
69
+ networkId: typeof networkIDs.FujiID | typeof networkIDs.MainnetID;
70
+ validators: Validator[];
71
+ chainId: string;
72
+ managerAddress: Hex;
73
+ };
74
+ type InitializeValidatorSetArgs = [{
75
+ subnetID: `0x${string}`;
76
+ validatorManagerBlockchainID: `0x${string}`;
77
+ validatorManagerAddress: `0x${string}`;
78
+ initialValidators: readonly {
79
+ nodeID: `0x${string}`;
80
+ blsPublicKey: `0x${string}`;
81
+ weight: bigint;
82
+ }[];
83
+ }, number];
84
+ export declare function add0x(hex: string): string;
85
+ export declare const getRPCEndpoint: (client: ExtendedClient) => string;
86
+ export declare const getPchainBaseUrl: (client: ExtendedClient) => string;
87
+ export declare function addSigToAllCreds(unsignedTx: UnsignedTx, client: ExtendedWalletClient, cChain?: boolean): Promise<void>;
88
+ export declare function createSubnet(params: PChainBaseParams): Promise<Hex>;
89
+ export declare function createChain(params: CreateChainParams): Promise<Hex>;
90
+ export declare function convertToL1(params: ConvertToL1Params): Promise<Hex>;
91
+ export declare function registerL1Validator(params: RegisterL1ValidatorParams): Promise<Result<Hex, string>>;
92
+ export declare function removeL1Validator(params: RemoveL1ValidatorParams): Promise<Result<string, string>>;
93
+ export type ValidatorsResponsePatched = (pvm.GetCurrentValidatorsResponse['validators'][number] & {
94
+ balance?: number;
95
+ validationID?: string;
96
+ })[];
97
+ export declare function getCurrentValidators(client: ExtendedClient, subnetId: string): Promise<ValidatorsResponsePatched>;
98
+ export declare function getValidatorsAt(client: ExtendedClient, subnetId: string): Promise<GetValidatorAtObject>;
99
+ export declare function validates(client: ExtendedClient, subnetId: string): Promise<string | undefined>;
100
+ export declare function validatedBy(client: ExtendedClient, blockchainId: string): Promise<string | undefined>;
101
+ export declare function setValidatorWeight(params: SetValidatorWeightParams): Promise<Result<string, string>>;
102
+ export declare function increasePChainValidatorBalance(client: ExtendedWalletClient, amount: number, validationId: string, check?: boolean): Promise<Result<Hex, string>>;
103
+ export declare function waitPChainTx(txID: string, pvmApi: pvm.PVMApi, pollingInterval?: number, retryCount?: number): Promise<void>;
104
+ export declare function extractWarpMessageFromPChainTx(subnetId: string, txId: string, client: ExtendedClient): Promise<ExtractWarpMessageFromTxResponse>;
105
+ export default interface NodeConfig {
106
+ nodeID: NodeId;
107
+ blsPublicKey: Hex;
108
+ blsProofOfPossession: Hex;
109
+ weight: number;
110
+ balance: number;
111
+ }
112
+ export declare function convertSubnetToL1(params: {
113
+ subnetId: string;
114
+ chainId: string;
115
+ validatorManager: Hex;
116
+ client: ExtendedWalletClient;
117
+ validators: NodeConfig[];
118
+ validatorManagerBlockchainID: string;
119
+ convertTx?: Hex;
120
+ init?: boolean;
121
+ churnPeriodSeconds?: bigint;
122
+ maximumChurnPercentage?: number;
123
+ }): Promise<{
124
+ txHash: `0x${string}`;
125
+ }>;
126
+ export declare function getValidatorManagerInitializationArgsFromWarpTx(conversionTxID: string, subnetId: string, client: ExtendedClient): Promise<InitializeValidatorSetArgs>;
127
+ export declare function issueSignedTx(pvmApi: pvm.PVMApi, tx: UnsignedTx, testnet?: boolean): Promise<Result<Hex, string>>;
128
+ export {};
@@ -0,0 +1,436 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPchainBaseUrl = exports.getRPCEndpoint = void 0;
4
+ exports.add0x = add0x;
5
+ exports.addSigToAllCreds = addSigToAllCreds;
6
+ exports.createSubnet = createSubnet;
7
+ exports.createChain = createChain;
8
+ exports.convertToL1 = convertToL1;
9
+ exports.registerL1Validator = registerL1Validator;
10
+ exports.removeL1Validator = removeL1Validator;
11
+ exports.getCurrentValidators = getCurrentValidators;
12
+ exports.getValidatorsAt = getValidatorsAt;
13
+ exports.validates = validates;
14
+ exports.validatedBy = validatedBy;
15
+ exports.setValidatorWeight = setValidatorWeight;
16
+ exports.increasePChainValidatorBalance = increasePChainValidatorBalance;
17
+ exports.waitPChainTx = waitPChainTx;
18
+ exports.extractWarpMessageFromPChainTx = extractWarpMessageFromPChainTx;
19
+ exports.convertSubnetToL1 = convertSubnetToL1;
20
+ exports.getValidatorManagerInitializationArgsFromWarpTx = getValidatorManagerInitializationArgsFromWarpTx;
21
+ exports.issueSignedTx = issueSignedTx;
22
+ const avalanchejs_1 = require("@avalabs/avalanchejs");
23
+ const utils_1 = require("./utils");
24
+ const transferUtils_1 = require("./transferUtils");
25
+ const viem_1 = require("viem");
26
+ const warpUtils_1 = require("./warpUtils");
27
+ const castUtils_1 = require("./castUtils");
28
+ const console_log_colors_1 = require("console-log-colors");
29
+ const ts_belt_1 = require("@mobily/ts-belt");
30
+ const logger_1 = require("./logger");
31
+ const sha2_1 = require("@noble/hashes/sha2");
32
+ const chains_1 = require("viem/chains");
33
+ const config_1 = require("../config");
34
+ function add0x(hex) {
35
+ return /^0x/i.test(hex) ? hex : `0x${hex}`;
36
+ }
37
+ const getRPCEndpoint = (client) => {
38
+ const url = new URL(client.chain.rpcUrls.default.http[0]);
39
+ return `${url.protocol}//${url.host}`;
40
+ };
41
+ exports.getRPCEndpoint = getRPCEndpoint;
42
+ const getPchainBaseUrl = (client) => {
43
+ const url = new URL(client.network === 'fuji' ? chains_1.avalancheFuji.rpcUrls.default.http[0] : chains_1.avalanche.rpcUrls.default.http[0]);
44
+ return `${url.protocol}//${url.host}`;
45
+ };
46
+ exports.getPchainBaseUrl = getPchainBaseUrl;
47
+ async function addSigToAllCreds(unsignedTx, client, cChain = false) {
48
+ const unsignedBytes = unsignedTx.toBytes();
49
+ const hash = '0x' + Buffer.from((0, sha2_1.sha256)(unsignedBytes)).toString('hex');
50
+ // Bypass EIP-193
51
+ let signer;
52
+ if (client.account.cSign && cChain) {
53
+ signer = client.account.cSign;
54
+ }
55
+ else {
56
+ signer = client.account.sign;
57
+ }
58
+ const signatureV2 = (0, viem_1.hexToBytes)(await signer({ hash }));
59
+ signatureV2[64] = signatureV2[64] - 27;
60
+ if (!signatureV2) {
61
+ throw new Error("Failed to sign message");
62
+ }
63
+ for (let i = 0; i < unsignedTx.getCredentials().length; i++) {
64
+ unsignedTx.addSignatureAt(signatureV2, i, 0);
65
+ }
66
+ }
67
+ async function createSubnet(params) {
68
+ const rpcUrl = (0, exports.getPchainBaseUrl)(params.client);
69
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
70
+ const feeState = await pvmApi.getFeeState();
71
+ const context = await avalanchejs_1.Context.getContextFromURI(rpcUrl);
72
+ const { P: pAddress } = params.client.addresses;
73
+ const addressBytes = avalanchejs_1.utils.bech32ToBytes(pAddress);
74
+ const { utxos } = await pvmApi.getUTXOs({
75
+ addresses: [pAddress]
76
+ });
77
+ const tx = avalanchejs_1.pvm.e.newCreateSubnetTx({
78
+ feeState,
79
+ fromAddressesBytes: [addressBytes],
80
+ utxos,
81
+ subnetOwners: [addressBytes],
82
+ }, context);
83
+ await addSigToAllCreds(tx, params.client);
84
+ const res = await issueSignedTx(pvmApi, tx);
85
+ const txID = ts_belt_1.R.getExn(res);
86
+ return txID;
87
+ }
88
+ async function createChain(params) {
89
+ const rpcUrl = (0, exports.getPchainBaseUrl)(params.client);
90
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
91
+ const feeState = await pvmApi.getFeeState();
92
+ const context = await avalanchejs_1.Context.getContextFromURI(rpcUrl);
93
+ const { P: pAddress } = params.client.addresses;
94
+ const addressBytes = avalanchejs_1.utils.bech32ToBytes(pAddress);
95
+ const { utxos } = await pvmApi.getUTXOs({
96
+ addresses: [pAddress]
97
+ });
98
+ logger_1.logger.log(`Using default EVM VM ID: ${params.SubnetEVMId || "dkr3SJRCf2QfRUaepreGf2PtfEtpLHuPixeBMNrf1QQBxWLNN"}`);
99
+ const tx = avalanchejs_1.pvm.e.newCreateChainTx({
100
+ feeState,
101
+ fromAddressesBytes: [addressBytes],
102
+ utxos,
103
+ chainName: params.chainName,
104
+ subnetAuth: [0],
105
+ subnetId: params.subnetId,
106
+ vmId: params.SubnetEVMId || "dkr3SJRCf2QfRUaepreGf2PtfEtpLHuPixeBMNrf1QQBxWLNN", // Default to EVM VM ID
107
+ fxIds: [],
108
+ genesisData: JSON.parse(params.genesisData),
109
+ }, context);
110
+ await addSigToAllCreds(tx, params.client);
111
+ const txID = ts_belt_1.R.getExn(await issueSignedTx(pvmApi, tx));
112
+ logger_1.logger.log('Created chain: ', txID);
113
+ return txID;
114
+ }
115
+ async function convertToL1(params) {
116
+ const rpcUrl = (0, exports.getPchainBaseUrl)(params.client);
117
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
118
+ const feeState = await pvmApi.getFeeState();
119
+ const context = await avalanchejs_1.Context.getContextFromURI(rpcUrl);
120
+ const { P: pAddress } = params.client.addresses;
121
+ const addressBytes = avalanchejs_1.utils.bech32ToBytes(pAddress);
122
+ const { utxos } = await pvmApi.getUTXOs({
123
+ addresses: [pAddress]
124
+ });
125
+ const pChainOwner = avalanchejs_1.PChainOwner.fromNative([addressBytes], 1);
126
+ const validators = params.validators.map(validator => avalanchejs_1.L1Validator.fromNative(validator.nodeID, BigInt(validator.weight), BigInt(validator.balance), new avalanchejs_1.pvmSerial.ProofOfPossession(avalanchejs_1.utils.hexToBuffer(validator.blsPublicKey), avalanchejs_1.utils.hexToBuffer(validator.blsProofOfPossession)), pChainOwner, pChainOwner));
127
+ const tx = avalanchejs_1.pvm.e.newConvertSubnetToL1Tx({
128
+ feeState,
129
+ fromAddressesBytes: [avalanchejs_1.utils.bech32ToBytes(pAddress)],
130
+ subnetId: params.subnetId,
131
+ utxos,
132
+ chainId: params.chainId,
133
+ validators,
134
+ subnetAuth: [0],
135
+ address: avalanchejs_1.utils.hexToBuffer(params.managerAddress.replace('0x', '')),
136
+ }, context);
137
+ await addSigToAllCreds(tx, params.client);
138
+ const txID = ts_belt_1.R.getExn(await issueSignedTx(pvmApi, tx));
139
+ return txID;
140
+ }
141
+ async function registerL1Validator(params) {
142
+ const rpcUrl = (0, exports.getPchainBaseUrl)(params.client);
143
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
144
+ const feeState = await pvmApi.getFeeState();
145
+ const context = await avalanchejs_1.Context.getContextFromURI(rpcUrl);
146
+ const { P: pChainAddress } = params.client.addresses;
147
+ const addressBytes = avalanchejs_1.utils.bech32ToBytes(pChainAddress);
148
+ const { utxos } = await pvmApi.getUTXOs({
149
+ addresses: [pChainAddress]
150
+ });
151
+ // Create a new register validator transaction
152
+ const tx = avalanchejs_1.pvm.e.newRegisterL1ValidatorTx({
153
+ balance: params.initialBalance,
154
+ blsSignature: new Uint8Array(Buffer.from(params.blsProofOfPossession.slice(2), 'hex')),
155
+ message: new Uint8Array(Buffer.from(params.signedMessage, 'hex')),
156
+ feeState,
157
+ fromAddressesBytes: [addressBytes],
158
+ utxos,
159
+ }, context);
160
+ // Sign the transaction
161
+ await addSigToAllCreds(tx, params.client);
162
+ // Issue the signed transaction
163
+ const txID = await issueSignedTx(pvmApi, tx);
164
+ return txID;
165
+ }
166
+ async function removeL1Validator(params) {
167
+ const rpcUrl = (0, exports.getPchainBaseUrl)(params.client);
168
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
169
+ const feeState = await pvmApi.getFeeState();
170
+ const context = await avalanchejs_1.Context.getContextFromURI(rpcUrl);
171
+ const { P: pChainAddress } = params.client.addresses;
172
+ const addressBytes = avalanchejs_1.utils.bech32ToBytes(pChainAddress);
173
+ const { utxos } = await pvmApi.getUTXOs({
174
+ addresses: [pChainAddress]
175
+ });
176
+ // Create a new disable validator transaction
177
+ const tx = avalanchejs_1.pvm.e.newDisableL1ValidatorTx({
178
+ feeState,
179
+ fromAddressesBytes: [addressBytes],
180
+ disableAuth: [0],
181
+ validationId: params.validationID,
182
+ utxos,
183
+ }, context);
184
+ // Sign the transaction
185
+ await addSigToAllCreds(tx, params.client);
186
+ // Issue the signed transaction
187
+ const txID = await issueSignedTx(pvmApi, tx);
188
+ return txID;
189
+ }
190
+ async function getCurrentValidators(client, subnetId) {
191
+ const rpcUrl = (0, exports.getPchainBaseUrl)(client);
192
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
193
+ // Fetch the L1 validator at the specified index
194
+ const response = await pvmApi.getCurrentValidators({
195
+ subnetID: subnetId
196
+ });
197
+ return response.validators;
198
+ }
199
+ async function getValidatorsAt(client, subnetId) {
200
+ const rpcUrl = (0, exports.getPchainBaseUrl)(client);
201
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
202
+ const currentHeight = await pvmApi.getHeight();
203
+ // Fetch the L1 validator at the specified index
204
+ const response = await pvmApi.getValidatorsAt({
205
+ subnetID: subnetId,
206
+ height: currentHeight.height,
207
+ });
208
+ if (!response.validators) {
209
+ return {};
210
+ }
211
+ return response.validators;
212
+ }
213
+ async function validates(client, subnetId) {
214
+ const rpcUrl = (0, exports.getPchainBaseUrl)(client);
215
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
216
+ // Fetch the L1 validator at the specified index
217
+ const response = await pvmApi.validates({
218
+ subnetID: subnetId,
219
+ });
220
+ if (!response.blockchainIDs || response.blockchainIDs.length === 0) {
221
+ return undefined;
222
+ }
223
+ return response.blockchainIDs[0]; // Return the first blockchain ID (usually the only one)
224
+ }
225
+ async function validatedBy(client, blockchainId) {
226
+ const rpcUrl = (0, exports.getPchainBaseUrl)(client);
227
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
228
+ // Fetch the L1 validator at the specified index
229
+ const response = await pvmApi.validatedBy({
230
+ blockchainID: blockchainId,
231
+ });
232
+ if (!response.subnetID) {
233
+ return undefined;
234
+ }
235
+ return response.subnetID;
236
+ }
237
+ async function setValidatorWeight(params) {
238
+ const rpcUrl = (0, exports.getPchainBaseUrl)(params.client);
239
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
240
+ const feeState = await pvmApi.getFeeState();
241
+ const context = await avalanchejs_1.Context.getContextFromURI(rpcUrl);
242
+ const { P: pChainAddress } = params.client.addresses;
243
+ const addressBytes = avalanchejs_1.utils.bech32ToBytes(pChainAddress);
244
+ const { utxos } = await pvmApi.getUTXOs({
245
+ addresses: [pChainAddress]
246
+ });
247
+ // Create a new set validator weight transaction
248
+ const tx = avalanchejs_1.pvm.e.newSetL1ValidatorWeightTx({
249
+ feeState,
250
+ fromAddressesBytes: [addressBytes],
251
+ message: new Uint8Array(Buffer.from(params.message, 'hex')),
252
+ utxos,
253
+ }, context);
254
+ // Sign the transaction
255
+ await addSigToAllCreds(tx, params.client);
256
+ // Issue the signed transaction
257
+ const txID = await issueSignedTx(pvmApi, tx);
258
+ return txID;
259
+ }
260
+ async function increasePChainValidatorBalance(client, amount, validationId, check = true) {
261
+ const rpcUrl = (0, exports.getPchainBaseUrl)(client);
262
+ const pvmApi = new avalanchejs_1.pvm.PVMApi(rpcUrl);
263
+ const feeState = await pvmApi.getFeeState();
264
+ const context = await avalanchejs_1.Context.getContextFromURI(rpcUrl);
265
+ const { P: pChainAddress } = client.addresses;
266
+ const addressBytes = avalanchejs_1.utils.bech32ToBytes(pChainAddress);
267
+ const nAVAX = BigInt(Math.floor(amount * 1e9)); // Convert AVAX to nAVAX
268
+ // Ensure the P-Chain address has enough balance
269
+ if (check)
270
+ await (0, transferUtils_1.requirePChainBallance)(client, nAVAX);
271
+ const { utxos } = await pvmApi.getUTXOs({
272
+ addresses: [pChainAddress]
273
+ });
274
+ // Create a new increase balance transaction
275
+ const tx = avalanchejs_1.pvm.e.newIncreaseL1ValidatorBalanceTx({
276
+ feeState,
277
+ fromAddressesBytes: [addressBytes],
278
+ utxos,
279
+ balance: nAVAX, // Convert to nAVAX
280
+ validationId
281
+ }, context);
282
+ // Sign the transaction
283
+ await addSigToAllCreds(tx, client);
284
+ // Issue the signed transaction
285
+ const txID = await issueSignedTx(pvmApi, tx);
286
+ return txID;
287
+ }
288
+ // Wait p chain tx until it is confirmed with a timeout
289
+ async function waitPChainTx(txID, pvmApi, pollingInterval = 3, retryCount = 10) {
290
+ let response = await pvmApi.getTxStatus({ txID });
291
+ let retry = 0;
292
+ while (response.status !== 'Committed' && retry < retryCount) {
293
+ response = await pvmApi.getTxStatus({ txID });
294
+ await new Promise(resolve => setTimeout(resolve, pollingInterval * 1000));
295
+ retry++;
296
+ }
297
+ if (response.status !== 'Committed') {
298
+ throw new Error(`P-Chain transaction ${txID} not committed after ${retryCount} retries`);
299
+ }
300
+ }
301
+ async function extractWarpMessageFromPChainTx(subnetId, txId, client) {
302
+ const rpcEndpoint = (0, exports.getPchainBaseUrl)(client);
303
+ const networkId = client.network === 'fuji' ? avalanchejs_1.networkIDs.FujiID : avalanchejs_1.networkIDs.MainnetID;
304
+ //Fixme: here we do a direct call instead of using avalanchejs, because we need to get the raw response from the node
305
+ const response = await fetch(rpcEndpoint + "/ext/bc/P", {
306
+ method: 'POST',
307
+ headers: {
308
+ 'content-type': 'application/json'
309
+ },
310
+ body: JSON.stringify({
311
+ jsonrpc: '2.0',
312
+ method: 'platform.getTx',
313
+ params: {
314
+ txID: txId,
315
+ encoding: 'json'
316
+ },
317
+ id: 1
318
+ })
319
+ });
320
+ const data = await response.json();
321
+ if (!data?.result?.tx?.unsignedTx?.subnetID || !data?.result?.tx?.unsignedTx?.chainID || !data?.result?.tx?.unsignedTx?.address || !data?.result?.tx?.unsignedTx?.validators) {
322
+ logger_1.logger.log('txId', txId);
323
+ logger_1.logger.log('data', data);
324
+ throw new Error("Invalid transaction data, are you sure this is a conversion transaction?");
325
+ }
326
+ const conversionArgs = {
327
+ subnetId: data.result.tx.unsignedTx.subnetID,
328
+ managerChainID: data.result.tx.unsignedTx.chainID,
329
+ managerAddress: data.result.tx.unsignedTx.address,
330
+ validators: data.result.tx.unsignedTx.validators.map((validator) => {
331
+ return {
332
+ nodeID: validator.nodeID,
333
+ nodePOP: validator.signer,
334
+ weight: validator.weight
335
+ };
336
+ })
337
+ };
338
+ const [message, justification] = (0, warpUtils_1.packL1ConversionMessage)(conversionArgs, networkId, data.result.tx.unsignedTx.blockchainID);
339
+ return {
340
+ message: avalanchejs_1.utils.bufferToHex(message),
341
+ justification: avalanchejs_1.utils.bufferToHex(justification),
342
+ subnetId: data.result.tx.unsignedTx.subnetID,
343
+ signingSubnetId: subnetId,
344
+ networkId,
345
+ validators: data.result.tx.unsignedTx.validators,
346
+ chainId: data.result.tx.unsignedTx.chainID,
347
+ managerAddress: data.result.tx.unsignedTx.address,
348
+ };
349
+ }
350
+ async function convertSubnetToL1(params) {
351
+ const managerAddress = params.validatorManager;
352
+ const { client, validators } = params;
353
+ // 1) convert to L1
354
+ const convertTx = params.convertTx || await convertToL1({
355
+ client,
356
+ subnetId: params.subnetId,
357
+ chainId: params.validatorManagerBlockchainID,
358
+ managerAddress,
359
+ validators,
360
+ });
361
+ // 2) collect signatures
362
+ const signingSubnetId = await validatedBy(client, params.validatorManagerBlockchainID);
363
+ if (!signingSubnetId) {
364
+ throw new Error("Could not get signing subnet ID");
365
+ }
366
+ const signed = await (0, warpUtils_1.collectSignaturesInitializeValidatorSet)({
367
+ network: client.network,
368
+ subnetId: params.subnetId,
369
+ validatorManagerBlockchainID: params.validatorManagerBlockchainID,
370
+ validatorManagerSubnetID: signingSubnetId,
371
+ managerAddress,
372
+ validators,
373
+ });
374
+ // 3) pack warp → accessList
375
+ const signedBytes = (0, viem_1.hexToBytes)(`0x${signed}`);
376
+ const accessList = (0, warpUtils_1.packWarpIntoAccessList)(signedBytes);
377
+ // 4) call initializeValidatorSet
378
+ // client.chain = chain;
379
+ const args = await getValidatorManagerInitializationArgsFromWarpTx(convertTx, params.subnetId, client);
380
+ const config = await (0, config_1.getConfig)(client, 1, true);
381
+ const validatorManager = await config.contracts.ValidatorManager(params.validatorManager);
382
+ const init = {
383
+ admin: client.addresses.C,
384
+ subnetID: args[0].subnetID,
385
+ churnPeriodSeconds: params.churnPeriodSeconds || 10n,
386
+ maximumChurnPercentage: params.maximumChurnPercentage || 20,
387
+ };
388
+ if (params.init)
389
+ await validatorManager.safeWrite.initialize([init]);
390
+ await validatorManager.safeWrite.initializeValidatorSet(args, {
391
+ account: client.account,
392
+ chain: null,
393
+ accessList
394
+ });
395
+ return { txHash: convertTx };
396
+ }
397
+ async function getValidatorManagerInitializationArgsFromWarpTx(conversionTxID, subnetId, client) {
398
+ const { validators, chainId, managerAddress } = await extractWarpMessageFromPChainTx(subnetId, conversionTxID, client);
399
+ // Prepare transaction arguments
400
+ return [
401
+ {
402
+ subnetID: (0, utils_1.cb58ToHex)(subnetId),
403
+ validatorManagerBlockchainID: (0, utils_1.cb58ToHex)(chainId),
404
+ validatorManagerAddress: managerAddress,
405
+ initialValidators: validators
406
+ .map(({ nodeID, weight, signer }) => {
407
+ // Ensure nodeID and blsPublicKey are properly formatted
408
+ // If nodeID is in BinTools format, convert to hex
409
+ const nodeIDBytes = nodeID.startsWith('0x')
410
+ ? nodeID
411
+ : add0x(nodeID);
412
+ // If blsPublicKey is in BinTools format, convert to hex
413
+ const blsPublicKeyBytes = signer.publicKey.startsWith('0x')
414
+ ? signer.publicKey
415
+ : add0x(signer.publicKey);
416
+ return {
417
+ nodeID: nodeIDBytes,
418
+ blsPublicKey: blsPublicKeyBytes,
419
+ weight: BigInt(weight)
420
+ };
421
+ })
422
+ },
423
+ 0 // messageIndex parameter
424
+ ];
425
+ }
426
+ async function issueSignedTx(pvmApi, tx, testnet = true) {
427
+ if ((0, castUtils_1.isCastMode)()) {
428
+ const rpcUrl = testnet ? chains_1.avalancheFuji.rpcUrls.default.http[0] : chains_1.avalanche.rpcUrls.default.http[0];
429
+ return ts_belt_1.R.Ok((0, castUtils_1.logPChainIssueTx)(tx.getSignedTx().toBytes(), rpcUrl));
430
+ }
431
+ const result = (0, ts_belt_1.pipe)(await ts_belt_1.R.fromPromise(pvmApi.issueSignedTx(tx.getSignedTx())), ts_belt_1.R.map(res => res.txID), ts_belt_1.R.mapError(err => "\n" + console_log_colors_1.color.red(`Error issuing P-Chain Signed Tx:`) + `\n${err.message}`));
432
+ if (ts_belt_1.R.isOk(result))
433
+ await waitPChainTx(result._0, pvmApi); // else await logger.exitError([result._0])
434
+ return result;
435
+ }
436
+ //# sourceMappingURL=pChainUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pChainUtils.js","sourceRoot":"","sources":["../../src/lib/pChainUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import * as util from 'util';
2
+ type Tree = {
3
+ [key: string]: Tree | undefined;
4
+ };
5
+ type ShowOptions = {
6
+ clipLine?: number;
7
+ };
8
+ type InsertOptions = {
9
+ multiline?: boolean;
10
+ force?: boolean;
11
+ };
12
+ type GenerateOptions = {
13
+ length?: number;
14
+ noSymbols?: boolean;
15
+ clip?: boolean;
16
+ inPlace?: boolean;
17
+ force?: boolean;
18
+ };
19
+ type RmOptions = {
20
+ recursive?: boolean;
21
+ force?: boolean;
22
+ };
23
+ type MvCpOptions = {
24
+ force?: boolean;
25
+ };
26
+ /**
27
+ * Synchronous TypeScript wrapper around `pass` CLI.
28
+ * Returns SubPass when path refers to directory.
29
+ */
30
+ export declare class Pass {
31
+ private passBin;
32
+ storeDir: string;
33
+ tree: Tree;
34
+ /**
35
+ * @param storePath Absolute path to password-store directory.
36
+ * @param initOptions Provide GPG IDs to initialize if store missing.
37
+ */
38
+ constructor(storePath?: string, gpgIds?: string[]);
39
+ private refresh;
40
+ /** Run a command in the context of the store and return stdout as string (trimmed). */
41
+ private run;
42
+ static listGPGIds(): string[];
43
+ /** Initialize a new password store: pass init gpg-id... */
44
+ init(gpgIds: string[]): void;
45
+ /** List entries or return SubPass if subfolder path.
46
+ * @returns string[] or SubPass
47
+ */
48
+ ls(subfolder?: string): Pass;
49
+ exists(name: string): boolean;
50
+ /** Show entry or return SubPass if name path is directory.
51
+ * @returns string or SubPass
52
+ */
53
+ show(name?: string, options?: ShowOptions): string | Pass;
54
+ /** Search decrypted contents: pass grep [options] search-string */
55
+ grep(searchString: string, grepOptions?: string): string[];
56
+ /** Insert or edit an entry: pass insert [--echo | --multiline] [--force] pass-name */
57
+ insert(name: string, secret: string, options?: InsertOptions): void;
58
+ /** Edit an entry using system $EDITOR: pass edit pass-name */
59
+ edit(name: string): void;
60
+ /**
61
+ * Generate a password: pass generate [--no-symbols] [--clip] [--in-place | --force] pass-name [length]
62
+ * Returns generated password or SubPass if path exists and is directory.
63
+ */
64
+ generate(name: string, options?: GenerateOptions): string;
65
+ /** Remove an entry or directory: pass rm [--recursive] [--force] pass-name */
66
+ rm(name: string, options?: RmOptions): void;
67
+ /** Move or rename: pass mv [--force] old-path new-path */
68
+ mv(oldPath: string, newPath: string, options?: MvCpOptions): void;
69
+ /** Copy an entry: pass cp [--force] old-path new-path */
70
+ cp(oldPath: string, newPath: string, options?: MvCpOptions): void;
71
+ /** Execute a git command in the store: pass git git-command-args... */
72
+ git(args: string[]): string;
73
+ /** Show help text: pass help */
74
+ help(): string;
75
+ /** Show version info: pass version */
76
+ version(): string;
77
+ toString(showAddresses?: boolean, name?: string): string;
78
+ /** Custom inspect method for better console output (auto call toString when logger.log the object) */
79
+ [util.inspect.custom](): string;
80
+ }
81
+ export {};