import { TransferableOutput } from '../../../serializable';
import type { Utxo } from '../../../serializable/avax/utxo';
import { UnsignedTx } from '../../common';
import type { Context } from '../../context';
import type { FeeState } from '../models';
import type { L1Validator } from '../../../serializable/fxs/pvm/L1Validator';
type CommonTxProps = Readonly<{
    changeAddressesBytes?: readonly Uint8Array[];
    feeState: FeeState;
    fromAddressesBytes: readonly Uint8Array[];
    memo?: Uint8Array;
    minIssuanceTime?: bigint;
    utxos: readonly Utxo[];
}>;
type TxProps<T extends Record<string, unknown>> = CommonTxProps & Readonly<T>;
type TxBuilderFn<T extends TxProps<Record<string, unknown>>> = (props: T, context: Context) => UnsignedTx;
export type NewBaseTxProps = TxProps<{
    outputs: readonly TransferableOutput[];
}>;
export declare const newBaseTx: TxBuilderFn<NewBaseTxProps>;
export type NewImportTxProps = Omit<TxProps<{
    locktime?: bigint;
    sourceChainId: string;
    threshold?: number;
    toAddressesBytes: readonly Uint8Array[];
}>, 'changeAddressesBytes'>;
export declare const newImportTx: TxBuilderFn<NewImportTxProps>;
export type NewExportTxProps = TxProps<{
    destinationChainId: string;
    outputs: readonly TransferableOutput[];
}>;
export declare const newExportTx: TxBuilderFn<NewExportTxProps>;
export type NewCreateSubnetTxProps = TxProps<{
    locktime?: bigint;
    subnetOwners: readonly Uint8Array[];
    threshold?: number;
}>;
export declare const newCreateSubnetTx: TxBuilderFn<NewCreateSubnetTxProps>;
export type NewCreateChainTxProps = TxProps<{
    chainName: string;
    fxIds: readonly string[];
    genesisData: Record<string, unknown>;
    subnetAuth: readonly number[];
    subnetId: string;
    vmId: string;
}>;
export declare const newCreateChainTx: TxBuilderFn<NewCreateChainTxProps>;
export type NewAddSubnetValidatorTxProps = TxProps<{
    end: bigint;
    nodeId: string;
    start: bigint;
    subnetAuth: readonly number[];
    subnetId: string;
    weight: bigint;
}>;
export declare const newAddSubnetValidatorTx: TxBuilderFn<NewAddSubnetValidatorTxProps>;
export type NewRemoveSubnetValidatorTxProps = TxProps<{
    nodeId: string;
    subnetAuth: readonly number[];
    subnetId: string;
}>;
export declare const newRemoveSubnetValidatorTx: TxBuilderFn<NewRemoveSubnetValidatorTxProps>;
export type NewAddPermissionlessValidatorTxProps = TxProps<{
    delegatorRewardsOwner: readonly Uint8Array[];
    end: bigint;
    locktime?: bigint;
    nodeId: string;
    publicKey?: Uint8Array;
    rewardAddresses: readonly Uint8Array[];
    shares: number;
    signature?: Uint8Array;
    stakingAssetId?: string;
    start: bigint;
    subnetId: string;
    threshold?: number;
    weight: bigint;
}>;
export declare const newAddPermissionlessValidatorTx: TxBuilderFn<NewAddPermissionlessValidatorTxProps>;
export type NewAddPermissionlessDelegatorTxProps = TxProps<{
    end: bigint;
    locktime?: bigint;
    nodeId: string;
    rewardAddresses: readonly Uint8Array[];
    stakingAssetId?: string;
    start: bigint;
    subnetId: string;
    threshold?: number;
    weight: bigint;
}>;
export declare const newAddPermissionlessDelegatorTx: TxBuilderFn<NewAddPermissionlessDelegatorTxProps>;
export type NewTransferSubnetOwnershipTxProps = TxProps<{
    locktime?: bigint;
    subnetAuth: readonly number[];
    subnetId: string;
    subnetOwners: readonly Uint8Array[];
    threshold?: number;
}>;
export declare const newTransferSubnetOwnershipTx: TxBuilderFn<NewTransferSubnetOwnershipTxProps>;
export type NewConvertSubnetToL1TxProps = TxProps<{
    chainId: string;
    subnetId: string;
    address: Uint8Array;
    validators: L1Validator[];
    subnetAuth: readonly number[];
}>;
export declare const newConvertSubnetToL1Tx: TxBuilderFn<NewConvertSubnetToL1TxProps>;
export type NewRegisterL1ValidatorTx = TxProps<{
    balance: bigint;
    blsSignature: Uint8Array;
    message: Uint8Array;
}>;
export declare const newRegisterL1ValidatorTx: TxBuilderFn<NewRegisterL1ValidatorTx>;
export type SetL1ValidatorWeightTxProps = TxProps<{
    message: Uint8Array;
}>;
export declare const newSetL1ValidatorWeightTx: TxBuilderFn<SetL1ValidatorWeightTxProps>;
export type IncreaseL1ValidatorBalanceTxProps = TxProps<{
    balance: bigint;
    validationId: string;
}>;
export declare const newIncreaseL1ValidatorBalanceTx: TxBuilderFn<IncreaseL1ValidatorBalanceTxProps>;
export type DisableL1ValidatorTxProps = TxProps<{
    disableAuth: readonly number[];
    validationId: string;
}>;
export declare const newDisableL1ValidatorTx: TxBuilderFn<DisableL1ValidatorTxProps>;
export {};
//# sourceMappingURL=builder.d.ts.map