import { Canister, type QueryParams } from "@dfinity/utils";
import type { Principal } from "@icp-sdk/core/principal";
import { type CmcDid, type CmcService } from "../declarations";
import type { CmcCanisterOptions } from "./cmc.options";
export declare class CmcCanister extends Canister<CmcService> {
    static create(options: CmcCanisterOptions): CmcCanister;
    /**
     * Returns conversion rate of ICP to Cycles. It can be called as query or update.
     *
     * @param {Object} [params] - The parameters for the call.
     * @param {boolean} [params.certified] - Determines whether the response should be certified (default: non-certified)
     *
     * @returns Promise<BigInt>
     */
    getIcpToCyclesConversionRate: ({ certified, }?: QueryParams) => Promise<bigint>;
    /**
     * Notifies CMC (Cycles Minting Canister) of the creation of a new canister.
     *
     * @param {Object} request
     * @param {Principal} request.controller - The controller of the canister to create
     * @param {BlockIndex} request.block_index - The block index of the ICP transaction on the ICP ledger
     * @param {SubnetSelection} [request.subnet_selection] - Optional instructions to select on which subnet the canister will be created
     * @param {CanisterSettings} [request.settings] - Optional canister settings to apply to the newly created canister
     * @param {string} [request.subnet_type] - (Deprecated) Optional subnet type. Use subnet_selection instead
     * @returns Promise<Principal> The principal of the newly created canister
     * @throws RefundedError, InvalidaTransactionError, ProcessingError, TransactionTooOldError, CmcError
     */
    notifyCreateCanister: (request: CmcDid.NotifyCreateCanisterArg) => Promise<Principal>;
    /**
     * Notifies the CMC (Cycles Minting Canister) of new cycles being added to a canister.
     * This function is commonly used to finalize the process of topping up a canister using ICP.
     *
     * @param {Object} request
     * @param {Principal} request.canister_id - The ID of the canister being topped up
     * @param {BlockIndex} request.block_index - The block index of the ICP transaction
     * @returns Promise<Cycles> The new cycles of the canister
     * @throws RefundedError, InvalidTransactionError, ProcessingError, TransactionTooOldError, CmcError
     */
    notifyTopUp: (request: CmcDid.NotifyTopUpArg) => Promise<CmcDid.Cycles>;
    /**
     * Notifies the CMC (Cycles Minting Canister) to mint cycles and deposit them to a cycles ledger account owned by the caller.
     * This function is commonly used to finalize the process of converting ICP to cycles.
     *
     * @param {Object} request
     * @param {BlockIndex} request.block_index - The block index of the ICP transaction on the ICP ledger
     * @param {Memo} request.deposit_memo - Optional memo for the deposit transaction
     * @param {Subaccount} request.to_subaccount - Optional Cycles ledger subaccount to which the cycles are minted to
     * @returns Promise<Cycles> The new cycles of the canister
     * @throws RefundedError, InvalidTransactionError, ProcessingError, TransactionTooOldError, CmcError
     */
    notifyMintCycles: (request: CmcDid.NotifyMintCyclesArg) => Promise<CmcDid.NotifyMintCyclesSuccess>;
    /**
     * This function calls the `get_default_subnets` method of the CMC canister, which returns a list of
     * default subnets as `Principal` objects. It can be called as query or update.
     *
     * @param {Object} [params] - The query parameters for the call.
     * @param {boolean} [params.certified] - Determines whether the response should be certified
     * (default: non-certified if not specified).
     *
     * @returns {Promise<Principal[]>} - A promise that resolves to an array of `Principal` objects
     * representing the default subnets.
     */
    getDefaultSubnets: ({ certified }?: QueryParams) => Promise<Principal[]>;
    /**
     * This function calls the `get_subnet_types_to_subnets` method of the CMC canister, which returns a list of subnets where canisters can be created.
     * These subnets are excluded from the random subnet selection process used by the CMC when no explicit subnet ID is provided
     * during canister creation and therefore, not provided in the results of the similar function `get_default_subnets`.
     *
     * @param {Object} [params] - The optional query parameters for the call.
     * @param {boolean} [params.certified=false] - Specifies whether the response should be certified.
     * If not provided, the response defaults to non-certified.
     *
     * @returns {Promise<SubnetTypesToSubnetsResponse>} - A promise that resolves to an object representing
     * the mapping of subnet types to subnets.
     */
    getSubnetTypesToSubnets: ({ certified, }?: QueryParams) => Promise<CmcDid.SubnetTypesToSubnetsResponse>;
}
