import { BigNumberish } from 'ethers';
declare class Name {
    private name;
    private fns;
    constructor(name: string, fns: FNS);
    getBase(): Promise<object>;
    getInfo(): Promise<object>;
    getAddrs(): Promise<object>;
    getTexts(): Promise<object>;
    getAvailable(): Promise<boolean>;
    getPrice(months?: number, unit?: 'fil' | 'usd'): Promise<BigNumberish | string>;
    getRegistrant(): Promise<string>;
    getExpires(format?: string): Promise<number | string>;
    getExpired(): Promise<boolean>;
    getController(): Promise<string>;
    getContent(): Promise<string>;
    getText(key: string): Promise<string>;
    getAddr(): Promise<string>;
    getAddrOf(coin: string): Promise<string>;
    register(owner: string, months: number): Promise<object>;
    renew(months: number): Promise<object>;
    transferControlTo(addr: string): Promise<object>;
    transferOwnershipTo(to: string): Promise<object>;
    setController(addr: string): Promise<object>;
    setContent(content: string): Promise<object>;
    setText(key: string, val: string): Promise<object>;
    setTexts(texts: Record<string, string>): Promise<object>;
    setAddrOf(coin: string, addr: string): Promise<object>;
    setAddrs(addrMap: Record<string, string>): Promise<object>;
    setPrimaryName(): Promise<object>;
    setSubName(subname: string, owner: string): Promise<object>;
}
declare class Address {
    private address;
    private fns;
    constructor(address: string, fns: FNS);
    getName(): Promise<string>;
    getPrimaryName(): Promise<string>;
    getOwnershipNames(): Promise<string[]>;
}
export default class FNS {
    private network;
    private provider;
    private signer;
    constructor(network?: string);
    setProvider(provider: any): void;
    getProvider(): any;
    setSigner(signer: any): void;
    getSigner(): any;
    /*** name api ***/
    name(name: string): Name;
    /*** address api ***/
    address(address: string): Address;
    /*** readonly api ***/
    getResolver(): string;
    getNameBase(name: string): Promise<object>;
    getNameAddrs(name: string): Promise<object>;
    getNameTexts(name: string): Promise<object>;
    getNameInfo(name: string): Promise<object>;
    getAvailable(name: string): Promise<boolean>;
    getPrice(name: string, months?: number, unit?: 'fil' | 'usd'): Promise<BigNumberish | string>;
    getRegistrant(name: string): Promise<string>;
    getExpires(name: string, format?: string): Promise<any>;
    getExpired(name: string): Promise<boolean>;
    getController(name: string): Promise<string>;
    getContent(name: string): Promise<string>;
    getText(name: string, key: string): Promise<string>;
    getAddr(name: string): Promise<string>;
    getAddrOf(name: string, coin: string): Promise<string>;
    lookupAddress(addr: string): Promise<string>;
    getPrimaryName(addr: string): Promise<string>;
    getOwnershipNames(addr: string): Promise<string[]>;
    /*** write api ***/
    register(name: string, owner: string, months: number, reverseRecord?: boolean, resolver?: any, data?: never[]): Promise<object>;
    renew(name: string, months: number): Promise<object>;
    transferControl(name: string, addr: string): Promise<object>;
    transferOwnership(name: string, to: string): Promise<object>;
    setController(name: string, addr: string): Promise<object>;
    setContent(name: string, content: string): Promise<any>;
    setText(name: string, key: string, val: string): Promise<object>;
    setTexts(name: string, texts: Record<string, string>): Promise<object>;
    setAddrOf(name: string, coin: string, addr: string): Promise<object>;
    setAddrs(name: string, addrMap: Record<string, string>): Promise<object>;
    setPrimaryName(name: string): Promise<object>;
    setSubName(name: string, subname: string, owner: string): Promise<object>;
}
export {};
