import { BatchAction } from './batch-action.model';
import { BatchResponseJson } from './batch-response';
import { ClientConfig } from './client-config.model';
import { ClientResponse } from './client-response.model';
import { DTOModels, DTOName } from './dto-name.model';
import { HttpService } from './http-service';
import { OauthTokenResponse } from './oauth-token-response.model';
import { AuthService } from './auth.service';
declare type IdOrExternalId = Partial<{
    resourceId: string | null | undefined;
    externalId: string | null | undefined;
}>;
export declare class ClientService {
    private _config;
    private _http;
    private _auth;
    constructor(_config: Readonly<ClientConfig>, _http: Readonly<HttpService>, _auth: Readonly<AuthService>);
    private _requestDataApi;
    login(): Promise<OauthTokenResponse>;
    query<T extends {
        [projection: string]: DTOModels;
    }>(coreSQL: string, dtoNames: DTOName[]): Promise<{
        data: T[];
    }>;
    getResource<T extends DTOModels>(resourceName: DTOName, id: IdOrExternalId, queryParams?: {
        useExternalIds: true;
    } | undefined): Promise<ClientResponse<T>>;
    deleteResource<T extends Partial<DTOModels>>(resourceName: DTOName, id: IdOrExternalId, lastChanged: number): Promise<undefined>;
    postResource<T extends DTOModels>(resourceName: DTOName, resource: T, queryParams?: {
        useExternalIds: true;
    } | undefined): Promise<ClientResponse<T>>;
    putResource<T extends DTOModels>(resourceName: DTOName, id: IdOrExternalId, resource: T, queryParams?: {
        useExternalIds: true;
    } | undefined): Promise<ClientResponse<T>>;
    patchResource<T extends DTOModels>(resourceName: DTOName, id: IdOrExternalId, resource: T, queryParams?: {
        useExternalIds: true;
    } | undefined): Promise<ClientResponse<T>>;
    batch<T extends DTOModels>(actions: BatchAction[]): Promise<BatchResponseJson<T>[]>;
    getToken(): Readonly<OauthTokenResponse> | undefined;
    setToken(token: OauthTokenResponse): ClientService;
}
export {};
