UNPKG

@ceramicnetwork/common

Version:
83 lines 2.53 kB
import type { StreamID } from '@ceramicnetwork/streamid'; import type { StreamState } from './stream.js'; export declare type ForwardPagination = { first: number; after?: string; }; export declare type BackwardPagination = { last: number; before?: string; }; export declare type Pagination = ForwardPagination | BackwardPagination; export declare type BooleanValueFilter = { isNull: boolean; } | { equalTo: boolean; } | { notEqualTo: boolean; }; export declare type CommonValueFilter<T> = { isNull: boolean; } | { equalTo: T; } | { notEqualTo: T; } | { in: Array<T>; } | { notIn: Array<T>; }; export declare type EnumValueFilter = CommonValueFilter<string>; export declare type GreaterThanValueFilter<T extends string | number> = { greaterThan: T; } | { greaterThanOrEqualTo: T; }; export declare type LessThanValueFilter<T extends string | number> = { lessThan: T; } | { lessThanOrEqualTo: T; }; export declare type RangeValueFilter<T extends string | number> = (GreaterThanValueFilter<T> & Partial<LessThanValueFilter<T>>) | (LessThanValueFilter<T> & Partial<GreaterThanValueFilter<T>>); export declare type ScalarValueFilter<T extends string | number = string | number> = CommonValueFilter<T> | RangeValueFilter<T>; export declare type AnyValueFilter = BooleanValueFilter | EnumValueFilter | ScalarValueFilter; export declare type ObjectFilter = Record<string, AnyValueFilter>; export declare type QueryFilters = { where: ObjectFilter; } | { and: Array<QueryFilters>; } | { or: Array<QueryFilters>; } | { not: QueryFilters; }; export declare type SortOrder = 'ASC' | 'DESC'; export declare type Sorting = Record<string, SortOrder>; export declare type BaseQuery = { model?: StreamID | string; models?: Array<StreamID | string>; account?: string; filter?: Record<string, string>; queryFilters?: QueryFilters; sorting?: Sorting; }; export declare type PaginationQuery = BaseQuery & Pagination; export interface IndexApi { count(query: BaseQuery): Promise<number>; query(query: PaginationQuery): Promise<Page<StreamState | null>>; } export declare type Edge<T> = { cursor: string; node: T; }; export interface Page<T> { readonly edges: Array<Edge<T>>; readonly pageInfo: PageInfo; } export declare type PageInfo = { readonly hasNextPage: boolean; readonly hasPreviousPage: boolean; readonly startCursor?: string; readonly endCursor?: string; }; //# sourceMappingURL=index-api.d.ts.map