@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,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.chainList = void 0;
|
|
4
|
+
exports.setCustomChainRpcUrl = setCustomChainRpcUrl;
|
|
5
|
+
const avalanchejs_1 = require("@avalabs/avalanchejs");
|
|
6
|
+
const viem_1 = require("viem");
|
|
7
|
+
const chains_1 = require("viem/chains");
|
|
8
|
+
const cChainUtils_1 = require("./cChainUtils");
|
|
9
|
+
// Used in client
|
|
10
|
+
chains_1.avalanche.testnet = false;
|
|
11
|
+
chains_1.avalancheFuji.testnet = true;
|
|
12
|
+
exports.chainList = {
|
|
13
|
+
anvil: chains_1.anvil,
|
|
14
|
+
mainnet: chains_1.avalanche,
|
|
15
|
+
fuji: chains_1.avalancheFuji,
|
|
16
|
+
kiteaitestnet: (0, viem_1.defineChain)({
|
|
17
|
+
id: 2368,
|
|
18
|
+
name: 'Kite AI Testnet',
|
|
19
|
+
network: 'fuji',
|
|
20
|
+
testnet: true,
|
|
21
|
+
nativeCurrency: {
|
|
22
|
+
decimals: 18,
|
|
23
|
+
name: 'KITE',
|
|
24
|
+
symbol: 'KITE',
|
|
25
|
+
},
|
|
26
|
+
rpcUrls: {
|
|
27
|
+
default: { http: ["https://rpc-testnet.gokite.ai/"] },
|
|
28
|
+
},
|
|
29
|
+
}),
|
|
30
|
+
kiteai: (0, viem_1.defineChain)({
|
|
31
|
+
id: 2366,
|
|
32
|
+
name: 'Kite AI',
|
|
33
|
+
network: 'mainnet',
|
|
34
|
+
testnet: false,
|
|
35
|
+
nativeCurrency: {
|
|
36
|
+
decimals: 18,
|
|
37
|
+
name: 'KITE',
|
|
38
|
+
symbol: 'KITE',
|
|
39
|
+
},
|
|
40
|
+
rpcUrls: {
|
|
41
|
+
default: { http: ["https://rpc.gokite.ai"] },
|
|
42
|
+
},
|
|
43
|
+
contracts: {
|
|
44
|
+
multicall3: {
|
|
45
|
+
address: "0xE3104A157cc4C0d3c7C3a8c655092668D068c149",
|
|
46
|
+
blockCreated: 29260
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
custom: (0, viem_1.defineChain)({
|
|
51
|
+
id: 13694,
|
|
52
|
+
name: 'Custom',
|
|
53
|
+
network: 'fuji',
|
|
54
|
+
testnet: true,
|
|
55
|
+
nativeCurrency: {
|
|
56
|
+
decimals: 18,
|
|
57
|
+
name: 'AVAX',
|
|
58
|
+
symbol: 'AVAX',
|
|
59
|
+
},
|
|
60
|
+
contracts: {
|
|
61
|
+
multicall3: {
|
|
62
|
+
address: "0xca11bde05977b3631167028862be2a173976ca11",
|
|
63
|
+
blockCreated: 0,
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
rpcUrls: {
|
|
67
|
+
default: { http: ["http://localhost:9650/ext/bc/C/rpc"] },
|
|
68
|
+
},
|
|
69
|
+
})
|
|
70
|
+
};
|
|
71
|
+
async function setCustomChainRpcUrl(rpcUrl) {
|
|
72
|
+
const url = new URL(rpcUrl);
|
|
73
|
+
const infoApi = new avalanchejs_1.info.InfoApi(`${url.protocol}//${url.host}`);
|
|
74
|
+
const networkIDresp = await infoApi.getNetworkId();
|
|
75
|
+
const chainId = await (0, cChainUtils_1.getChainId)(rpcUrl);
|
|
76
|
+
exports.chainList.custom = (0, viem_1.defineChain)({
|
|
77
|
+
...exports.chainList.custom,
|
|
78
|
+
testnet: networkIDresp.networkID === "1" ? false : true,
|
|
79
|
+
network: networkIDresp.networkID === "1" ? 'mainnet' : 'fuji',
|
|
80
|
+
id: Number(chainId),
|
|
81
|
+
rpcUrls: {
|
|
82
|
+
default: { http: [rpcUrl] },
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=chainList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chainList.js","sourceRoot":"","sources":["../../src/lib/chainList.ts"],"names":[],"mappings":";;;AAqEA,oDAcC;AAnFD,sDAA4C;AAC5C,+BAA0C;AAC1C,wCAA8D;AAE9D,+CAA2C;AAC3C,iBAAiB;AACjB,kBAAS,CAAC,OAAO,GAAG,KAAK,CAAA;AACzB,sBAAa,CAAC,OAAO,GAAG,IAAI,CAAA;AAEf,QAAA,SAAS,GAA8C;IAClE,KAAK,EAAE,cAAK;IACZ,OAAO,EAAE,kBAAS;IAClB,IAAI,EAAE,sBAAa;IACnB,aAAa,EAAE,IAAA,kBAAW,EAAC;QACzB,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,IAAI;QACb,cAAc,EAAE;YACd,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;SACf;QACD,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,gCAAgC,CAAC,EAAE;SACtD;KACF,CAAC;IACF,MAAM,EAAE,IAAA,kBAAW,EAAC;QAClB,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,KAAK;QACd,cAAc,EAAE;YACd,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;SACf;QACD,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,uBAAuB,CAAC,EAAE;SAC7C;QACD,SAAS,EAAE;YACT,UAAU,EAAE;gBACV,OAAO,EAAE,4CAA4C;gBACrD,YAAY,EAAE,KAAK;aACpB;SACF;KACF,CAAC;IACF,MAAM,EAAE,IAAA,kBAAW,EAAC;QAClB,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,IAAI;QACb,cAAc,EAAE;YACd,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;SACf;QACD,SAAS,EAAE;YACT,UAAU,EAAE;gBACV,OAAO,EAAE,4CAA4C;gBACrD,YAAY,EAAE,CAAC;aAChB;SACF;QACD,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,oCAAoC,CAAC,EAAE;SAC1D;KACF,CAAC;CACH,CAAA;AAEM,KAAK,UAAU,oBAAoB,CAAC,MAAc;IACvD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,kBAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAA;IAClD,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAU,EAAC,MAAM,CAAC,CAAA;IACxC,iBAAS,CAAC,MAAM,GAAG,IAAA,kBAAW,EAAC;QAC7B,GAAG,iBAAS,CAAC,MAAM;QACnB,OAAO,EAAE,aAAa,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QACvD,OAAO,EAAE,aAAa,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QAC7D,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC;QACnB,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE;SAC5B;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Argument, Option } from '@commander-js/extra-typings';
|
|
2
|
+
import { Hex } from 'viem';
|
|
3
|
+
import { NodeId } from './utils';
|
|
4
|
+
export declare function collectMultiple<T>(parser: (value: string) => T): (value: string, previous: T[]) => T[];
|
|
5
|
+
export declare function parseSecretName(value: string): Hex;
|
|
6
|
+
export declare const ParserHex: (value: string, bytes?: number, errorMsg?: string) => Hex;
|
|
7
|
+
export declare const ParserPrivateKey: (value: string) => Hex | "ledger";
|
|
8
|
+
export declare const ParserAddress: (value: string) => `0x${string}`;
|
|
9
|
+
export declare const ParseUnits: (value: string, decimals: number, errorMsg?: string) => bigint;
|
|
10
|
+
export declare const ParserAVAX: (value: string) => bigint;
|
|
11
|
+
export declare const ParserNumber: (value: string) => number;
|
|
12
|
+
export declare const ParserNodeID: (value: string) => NodeId;
|
|
13
|
+
export declare const OptHex: <T extends string>(name: T, description?: string, bytes?: number, errorMsg?: string) => Option<T, undefined, undefined, `0x${string}`, false, undefined>;
|
|
14
|
+
export declare const ArgNodeID: (name?: string, description?: string) => Argument<`<${string}>`, undefined, `NodeID-${string}`, undefined, undefined>;
|
|
15
|
+
export declare const ArgHex: (name?: string, description?: string, bytes?: number, errorMsg?: string) => Argument<`<${string}>`, undefined, `0x${string}`, undefined, undefined>;
|
|
16
|
+
export declare const ArgCB58: (name?: string, description?: string) => Argument<`<${string}>`, undefined, string, undefined, undefined>;
|
|
17
|
+
export declare const ArgURI: (name?: string, description?: string) => Argument<`<${string}>`, undefined, string, undefined, undefined>;
|
|
18
|
+
export declare const ArgPath: (name?: string, description?: string) => Argument<`<${string}>`, undefined, string, undefined, undefined>;
|
|
19
|
+
export declare const ArgNumber: (name?: string, description?: string) => Argument<`<${string}>`, undefined, number, undefined, undefined>;
|
|
20
|
+
export declare const ArgBigInt: (name?: string, description?: string) => Argument<`<${string}>`, undefined, bigint, undefined, undefined>;
|
|
21
|
+
export declare const ArgAVAX: (name?: string, description?: string) => Argument<`<${string}>`, undefined, bigint, undefined, undefined>;
|
|
22
|
+
export declare const ArgAddress: (name?: string, description?: string) => Argument<`<${string}>`, undefined, `0x${string}`, undefined, undefined>;
|
|
23
|
+
export declare const ArgPrivateKey: (name?: string, description?: string) => Argument<`<${string}>`, undefined, `0x${string}`, undefined, undefined>;
|
|
24
|
+
export declare const ArgBLSPublicKey: (name?: string, description?: string) => Argument<`<${string}>`, undefined, `0x${string}`, undefined, undefined>;
|
|
25
|
+
export declare const ArgBLSPOP: (name?: string, description?: string) => Argument<`<${string}>`, undefined, `0x${string}`, undefined, undefined>;
|
|
26
|
+
export declare const OptPrivateKey: <T extends string>(name: T, description?: string) => Option<T, undefined, undefined, `0x${string}`, false, undefined>;
|
|
27
|
+
export declare const OptAddress: <T extends string>(name: T, description?: string) => Option<T, undefined, undefined, `0x${string}`, false, undefined>;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OptAddress = exports.OptPrivateKey = exports.ArgBLSPOP = exports.ArgBLSPublicKey = exports.ArgPrivateKey = exports.ArgAddress = exports.ArgAVAX = exports.ArgBigInt = exports.ArgNumber = exports.ArgPath = exports.ArgURI = exports.ArgCB58 = exports.ArgHex = exports.ArgNodeID = exports.OptHex = exports.ParserNodeID = exports.ParserNumber = exports.ParserAVAX = exports.ParseUnits = exports.ParserAddress = exports.ParserPrivateKey = exports.ParserHex = void 0;
|
|
4
|
+
exports.collectMultiple = collectMultiple;
|
|
5
|
+
exports.parseSecretName = parseSecretName;
|
|
6
|
+
const extra_typings_1 = require("@commander-js/extra-typings");
|
|
7
|
+
const avalanchejs_1 = require("@avalabs/avalanchejs");
|
|
8
|
+
const viem_1 = require("viem");
|
|
9
|
+
const pass_1 = require("./pass");
|
|
10
|
+
const keyStore_1 = require("../keyStore");
|
|
11
|
+
function collectMultiple(parser) {
|
|
12
|
+
return (value, previous) => previous.concat([parser(value)]);
|
|
13
|
+
}
|
|
14
|
+
// Base validators
|
|
15
|
+
function isValidCB58(value) {
|
|
16
|
+
try {
|
|
17
|
+
const decoded = avalanchejs_1.utils.base58.decode(value);
|
|
18
|
+
const embeddedCheck = decoded.slice(-4);
|
|
19
|
+
const check = avalanchejs_1.utils.addChecksum(decoded.slice(0, -4)).slice(-4);
|
|
20
|
+
if (!check.every((v, i) => embeddedCheck[i] === v)) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function isValidHex(hex, bytes) {
|
|
30
|
+
const hexPattern = bytes ? new RegExp(`^0x([a-fA-F0-9]{${bytes * 2}})$`) : /^0x([a-fA-F0-9]{2})+$/;
|
|
31
|
+
return hexPattern.test(hex);
|
|
32
|
+
}
|
|
33
|
+
// Parser (may be used by args or opts)
|
|
34
|
+
function parseSecretName(value) {
|
|
35
|
+
const pass = new pass_1.Pass(keyStore_1.passPath);
|
|
36
|
+
const secret = pass.show(value);
|
|
37
|
+
if (typeof secret !== 'string' || secret.trim() === '') {
|
|
38
|
+
throw new Error("Secret name cannot be empty");
|
|
39
|
+
}
|
|
40
|
+
return (0, exports.ParserHex)(secret, 32, `Invalid Private Key format from keystore key '${value}'. Private key must be a 32-byte Hex string`);
|
|
41
|
+
}
|
|
42
|
+
const ParserHex = (value, bytes, errorMsg) => {
|
|
43
|
+
if (!isValidHex(value, bytes)) {
|
|
44
|
+
throw new Error(errorMsg ? errorMsg : `Invalid Hex string ${value}`);
|
|
45
|
+
}
|
|
46
|
+
return value;
|
|
47
|
+
};
|
|
48
|
+
exports.ParserHex = ParserHex;
|
|
49
|
+
const ParserPrivateKey = (value) => {
|
|
50
|
+
// Check if it's an hex, otherwise try to get it from the keystore
|
|
51
|
+
if (value === 'ledger') {
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
if (!value.startsWith('0x')) {
|
|
55
|
+
return parseSecretName(value).trim();
|
|
56
|
+
}
|
|
57
|
+
if (process.argv.includes('mainnet')) {
|
|
58
|
+
throw new Error('Using private key on mainnet is not allowed. Use the secret keystore instead.');
|
|
59
|
+
}
|
|
60
|
+
return (0, exports.ParserHex)(value, 32, 'Invalid Private Key format. Private key must be a 32-byte Hex string');
|
|
61
|
+
};
|
|
62
|
+
exports.ParserPrivateKey = ParserPrivateKey;
|
|
63
|
+
const ParserAddress = (value) => (0, exports.ParserHex)(value, 20, 'Invalid Address format. Address must be a 20-byte Hex string');
|
|
64
|
+
exports.ParserAddress = ParserAddress;
|
|
65
|
+
const ParseUnits = (value, decimals, errorMsg) => {
|
|
66
|
+
const parsed = (0, viem_1.parseUnits)(value, decimals);
|
|
67
|
+
if (isNaN(Number(parsed))) {
|
|
68
|
+
throw new Error(errorMsg ? errorMsg : 'Invalid units');
|
|
69
|
+
}
|
|
70
|
+
return parsed;
|
|
71
|
+
};
|
|
72
|
+
exports.ParseUnits = ParseUnits;
|
|
73
|
+
const ParserAVAX = (value) => {
|
|
74
|
+
const avaxAmount = (0, viem_1.parseUnits)(value, 18);
|
|
75
|
+
if (isNaN(Number(avaxAmount))) {
|
|
76
|
+
throw new Error('Invalid AVAX amount');
|
|
77
|
+
}
|
|
78
|
+
return avaxAmount;
|
|
79
|
+
};
|
|
80
|
+
exports.ParserAVAX = ParserAVAX;
|
|
81
|
+
const ParserNumber = (value) => {
|
|
82
|
+
const num = Number(value);
|
|
83
|
+
if (isNaN(num)) {
|
|
84
|
+
throw new Error('Invalid Number');
|
|
85
|
+
}
|
|
86
|
+
return num;
|
|
87
|
+
};
|
|
88
|
+
exports.ParserNumber = ParserNumber;
|
|
89
|
+
// Perhaps we need to check the node ID length ?
|
|
90
|
+
const ParserNodeID = (value) => {
|
|
91
|
+
if (!value.startsWith('NodeID-') || !isValidCB58(value.slice(7))) {
|
|
92
|
+
throw new Error('Invalid NodeID (CB58)');
|
|
93
|
+
}
|
|
94
|
+
return value;
|
|
95
|
+
};
|
|
96
|
+
exports.ParserNodeID = ParserNodeID;
|
|
97
|
+
// Option exports
|
|
98
|
+
// Validate Hex strings
|
|
99
|
+
const OptHex = (name, description, bytes, errorMsg) => new extra_typings_1.Option(name, `${description ? description : "Hex string (e.g., 0x1234567890abcdef1234567890abcdef12345678)"}`).argParser((value) => (0, exports.ParserHex)(value, bytes, errorMsg ? `${name}: ` + errorMsg + ` (${value})` : undefined));
|
|
100
|
+
exports.OptHex = OptHex;
|
|
101
|
+
// Argument exports
|
|
102
|
+
// Validate NodeID in CB58 format
|
|
103
|
+
const ArgNodeID = (name, description) => new extra_typings_1.Argument(`<${name ? name : "nodeID"}>`, `${description ? description : "Node ID in CB58 format (e.g., NodeID-3J4k5L6m7N8o9P0Q1R2S3T4U5V6W7X8Y9Z0A1B2C)"}`).argParser(exports.ParserNodeID);
|
|
104
|
+
exports.ArgNodeID = ArgNodeID;
|
|
105
|
+
// Validate Hex strings
|
|
106
|
+
const ArgHex = (name, description, bytes, errorMsg) => new extra_typings_1.Argument(`<${name ? name : "hex"}>`, `${description ? description : "Hex string (e.g., 0x1234567890abcdef1234567890abcdef12345678)"}`).argParser((value) => (0, exports.ParserHex)(value, bytes, errorMsg ? `${name}: ` + errorMsg + ` (${value})` : undefined));
|
|
107
|
+
exports.ArgHex = ArgHex;
|
|
108
|
+
// Validate CB58 strings
|
|
109
|
+
const ArgCB58 = (name, description) => new extra_typings_1.Argument(`<${name ? name : "cb58"}>`, `${description ? description : "CB58 string (e.g., 3J4k5L6m7N8o9P0Q1R2S3T4U5V6W7X8Y9Z0A1B2C)"}`).argParser((value) => {
|
|
110
|
+
if (!isValidCB58(value)) {
|
|
111
|
+
throw new Error(`${name}: Invalid CB58 string (${value})`);
|
|
112
|
+
}
|
|
113
|
+
return value;
|
|
114
|
+
});
|
|
115
|
+
exports.ArgCB58 = ArgCB58;
|
|
116
|
+
// Validate URI
|
|
117
|
+
const ArgURI = (name, description) => new extra_typings_1.Argument(`<${name ? name : "URI"}>`, `${description ? description : "URI (e.g., https://example.com or wss://example.com)"}`).argParser((value) => {
|
|
118
|
+
if (!/^(https?|wss?):\/\/[^\s/$.?#].[^\s]*$/.test(value)) {
|
|
119
|
+
throw new Error(`${name}: Invalid URI: (${value})`);
|
|
120
|
+
}
|
|
121
|
+
return value;
|
|
122
|
+
});
|
|
123
|
+
exports.ArgURI = ArgURI;
|
|
124
|
+
// Validate Path
|
|
125
|
+
const ArgPath = (name, description) => new extra_typings_1.Argument(`<${name ? name : "path"}>`, `${description ? description : "Path (e.g., /path/to/resource)"}`).argParser((value) => {
|
|
126
|
+
if (!/^\/[a-zA-Z0-9_\-\/]*$/.test(value)) {
|
|
127
|
+
throw new Error(`${name}: Invalid Path (${value})`);
|
|
128
|
+
}
|
|
129
|
+
return value;
|
|
130
|
+
});
|
|
131
|
+
exports.ArgPath = ArgPath;
|
|
132
|
+
// Validate Number
|
|
133
|
+
const ArgNumber = (name, description) => new extra_typings_1.Argument(`<${name ? name : "number"}>`, `${description ? description : "Number (e.g., 12345)"}`).argParser(exports.ParserNumber);
|
|
134
|
+
exports.ArgNumber = ArgNumber;
|
|
135
|
+
// Validate BigInt
|
|
136
|
+
const ArgBigInt = (name, description) => new extra_typings_1.Argument(`<${name ? name : "bigint"}>`, `${description ? description : "BigInt (e.g., 1234567890123456789)"}`).argParser((value) => {
|
|
137
|
+
const bigIntValue = BigInt(value);
|
|
138
|
+
if (isNaN(Number(bigIntValue))) {
|
|
139
|
+
throw new Error(`${name}: Invalid BigInt (${value})`);
|
|
140
|
+
}
|
|
141
|
+
return bigIntValue;
|
|
142
|
+
});
|
|
143
|
+
exports.ArgBigInt = ArgBigInt;
|
|
144
|
+
// Validate AVAX amount
|
|
145
|
+
const ArgAVAX = (name, description) => new extra_typings_1.Argument(`<${name ? name : "AVAX"}>`, `${description ? description : "AVAX amount in number format (e.g., 0.8)"}`).argParser(exports.ParserAVAX);
|
|
146
|
+
exports.ArgAVAX = ArgAVAX;
|
|
147
|
+
// Predefined arguments for common use cases
|
|
148
|
+
// Address argument
|
|
149
|
+
const ArgAddress = (name, description) => (0, exports.ArgHex)(name || 'address', description || 'Ethereum address in Hex format', 20, 'Invalid address format. Address must be a 20-byte Hex string');
|
|
150
|
+
exports.ArgAddress = ArgAddress;
|
|
151
|
+
// Private key argument
|
|
152
|
+
const ArgPrivateKey = (name, description) => (0, exports.ArgHex)(name || 'privateKey', description || 'Private key in Hex format', 32, 'Invalid private key format. Private key must be a 32-byte Hex string');
|
|
153
|
+
exports.ArgPrivateKey = ArgPrivateKey;
|
|
154
|
+
// BLS Public key argument
|
|
155
|
+
const ArgBLSPublicKey = (name, description) => (0, exports.ArgHex)(name || 'blsPublicKey', description || 'BLS Public key in Hex format', 48, 'Invalid BLS Public key format. BLS Public key must be a 48-byte Hex string');
|
|
156
|
+
exports.ArgBLSPublicKey = ArgBLSPublicKey;
|
|
157
|
+
// BLS Proof of Possession argument
|
|
158
|
+
const ArgBLSPOP = (name, description) => (0, exports.ArgHex)(name || 'blsProofOfPossession', description || 'BLS Proof of Possession in Hex format', 96, 'Invalid BLS Proof of Possession format. BLS POP must be a 96-byte Hex string');
|
|
159
|
+
exports.ArgBLSPOP = ArgBLSPOP;
|
|
160
|
+
// Predefined options for common use cases
|
|
161
|
+
// Private key option
|
|
162
|
+
const OptPrivateKey = (name, description) => (0, exports.OptHex)(name, description || 'Private key in Hex format', 32, 'Invalid private key format. Private key must be a 32-byte Hex string');
|
|
163
|
+
exports.OptPrivateKey = OptPrivateKey;
|
|
164
|
+
// Address option
|
|
165
|
+
const OptAddress = (name, description) => (0, exports.OptHex)(name, description || 'Ethereum address in Hex format', 20, 'Invalid address format. Address must be a 20-byte Hex string');
|
|
166
|
+
exports.OptAddress = OptAddress;
|
|
167
|
+
//# sourceMappingURL=cliParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliParser.js","sourceRoot":"","sources":["../../src/lib/cliParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ExtendedWalletClient, ExtendedPublicClient } from "../client";
|
|
2
|
+
import { Config } from "../config";
|
|
3
|
+
declare module "@commander-js/extra-typings" {
|
|
4
|
+
interface Command<Args extends any[] = [], Opts extends OptionValues = {}, GlobalOpts extends OptionValues = {}> {
|
|
5
|
+
asyncAction(options: {
|
|
6
|
+
signer: true;
|
|
7
|
+
}, fn: (this: this, config: Config<ExtendedWalletClient>, ...args: [...Args, Opts, this]) => void | Promise<void>): this;
|
|
8
|
+
asyncAction(options: {
|
|
9
|
+
signer?: false;
|
|
10
|
+
}, fn: (this: this, config: Config<ExtendedPublicClient>, ...args: [...Args, Opts, this]) => void | Promise<void>): this;
|
|
11
|
+
asyncAction(fn: (this: this, config: Config<ExtendedPublicClient>, ...args: [...Args, Opts, this]) => void | Promise<void>): this;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const logger_1 = require("./logger");
|
|
4
|
+
const extra_typings_1 = require("@commander-js/extra-typings");
|
|
5
|
+
const client_1 = require("../client");
|
|
6
|
+
const config_1 = require("../config");
|
|
7
|
+
extra_typings_1.Command.prototype.asyncAction = function (...fnArgs) {
|
|
8
|
+
let options = { signer: false };
|
|
9
|
+
let fn;
|
|
10
|
+
if (fnArgs.length >= 2 && typeof fnArgs[1] === 'function') {
|
|
11
|
+
options = fnArgs[0] || { signer: false };
|
|
12
|
+
fn = fnArgs[1];
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
fn = fnArgs[0];
|
|
16
|
+
}
|
|
17
|
+
let rootParent = this.parent;
|
|
18
|
+
while (rootParent?.parent) {
|
|
19
|
+
rootParent = rootParent.parent;
|
|
20
|
+
}
|
|
21
|
+
const wrappedFn = async (...args) => {
|
|
22
|
+
try {
|
|
23
|
+
const opts = rootParent.opts();
|
|
24
|
+
const client = await (0, client_1.generateClient)(opts.network, options.signer ? opts.privateKey : undefined, opts.safe);
|
|
25
|
+
const config = (0, config_1.getConfig)(client, opts.wait, opts.skipAbiValidation);
|
|
26
|
+
const result = await fn.call(this, config, ...args);
|
|
27
|
+
logger_1.logger.printJson();
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
error.stack = error.stack?.split("\n").slice(0, -1).join("\n");
|
|
32
|
+
logger_1.logger.error(error);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
return this.action(wrappedFn);
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=commandUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandUtils.js","sourceRoot":"","sources":["../../src/lib/commandUtils.ts"],"names":[],"mappings":";;AAAA,qCAAkC;AAClC,+DAAmF;AAEnF,sCAA2C;AAC3C,sCAA8C;AAuB9C,uBAAW,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,GAAG,MAAa;IAC5D,IAAI,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAChC,IAAI,EAAO,CAAC;IAEZ,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;QAC1D,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACzC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,UAAU,GAAG,IAAI,CAAC,MAAO,CAAC;IAC9B,OAAO,UAAU,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAM3B,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3G,MAAM,MAAM,GAAG,IAAA,kBAAS,EAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,MAAO,EAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YAC7D,eAAM,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,eAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,MAAM,CAAC,SAAgB,CAAC,CAAC;AACvC,CAAC,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCoreWalletAccount = getCoreWalletAccount;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
const accounts_1 = require("viem/accounts");
|
|
7
|
+
async function getCoreWalletAccount(network, accountIndex = 0) {
|
|
8
|
+
const provider = window.avalanche;
|
|
9
|
+
if (!provider)
|
|
10
|
+
throw new Error('Core extension not found. Please install Core. https://core.app');
|
|
11
|
+
// Request account access
|
|
12
|
+
await provider.request({ method: 'eth_requestAccounts', params: [] });
|
|
13
|
+
const { evm, XP } = await provider.request({
|
|
14
|
+
"method": "avalanche_getAccountPubKey",
|
|
15
|
+
"params": []
|
|
16
|
+
});
|
|
17
|
+
const addresses = (0, utils_1.getAddressesFromCoreExtension)({ evm, XP }, network);
|
|
18
|
+
return {
|
|
19
|
+
pChainAddress: addresses.P,
|
|
20
|
+
cSign: async (parameters) => {
|
|
21
|
+
const { hash } = parameters;
|
|
22
|
+
return await provider.request({
|
|
23
|
+
"method": "eth_sign",
|
|
24
|
+
"params": [
|
|
25
|
+
addresses.C,
|
|
26
|
+
hash
|
|
27
|
+
]
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
...(0, accounts_1.toAccount)({
|
|
31
|
+
address: addresses.C,
|
|
32
|
+
publicKey: evm,
|
|
33
|
+
// Core Wallet handles signing + broadcasting via eth_sendTransaction.
|
|
34
|
+
// signTransaction (returning a serialized signed tx) is not supported.
|
|
35
|
+
async signTransaction(_transaction) {
|
|
36
|
+
throw new Error('Core Wallet does not support signTransaction (sign-only without broadcast). ' +
|
|
37
|
+
'Use eth_sendTransaction via the provider instead.');
|
|
38
|
+
},
|
|
39
|
+
async signMessage({ message }) {
|
|
40
|
+
let messageHex;
|
|
41
|
+
if (typeof message === 'string') {
|
|
42
|
+
messageHex = (0, viem_1.toHex)(message);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
messageHex = typeof message.raw === 'string'
|
|
46
|
+
? message.raw
|
|
47
|
+
: (0, viem_1.toHex)(message.raw);
|
|
48
|
+
}
|
|
49
|
+
return await provider.request({
|
|
50
|
+
method: 'personal_sign',
|
|
51
|
+
params: [messageHex, addresses.C]
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
async sign(parameters) {
|
|
55
|
+
const { hash } = parameters;
|
|
56
|
+
return await provider.request({
|
|
57
|
+
method: 'eth_sign',
|
|
58
|
+
params: [addresses.C, hash]
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
async signTypedData(parameters) {
|
|
62
|
+
const { domain, types, primaryType, message } = parameters;
|
|
63
|
+
return await provider.request({
|
|
64
|
+
method: 'eth_signTypedData_v4',
|
|
65
|
+
params: [
|
|
66
|
+
addresses.C,
|
|
67
|
+
JSON.stringify({ domain, types, primaryType, message })
|
|
68
|
+
]
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=coreWalletUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coreWalletUtils.js","sourceRoot":"","sources":["../../src/lib/coreWalletUtils.ts"],"names":[],"mappings":";;AAOA,oDA2EC;AAlFD,+BAAkC;AAElC,mCAAwD;AACxD,4CAA0C;AAInC,KAAK,UAAU,oBAAoB,CAAC,OAAgB,EAAE,eAAuB,CAAC;IACnF,MAAM,QAAQ,GAAI,MAAc,CAAC,SAAS,CAAA;IAC1C,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;IAEjG,yBAAyB;IACzB,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAEtE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;QACzC,QAAQ,EAAE,4BAA4B;QACtC,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,IAAA,qCAA6B,EAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAEtE,OAAO;QACL,aAAa,EAAE,SAAS,CAAC,CAAC;QAC1B,KAAK,EAAE,KAAK,EAAE,UAAyB,EAAE,EAAE;YACzC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;YAC5B,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC;gBAC5B,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE;oBACR,SAAS,CAAC,CAAC;oBACX,IAAI;iBACL;aACF,CAAC,CAAC;QACL,CAAC;QACD,GAAG,IAAA,oBAAS,EAAC;YACX,OAAO,EAAE,SAAS,CAAC,CAAC;YACpB,SAAS,EAAE,GAAG;YAEd,sEAAsE;YACtE,uEAAuE;YACvE,KAAK,CAAC,eAAe,CAAC,YAAY;gBAChC,MAAM,IAAI,KAAK,CACb,8EAA8E;oBAC9E,mDAAmD,CACpD,CAAC;YACJ,CAAC;YAED,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE;gBAC3B,IAAI,UAAkB,CAAC;gBAEvB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,UAAU,GAAG,IAAA,YAAK,EAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;wBAC1C,CAAC,CAAC,OAAO,CAAC,GAAG;wBACb,CAAC,CAAC,IAAA,YAAK,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;gBAED,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC;oBAC5B,MAAM,EAAE,eAAe;oBACvB,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,UAAyB;gBAClC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;gBAC5B,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC;oBAC5B,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;iBAC5B,CAAC,CAAC;YACL,CAAC;YAED,KAAK,CAAC,aAAa,CAAC,UAAe;gBACjC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;gBAC3D,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC;oBAC5B,MAAM,EAAE,sBAAsB;oBAC9B,MAAM,EAAE;wBACN,SAAS,CAAC,CAAC;wBACX,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;qBACxD;iBACF,CAAC,CAAC;YACL,CAAC;SACF,CAAC;KACgB,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Hex } from 'viem';
|
|
2
|
+
import { SolidityValidationPeriod } from './warpUtils';
|
|
3
|
+
import { ExtendedPublicClient } from '../client';
|
|
4
|
+
/**
|
|
5
|
+
* Extracts the payload bytes from an AddressedCall byte array.
|
|
6
|
+
* Assumes AddressedCall structure:
|
|
7
|
+
* - TypeID (4 bytes, starting at index 2)
|
|
8
|
+
* - Source Address Length (4 bytes, starting at index 6)
|
|
9
|
+
* - Source Address (variable)
|
|
10
|
+
* - Payload Length (4 bytes, starting after source address)
|
|
11
|
+
* - Payload (variable)
|
|
12
|
+
*
|
|
13
|
+
* @param addressedCall - The AddressedCall bytes.
|
|
14
|
+
* @returns The extracted payload as a Uint8Array, or null if parsing fails or data is insufficient.
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractPayloadFromAddressedCall(addressedCall: Uint8Array): Uint8Array | null;
|
|
17
|
+
/**
|
|
18
|
+
* Calculates the validationID hash for a RegisterL1ValidatorMessage payload.
|
|
19
|
+
* Uses the SolidityValidationPeriod interface.
|
|
20
|
+
*/
|
|
21
|
+
export declare function calculateValidationID(validationPeriod: SolidityValidationPeriod): Uint8Array;
|
|
22
|
+
/**
|
|
23
|
+
* Gets the marshalled L1ValidatorRegistrationJustification protobuf bytes for a specific
|
|
24
|
+
* validation ID and subnet. It first checks if the validation ID corresponds to the hash
|
|
25
|
+
* of a derived bootstrap validator ID (SubnetID + Index). If not found, it queries
|
|
26
|
+
* Warp logs for a RegisterL1ValidatorMessage payload whose hash matches the validation ID
|
|
27
|
+
* and constructs the justification using that message payload.
|
|
28
|
+
*
|
|
29
|
+
* @param nodeID - The node ID of the validator (e.g., "NodeID-..."), used for logging and secondary confirmation.
|
|
30
|
+
* @param validationIDHex - The target validation ID as a '0x' prefixed hex string (bytes32).
|
|
31
|
+
* @param subnetIDStr - The subnet ID as a Base58Check string.
|
|
32
|
+
* @param ExtendedPublicClient - A client that can perform getLogs operations.
|
|
33
|
+
* @returns The marshalled L1ValidatorRegistrationJustification bytes as a Uint8Array, or null if not found/error.
|
|
34
|
+
*/
|
|
35
|
+
export declare function GetRegistrationJustification(nodeID: string, // Keep for logging/confirmation
|
|
36
|
+
validationIDHex: string, subnetIDStr: string, ExtendedPublicClient: {
|
|
37
|
+
getLogs: ExtendedPublicClient['getLogs'];
|
|
38
|
+
}, latestBlock?: bigint | 0): Promise<Uint8Array | null>;
|
|
39
|
+
export declare function hexToUint8Array(hex: Hex): Uint8Array;
|
|
40
|
+
export interface PChainOwner {
|
|
41
|
+
threshold: number;
|
|
42
|
+
addresses: Hex[];
|
|
43
|
+
}
|
|
44
|
+
export interface ValidationPeriod {
|
|
45
|
+
subnetId: string;
|
|
46
|
+
nodeID: string;
|
|
47
|
+
blsPublicKey: Hex;
|
|
48
|
+
registrationExpiry: bigint;
|
|
49
|
+
remainingBalanceOwner: PChainOwner;
|
|
50
|
+
disableOwner: PChainOwner;
|
|
51
|
+
weight: bigint;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Parses a RegisterL1ValidatorMessage from a byte array.
|
|
55
|
+
* The message format specification is:
|
|
56
|
+
*
|
|
57
|
+
* RegisterL1ValidatorMessage:
|
|
58
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
59
|
+
* | codecID : uint16 | 2 bytes |
|
|
60
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
61
|
+
* | typeID : uint32 | 4 bytes |
|
|
62
|
+
* +-----------------------+-------------+-------------------------------------------------------------------+
|
|
63
|
+
* | subnetID : [32]byte | 32 bytes |
|
|
64
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
65
|
+
* | nodeID : []byte | 4 + len(nodeID) bytes |
|
|
66
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
67
|
+
* | blsPublicKey : [48]byte | 48 bytes |
|
|
68
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
69
|
+
* | expiry : uint64 | 8 bytes |
|
|
70
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
71
|
+
* | remainingBalanceOwner : PChainOwner | 8 + len(addresses) * 20 bytes |
|
|
72
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
73
|
+
* | disableOwner : PChainOwner | 8 + len(addresses) * 20 bytes |
|
|
74
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
75
|
+
* | weight : uint64 | 8 bytes |
|
|
76
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
77
|
+
* | 122 + len(nodeID) + (len(addresses1) + len(addresses2)) * 20 bytes |
|
|
78
|
+
* +--------------------------------------------------------------------+
|
|
79
|
+
*
|
|
80
|
+
* PChainOwner:
|
|
81
|
+
* +-----------+------------+-------------------------------+
|
|
82
|
+
* | threshold : uint32 | 4 bytes |
|
|
83
|
+
* +-----------+------------+-------------------------------+
|
|
84
|
+
* | addresses : [][20]byte | 4 + len(addresses) * 20 bytes |
|
|
85
|
+
* +-----------+------------+-------------------------------+
|
|
86
|
+
* | 8 + len(addresses) * 20 bytes |
|
|
87
|
+
* +-------------------------------+
|
|
88
|
+
*/
|
|
89
|
+
export declare function parseRegisterL1ValidatorMessage(input: Uint8Array): ValidationPeriod;
|
|
90
|
+
export declare function parseUint32(input: Uint8Array, offset: number): number;
|