import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Optional } from 'typescript-optional';
import { FilesDetailsRequest } from '../../../../../models/file-image';
import { GenericDocSearchCriteriaDtoModel } from '../../data-transfer-objects/generic-doc-search-criteria.model';
import { ApiResponseModel, BasicApiResponseModel, PagingResponseModel } from './api-response.model';
import { ApiVisa } from './api-visa.model';
import { Pagination } from './pagination.model';
import { DepositRequisitionSearchCriteriaDtoModel, DepositRegisterSearchCriteriaDtoModel, DepositRegisterTxnLineSearchCriteriaDtoModel } from '../../data-transfer-objects';
import { DepositCategorySearchCriteriaDtoModel } from '../../data-transfer-objects/deposit-category-search-criteria.model';
export declare class BaseApiTemplateService<T> {
    protected apiUrl: string;
    protected api_domain_url: string;
    protected endpoint_path: string;
    protected endpoint_path_public_url: string;
    protected endpoint_path_login_url: string;
    protected endpoint_path_login_entity_url: string;
    protected endpoint_path_sysadmin_url: string;
    protected endpoint_path_event_view_url: string;
    protected endpoint_path_website_ep_url: string;
    static readonly BACKOFFICE_EP = "backoffice-ep";
    static readonly LOGIN_ENTITY_EP = "login-entity-ep";
    static readonly LOGIN_EP = "login-ep";
    static readonly SYSADMIN_EP = "sysadmin-ep";
    static readonly PUBLIC_EP = "public-ep";
    static readonly WEBSITE_EP = "website-ep";
    static readonly TENANT_ADMIN_EP = "tenant-admin-ep";
    protected httpClient: HttpClient;
    constructor();
    getApiUrl(): string;
    getHttpHeader(apiVisa: ApiVisa): {
        headers: HttpHeaders;
    };
    getHttpHeaderBlob(apiVisa: ApiVisa, params?: HttpParams): {
        headers: HttpHeaders;
        params: HttpParams;
        responseType: "json";
    };
    getHttpHeaderText(apiVisa: ApiVisa): Object;
    getHttpHeaderJson(apiVisa: ApiVisa): Object;
    getHttpHeaderAccessKey(apiVisa: ApiVisa): {
        headers: HttpHeaders;
    };
    post(dtoObject: T, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    postLoginEntityEp(dtoObject: T, visa: ApiVisa): Observable<BasicApiResponseModel<T>>;
    postPublicEp(dtoObject: T, visa: ApiVisa): Observable<BasicApiResponseModel<T>>;
    postWithAttachments(dtoObject: FormData, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    postFileUploadETLWithAttachments(dtoObject: FormData, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    putWithAttachments(dtoObject: FormData, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    postOne(dtoObject: T, visa: ApiVisa): Observable<BasicApiResponseModel<T>>;
    postOnePromise(dtoObject: T, visa: ApiVisa): Promise<BasicApiResponseModel<T>>;
    postPromise(dtoObject: T, visa: ApiVisa): Promise<ApiResponseModel<T>>;
    /** GET branches from the server */
    get(visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getPromise(visa: ApiVisa): Promise<ApiResponseModel<T>>;
    /** Edit branch */
    edit(dtoObject: T, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    editPromise(dtoObject: T, visa: ApiVisa): Promise<ApiResponseModel<T>>;
    /** Edit for BasicApiResponseModel */
    put(dtoObject: T, visa: ApiVisa): Observable<BasicApiResponseModel<T>>;
    /** Delete branch */
    delete(guid: string, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    deletePromise(guid: string, visa: ApiVisa): Promise<ApiResponseModel<T>>;
    /** File Attachment related */
    addAttachmentsAndDetails(guid: string, files: File[], visa: ApiVisa, filesDetails?: FilesDetailsRequest): Observable<ApiResponseModel<T>>;
    editAttachmentAndDetails(extensionGuid: string, file: File, visa: ApiVisa, filesDetails: Optional<FilesDetailsRequest>): Observable<ApiResponseModel<T>>;
    deleteAttachment(extensionGuid: string, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getAttachmentFile(extensionGuid: string, apiVisa: ApiVisa): Observable<Blob>;
    /** Get branch by guid */
    getByGuid(guid: string, visa: ApiVisa): Observable<BasicApiResponseModel<T>>;
    getByGuidPromise(guid: string, visa: ApiVisa): Promise<BasicApiResponseModel<T>>;
    getByCriteria(pagination: Pagination, visa: ApiVisa, criteria?: any): Observable<PagingResponseModel<T>>;
    getByCriteriaPublicEp(pagination: Pagination, visa: ApiVisa, criteria?: any): Observable<PagingResponseModel<T>>;
    getByCriteriaLoginEntityEp(pagination: Pagination, visa: ApiVisa, criteria?: any): Observable<PagingResponseModel<T>>;
    protected __getByGuidAux<U>(apiUrl: string, guid: string, visa: ApiVisa): Observable<BasicApiResponseModel<U>>;
    protected __getByCriteriaAux<U>(apiUrl: string, pagination: Pagination, visa: ApiVisa): Observable<PagingResponseModel<U>>;
    protected __postLoginAux<U>(apiUrl: string, dtoObject: U, visa: ApiVisa): Observable<BasicApiResponseModel<U>>;
    __deleteLoginAux<U>(apiUrl: string, guid: string, visa: ApiVisa): Observable<ApiResponseModel<U>>;
    __deleteAux<U>(apiUrl: string, guid: string, visa: ApiVisa): Observable<ApiResponseModel<U>>;
    protected __putLoginEntityAux<U>(apiUrl: string, dtoObject: U, visa: ApiVisa): Observable<BasicApiResponseModel<U>>;
    protected __getAllAux<U>(apiUrl: string, visa: ApiVisa): Observable<ApiResponseModel<U>>;
    getByCriteriaPromise(pagination: Pagination, visa: ApiVisa, criteria?: any): Promise<PagingResponseModel<T>>;
    getByCriteriaSnapshot(pagination: Pagination, visa: ApiVisa): Observable<PagingResponseModel<T>>;
    getByCriteriaSnapshotV2(dtoObject: any, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getBySnapshotQuery(dtoObject: GenericDocSearchCriteriaDtoModel, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getBySnapshotCustomQuery(dtoObject: GenericDocSearchCriteriaDtoModel, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getBySnapshotCustomHdrQuery(dtoObject: GenericDocSearchCriteriaDtoModel, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getBySnapshotCustomHdrLinesQuery(dtoObject: GenericDocSearchCriteriaDtoModel, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getBySnapshotCountQuery(dtoObject: GenericDocSearchCriteriaDtoModel, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getByCriteriaSnapshotPromise(pagination: Pagination, visa: ApiVisa): Promise<PagingResponseModel<T>>;
    getCountByCriteria(pagination: Pagination, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getCountByCriteriaPromise(pagination: Pagination, visa: ApiVisa): Promise<ApiResponseModel<T>>;
    /** Print Jasper Pdf */
    printJasperPdfFile(guid: string, printServiceClassName: string, printableFormatGuid: string, apiVisa: ApiVisa, customParam?: string): Observable<Blob>;
    updatePostingStatus(dtoObject: T, apiVisa: ApiVisa, guid: string): Observable<BasicApiResponseModel<T>>;
    updateFarHdrGuid(genDocHdrGuid: string, farHdrGuid: string, apiVisa: ApiVisa): Observable<BasicApiResponseModel<any>>;
    getDepositRequisitionBySnapshotCustomQuery(dtoObject: DepositRequisitionSearchCriteriaDtoModel, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getDepositRegisterBySnapshotCustomQuery(dtoObject: DepositRegisterSearchCriteriaDtoModel, visa: ApiVisa): Observable<ApiResponseModel<T>>;
    getRolloverBySnapshotCustomQuery(dtoObject: DepositRegisterTxnLineSearchCriteriaDtoModel, visa: ApiVisa): Observable<PagingResponseModel<T>>;
    getDepositCategoryBySnapshotCustomQuery(dtoObject: DepositCategorySearchCriteriaDtoModel, visa: ApiVisa): Observable<ApiResponseModel<T>>;
}
