import n = require("callables-rpc-views"); import model = require("raml1-domain-model"); import col = require("./collection"); export interface Collection { parameters(): n.Parameter[]; setParameterValue(n: string, value: any): any; parameterValues(): { [name: string]: any; }; page(): Promise; nextPage(): Promise; previousPage(): Promise; firstPage(): Promise; validate(): n.ValidationReport; lastPage(): Promise; total(): Promise; range(): model.Type; forEach(f: (v: any, i?: number) => void | boolean): Promise; map(f: (v: any, i?: number) => any): Promise; hasTotal(): boolean; } export interface PagingSpecification { offset?: string; page?: string; limit?: string; } export interface FilterSpecification { property?: string; valueMappings: { [name: string]: any; }; noFilterValue: string; filterOp: "eq" | "lt" | "gt" | "like" | "ge" | "le"; } export interface OrderingMapping { property: string; descending?: boolean; } export interface OrderingMappings { [name: string]: OrderingMapping | string; } export declare enum CollectionKind { OFFSETBASED = 0, PAGEBASED = 1, LINKBASED = 2, } export interface CollectionInfo { paging: PagingSpecification; kind: CollectionKind; range: model.Type; filters: { [name: string]: FilterSpecification; }; total?: string; result?: string; sortDirection?: string; ordering?: string; orderingMappings?: OrderingMappings; } export declare function collectionInfo(n: n.CallableFunction): CollectionInfo; export declare function isCollection(n: n.CallableFunction): boolean; export declare class BasicPagedCollection implements Collection { private _n; private _col; private _collectionInfo; _parameters: n.Parameter[]; currentPage: col.Page; parameters(): n.Parameter[]; hasTotal(): boolean; private ps; setParameterValue(name: string, val: any): void; parameterValues(): { [name: string]: any; }; protected changed(): void; validate(): n.ValidationReport; _page(): col.Page; total(): Promise; lastPage(): Promise; forEach(f: (v: any, i?: number) => void): Promise; map(f: (v: any, i?: number) => any): Promise; nextPage(): Promise; previousPage(): Promise; firstPage(): Promise; page(): Promise; range(): model.Type; constructor(_n: n.CallableFunction); } export declare function toCollection(n: n.CallableFunction): Collection;