import { DataProvider, fetchUtils, RaRecord, GetListParams, GetListResult, GetOneParams, GetOneResult, GetManyParams, GetManyResult, GetManyReferenceParams, GetManyReferenceResult, UpdateParams, UpdateResult, UpdateManyParams, UpdateManyResult, CreateParams, CreateResult, DeleteParams, DeleteResult, DeleteManyParams, DeleteManyResult, Identifier } from 'ra-core';

interface IParams {
    order?: string;
    page?: string;
    filter?: Record<string, any>;
    meta?: Record<string, any>;
    id?: Identifier;
    ids?: Identifier[];
    [key: string]: any;
}
declare const formatParams: (params: IParams) => string;
declare class TreeQLDataProvider<ResourceType extends string = string> implements DataProvider<ResourceType> {
    private httpClient;
    private apiUrl;
    constructor(_apiUrl: ResourceType, httpClient?: (url: any, options?: fetchUtils.Options | undefined) => Promise<{
        status: number;
        headers: Headers;
        body: string;
        json: any;
    }>);
    getList<RecordType extends RaRecord = any>(resource: ResourceType, params: GetListParams): Promise<GetListResult<RecordType>>;
    getOne<RecordType extends RaRecord = any>(resource: ResourceType, params: GetOneParams<RecordType>): Promise<GetOneResult<RecordType>>;
    getMany<RecordType extends RaRecord = any>(resource: ResourceType, params: GetManyParams): Promise<GetManyResult<RecordType>>;
    getManyReference<RecordType extends RaRecord = any>(resource: ResourceType, params: GetManyReferenceParams): Promise<GetManyReferenceResult<RecordType>>;
    update<RecordType extends RaRecord = any>(resource: ResourceType, params: UpdateParams<RecordType>): Promise<UpdateResult<RecordType>>;
    updateMany<RecordType extends RaRecord = any>(resource: ResourceType, params: UpdateManyParams<RecordType>): Promise<UpdateManyResult<RecordType>>;
    create<RecordType extends RaRecord = any>(resource: ResourceType, params: CreateParams<RecordType>): Promise<CreateResult<RecordType>>;
    delete<RecordType extends RaRecord = any>(resource: ResourceType, params: DeleteParams<RecordType>): Promise<DeleteResult<RecordType>>;
    deleteMany<RecordType extends RaRecord = any>(resource: ResourceType, params: DeleteManyParams<RecordType>): Promise<DeleteManyResult<RecordType>>;
    protected getURL(resource: string, params: IParams): string;
}
declare const getDataProvider: (apiUrl: string, httpClient?: typeof fetchUtils.fetchJson) => TreeQLDataProvider<string>;

export { TreeQLDataProvider, getDataProvider as default, formatParams };
