UNPKG

@avalanche-sdk/client

Version:

A TypeScript SDK for interacting with the Avalanche network through JSON-RPC APIs. This SDK provides a comprehensive set of tools to interact with all Avalanche chains (P-Chain, X-Chain, C-Chain) and various APIs, including wallet functionality for transa

490 lines 21.8 kB
import { Chain, Transport } from "viem"; import { PrepareAddPermissionlessDelegatorTxnParameters, PrepareAddPermissionlessDelegatorTxnReturnType, PrepareAddPermissionlessValidatorTxnParameters, PrepareAddPermissionlessValidatorTxnReturnType, PrepareAddSubnetValidatorTxnParameters, PrepareAddSubnetValidatorTxnReturnType, PrepareBaseTxnParameters, PrepareBaseTxnReturnType, PrepareConvertSubnetToL1TxnParameters, PrepareConvertSubnetToL1TxnReturnType, PrepareCreateChainTxnParameters, PrepareCreateChainTxnReturnType, PrepareCreateSubnetTxnParameters, PrepareCreateSubnetTxnReturnType, PrepareDisableL1ValidatorTxnParameters, PrepareDisableL1ValidatorTxnReturnType, PrepareExportTxnParameters, PrepareExportTxnReturnType, PrepareImportTxnParameters, PrepareImportTxnReturnType, PrepareIncreaseL1ValidatorBalanceTxnParameters, PrepareIncreaseL1ValidatorBalanceTxnReturnType, PrepareRegisterL1ValidatorTxnParameters, PrepareRegisterL1ValidatorTxnReturnType, PrepareRemoveSubnetValidatorTxnParameters, PrepareRemoveSubnetValidatorTxnReturnType, PrepareSetL1ValidatorWeightTxnParameters, PrepareSetL1ValidatorWeightTxnReturnType } from "../../methods/wallet/pChain/index.js"; import { AvalancheWalletCoreClient } from "../createAvalancheWalletCoreClient.js"; export type PChainWalletActions = { /** * Prepare an add permissionless delegator transaction. * This method creates the transaction data needed to delegate AVAX to a permissionless validator. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-add-permissionless-delegator-tx * * @param args - {@link PrepareAddPermissionlessDelegatorTxnParameters} * @returns Delegator transaction data. {@link PrepareAddPermissionlessDelegatorTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const delegatorTx = await client.pChain.prepareAddPermissionlessDelegatorTxn({ * nodeId: "NodeID-7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg", * stakeInAvax: 1, * end: 1716441600, * rewardAddresses: ["P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz"], * threshold: 1, * }) * ``` */ prepareAddPermissionlessDelegatorTxn: (args: PrepareAddPermissionlessDelegatorTxnParameters) => Promise<PrepareAddPermissionlessDelegatorTxnReturnType>; /** * Prepare an add permissionless validator transaction. * This method creates the transaction data needed to add a permissionless validator. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-add-permissionless-validator-tx * * @param args - {@link PrepareAddPermissionlessValidatorTxnParameters} * @returns Validator transaction data. {@link PrepareAddPermissionlessValidatorTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const validatorTx = await client.pChain.prepareAddPermissionlessValidatorTxn({ * nodeId: "NodeID-7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg", * stakeInAvax: 1, * end: 1716441600, * rewardAddresses: ["P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz"], * threshold: 1, * publicKey: "0x1234567890123456789012345678901234567890", * signature: "0x1234567890123456789012345678901234567890", * locktime: 1716441600, * delegatorRewardPercentage: 2.5, * delegatorRewardAddresses: ["P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz"], * }) * ``` */ prepareAddPermissionlessValidatorTxn: (args: PrepareAddPermissionlessValidatorTxnParameters) => Promise<PrepareAddPermissionlessValidatorTxnReturnType>; /** * Prepare an add subnet validator transaction. * This method creates the transaction data needed to add a validator to a subnet. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-add-subnet-validator-tx * * @param args - {@link PrepareAddSubnetValidatorTxnParameters} * @returns Subnet validator transaction data. {@link PrepareAddSubnetValidatorTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const subnetValidatorTx = await client.pChain.prepareAddSubnetValidatorTxn({ * subnetId: "11111111111111111111111111111111LpoYY", * nodeId: "NodeID-7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg", * weight: 1n, * end: 1716441600n, * subnetAuth: [1], * }) * ``` */ prepareAddSubnetValidatorTxn: (args: PrepareAddSubnetValidatorTxnParameters) => Promise<PrepareAddSubnetValidatorTxnReturnType>; /** * Prepare a base transaction. * This method creates the transaction data for a basic P-Chain transaction. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-base-tx * * @param args - {@link PrepareBaseTxnParameters} * @returns Base transaction data. {@link PrepareBaseTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const baseTx = await client.pChain.prepareBaseTxn({ * outputs: [{ * addresses: "P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz", * amount: 1, * }], * }) * ``` */ prepareBaseTxn: (args: PrepareBaseTxnParameters) => Promise<PrepareBaseTxnReturnType>; /** * Prepare a convert subnet to L1 transaction. * This method creates the transaction data needed to convert a subnet to L1. * * - Docs: https://build.avax.network/docs/api-reference/p-chain/txn-format#convertsubnettol1tx * * @param args - {@link PrepareConvertSubnetToL1TxnParameters} * @returns Convert subnet to L1 transaction data. {@link PrepareConvertSubnetToL1TxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const convertSubnetTx = await client.pChain.prepareConvertSubnetToL1Txn({ * subnetId: "11111111111111111111111111111111LpoYY", * blockchainId: 1, * managerContractAddress: "0x1234567890123456789012345678901234567890", * subnetAuth: [1], * validators: [ * { * nodeId: "NodeID-7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg", * weight: 1n, * initialBalanceInAvax: 1, * nodePoP: { * publicKey: "0x1234567890123456789012345678901234567890", * proofOfPossession: "0x1234567890123456789012345678901234567890", * }, * remainingBalanceOwner: { * addresses: ["P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz"], * threshold: 1, * }, * deactivationOwner: { * addresses: ["P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz"], * threshold: 1, * }, * }, * ], * }) * ``` */ prepareConvertSubnetToL1Txn: (args: PrepareConvertSubnetToL1TxnParameters) => Promise<PrepareConvertSubnetToL1TxnReturnType>; /** * Prepare a create chain transaction. * This method creates the transaction data needed to create a new chain on a subnet. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-create-chain-tx * * @param args - {@link PrepareCreateChainTxnParameters} * @returns Create chain transaction data. {@link PrepareCreateChainTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const createChainTx = await client.pChain.prepareCreateChainTxn({ * subnetId: "2bRCr6B4MiEfSiSjC8P7gQipqQK3VKQwNqsTq5QfbVS6qPfrjR", * chainName: "MyChain", * vmId: "rWmFif9Jg32JR6mw3KhZfnVo7Z63PNkM", * fxIds: ["rWmFif9Jg32JR6mw3KhZfnVo7Z63PNkM"], * genesisData: "0x...", * subnetAuth: [0] * }) * ``` */ prepareCreateChainTxn: (args: PrepareCreateChainTxnParameters) => Promise<PrepareCreateChainTxnReturnType>; /** * Prepare a create subnet transaction. * This method creates the transaction data needed to create a new subnet. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-create-subnet-tx * * @param args - {@link PrepareCreateSubnetTxnParameters} * @returns Create subnet transaction data. {@link PrepareCreateSubnetTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const createSubnetTx = await client.pChain.prepareCreateSubnetTxn({ * subnetOwners: { * addresses: ["P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz"], * threshold: 1, * }, * }) * ``` */ prepareCreateSubnetTxn: (args: PrepareCreateSubnetTxnParameters) => Promise<PrepareCreateSubnetTxnReturnType>; /** * Prepare a disable L1 validator transaction. * This method creates the transaction data needed to disable an L1 validator. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-disable-l1-validator-tx * * @param args - {@link PrepareDisableL1ValidatorTxnParameters} * @returns Disable L1 validator transaction data. {@link PrepareDisableL1ValidatorTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const disableValidatorTx = await client.pChain.prepareDisableL1ValidatorTxn({ * validationId: "11111111111111111111111111111111LpoYY", * disableAuth: [0], * }) * ``` */ prepareDisableL1ValidatorTxn: (args: PrepareDisableL1ValidatorTxnParameters) => Promise<PrepareDisableL1ValidatorTxnReturnType>; /** * Prepare an export transaction from P-Chain to another chain (X-Chain or C-Chain). * This method creates the transaction data needed to export AVAX from the P-Chain. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-export-tx * * @param args - {@link PrepareExportTxnParameters} * @returns Export transaction data. {@link PrepareExportTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const exportTx = await client.pChain.prepareExportTxn({ * destinationChain: "P", * exportedOutputs: [{ * addresses: ["P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz"], * amount: 0.0001, * }], * }) * ``` */ prepareExportTxn: (args: PrepareExportTxnParameters) => Promise<PrepareExportTxnReturnType>; /** * Prepare an import transaction from another chain (X-Chain or C-Chain) to P-Chain. * This method creates the transaction data needed to import AVAX to the P-Chain. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-import-tx * * @param args - {@link PrepareImportTxnParameters} * @returns Import transaction data. {@link PrepareImportTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const pChainImportTxnRequest = await client.pChain.prepareImportTxn({ * sourceChain: "C", * importedOutput: { * addresses: ["P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz"], * }, * }) * ``` */ prepareImportTxn: (args: PrepareImportTxnParameters) => Promise<PrepareImportTxnReturnType>; /** * Prepare an increase L1 validator balance transaction. * This method creates the transaction data needed to increase an L1 validator's balance. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-increase-l1-validator-balance-tx * * @param args - {@link PrepareIncreaseL1ValidatorBalanceTxnParameters} * @returns Increase L1 validator balance transaction data. {@link PrepareIncreaseL1ValidatorBalanceTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const pChainIncreaseL1ValidatorBalanceTxnRequest = await client.pChain.prepareIncreaseL1ValidatorBalanceTxn({ * balanceInAvax: 1, * validationId: "11111111111111111111111111111111LpoYY", * }) * ``` */ prepareIncreaseL1ValidatorBalanceTxn: (args: PrepareIncreaseL1ValidatorBalanceTxnParameters) => Promise<PrepareIncreaseL1ValidatorBalanceTxnReturnType>; /** * Prepare a register L1 validator transaction. * This method creates the transaction data needed to register an L1 validator. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-register-l1-validator-tx * * @param args - {@link PrepareRegisterL1ValidatorTxnParameters} * @returns Register L1 validator transaction data. {@link PrepareRegisterL1ValidatorTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const pChainRegisterL1ValidatorTxnRequest = await client.pChain.prepareRegisterL1ValidatorTxn({ * initialBalanceInAvax: 1, * blsSignature: "0x1234567890123456789012345678901234567890", * message: "0x1234567890123456789012345678901234567890", * }) * ``` */ prepareRegisterL1ValidatorTxn: (args: PrepareRegisterL1ValidatorTxnParameters) => Promise<PrepareRegisterL1ValidatorTxnReturnType>; /** * Prepare a remove subnet validator transaction. * This method creates the transaction data needed to remove a validator from a subnet. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-remove-subnet-validator-tx * * @param args - {@link PrepareRemoveSubnetValidatorTxnParameters} * @returns Remove subnet validator transaction data. {@link PrepareRemoveSubnetValidatorTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const pChainRemoveSubnetValidatorTxnRequest = await client.pChain.prepareRemoveSubnetValidatorTxn({ * subnetId: "2bRCr6B4MiEfSiSjC8P7gQipqQK3VKQwNqsTq5QfbVS6qPfrjR", * nodeId: "NodeID-7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg", * subnetAuth: [0] * }) * ``` */ prepareRemoveSubnetValidatorTxn: (args: PrepareRemoveSubnetValidatorTxnParameters) => Promise<PrepareRemoveSubnetValidatorTxnReturnType>; /** * Prepare a set L1 validator weight transaction. * This method creates the transaction data needed to set an L1 validator's weight. * * @see https://build.avax.network/docs/api-reference/p-chain/txn-format#unsigned-set-l1-validator-weight-tx * * @param args - {@link PrepareSetL1ValidatorWeightTxnParameters} * @returns Set L1 validator weight transaction data. {@link PrepareSetL1ValidatorWeightTxnReturnType} * * @example * ```ts * import { createAvalancheWalletClient } from '@avalanche-sdk/client' * import { privateKeyToAvalancheAccount } from '@avalanche-sdk/client/accounts' * import { avalanche } from '@avalanche-sdk/client/chains' * * const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890") * const client = createAvalancheWalletClient({ * account, * chain: avalanche, * transport: { * type: "http", * }, * }) * * const pChainSetL1ValidatorWeightTxnRequest = await client.pChain.prepareSetL1ValidatorWeightTxn({ * message: "0x1234567890123456789012345678901234567890", * }) * ``` */ prepareSetL1ValidatorWeightTxn: (args: PrepareSetL1ValidatorWeightTxnParameters) => Promise<PrepareSetL1ValidatorWeightTxnReturnType>; }; export declare function pChainWalletActions<chain extends Chain | undefined = Chain | undefined>(client: AvalancheWalletCoreClient<Transport, chain>): PChainWalletActions; //# sourceMappingURL=pChainWallet.d.ts.map