import { v2, v3, WrappedDocument } from "@govtechsg/open-attestation";
import { Contract, providers, Wallet } from "ethers";
import { EthereumAddress, EthereumNetwork, EthereumTransactionHash } from "./types";
export declare class TokenRegistry {
    web3Provider: providers.BaseProvider;
    address: string;
    contractInstance: Contract;
    /**
     * Creates a TokenRegistry instance with the specified address and ethersjs signer
     * @param instanceParameters
     * @param instanceParameters.contractAddress - Address that the TokenRegistry is located at
     * @param instanceParameters.web3Provider - An ethers.js signer instance with read/write access
     * @param instanceParameters.network - Ethereum network name
     */
    constructor({ contractAddress, web3Provider, wallet, network }: {
        contractAddress: EthereumAddress;
        web3Provider?: providers.BaseProvider;
        wallet?: Wallet;
        network?: EthereumNetwork;
    });
    mint(document: WrappedDocument<v2.OpenAttestationDocument> | WrappedDocument<v3.OpenAttestationDocument>, ownerAddress: EthereumAddress): Promise<string | undefined>;
    ownerOf(document: WrappedDocument<v2.OpenAttestationDocument> | WrappedDocument<v3.OpenAttestationDocument>): Promise<any>;
    transferTo(document: WrappedDocument<v2.OpenAttestationDocument> | WrappedDocument<v3.OpenAttestationDocument>, newOwnerAddress: EthereumAddress): Promise<EthereumTransactionHash>;
}
