import type { Query, Sort } from "@peerbit/indexer-interface"; import { Entry, type ShallowEntry } from "@peerbit/log"; import { type EntryReplicated, type NumberFromType, type ReplicationDomain, type SharedLog } from "@peerbit/shared-log"; import { type Operation } from "./operation.js"; import type { DocumentIndex } from "./search.js"; type InferT = D extends Documents ? T : never; type InferR = D extends Documents> ? R : never; type Documents, R extends "u32" | "u64" = D extends ReplicationDomain ? I : "u32"> = { log: SharedLog; index: DocumentIndex; }; type RangeArgs = { from: NumberFromType; to: NumberFromType; }; export type CustomDocumentDomain = ReplicationDomain, Operation, R> & { canProjectToOneSegment: (request: { query: Query[]; sort: Sort[]; }) => boolean; }; type FromEntry = { fromEntry?: (entry: ShallowEntry | Entry | EntryReplicated) => NumberFromType; }; type FromValue = { fromValue?: (value: T | undefined, entry: ShallowEntry | Entry | EntryReplicated) => NumberFromType; }; type CreateArgs> = { resolution: R; canProjectToOneSegment: (request: { query: Query[]; sort: Sort[]; }) => boolean; mergeSegmentMaxDelta?: number; } & (FromEntry | FromValue, R>); export declare const createDocumentDomainFromProperty: >(properties: { property: keyof InferT; resolution: R; mergeSegmentMaxDelta?: number; }) => ((db: DB) => CustomDocumentDomain>); export declare const createDocumentDomain: >(args: CreateArgs) => ((db: DB) => CustomDocumentDomain>); export {}; //# sourceMappingURL=domain.d.ts.map