import type { CanBeData, GenesisInfos, ISubmitTx, ITxRunnerProvider, IGetProtocolParameters } from "@harmoniclabs/buildooor";
import { Hash32, Address, Value, Script, ProtocolParameters, ITxOutRef, IUTxO, TxOutRefStr, AddressStr, Hash28, Tx, UTxO } from "@harmoniclabs/buildooor";
import { BlockfrostOptions } from "./BlockfrostOptions.js";
import { AddressInfos } from "./types/AddressInfos.js";
import { OgmiosRdmrExUnits } from "./utils/evaluatePlutusCosts.js";
import { BlockInfos } from "./types/BlockInfos.js";
type CanResolveToUTxO = IUTxO | ITxOutRef | TxOutRefStr;
export type PaginationOptions = {
    count?: number;
    page?: number;
    order?: 'asc' | 'desc';
};
export declare const defaultPaginationOpts: PaginationOptions;
export declare function paginationOptsToStr({ count, page, order }: PaginationOptions): string;
export declare class BlockfrostPluts implements ITxRunnerProvider, ISubmitTx, IGetProtocolParameters {
    readonly network: "mainnet" | "preview" | "preprod" | "sanchonet";
    readonly url: string;
    readonly projectId: string;
    constructor({ projectId, customBackend, network }: BlockfrostOptions);
    /** @since 0.1.4 */
    submitTx(tx: string | Tx): Promise<string>;
    /** @since 0.1.13 */
    evaluatePlutusCosts(tx: string | Tx): Promise<OgmiosRdmrExUnits[]>;
    get(url: string): Promise<any>;
    /** @since 0.1.12 */
    getChainTip(): Promise<BlockInfos>;
    /** @since 0.1.3 */
    getGenesisInfos(): Promise<GenesisInfos>;
    /** @since 0.1.1 */
    epochsParameters(epoch_no: number): Promise<ProtocolParameters>;
    /** @since 0.1.1 */
    epochsLatestParameters(): Promise<ProtocolParameters>;
    /** @since 0.1.0 */
    getProtocolParameters(): Promise<ProtocolParameters>;
    /** @since 0.1.0 */
    resolveUtxos(utxos: CanResolveToUTxO[]): Promise<UTxO[]>;
    /** @since 0.1.0 */
    resolveDatumHashes(hashes: Hash32[]): Promise<{
        hash: string;
        datum: CanBeData;
    }[]>;
    /** @since 0.1.1 */
    addressesInfos(address: AddressStr | Address): Promise<AddressInfos>;
    /** @since 0.1.1 */
    addressInfos(address: AddressStr | Address): Promise<AddressInfos>;
    /** @since 0.1.1 */
    addressTotalAmount(address: AddressStr | Address): Promise<Value>;
    addressTxs(addr: AddressStr | Address): Promise<Hash32[]>;
    /** @since 0.1.0 */
    addressesUtxos(address: AddressStr | Address, pagination?: PaginationOptions): Promise<UTxO[]>;
    getUtxos(address: AddressStr | Address, pagination?: PaginationOptions): Promise<UTxO[]>;
    /** @since 0.3.0 */
    private _addrUtxoQuery;
    /** @since 0.3.0 */
    addressAssetUtxos(address: AddressStr | Address, assetUnit: string, pagination?: PaginationOptions): Promise<UTxO[]>;
    /**
     * @since 0.4.1
    **/
    assetAddresses(assetUnit: string, pagination?: PaginationOptions): Promise<AddrStrAndQuantity[]>;
    /**
     * @since 0.4.1
    **/
    addressesWithAsset(assetUnit: string, pagination?: PaginationOptions): Promise<AddrStrAndQuantity[]>;
    /**
     * @since 0.4.1
    **/
    private _addressesWithAssetQuery;
    /**
     * @since 0.1.0
     *
     * @version 0.3.0 adds default pagination and full query on missing pagination
    **/
    addressUtxos(address: AddressStr | Address, pagination?: PaginationOptions): Promise<UTxO[]>;
    /** @since 0.1.0 */
    scriptsCbor(hash: string | Hash28): Promise<Script>;
    /**
     * @since 0.1.2
     * @version 0.3.2 adds support for plutus v3
     **/
    resolveScriptHash(hash: string | Hash28): Promise<Script>;
}
export interface AddrStrAndQuantity {
    address: AddressStr;
    quantity: `${bigint}`;
}
export {};
