import type { CanBeData, GenesisInfos, ISubmitTx, ITxRunnerProvider, IGetProtocolParameters } from "@harmoniclabs/buildooor";
import { UTxO, Hash32, Address, Value, Script, ProtocolParameters, ITxOutRef, IUTxO, TxOutRefStr, AddressStr, Hash28, Tx } from "@harmoniclabs/cardano-ledger-ts";
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 function paginationOptsToStr({ count, page, order }: PaginationOptions): string;
export type UTxOWithRefScriptHash = UTxO & {
    readonly refScriptHash?: Hash28;
};
export declare class BlockfrostPluts implements ITxRunnerProvider, ISubmitTx, IGetProtocolParameters {
    readonly network: "mainnet" | "preview" | "preprod" | "sanchonet";
    readonly url: string;
    readonly projectId: string;
    constructor({ projectId, customBackend }: 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<UTxOWithRefScriptHash[]>;
    getUtxos(address: AddressStr | Address, pagination?: PaginationOptions): Promise<UTxOWithRefScriptHash[]>;
    /** @since 0.1.0 */
    addressUtxos(address: AddressStr | Address, pagination?: PaginationOptions): Promise<UTxOWithRefScriptHash[]>;
    /** @since 0.1.0 */
    scriptsCbor(hash: string | Hash28): Promise<Script>;
    /** @since 0.1.2 */
    resolveScriptHash(hash: string | Hash28): Promise<Script>;
}
export {};
