import type { BackendProvider, Filter, PaginationOptions, TraceOptions, EntityMetadata, BackendProviderConfig } from '@exogee/graphweaver'; import { Options as GotOptions, Method } from 'got-cjs'; export type AccessorParams = { filter?: Record; pagination?: PaginationOptions; }; export interface RestDataAccessor { find: (args: AccessorParams) => Promise; } export interface FieldConfig { transform?: FieldTransformer; } export interface FieldTransformer { fromApi?: (fieldValue: unknown, dataObject: unknown) => any; toApi?: (value: any, dataObject: unknown) => unknown; } export interface RestBackendProviderConfig { baseUrl: string; defaultPath?: string; defaultResultKey?: string; endpointOverrides?: { create?: { path?: string; method?: Method; resultKey?: string; }; list?: { path?: string; method?: Method; resultKey?: string; }; getOne?: { path?: string; method?: Method; resultKey?: string; }; update?: { path?: string; method?: Method; resultKey?: string; }; delete?: { path?: string; method?: Method; resultKey?: string; }; }; fieldConfig?: { [fieldName in keyof D]: FieldConfig; }; clientOptions?: GotOptions; displayName?: string; relationshipLoadingMethod?: 'find' | 'findOne'; } export declare class RestBackendProvider implements BackendProvider { protected config: RestBackendProviderConfig; readonly backendId: string; readonly backendDisplayName: string; readonly backendProviderConfig: BackendProviderConfig; constructor(config: RestBackendProviderConfig); find(filter: Filter, pagination?: PaginationOptions, entityMetadata?: EntityMetadata, trace?: TraceOptions): Promise; findOne(filter: Filter, entityMetadata?: EntityMetadata, trace?: TraceOptions): Promise; findByRelatedId(): Promise; updateOne(): Promise; updateMany(): Promise; createOrUpdateMany(): Promise; createOne(): Promise; createMany(): Promise; deleteOne(): Promise; deleteMany(): Promise; protected mapWithFieldConfig(result: D[]): D[]; }