import { z } from "zod"; import { CreateResponse, DeleteResponse, FieldData, GenericPortalData, GetResponse, ListParams, Query, UpdateResponse, MetadataResponse, GetResponseOne, LayoutsResponse, FMRecord, ScriptsMetadataResponse } from "./client-types.js"; import type { TokenStoreDefinitions } from "./tokenStore/types.js"; import { Otto3APIKey, OttoFMSAPIKey } from "./utils/utils.js"; type OttoAuth = { apiKey: Otto3APIKey; ottoPort?: number; } | { apiKey: OttoFMSAPIKey; ottoPort?: never; }; type UserPasswordAuth = { username: string; password: string; }; export declare function isOttoAuth(auth: ClientObjectProps["auth"]): auth is OttoAuth; export type ClientObjectProps = { server: string; db: string; auth: OttoAuth | UserPasswordAuth; /** * The layout to use by default for all requests. Can be overrridden on each request. */ layout?: string; tokenStore?: TokenStoreDefinitions; }; declare class FileMakerError extends Error { readonly code: string; constructor(code: string, message: string); } declare function DataApi(input: Opts, zodTypes?: { fieldData: z.AnyZodObject; portalData?: z.AnyZodObject; }): { baseUrl: URL; list: { (): Promise>; (args: Opts["layout"] extends string ? ListParams & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : ListParams & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }): Promise>; }; listAll: { (): Promise[]>; (args: Opts["layout"] extends string ? ListParams & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : ListParams & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }): Promise[]>; }; create: (args: Opts["layout"] extends string ? (import("./client-types.js").ScriptParams & { portalData?: import("./client-types.js").UpdatePortalsWithIds | undefined; } & { fieldData: Partial; }) & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : (import("./client-types.js").ScriptParams & { portalData?: import("./client-types.js").UpdatePortalsWithIds | undefined; } & { fieldData: Partial; }) & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }) => Promise; get: (args: Opts["layout"] extends string ? (import("./client-types.js").ScriptParams & import("./client-types.js").PortalRangesParams & { "layout.response"?: string; dateformats?: "US" | "file_locale" | "ISO8601"; } & { recordId: number | string; }) & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : (import("./client-types.js").ScriptParams & import("./client-types.js").PortalRangesParams & { "layout.response"?: string; dateformats?: "US" | "file_locale" | "ISO8601"; } & { recordId: number | string; }) & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }) => Promise>; update: (args: Opts["layout"] extends string ? (import("./client-types.js").ScriptParams & { portalData?: import("./client-types.js").UpdatePortalsWithIds | undefined; } & { modId?: number; } & { fieldData: Partial; recordId: number | string; }) & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : (import("./client-types.js").ScriptParams & { portalData?: import("./client-types.js").UpdatePortalsWithIds | undefined; } & { modId?: number; } & { fieldData: Partial; recordId: number | string; }) & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }) => Promise; delete: (args: Opts["layout"] extends string ? (import("./client-types.js").ScriptParams & { recordId: number | string; }) & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : (import("./client-types.js").ScriptParams & { recordId: number | string; }) & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }) => Promise; metadata: (args: Opts["layout"] extends string ? { timeout?: number; } & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : { timeout?: number; } & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }) => Promise; disconnect: () => Opts["auth"] extends OttoAuth ? never : Promise; find: (args: Opts["layout"] extends string ? (import("./client-types.js").ScriptParams & import("./client-types.js").PortalRangesParams & { "layout.response"?: string; dateformats?: "US" | "file_locale" | "ISO8601"; } & import("./client-types.js").RangeParams & { sort?: import("./client-types.js").Sort | import("./client-types.js").Sort[] | undefined; } & { query: Query | Query[]; timeout?: number; }) & { /** * If true, a find that returns no results will retun an empty array instead of throwing an error. * @default false */ ignoreEmptyResult?: boolean; } & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : (import("./client-types.js").ScriptParams & import("./client-types.js").PortalRangesParams & { "layout.response"?: string; dateformats?: "US" | "file_locale" | "ISO8601"; } & import("./client-types.js").RangeParams & { sort?: import("./client-types.js").Sort | import("./client-types.js").Sort[] | undefined; } & { query: Query | Query[]; timeout?: number; }) & { /** * If true, a find that returns no results will retun an empty array instead of throwing an error. * @default false */ ignoreEmptyResult?: boolean; } & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }) => Promise>; findOne: (args: Opts["layout"] extends string ? (import("./client-types.js").ScriptParams & import("./client-types.js").PortalRangesParams & { "layout.response"?: string; dateformats?: "US" | "file_locale" | "ISO8601"; } & import("./client-types.js").RangeParams & { sort?: import("./client-types.js").Sort | import("./client-types.js").Sort[] | undefined; } & { query: Query | Query[]; timeout?: number; }) & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : (import("./client-types.js").ScriptParams & import("./client-types.js").PortalRangesParams & { "layout.response"?: string; dateformats?: "US" | "file_locale" | "ISO8601"; } & import("./client-types.js").RangeParams & { sort?: import("./client-types.js").Sort | import("./client-types.js").Sort[] | undefined; } & { query: Query | Query[]; timeout?: number; }) & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }) => Promise>; findFirst: (args: Opts["layout"] extends string ? (import("./client-types.js").ScriptParams & import("./client-types.js").PortalRangesParams & { "layout.response"?: string; dateformats?: "US" | "file_locale" | "ISO8601"; } & import("./client-types.js").RangeParams & { sort?: import("./client-types.js").Sort | import("./client-types.js").Sort[] | undefined; } & { query: Query | Query[]; timeout?: number; }) & { /** * If true, a find that returns no results will retun an empty array instead of throwing an error. * @default false */ ignoreEmptyResult?: boolean; } & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : (import("./client-types.js").ScriptParams & import("./client-types.js").PortalRangesParams & { "layout.response"?: string; dateformats?: "US" | "file_locale" | "ISO8601"; } & import("./client-types.js").RangeParams & { sort?: import("./client-types.js").Sort | import("./client-types.js").Sort[] | undefined; } & { query: Query | Query[]; timeout?: number; }) & { /** * If true, a find that returns no results will retun an empty array instead of throwing an error. * @default false */ ignoreEmptyResult?: boolean; } & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }) => Promise>; findAll: (args: Opts["layout"] extends string ? (import("./client-types.js").ScriptParams & import("./client-types.js").PortalRangesParams & { "layout.response"?: string; dateformats?: "US" | "file_locale" | "ISO8601"; } & import("./client-types.js").RangeParams & { sort?: import("./client-types.js").Sort | import("./client-types.js").Sort[] | undefined; } & { query: Query | Query[]; timeout?: number; }) & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : (import("./client-types.js").ScriptParams & import("./client-types.js").PortalRangesParams & { "layout.response"?: string; dateformats?: "US" | "file_locale" | "ISO8601"; } & import("./client-types.js").RangeParams & { sort?: import("./client-types.js").Sort | import("./client-types.js").Sort[] | undefined; } & { query: Query | Query[]; timeout?: number; }) & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }) => Promise[]>; layouts: () => Promise; scripts: () => Promise; executeScript: (args: Opts["layout"] extends string ? { script: string; scriptParam?: string; timeout?: number; } & Partial<{ /** * The layout to use for the request. */ layout: string; }> & { fetch?: RequestInit; } : { script: string; scriptParam?: string; timeout?: number; } & { /** * The layout to use for the request. */ layout: string; } & { fetch?: RequestInit; }) => Promise>; getToken: (refresh?: boolean, fetchOptions?: Omit) => Promise; }; export default DataApi; export { DataApi, FileMakerError };