import { Principal } from '@dfinity/principal';
import { Expiry, ReadStateRequest, SubmitRequestType } from '@dfinity/agent';
export interface UnsignedTransaction extends Record<string, any> {
    request_type: SubmitRequestType;
    canister_id: Principal;
    method_name: string;
    arg: ArrayBuffer;
    sender: Principal;
    ingress_expiry: Expiry;
}
export interface TransferRawRequest {
    to: Uint8Array;
    amount: {
        e8s: bigint;
    };
    memo: bigint;
    fee: {
        e8s: bigint;
    };
    created_at_time: [{
        timestamp_nanos: bigint;
    }];
    from_subaccount: [];
}
interface DisburseCommand {
    Disburse: {
        to_account: string[];
        amount: [{
            e8s: bigint;
        }];
    };
}
interface StakeMaturityCommand {
    StakeMaturity: {
        percentage_to_stake: [number] | [];
    };
}
interface SpawnNeuronCommand {
    Spawn: {
        percentage_to_spawn: [number] | [];
        new_controller: [Principal] | [];
        nonce: [bigint] | [];
    };
}
interface RefreshVotingPowerCommand {
    RefreshVotingPower: object;
}
interface SplitNeuronCommand {
    Split: {
        memo: bigint;
        amount_e8s: bigint;
    };
}
interface ManageNeuronFollowRequestCommand {
    Follow: {
        topic: number;
        followees: {
            id: bigint;
        }[];
    };
}
interface IncreaseDissolveDelayConfig {
    IncreaseDissolveDelay: {
        additional_dissolve_delay_seconds: number;
    };
}
interface SetDissolveDelayConfig {
    SetDissolveTimestamp: {
        dissolve_timestamp_seconds: bigint;
    };
}
interface StartDissolvingConfig {
    StartDissolving: object;
}
interface StopDissolvingConfig {
    StopDissolving: object;
}
interface RemoveHotKeyConfig {
    RemoveHotKey: {
        hot_key_to_remove: [Principal];
    };
}
interface AddHotKeyConfig {
    AddHotKey: {
        new_hot_key: [Principal];
    };
}
interface ChangeAutoStakeMaturityConfig {
    ChangeAutoStakeMaturity: {
        requested_setting_for_auto_stake_maturity: boolean;
    };
}
interface ConfigureOperationCommand {
    Configure: {
        operation: [
            StartDissolvingConfig | StopDissolvingConfig | IncreaseDissolveDelayConfig | SetDissolveDelayConfig | ChangeAutoStakeMaturityConfig | RemoveHotKeyConfig | AddHotKeyConfig
        ];
    };
}
export interface NeuronCommandRawRequest<T extends DisburseCommand | ConfigureOperationCommand | StakeMaturityCommand | SpawnNeuronCommand | RefreshVotingPowerCommand | SplitNeuronCommand | ManageNeuronFollowRequestCommand> {
    id: [{
        id: bigint;
    }];
    command: T[];
    neuron_id_or_subaccount: [];
}
interface ListNeuronsRawRequest {
    include_public_neurons_in_full_neurons: [boolean] | [];
    neuron_ids: BigUint64Array;
    include_empty_neurons_readable_by_caller: [boolean] | [];
    include_neurons_readable_by_caller: boolean;
}
export declare const createUnsignedListNeuronsTransaction: (pubKey: string) => {
    unsignedTransaction: UnsignedTransaction;
    listNeuronsRawRequest: ListNeuronsRawRequest;
};
export declare const createUnsignedNeuronCommandTransaction: (transaction: any, pubKey: string) => {
    unsignedTransaction: UnsignedTransaction;
    neuronCommandRawRequest: NeuronCommandRawRequest<DisburseCommand | ConfigureOperationCommand | StakeMaturityCommand | SpawnNeuronCommand | RefreshVotingPowerCommand | SplitNeuronCommand | ManageNeuronFollowRequestCommand>;
};
export declare const createUnsignedSendTransaction: (transaction: any, pubKey: string) => {
    unsignedTransaction: UnsignedTransaction;
    transferRawRequest: TransferRawRequest;
};
export declare const createReadStateRequest: (body: UnsignedTransaction) => Promise<{
    readStateBody: ReadStateRequest;
    requestId: import("@dfinity/agent").RequestId;
}>;
export {};
