import { AddressLike, BaseContract } from "ethers";
import { AccountLike, IUser } from "../accounts";
import { AddressString } from "../types";
export interface IERC721 extends IERC721Module {
    use: (user: IUser) => IERC721Module;
}
export interface IERC721Module extends AccountLike {
    name: string;
    symbol: string;
    getId: (key: string, display?: boolean) => Promise<number>;
    getKey: (id: number | string, display?: boolean) => Promise<string>;
    tokenURI: (id: number | string, display?: boolean) => Promise<string>;
    tokenIMG: (id: number | string, display?: boolean) => Promise<string>;
    totalSupply: () => Promise<number>;
    balanceOf: (owner: AccountLike | AddressString, display?: boolean) => Promise<number>;
    tokensOf: (owner: AccountLike | AddressString, display?: boolean) => Promise<number[]>;
    keysOf: (owner: AccountLike | AddressString, display?: boolean) => Promise<string[]>;
    ownerOf: (id: number | string, display?: boolean) => Promise<AddressLike>;
    transfer: (to: AccountLike | AddressString, id: number | string) => Promise<any>;
    transferFrom: (from: AccountLike | AddressString, to: AccountLike | AddressString, id: number | string) => Promise<any>;
    safeTransferFrom: (from: AccountLike | AddressString, to: AccountLike | AddressString, id: number | string, data?: any) => Promise<any>;
    approve: (to: AccountLike | AddressString, id: number | string) => Promise<any>;
    getApproved: (id: number | string) => Promise<any>;
    setApprovalForAll: (operator: AccountLike | AddressString, approve: boolean) => Promise<any>;
    isApprovedForAll: (owner: AccountLike | AddressString, operator: AccountLike | AddressString) => Promise<any>;
    contract: BaseContract;
}
export declare function ERC721(token: any): Promise<IERC721>;
export default ERC721;
//# sourceMappingURL=ERC721.d.ts.map