import type { Principal } from "@dfinity/principal";
import { Canister, type QueryParams } from "@dfinity/utils";
import type { _SERVICE as CMCCanisterService, Cycles, NotifyCreateCanisterArg, NotifyTopUpArg, SubnetTypesToSubnetsResponse } from "../candid/cmc";
import type { CMCCanisterOptions } from "./cmc.options";
export declare class CMCCanister extends Canister<CMCCanisterService> {
    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 Cycles Minting Canister of the creation of a new canister.
     * It returns the new canister principal.
     *
     * @param {Object} request
     * @param {Principal} request.controller
     * @param {BlockIndex} request.block_index
     * @returns Promise<Principal>
     * @throws RefundedError, InvalidaTransactionError, ProcessingError, TransactionTooOldError, CMCError
     */
    notifyCreateCanister: (request: NotifyCreateCanisterArg) => Promise<Principal>;
    /**
     * Notifies Cycles Minting Canister of new cycles being added to canister.
     * It returns the new Cycles of the canister.
     *
     * @param {Object} request
     * @param {Principal} request.canister_id
     * @param {BlockIndex} request.block_index
     * @returns Promise<Cycles>
     * @throws RefundedError, InvalidaTransactionError, ProcessingError, TransactionTooOldError, CMCError
     */
    notifyTopUp: (request: NotifyTopUpArg) => Promise<Cycles>;
    /**
     * 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<SubnetTypesToSubnetsResponse>;
}
