import { Observable } from 'rxjs';
import { JsonapiBaseService } from './jsonapi-base.service';
import { ResourceBase } from './resource-base.model';
import { SortScope, FieldScope, FilterScope, StatsScope, IncludeScope } from './interfaces/query.interface';
export declare class Scope<T extends ResourceBase> {
    private service;
    private _pagination;
    private _filter;
    private _sort;
    private _fields;
    private _include;
    private _stats;
    private static clone;
    constructor(service: JsonapiBaseService<T>);
    all(): Observable<T[]>;
    all(options: {
        metadata: true;
    }): Observable<{
        data: T[];
        meta: any;
    }>;
    find(id: string): Observable<T>;
    page(pageNumber: number): Scope<T>;
    per(size: number): Scope<T>;
    where(clause: FilterScope): Scope<T>;
    stats(clause: StatsScope): Scope<T>;
    order(clause: SortScope | string): Scope<T>;
    select(clause: FieldScope | string | string[]): Scope<T>;
    includes(clause: IncludeScope): Scope<T>;
    private buildParams;
    private stringifySorts;
    private stringifyIncludes;
    private serializeParams;
}
