import type { Principal } from "@icp-sdk/core/principal";
import type { IcManagementDid } from "../../declarations";
import type { ReadCanisterSnapshotMetadataResponse } from "./snapshot.responses";
export type SnapshotIdText = string;
export interface OptionSnapshotParams {
    canisterId: Principal;
    snapshotId?: SnapshotIdText | IcManagementDid.snapshot_id;
}
export type SnapshotParams = Required<OptionSnapshotParams>;
export declare const toSnapshotArgs: ({ canisterId: canister_id, snapshotId, }: SnapshotParams) => {
    canister_id: IcManagementDid.canister_id;
    snapshot_id: IcManagementDid.snapshot_id;
};
export declare const toReplaceSnapshotArgs: ({ canisterId: canister_id, snapshotId, }: OptionSnapshotParams) => Pick<IcManagementDid.take_canister_snapshot_args, "canister_id" | "replace_snapshot">;
export type CanisterSnapshotMetadataKind = {
    wasmModule: {
        size: bigint;
        offset: bigint;
    };
} | {
    wasmMemory: {
        size: bigint;
        offset: bigint;
    };
} | {
    stableMemory: {
        size: bigint;
        offset: bigint;
    };
} | {
    wasmChunk: {
        hash: Uint8Array;
    };
};
export interface ReadCanisterSnapshotDataParams extends SnapshotParams {
    kind: CanisterSnapshotMetadataKind;
}
export declare const toCanisterSnapshotMetadataKind: (kind: CanisterSnapshotMetadataKind) => IcManagementDid.read_canister_snapshot_data_args["kind"];
export type UploadCanisterSnapshotMetadataParam = Pick<ReadCanisterSnapshotMetadataResponse, "globals" | "certifiedData" | "globalTimer" | "onLowWasmMemoryHookStatus" | "wasmModuleSize" | "stableMemorySize" | "wasmMemorySize">;
export interface UploadCanisterSnapshotMetadataParams extends OptionSnapshotParams {
    metadata: UploadCanisterSnapshotMetadataParam;
}
export declare const toUploadCanisterSnapshotMetadata: ({ globals, certifiedData: certified_data, globalTimer, onLowWasmMemoryHookStatus, wasmModuleSize: wasm_module_size, stableMemorySize: stable_memory_size, wasmMemorySize: wasm_memory_size, }: UploadCanisterSnapshotMetadataParam) => Omit<IcManagementDid.upload_canister_snapshot_metadata_args, "canister_id" | "replace_snapshot">;
export type UploadCanisterSnapshotDataKind = {
    wasmModule: {
        offset: bigint;
    };
} | {
    wasmMemory: {
        offset: bigint;
    };
} | {
    stableMemory: {
        offset: bigint;
    };
} | {
    wasmChunk: null;
};
export interface ReadCanisterSnapshotMetadataParams extends SnapshotParams {
    kind: CanisterSnapshotMetadataKind;
}
export interface UploadCanisterSnapshotDataParams extends SnapshotParams {
    chunk: Uint8Array;
    kind: UploadCanisterSnapshotDataKind;
}
export declare const toUploadCanisterSnapshotDataKind: (kind: UploadCanisterSnapshotDataKind) => IcManagementDid.upload_canister_snapshot_data_args["kind"];
