/**
 * Config module.
 * @module Config
 */
import { ConfigOptions, ExtraGasOptions, SupportingChain } from '../type';
/**
 * Centralize your configuration in Config class
 * @class
 */
export declare class Config {
    private static instance;
    private tokenAddress;
    private airdropAddress;
    private selectedChain;
    private extraGasOptions;
    private thirdwebClientId;
    private thirdwebClientSecret;
    private debug;
    /**
     * private constructor follow singleton design pattern
     *
     *  @param {ConfigOptions} options - optional config object to initialize once if you want
     */
    private constructor();
    /**
     * Single entry point to let consumer initial or access the shared access with singleton pattern
     *
     *  @param {ConfigOptions} configOptions - optional config object to initialize once if you want
     * @returns {Config} - Return the exiting or create a new one
     */
    static getInstance(configOptions?: ConfigOptions): Config;
    /**
     * Set the tokenAddress
     *  @param {string} tokenAddress - The token smart contract address
     * @returns {Config} - Return the current instance
     */
    setTokenAddress(tokenAddress: string): Config;
    /**
     * Set the airdropAddress
     *  @param {string} airdropAddress - The airdrop smart contract address
     * @returns {Config} - Return the current instance
     */
    setAirdropAddress(airdropAddress: string): Config;
    /**
     * Set the selectedChain
     *  @param {SupportingChain} selectedChain - The selected chain
     * @returns {Config} - Return the current instance
     */
    setSelectedChain(selectedChain: SupportingChain): Config;
    /**
     * Set the thirdwebClientId
     *  @param {string} thirdwebClientId - The thirdweb client id
     * @returns {Config} - Return the current instance
     */
    setThirdwebClientId(thirdwebClientId: string): Config;
    /**
     * Set the thirdwebClientSecret
     *  @param {string} thirdwebClientSecret - The thirdweb client secret key
     * @returns {Config} - Return the current instance
     */
    setThirdwebClientSecret(thirdwebClientSecret: string): Config;
    /**
     * Set the debug
     *  @param {boolean} debug - Whether turn on the log to debug or not
     * @returns {Config} - Return the current instance
     */
    setDebug(debug: boolean): Config;
    /**
     * Set the extraGasOptions
     *  @param {ExtraGasOptions} extraGasOptions - Configure the ExtraGasOptions when submitting a transaction
     * @returns {Config} - Return the current instance
     */
    setExtraGasOptions(extraGasOptions: ExtraGasOptions): Config;
    /**
     * Get the tokenAddress
     * @returns {string} - Return the current tokenAddress
     */
    getTokenAddress(): string | undefined;
    /**
     * Get the airdropAddress
     * @returns {string} - Return the current airdropAddress
     */
    getAirdropAddress(): string | undefined;
    /**
     * Get the extraGasOptions
     * @returns {ExtraGasOptions} - Return the current extraGasOptions
     */
    getExtraGasOptions(): ExtraGasOptions | undefined;
    /**
     * Get the selectedChain
     * @returns {SupportingChain} - Return the current selectedChain
     */
    getSelectedChain(): SupportingChain | undefined;
    /**
     * Get the thirdwebClientId
     * @returns {string} - Return the current thirdwebClientId
     */
    getThirdwebClientId(): string | undefined;
    /**
     * Get the thirdwebClientSecret
     * @returns {string} - Return the current thirdwebClientSecret
     */
    getThirdwebClientSecret(): string | undefined;
    /**
     * Get the debug
     * @returns {boolean} - Return the current debug mode
     */
    getDebug(): boolean | undefined;
}
