import type PaginationOptions from "../../domain/models/pagination-options";
import type SortOptions from "../../domain/models/sort-options";
import type { HttpClient } from "../http/http-client";
export interface APIRepositoryProps {
    httpClient: HttpClient;
    httpClientKey?: string;
}
interface RequestOptions {
}
export default abstract class APIRepository {
    protected readonly props: APIRepositoryProps;
    protected httpClient: HttpClient;
    constructor(props: APIRepositoryProps);
    findByCriteriaRequest<T>(resource: string, filter?: any, pagination?: PaginationOptions, sort?: SortOptions, withAuth?: boolean, options?: RequestOptions): Promise<T[]>;
    countRequest<T>(resource: string, where?: any, withAuth?: boolean, options?: RequestOptions): Promise<any>;
    findOneById<T>(resource: string, id: string, withAuth?: boolean, options?: RequestOptions): Promise<T | undefined>;
    create<T>(resource: string, data: any, withAuth?: boolean, options?: RequestOptions): Promise<any>;
    updateById<T>(resource: string, id: string, changes: any, withAuth?: boolean, options?: RequestOptions): Promise<any>;
    deleteById<T>(resource: string, id: string, withAuth?: boolean, options?: RequestOptions): Promise<void>;
    get<T>(path: string, withAuth?: boolean, options?: RequestOptions): Promise<T>;
    post<T>(path: string, data: any, withAuth?: boolean, options?: RequestOptions): Promise<any>;
    patch<T>(resource: string, changes: any, withAuth?: boolean, options?: RequestOptions): Promise<any>;
    getClientApiUrl(path: string): string;
    private getRequestOptions;
}
export {};
