import * as joi from "joi";
import { Client, RequestOptions } from "../../client";
import { IApiSchemas, IPathReplacers, UpdateRequest } from "./types";
export * from "./types";
export declare abstract class Api {
    private _client;
    private _schemas;
    private _paths;
    constructor(_client: Client, _schemas: IApiSchemas, _paths: any);
    readonly client: Client;
    readonly schemas: IApiSchemas;
    readonly paths: any;
    get(id: string, options?: Partial<RequestOptions>): Promise<any>;
    create(options?: Partial<RequestOptions>): Promise<any>;
    delete(id: string, options?: Partial<RequestOptions>): Promise<any>;
    list(options?: Partial<RequestOptions>): Promise<any>;
    search(options?: Partial<RequestOptions>): Promise<any>;
    update(id: string, payload: UpdateRequest | any, options?: Partial<RequestOptions>): Promise<any>;
    parsePath(path: string, replacers: IPathReplacers): string;
    protected schemaValidate(what: any, schema: joi.Schema, additional?: joi.ValidationOptions): any;
}
