import { type Address, type DecodeEventParams, type DecodeTransactionParams, type ProviderRpcClient, type SendInternalParams, type Transaction } from 'everscale-inpage-provider';
import { SmartContractModel } from '../../core';
import { type TokenFactoryAbi } from '../../models/tvm-token-factory/abi';
import { TvmTokenFactoryUtils } from '../../models/tvm-token-factory/TvmTokenFactoryUtils';
import { type TvmTokenFactoryCreateTokenParams, type TvmTokenFactoryDecodedEvent, type TvmTokenFactoryDecodedTransaction } from '../../models/tvm-token-factory/types';
import { type Syncable, type Watchable } from '../../types';
export interface TvmTokenFactoryCreateOptions extends Syncable, TvmTokenFactoryCtorOptions, Watchable {
}
export interface TvmTokenFactoryCtorOptions {
    watchDebounceDelay?: number;
}
export declare class TvmTokenFactory extends SmartContractModel {
    protected readonly _connection: ProviderRpcClient;
    protected readonly options?: Readonly<TvmTokenFactoryCtorOptions> | undefined;
    protected readonly _provider?: ProviderRpcClient | undefined;
    static Utils: typeof TvmTokenFactoryUtils;
    /**
     * @param {ProviderRpcClient} _connection
     *   Standalone RPC client that doesn't require connection to the TVM wallet provider
     * @param {Address | string} address
     *   TvmTokenFactory root address
     * @param {Readonly<TvmTokenFactoryCtorOptions>} [options]
     *   (optional) TvmTokenFactory Smart Contract Model options
     * @param {ProviderRpcClient} [_provider]
     *   (optional) RPC provider that require connection to the TVM wallet
     */
    constructor(_connection: ProviderRpcClient, address: Address | string, options?: Readonly<TvmTokenFactoryCtorOptions> | undefined, _provider?: ProviderRpcClient | undefined);
    createToken(params: TvmTokenFactoryCreateTokenParams, args?: SendInternalParams): Promise<Transaction | undefined>;
    decodeEvent(args: DecodeEventParams<typeof TokenFactoryAbi>): Promise<TvmTokenFactoryDecodedEvent | undefined>;
    decodeTransaction(args: DecodeTransactionParams<typeof TokenFactoryAbi>): Promise<TvmTokenFactoryDecodedTransaction | undefined>;
    decodeTransactionEvents(transaction: Transaction): Promise<TvmTokenFactoryDecodedEvent[]>;
}
