/// <reference types="node" />
import { AmmanAccountRendererMap } from '@j0nnyboi/amman-client';
import { AccountInfo, Connection, PublicKey } from '@safecoin/web3.js';
import { AmmanAccount, AmmanAccountProvider } from '../types';
export declare const DEFAULT_MINT_DECIMALS = 9;
/** @private */
export declare type HandleWatchedAccountChanged = (account: AmmanAccount, slot: number, data: Buffer, rendered?: string) => void;
/**
 * @private
 */
export declare class AccountProvider {
    private readonly renderers;
    /**
     * providers by size
     * size: 0 is used for providers of accounts that don't have a fixed size
     */
    readonly byByteSize: Map<number, AmmanAccountProvider[]>;
    readonly nonfixedProviders: AmmanAccountProvider[];
    readonly connection: Connection;
    private constructor();
    static fromRecord(record: Record<string, any>, renderers: AmmanAccountRendererMap): AccountProvider;
    private _mapProviders;
    tryResolveAccount(publicKey: PublicKey, accountInfo?: AccountInfo<Buffer>): Promise<{
        account: AmmanAccount | undefined;
        rendered: string | undefined;
        data: Buffer;
    } | undefined>;
    syncAccountInformation(publicKey: PublicKey): Promise<{
        account: AmmanAccount | undefined;
        rendered: string | undefined;
        data: Buffer;
    } | undefined>;
    private _getProviderAndResolveAccount;
    _resolveFromProviderMatching(accountInfo: AccountInfo<Buffer>, publicKey: PublicKey): {
        account: AmmanAccount;
        rendered: string | undefined;
    } | undefined;
    private _tryResolveAccountFromProviders;
    private _tryResolveAccountFromBuiltins;
    private _resolveAccount;
    private _toAmmanAccount;
    private _getMintDecimals;
    private _tryResolveAddressRemote;
}
