import { CollectionView, CollectionViewOptions } from './CollectionView'; import { EventBus, EventHandler } from '../events/EventBus'; type FieldType = 'Number' | 'Date' | 'Boolean' | 'String'; export interface ODataOptions extends CollectionViewOptions { /** Fields to retrieve ($select). Empty means all fields. */ fields?: string[]; /** Sort on the server via $orderby. Default true. */ sortOnServer?: boolean; /** Filter on the server via $filter. Default true. */ filterOnServer?: boolean; /** Page on the server via $top/$skip. Default true. */ pageOnServer?: boolean; /** OData $filter expression applied on the server. */ filterDefinition?: string; requestHeaders?: Record; /** Coerce specific fields after loading (e.g. { Freight: 'Number' }). */ dataTypes?: Record; } interface LoadEvents { loading: void; loaded: void; error: unknown; } /** * A {@link CollectionView} backed by an OData service. Sorting, filtering, and * paging run on the server through $orderby/$filter/$top/$skip; the view holds * the current server page. */ export declare class ODataCollectionView> extends CollectionView { readonly url: string; readonly tableName: string; fields: string[]; filterDefinition: string; sortOnServer: boolean; filterOnServer: boolean; pageOnServer: boolean; requestHeaders: Record; dataTypes: Record; protected loadEvents: EventBus; protected _isLoading: boolean; constructor(url: string, tableName: string, options?: ODataOptions); get isLoading(): boolean; onLoading(handler: EventHandler): () => void; onLoaded(handler: EventHandler): () => void; onError(handler: EventHandler): () => void; refresh(): void; /** Load (or reload) the current page from the server. */ load(): void; protected applyServerPage(items: T[]): void; protected finishLoad(): void; protected failLoad(err: unknown): void; protected fetchPage(skip: number, top: number): Promise<{ items: T[]; total: number; }>; protected buildQuery(skip: number, top: number): string; private coerceTypes; } export {};