@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.
- package/LICENSE +96 -0
- package/README.md +1080 -0
- package/bin/cli.js +3 -0
- package/defaults/.env.anvil +4 -0
- package/defaults/.env.dexalot +7 -0
- package/defaults/.env.fuji +4 -0
- package/defaults/.env.kiteai +2 -0
- package/defaults/.env.mainnet +4 -0
- package/defaults/.env.template +10 -0
- package/dist/abis/AccessControl.d.ts +176 -0
- package/dist/abis/AccessControl.js +230 -0
- package/dist/abis/AccessControl.js.map +1 -0
- package/dist/abis/BalancerValidatorManager.d.ts +1121 -0
- package/dist/abis/BalancerValidatorManager.js +1469 -0
- package/dist/abis/BalancerValidatorManager.js.map +1 -0
- package/dist/abis/DefaultCollateral.d.ts +620 -0
- package/dist/abis/DefaultCollateral.js +811 -0
- package/dist/abis/DefaultCollateral.js.map +1 -0
- package/dist/abis/ERC20.d.ts +635 -0
- package/dist/abis/ERC20.js +831 -0
- package/dist/abis/ERC20.js.map +1 -0
- package/dist/abis/IWarpMessenger.d.ts +104 -0
- package/dist/abis/IWarpMessenger.js +139 -0
- package/dist/abis/IWarpMessenger.js.map +1 -0
- package/dist/abis/KiteStakingManager.d.ts +1459 -0
- package/dist/abis/KiteStakingManager.js +1886 -0
- package/dist/abis/KiteStakingManager.js.map +1 -0
- package/dist/abis/L1Middleware.d.ts +1712 -0
- package/dist/abis/L1Middleware.js +2242 -0
- package/dist/abis/L1Middleware.js.map +1 -0
- package/dist/abis/L1Registry.d.ts +415 -0
- package/dist/abis/L1Registry.js +544 -0
- package/dist/abis/L1Registry.js.map +1 -0
- package/dist/abis/L1RestakeDelegator.d.ts +865 -0
- package/dist/abis/L1RestakeDelegator.js +1118 -0
- package/dist/abis/L1RestakeDelegator.js.map +1 -0
- package/dist/abis/OperatorL1OptInService.d.ts +288 -0
- package/dist/abis/OperatorL1OptInService.js +374 -0
- package/dist/abis/OperatorL1OptInService.js.map +1 -0
- package/dist/abis/OperatorRegistry.d.ts +125 -0
- package/dist/abis/OperatorRegistry.js +166 -0
- package/dist/abis/OperatorRegistry.js.map +1 -0
- package/dist/abis/OperatorVaultOptInService.d.ts +288 -0
- package/dist/abis/OperatorVaultOptInService.js +374 -0
- package/dist/abis/OperatorVaultOptInService.js.map +1 -0
- package/dist/abis/Ownable.d.ts +59 -0
- package/dist/abis/Ownable.js +79 -0
- package/dist/abis/Ownable.js.map +1 -0
- package/dist/abis/PoASecurityModule.d.ts +225 -0
- package/dist/abis/PoASecurityModule.js +299 -0
- package/dist/abis/PoASecurityModule.js.map +1 -0
- package/dist/abis/RewardsNativeToken.d.ts +1334 -0
- package/dist/abis/RewardsNativeToken.js +1749 -0
- package/dist/abis/RewardsNativeToken.js.map +1 -0
- package/dist/abis/StakingVault.d.ts +2913 -0
- package/dist/abis/StakingVault.js +3780 -0
- package/dist/abis/StakingVault.js.map +1 -0
- package/dist/abis/StakingVaultOperations.d.ts +980 -0
- package/dist/abis/StakingVaultOperations.js +1270 -0
- package/dist/abis/StakingVaultOperations.js.map +1 -0
- package/dist/abis/UptimeTracker.d.ts +300 -0
- package/dist/abis/UptimeTracker.js +397 -0
- package/dist/abis/UptimeTracker.js.map +1 -0
- package/dist/abis/ValidatorManager.d.ts +842 -0
- package/dist/abis/ValidatorManager.js +1101 -0
- package/dist/abis/ValidatorManager.js.map +1 -0
- package/dist/abis/VaultFactory.d.ts +288 -0
- package/dist/abis/VaultFactory.js +378 -0
- package/dist/abis/VaultFactory.js.map +1 -0
- package/dist/abis/VaultManager.d.ts +519 -0
- package/dist/abis/VaultManager.js +678 -0
- package/dist/abis/VaultManager.js.map +1 -0
- package/dist/abis/VaultTokenized.d.ts +1626 -0
- package/dist/abis/VaultTokenized.js +2114 -0
- package/dist/abis/VaultTokenized.js.map +1 -0
- package/dist/abis/abi-selectors.json +700 -0
- package/dist/abis/index.d.ts +18356 -0
- package/dist/abis/index.js +58 -0
- package/dist/abis/index.js.map +1 -0
- package/dist/accessControl.d.ts +15 -0
- package/dist/accessControl.js +36 -0
- package/dist/accessControl.js.map +1 -0
- package/dist/balancer.d.ts +25 -0
- package/dist/balancer.js +42 -0
- package/dist/balancer.js.map +1 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +3183 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.mjs +31343 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/client.d.ts +34 -0
- package/dist/client.js +76 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.js +63 -0
- package/dist/config.js.map +1 -0
- package/dist/delegator.d.ts +4 -0
- package/dist/delegator.js +16 -0
- package/dist/delegator.js.map +1 -0
- package/dist/index.d.mts +19770 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +27451 -0
- package/dist/index.mjs.map +1 -0
- package/dist/keyStore.d.ts +3 -0
- package/dist/keyStore.js +105 -0
- package/dist/keyStore.js.map +1 -0
- package/dist/kiteStaking.d.ts +91 -0
- package/dist/kiteStaking.js +731 -0
- package/dist/kiteStaking.js.map +1 -0
- package/dist/l1.d.ts +5 -0
- package/dist/l1.js +22 -0
- package/dist/l1.js.map +1 -0
- package/dist/lib/autoCompletion.d.ts +3 -0
- package/dist/lib/autoCompletion.js +55 -0
- package/dist/lib/autoCompletion.js.map +1 -0
- package/dist/lib/cChainUtils.d.ts +42 -0
- package/dist/lib/cChainUtils.js +271 -0
- package/dist/lib/cChainUtils.js.map +1 -0
- package/dist/lib/castUtils.d.ts +18 -0
- package/dist/lib/castUtils.js +81 -0
- package/dist/lib/castUtils.js.map +1 -0
- package/dist/lib/chainList.d.ts +5 -0
- package/dist/lib/chainList.js +86 -0
- package/dist/lib/chainList.js.map +1 -0
- package/dist/lib/cliParser.d.ts +27 -0
- package/dist/lib/cliParser.js +167 -0
- package/dist/lib/cliParser.js.map +1 -0
- package/dist/lib/commandUtils.d.ts +13 -0
- package/dist/lib/commandUtils.js +38 -0
- package/dist/lib/commandUtils.js.map +1 -0
- package/dist/lib/coreWalletUtils.d.ts +3 -0
- package/dist/lib/coreWalletUtils.js +74 -0
- package/dist/lib/coreWalletUtils.js.map +1 -0
- package/dist/lib/justification.d.ts +90 -0
- package/dist/lib/justification.js +577 -0
- package/dist/lib/justification.js.map +1 -0
- package/dist/lib/ledgerUtils.d.ts +4 -0
- package/dist/lib/ledgerUtils.js +258 -0
- package/dist/lib/ledgerUtils.js.map +1 -0
- package/dist/lib/logger.d.ts +46 -0
- package/dist/lib/logger.js +226 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/pChainUtils.d.ts +128 -0
- package/dist/lib/pChainUtils.js +436 -0
- package/dist/lib/pChainUtils.js.map +1 -0
- package/dist/lib/pass.d.ts +81 -0
- package/dist/lib/pass.js +353 -0
- package/dist/lib/pass.js.map +1 -0
- package/dist/lib/safeUtils.d.ts +25 -0
- package/dist/lib/safeUtils.js +93 -0
- package/dist/lib/safeUtils.js.map +1 -0
- package/dist/lib/transferUtils.d.ts +643 -0
- package/dist/lib/transferUtils.js +141 -0
- package/dist/lib/transferUtils.js.map +1 -0
- package/dist/lib/utils.d.ts +28 -0
- package/dist/lib/utils.js +166 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/viemUtils.d.ts +80 -0
- package/dist/lib/viemUtils.js +317 -0
- package/dist/lib/viemUtils.js.map +1 -0
- package/dist/lib/warpUtils.d.ts +76 -0
- package/dist/lib/warpUtils.js +448 -0
- package/dist/lib/warpUtils.js.map +1 -0
- package/dist/middleware.d.ts +75 -0
- package/dist/middleware.js +430 -0
- package/dist/middleware.js.map +1 -0
- package/dist/operator.d.ts +4 -0
- package/dist/operator.js +22 -0
- package/dist/operator.js.map +1 -0
- package/dist/operatorOptIn.d.ts +8 -0
- package/dist/operatorOptIn.js +39 -0
- package/dist/operatorOptIn.js.map +1 -0
- package/dist/rewards.d.ts +116 -0
- package/dist/rewards.js +244 -0
- package/dist/rewards.js.map +1 -0
- package/dist/securityModule.d.ts +8 -0
- package/dist/securityModule.js +305 -0
- package/dist/securityModule.js.map +1 -0
- package/dist/stakingVault.d.ts +184 -0
- package/dist/stakingVault.js +1224 -0
- package/dist/stakingVault.js.map +1 -0
- package/dist/uptime.d.ts +54 -0
- package/dist/uptime.js +246 -0
- package/dist/uptime.js.map +1 -0
- package/dist/vault.d.ts +16 -0
- package/dist/vault.js +131 -0
- package/dist/vault.js.map +1 -0
- package/dist/vaultManager.d.ts +8 -0
- package/dist/vaultManager.js +40 -0
- package/dist/vaultManager.js.map +1 -0
- 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 {};
|