export type PlainObject = { [property: string]: any; }; export type Select = string | string[] | keyof T | Array; export type NestedOrderBy = { [P in keyof T]?: T[P] extends Array ? OrderBy : OrderBy; }; export type OrderBy = string | OrderByOptions | Array> | NestedOrderBy; export type TypedFilter = { [P in keyof T]?: any; }; export type Filter = string | PlainObject | TypedFilter | Array>; export type NestedExpandOptions = { [P in keyof T]?: (T[P] extends Array ? Partial> : Partial>); }; export type Expand = string | keyof T | NestedExpandOptions | Array> | Array>; export declare enum StandardAggregateMethods { sum = "sum", min = "min", max = "max", average = "average", countdistinct = "countdistinct" } export type Aggregate = string | { [propertyName: string]: { with: StandardAggregateMethods; as: string; }; }; export type OrderByOptions = keyof T | [keyof T, 'asc' | 'desc']; export type ExpandOptions = { select: Select; filter: Filter; orderBy: OrderBy; skip: number; top: number; levels: number | 'max'; count: boolean | Filter; expand: Expand; }; export type Transform = { aggregate?: Aggregate | Array; filter?: Filter; groupBy?: GroupBy; }; export type GroupBy = { properties: Array; transform?: Transform; }; export type Raw = { type: 'raw'; value: any; }; export type Guid = { type: 'guid'; value: any; }; export type Duration = { type: 'duration'; value: any; }; export type Binary = { type: 'binary'; value: any; }; export type Json = { type: 'json'; value: any; }; export type Alias = { type: 'alias'; name: string; value: any; }; export type Decimal = { type: 'decimal'; value: any; }; export type Value = string | Date | number | boolean | Raw | Guid | Duration | Binary | Json | Alias | Decimal; export declare const raw: (value: string) => Raw; export declare const guid: (value: string) => Guid; export declare const duration: (value: string) => Duration; export declare const binary: (value: string) => Binary; export declare const json: (value: PlainObject) => Json; export declare const alias: (name: string, value: PlainObject) => Alias; export declare const decimal: (value: string) => Decimal; export type QueryOptions = ExpandOptions & { search: string; transform: PlainObject | PlainObject[]; skip: number; skiptoken: string; key: string | number | PlainObject; count: boolean | Filter; action: string; func: string | { [functionName: string]: { [parameterName: string]: any; }; }; format: string; aliases: Alias[]; }; export declare const ITEM_ROOT = ""; export declare function escapeODataStringLiteral(string: string): string; export declare function escapeIllegalChars(string: string): string; export default function ({ select: $select, search: $search, skiptoken: $skiptoken, format: $format, top, skip, filter, transform, orderBy, key, count, expand, action, func }?: Partial>): string;