import { GetQBOQueryableEntityType, GetQBOQueryablePropsForEntityType, QBOQueryableEntityType, QueryOperatorType, SnakeToCamelCase } from "./lib/types"; import { Config } from "./lib/config"; import { QBOError } from "./lib/errors/error-classes"; export declare const combine: (Entity: SnakeToCamelCase, first: FetchListResponse, second: FetchListResponse) => FetchListResponse; export type StringIfObject> = Exclude[K], undefined> extends object ? string : Exclude[K], undefined>; export type QueryOptsBase = { offset?: number; limit?: number; fetch_all?: boolean; where?: { [K in keyof GetQBOQueryableEntityType]: K extends "Id" ? never : K extends "SyncToken" ? never : GetQBOQueryablePropsForEntityType extends never ? never : { field: K; value: (StringIfObject | StringIfObject[]); operator: QueryOperatorType; }; }[keyof GetQBOQueryableEntityType][]; } & ({ asc?: keyof GetQBOQueryableEntityType; desc?: never; } | { desc?: keyof GetQBOQueryableEntityType; asc?: never; }); export type QueryOptsInternal = Omit, "fetchAll" | "limit" | "offset"> & { fetch_all: boolean; limit: number; offset: number; }; export declare const optsToListQueryCondition: (opts: QueryOptsInternal) => string; interface FetchListQuery { config: Config; opts: QueryOptsInternal; Entity: SnakeToCamelCase; headers: object; fetchFn: typeof fetch; } export type QueryResponseJustEntity = { [K in T as SnakeToCamelCase extends SnakeToCamelCase ? SnakeToCamelCase : never]: GetQBOQueryableEntityType[]; }; export type FetchListResponse = { time: number; QueryResponse: QueryResponseJustEntity & { startPosition: number; maxResults: number; }; intuitTid: string; }; export declare const fetchListQuery: ({ config, opts, Entity, headers, fetchFn }: FetchListQuery) => Promise>>; interface ListInit { initFetchFn: typeof fetch; config: Config; } export interface ListArgs { entity: T; opts?: QueryOptsBase; /** @desc A custom fetch function to use for this list request. This will override any fetchFn passed to the client. */ fetchFn?: typeof fetch; } export type ListResponse = { entities: GetQBOQueryableEntityType[]; time: number; intuitTid: string | null; }; export declare const list: ({ initFetchFn, config }: ListInit) => ({ entity, opts, fetchFn: _fetchFn }: ListArgs) => Promise, QBOError>>; export {};