import type { ReactiveDataDocument } from "@warp-drive/core/reactive"; import type { TypeFromInstance } from "@warp-drive/core/types/record"; import type { FindRecordOptions, FindRecordRequestOptions, RemotelyAccessibleIdentifier } from "@warp-drive/core/types/request"; /** * Builds request options to fetch a single resource by a known id or identifier * configured for the url and header expectations of most ActiveRecord APIs. * * **Basic Usage** * * ```ts * import { findRecord } from '@warp-drive/utilities/active-record'; * * const data = await store.request(findRecord('person', '1')); * ``` * * **With Options** * * ```ts * import { findRecord } from '@warp-drive/utilities/active-record'; * * const options = findRecord('person', '1', { include: ['pets', 'friends'] }); * const data = await store.request(options); * ``` * * **With an Identifier** * * ```ts * import { findRecord } from '@warp-drive/utilities/active-record'; * * const options = findRecord({ type: 'person', id: '1' }, { include: ['pets', 'friends'] }); * const data = await store.request(options); * ``` * * **Supplying Options to Modify the Request Behavior** * * The following options are supported: * * - `host` - The host to use for the request, defaults to the `host` configured with `setBuildURLConfig`. * - `namespace` - The namespace to use for the request, defaults to the `namespace` configured with `setBuildURLConfig`. * - `resourcePath` - The resource path to use for the request, defaults to pluralizing and underscoring the supplied type * - `reload` - Whether to forcibly reload the request if it is already in the store, not supplying this * option will delegate to the store's CachePolicy, defaulting to `false` if none is configured. * - `backgroundReload` - Whether to reload the request if it is already in the store, but to also resolve the * promise with the cached value, not supplying this option will delegate to the store's CachePolicy, * defaulting to `false` if none is configured. * - `urlParamsSetting` - an object containing options for how to serialize the query params (see `buildQueryParams`) * * ```ts * import { findRecord } from '@warp-drive/utilities/active-record'; * * const options = findRecord('person', '1', { include: ['pets', 'friends'] }, { namespace: 'api/v2' }); * const data = await store.request(options); * ``` * * @public * @param identifier * @param options */ export declare function findRecord(identifier: RemotelyAccessibleIdentifier>, options?: FindRecordOptions): FindRecordRequestOptions, T>; export declare function findRecord(identifier: RemotelyAccessibleIdentifier, options?: FindRecordOptions): FindRecordRequestOptions; export declare function findRecord(type: TypeFromInstance, id: string, options?: FindRecordOptions): FindRecordRequestOptions, T>; export declare function findRecord(type: string, id: string, options?: FindRecordOptions): FindRecordRequestOptions; /** @deprecated use {@link ReactiveDataDocument} instead */ export type FindRecordResultDocument = ReactiveDataDocument;