import { ArchbaseTokenManager } from '@archbase/core'; export interface Page { content: T[]; pageable?: Pageable; page?: SimplePage; totalElements: number; totalPages: number; last: boolean; sort: Sort; number: number; size: number; first: boolean; numberOfElements: number; empty: boolean; } export interface SimplePage { size: number; number: number; totalElements: number; totalPages: number; } export interface Pageable { sort: Sort; offset: number; pageSize: number; pageNumber: number; unpaged: boolean; paged: boolean; } export interface Sort { sorted: boolean; unsorted: boolean; empty: boolean; } export interface ArchbaseRemoteApiClient { get(url: string, headers?: Record, withoutToken?: boolean, options?: any): Promise; post(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; put(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; postNoConvertId(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; putNoConvertId(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; binaryPut(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; delete(url: string, headers?: Record, withoutToken?: boolean, options?: any): Promise; patch(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; patchNoConvertId(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; /** Faz requisição GET e retorna Blob (para download de arquivos) */ getBlob(url: string, headers?: Record, withoutToken?: boolean): Promise; /** Faz requisição POST e retorna Blob (para download de arquivos) */ postBlob(url: string, data: T, headers?: Record, withoutToken?: boolean): Promise; /** Faz requisição POST com FormData (multipart/form-data) para upload de arquivos */ postMultipart(url: string, data: FormData, headers?: Record, withoutToken?: boolean): Promise; } export declare class ArchbaseAxiosRemoteApiClient implements ArchbaseRemoteApiClient { protected tokenManager: ArchbaseTokenManager; constructor(tokenManager: ArchbaseTokenManager); protected prepareHeaders(headers?: Record, withoutToken?: boolean): Record; get(url: string, headers?: Record, withoutToken?: boolean, options?: any): Promise; post(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; postNoConvertId(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; put(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; putNoConvertId(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; binaryPut(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; delete(url: string, headers?: Record, withoutToken?: boolean, options?: any): Promise; patch(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; patchNoConvertId(url: string, data: T, headers?: Record, withoutToken?: boolean, options?: any): Promise; /** * Faz requisição GET e retorna Blob (para download de arquivos). * Útil para exportação de relatórios em PDF, Excel, CSV, etc. */ getBlob(url: string, headers?: Record, withoutToken?: boolean): Promise; /** * Faz requisição POST e retorna Blob (para download de arquivos). * Útil para exportação de relatórios que requerem parâmetros complexos no body. */ postBlob(url: string, data: T, headers?: Record, withoutToken?: boolean): Promise; /** * Faz requisição POST com FormData (multipart/form-data) para upload de arquivos. * Não define Content-Type manualmente para que o axios gere automaticamente com o boundary correto. */ postMultipart(url: string, data: FormData, headers?: Record, withoutToken?: boolean): Promise; } export interface ArchbaseEntityTransformer { transform(entity: T): T; } export declare abstract class ArchbaseRemoteApiService { protected readonly client: ArchbaseRemoteApiClient; constructor(client: ArchbaseRemoteApiClient); protected abstract getEndpoint(): string; abstract getId(entity: T): ID; protected abstract configureHeaders(): Record; protected transformPage(page: Page): void; protected transformList(list: T[]): void; private isTransformable; validate(entity: T): Promise; validateGroup(entity: T, groups: any[]): Promise; exists(id: ID): Promise; findAll(page: number, size: number): Promise>; findAllWithSort(page: number, size: number, sort: string[]): Promise>; findAllByIds(ids: ID[]): Promise; findAllWithFilter(filter: string, page: number, size: number): Promise>; findAllMultipleFields(value: string, fields: string, page: number, size: number, sort: string): Promise>; findAllWithFilterAndSort(filter: string, page: number, size: number, sort: string[]): Promise>; findOne(id: ID): Promise; findByComplexId(id: T): Promise; existsByComplexId(id: T): Promise; save(entity: T): Promise; delete(id: ID): Promise; abstract isNewRecord(entity: T): boolean; } export declare class DefaultPage implements Page { content: T[]; pageable: Pageable; totalElements: number; totalPages: number; last: boolean; sort: Sort; number: number; size: number; first: boolean; numberOfElements: number; empty: boolean; constructor(content: T[], totalElements: number, totalPages: number, pageNumber: number, pageSize: number, sort?: Sort, last?: boolean, first?: boolean, numberOfElements?: number, empty?: boolean); static createFromValues(content: T[], totalElements: number, totalPages: number, pageNumber: number, pageSize: number): DefaultPage; }