/// <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;
    approved: string;
    tokenId: string;
    0: string;
    1: string;
    2: string;
}>;
export type ApprovalForAll = ContractEventLog<{
    owner: string;
    operator: string;
    approved: boolean;
    0: string;
    1: string;
    2: boolean;
}>;
export type Initialized = ContractEventLog<{
    version: string;
    0: string;
}>;
export type Transfer = ContractEventLog<{
    from: string;
    to: string;
    tokenId: string;
    0: string;
    1: string;
    2: string;
}>;
export interface ERC721Upgradeable extends BaseContract {
    constructor(jsonInterface: any[], address?: string, options?: ContractOptions): ERC721Upgradeable;
    clone(): ERC721Upgradeable;
    methods: {
        approve(to: string, tokenId: number | string | BN): NonPayableTransactionObject<void>;
        balanceOf(owner: string): NonPayableTransactionObject<string>;
        getApproved(tokenId: number | string | BN): NonPayableTransactionObject<string>;
        isApprovedForAll(owner: string, operator: string): NonPayableTransactionObject<boolean>;
        name(): NonPayableTransactionObject<string>;
        ownerOf(tokenId: number | string | BN): NonPayableTransactionObject<string>;
        "safeTransferFrom(address,address,uint256)"(from: string, to: string, tokenId: number | string | BN): NonPayableTransactionObject<void>;
        "safeTransferFrom(address,address,uint256,bytes)"(from: string, to: string, tokenId: number | string | BN, data: string | number[]): NonPayableTransactionObject<void>;
        setApprovalForAll(operator: string, approved: boolean): NonPayableTransactionObject<void>;
        supportsInterface(interfaceId: string | number[]): NonPayableTransactionObject<boolean>;
        symbol(): NonPayableTransactionObject<string>;
        tokenURI(tokenId: number | string | BN): NonPayableTransactionObject<string>;
        transferFrom(from: string, to: string, tokenId: number | string | BN): NonPayableTransactionObject<void>;
    };
    events: {
        Approval(cb?: Callback<Approval>): EventEmitter;
        Approval(options?: EventOptions, cb?: Callback<Approval>): EventEmitter;
        ApprovalForAll(cb?: Callback<ApprovalForAll>): EventEmitter;
        ApprovalForAll(options?: EventOptions, cb?: Callback<ApprovalForAll>): 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: "ApprovalForAll", cb: Callback<ApprovalForAll>): void;
    once(event: "ApprovalForAll", options: EventOptions, cb: Callback<ApprovalForAll>): 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;
}
