/// <reference types="node" />
import type BN from "bn.js";
import type { ContractOptions } from "web3-eth-contract";
import type { EventLog } from "web3-core";
import type { EventEmitter } from "events";
import type { Callback, NonPayableTransactionObject, BlockType, ContractEventLog, BaseContract } from "./types";
export interface EventOptions {
    filter?: object;
    fromBlock?: BlockType;
    topics?: string[];
}
export type Approval = ContractEventLog<{
    owner: string;
    spender: string;
    value: string;
    0: string;
    1: string;
    2: string;
}>;
export type ContractURIChanged = ContractEventLog<{
    contractURI: string;
    0: string;
}>;
export type Initialized = ContractEventLog<{
    version: string;
    0: string;
}>;
export type Transfer = ContractEventLog<{
    from: string;
    to: string;
    value: string;
    0: string;
    1: string;
    2: string;
}>;
export interface QRC20 extends BaseContract {
    constructor(jsonInterface: any[], address?: string, options?: ContractOptions): QRC20;
    clone(): QRC20;
    methods: {
        BURN_PERMISSION(): NonPayableTransactionObject<string>;
        CHANGE_METADATA_PERMISSION(): NonPayableTransactionObject<string>;
        MINT_PERMISSION(): NonPayableTransactionObject<string>;
        QRC20_RESOURCE(): NonPayableTransactionObject<string>;
        __QRC20_init(params_: [
            string,
            string,
            string,
            number | string | BN,
            number | string | BN
        ], resource_: string): NonPayableTransactionObject<void>;
        allowance(owner: string, spender: string): NonPayableTransactionObject<string>;
        approve(spender: string, amount: number | string | BN): NonPayableTransactionObject<boolean>;
        balanceOf(account: string): NonPayableTransactionObject<string>;
        burnFrom(account_: string, amount_: number | string | BN): NonPayableTransactionObject<void>;
        contractURI(): NonPayableTransactionObject<string>;
        decimals(): NonPayableTransactionObject<string>;
        decreaseAllowance(spender: string, subtractedValue: number | string | BN): NonPayableTransactionObject<boolean>;
        getInjector(): NonPayableTransactionObject<string>;
        increaseAllowance(spender: string, addedValue: number | string | BN): NonPayableTransactionObject<boolean>;
        mintTo(account_: string, amount_: number | string | BN): NonPayableTransactionObject<void>;
        name(): NonPayableTransactionObject<string>;
        permissionManager(): NonPayableTransactionObject<string>;
        setContractMetadata(contractURI_: string): NonPayableTransactionObject<void>;
        setDependencies(registryAddress_: string, arg1: string | number[]): NonPayableTransactionObject<void>;
        setInjector(injector_: string): NonPayableTransactionObject<void>;
        symbol(): NonPayableTransactionObject<string>;
        totalSupply(): NonPayableTransactionObject<string>;
        totalSupplyCap(): NonPayableTransactionObject<string>;
        transfer(to: string, amount: number | string | BN): NonPayableTransactionObject<boolean>;
        transferFrom(from: string, to: string, amount: number | string | BN): NonPayableTransactionObject<boolean>;
    };
    events: {
        Approval(cb?: Callback<Approval>): EventEmitter;
        Approval(options?: EventOptions, cb?: Callback<Approval>): EventEmitter;
        ContractURIChanged(cb?: Callback<ContractURIChanged>): EventEmitter;
        ContractURIChanged(options?: EventOptions, cb?: Callback<ContractURIChanged>): EventEmitter;
        Initialized(cb?: Callback<Initialized>): EventEmitter;
        Initialized(options?: EventOptions, cb?: Callback<Initialized>): EventEmitter;
        Transfer(cb?: Callback<Transfer>): EventEmitter;
        Transfer(options?: EventOptions, cb?: Callback<Transfer>): EventEmitter;
        allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
    };
    once(event: "Approval", cb: Callback<Approval>): void;
    once(event: "Approval", options: EventOptions, cb: Callback<Approval>): void;
    once(event: "ContractURIChanged", cb: Callback<ContractURIChanged>): void;
    once(event: "ContractURIChanged", options: EventOptions, cb: Callback<ContractURIChanged>): void;
    once(event: "Initialized", cb: Callback<Initialized>): void;
    once(event: "Initialized", options: EventOptions, cb: Callback<Initialized>): void;
    once(event: "Transfer", cb: Callback<Transfer>): void;
    once(event: "Transfer", options: EventOptions, cb: Callback<Transfer>): void;
}
