import { ethers } from 'ethers';
import { BehaviorSubject } from 'rxjs';
import { AccountInfo, GetContractBalance, IProviderRpcError, SetApprovalForAll, TransferContractToken, TransferEvent } from '../../../../models';
import { ContractTypes, StandardContractProps } from '../../../../networks';
/**
 * The client describes how to work with ERC20, ERC721, ERC1155 contracts .
 * @implements IStandardContract
 * @class
 */
export declare class ERC1155 {
    private contract;
    errors$: BehaviorSubject<IProviderRpcError | null>;
    private signer;
    address: string;
    name: string | undefined;
    symbol: string | undefined;
    decimals: number;
    type: ContractTypes | undefined;
    provider: ethers.providers.JsonRpcProvider | undefined;
    constructor({ address, signer, network }: StandardContractProps);
    /**
     * Gives access to contract methods,
     * if you don't call init client just won't know which contract to use
     * @async
     */
    init(): Promise<boolean>;
    checkInitialization(): void;
    checkType(type: ContractTypes): boolean;
    getContract(): ethers.Contract;
    getName(): Promise<string | undefined>;
    getSymbol(): Promise<string | undefined>;
    /**
     * Check balance in contract
     * @param {GetContractBalance} object,
     * @return {Promise<number>}
     * @async
     */
    getBalance(arg?: GetContractBalance): Promise<AccountInfo[]>;
    /**
     * Transfer token
     * @param {TransferContractToken} args
     * @return {Promise<Transaction>}
     * @async
     */
    transfer(args: TransferContractToken): Promise<ethers.providers.TransactionResponse>;
    /**
     * get decoded Transfer
     * @param {TransferContractToken} args
     * @return {string}
     */
    getDecodedTransfer(args: TransferContractToken): string;
    /**
     * Get token uri, only works when this.type === 'ERC721'
     * @param {string} tokenId
     * @return {Promise<string>}
     * @async
     */
    getTokenUri(tokenId: string): Promise<string>;
    approve(): Promise<void>;
    setApprovalForAll(args: SetApprovalForAll): Promise<ethers.providers.TransactionResponse>;
    /**
     * Subscribe on transfer events in contract
     */
    transferEvents(): BehaviorSubject<TransferEvent | null>;
}
