import { Storage, type AppliedTransaction, type AppliedTransactionProofUpdate, type StoredTransactionRecord, type UnprovenAppliedTransactionCandidate } from '../Storage.js';
import { Knex } from 'knex';
import type { Output } from '../../Output.js';
import { type AdmittedTxRef, type RawTransactionRecord, type TopicAnchorTip, type TopicBlockAnchor } from '../../BASM.js';
export declare class KnexStorage implements Storage {
    knex: Knex;
    constructor(knex: Knex);
    private parseOutputRelations;
    private parseOutputRecord;
    private binaryToNumberArray;
    private binaryToHex;
    private transactionRecordFromBEEF;
    private fetchTransactionBeefMap;
    findOutput(txid: string, outputIndex: number, topic?: string, spent?: boolean, includeBEEF?: boolean): Promise<Output | null>;
    findOutputsByOutpoints(outpoints: Array<{
        txid: string;
        outputIndex: number;
    }>, includeBEEF?: boolean): Promise<Output[]>;
    findOutputsForTransaction(txid: string, includeBEEF?: boolean): Promise<Output[]>;
    findUTXOsForTopic(topic: string, since?: number, limit?: number, includeBEEF?: boolean): Promise<Output[]>;
    deleteOutput(txid: string, outputIndex: number, topic: string): Promise<void>;
    insertOutput(output: Output): Promise<void>;
    markUTXOAsSpent(txid: string, outputIndex: number, topic?: string): Promise<void>;
    updateConsumedBy(txid: string, outputIndex: number, topic: string, consumedBy: Array<{
        txid: string;
        outputIndex: number;
    }>): Promise<void>;
    updateTransactionBEEF(txid: string, beef: number[]): Promise<void>;
    updateOutputBlockHeight(txid: string, outputIndex: number, topic: string, blockHeight: number): Promise<void>;
    upsertTransactionRecord(record: StoredTransactionRecord): Promise<void>;
    updateAppliedTransactionProof(record: AppliedTransactionProofUpdate): Promise<void>;
    insertAppliedTransaction(tx: AppliedTransaction): Promise<void>;
    doesAppliedTransactionExist(tx: {
        txid: string;
        topic: string;
    }): Promise<boolean>;
    updateLastInteraction(host: string, topic: string, since: number): Promise<void>;
    getLastInteraction(host: string, topic: string): Promise<number>;
    findAdmittedTransactionsForBlock(topic: string, blockHeight: number, blockHash?: string): Promise<AdmittedTxRef[]>;
    upsertTopicBlockAnchor(anchor: TopicBlockAnchor): Promise<void>;
    findTopicBlockAnchor(topic: string, blockHeight: number, blockHash?: string): Promise<TopicBlockAnchor | undefined>;
    findTopicBlockAnchors(topic: string, fromHeight: number, toHeight: number): Promise<TopicBlockAnchor[]>;
    findTopicAnchorTip(topic: string): Promise<TopicAnchorTip | undefined>;
    findRawTransactions(txids: string[]): Promise<RawTransactionRecord[]>;
    findTransactionMerklePaths(txids: string[]): Promise<Array<{
        txid: string;
        merklePath: string;
        blockHeight?: number;
        blockHash?: string;
        blockIndex?: number;
        merkleRoot?: string;
    }>>;
    findUnprovenAppliedTransactions(cutoffHeight: number, topic?: string): Promise<UnprovenAppliedTransactionCandidate[]>;
    deleteAppliedTransaction(txid: string, topic: string): Promise<void>;
    findProvenAppliedTransactionsByBlockHash(blockHash: string): Promise<Array<{
        txid: string;
        topic: string;
        blockHeight: number;
    }>>;
    findProvenAppliedTransactionsInRange(fromHeight: number, toHeight: number, topic?: string): Promise<Array<{
        txid: string;
        topic: string;
        blockHeight: number;
        blockHash?: string;
        merkleRoot?: string;
    }>>;
    demoteAppliedTransactionToUnproven(txid: string, topic: string): Promise<void>;
}
//# sourceMappingURL=KnexStorage.d.ts.map