import type {Database} from "sqlite3"; import {Channel} from "../../models/channel"; import {Message} from "../../models/message"; import {Network} from "../../models/network"; import Client from "../../client"; interface MessageStorage { client: Client; isEnabled: boolean; enable(): Promise; close(): Promise; index(network: Network, channel: Channel, msg: Message): Promise; deleteChannel(network: Network, channel: Channel): Promise; getMessages(network: Network, channel: Channel): Promise; canProvideMessages(): boolean; } export type SearchQuery = { searchTerm: string; networkUuid: string; channelName: string; offset: number; }; export type SearchResponse = | Omit & { results: Message[]; target: string; offset: number; }; type SearchFunction = (query: SearchQuery) => Promise; export interface SqliteMessageStorage extends MessageStorage { database: Database; search: SearchFunction | []; }