import 'rxjs/add/observable/throw'; import 'rxjs/add/operator/startWith'; import 'rxjs/add/operator/withLatestFrom'; import { Observable } from 'rxjs/Observable'; import { OperatorFunction } from 'rxjs/interfaces'; import { Omit } from '../utils'; export declare type PageToken = string & { kind: 'PageToken'; }; export declare const emptyPageToken: PageToken; export declare enum Kind { PageCount = "PageCount", PageToken = "PageToken" } export declare type CommonState = { kind: Kind; urlPath: string; pageSize: number; urlQuery?: {}; result: T[]; nextPage: number; hasMore: boolean; limit: number; }; export declare type PageCountState = CommonState & { kind: Kind.PageCount; }; export declare type PageTokenState = CommonState & { kind: Kind.PageToken; nextPageToken: PageToken; totalSize?: number; }; export declare type State = PageTokenState; export declare type PolyState = PageCountState | PageTokenState; export declare type StateOptions = { kind?: Kind; pageSize?: number; urlQuery?: {}; }; export declare type InitOptions = Omit & { urlQuery?: T; }; export declare type Update = { patch?: T[]; limit?: number; }; export declare function defaultState(urlPath: string, options: StateOptions & { kind: Kind.PageCount; }): PageCountState; export declare function defaultState(urlPath: string): PageTokenState; export declare function defaultState(urlPath: string, options: Omit): PageTokenState; export declare function defaultState(urlPath: string, options: StateOptions & { kind: Kind.PageToken; }): PageTokenState; export declare function defaultState(urlPath: string, options: StateOptions): PolyState; export declare function queryInfo(state: CommonState): Update; export declare type OriginalResponse = { nextPageToken: PageToken; result: T[]; totalSize?: number; }; export declare function accUpdate(state: PageCountState, resp: T[]): PageCountState; export declare function accUpdate(state: PageTokenState, resp: OriginalResponse): PageTokenState; export declare function accUpdate(state: PolyState, resp: OriginalResponse | T[]): PolyState; export declare function accConcat(state: PageCountState, resp: T[]): PageCountState; export declare function accConcat(state: PageTokenState, resp: OriginalResponse): PageTokenState; export declare function accConcat(state: PolyState, resp: OriginalResponse | T[]): PolyState; export declare function expand(step: (curr: PageCountState) => Observable, accumulate: (state: PageCountState, resp: T[]) => PageCountState, initState: PageCountState): OperatorFunction<{}, Observable>>; export declare function expand(step: (curr: PageTokenState) => Observable>, accumulate: (state: PageTokenState, resp: OriginalResponse) => PageTokenState, initState: PageTokenState): OperatorFunction<{}, Observable>>; export declare function expand(step: ((curr: PolyState) => Observable), accumulator: (state: PolyState, resp: any) => PolyState, initState: PolyState): OperatorFunction<{}, Observable>>;