import type { Database } from "sqlite3";
import Msg from "../../models/msg";
import Client from "../../client";
import Chan, { Channel } from "../../models/chan";
import type { SearchResponse, SearchQuery, SqliteMessageStorage as ISqliteMessageStorage } from "./types";
import Network from "../../models/network";
declare class SqliteMessageStorage implements ISqliteMessageStorage {
    client: Client;
    isEnabled: boolean;
    database: Database;
    constructor(client: Client);
    enable(): void;
    close(callback?: (error?: Error | null) => void): void;
    index(network: Network, channel: Chan, msg: Msg): void;
    deleteChannel(network: Network, channel: Channel): void;
    /**
     * Load messages for given channel on a given network and resolve a promise with loaded messages.
     *
     * @param Network network - Network object where the channel is
     * @param Chan channel - Channel object for which to load messages for
     */
    getMessages(network: Network, channel: Channel): Promise<Msg[]>;
    search(query: SearchQuery): Promise<SearchResponse | []>;
    canProvideMessages(): boolean;
}
export default SqliteMessageStorage;
