import { Api } from './Api';
import { ApiGateway } from './ApiGateway';
import { Func } from '../types/Func';
import { Uri, UriExpandProps } from '../types/Uri';
import { PageList } from '../types/PageList';
import { Json, JsonValue } from '../types/Json';
import { Id } from '../types/Id';
import { Optional } from '../types/Types';
import { List } from '../types/List';
export declare class RouteGateway<Props extends UriExpandProps = UriExpandProps> extends ApiGateway {
    readonly route: Func<Uri<Props>>;
    readonly routeId: Func<Uri<Props>>;
    readonly api: Api;
    constructor(route: Func<Uri<Props>>, routeId: Func<Uri<Props>>, api?: Api);
    all(options?: Props): Promise<PageList<Json>>;
    byId(id: Id): Promise<Optional<Json>>;
    byIds(...ids: Id[]): Promise<List<Json>>;
    search(q: JsonValue, options?: Props): Promise<PageList<Json>>;
    exists(id: Id): Promise<boolean>;
    add(item: Json): Promise<Json>;
    filter(options?: Props): Promise<PageList<Json>>;
    update(item: Json): Promise<Json>;
    upsert(item: Json): Promise<Json>;
    remove(id: Id): Promise<boolean>;
}
