import { QueryPage } from './Connector.Shared'; export type DataConnectorCapabilities = { filtering: boolean; sorting: boolean; model: boolean; dataSourceVariable?: boolean; }; export type JsonPrimitive = string | number | boolean | null; export type JsonValue = JsonPrimitive | JsonObject | JsonArray; export type JsonObject = { [key: string]: JsonValue; }; export type JsonArray = JsonValue[]; export type DataItem = { [key: string]: Date | JsonValue; }; export type DataModel = { properties: DataModelProperty[]; }; export type DataSourceVariableDataModel = DataModel & { itemIdPropertyName: string; }; export type DataModelProperty = { name: string; type: 'singleLine' | 'multiLine' | 'number' | 'date' | 'boolean' | 'json'; }; export interface OneDirectionalNavigation { continuationToken?: string | null; } export interface BidirectionalNavigation extends OneDirectionalNavigation { previousPageToken?: string | null; } export type WithNavigation = T & N; export type DataPage = WithNavigation, 'data'>, OneDirectionalNavigation>; export type BidirectionalDataPage = WithNavigation, 'data'>, BidirectionalNavigation>; interface PageConfigBase { filters?: DataFilter[] | null; sorting?: DataSorting[] | null; limit: number; } /** Options for getPageItemById: sorting and limit used to build navigation tokens. */ export interface PageItemOptions { sorting?: DataSorting[] | null; limit: number; } export type PageConfig = PageConfigBase & OneDirectionalNavigation; export type BidirectionalPageConfig = PageConfigBase & BidirectionalNavigation; export type BidirectionalDataPageItem = WithNavigation<{ data: DataItem; }, BidirectionalNavigation>; export interface DataSorting { property: string; direction: 'asc' | 'desc'; } export interface DataFilter { property: string; value: string; type: 'contains' | 'exact'; } export {};