import type { ReactiveDataDocument } from "@warp-drive/core/reactive"; import type { TypedRecordInstance } from "@warp-drive/core/types/record"; import type { ConstrainedRequestOptions, CreateRequestOptions, DeleteRequestOptions, UpdateRequestOptions } from "@warp-drive/core/types/request"; /** * Builds request options to delete record for resources, * configured for the url, method and header expectations of ActiveRecord APIs. * * **Basic Usage** * * ```ts * import { deleteRecord } from '@warp-drive/utilities/active-record'; * * const person = store.peekRecord('person', '1'); * * // mark record as deleted * store.deleteRecord(person); * * // persist deletion * const data = await store.request(deleteRecord(person)); * ``` * * **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 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 { deleteRecord } from '@warp-drive/utilities/active-record'; * * const person = store.peekRecord('person', '1'); * * // mark record as deleted * store.deleteRecord(person); * * // persist deletion * const options = deleteRecord(person, { namespace: 'api/v1' }); * const data = await store.request(options); * ``` * * @public * @param record * @param options */ export declare function deleteRecord(record: T, options?: ConstrainedRequestOptions): DeleteRequestOptions; export declare function deleteRecord(record: unknown, options?: ConstrainedRequestOptions): DeleteRequestOptions; /** * Builds request options to create new record for resources, * configured for the url, method and header expectations of most ActiveRecord APIs. * * **Basic Usage** * * ```ts * import { createRecord } from '@warp-drive/utilities/active-record'; * * const person = store.createRecord('person', { name: 'Ted' }); * const data = await store.request(createRecord(person)); * ``` * * **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 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 { createRecord } from '@warp-drive/utilities/active-record'; * * const person = store.createRecord('person', { name: 'Ted' }); * const options = createRecord(person, { namespace: 'api/v1' }); * const data = await store.request(options); * ``` * * @public * @param record * @param options */ export declare function createRecord(record: T, options?: ConstrainedRequestOptions): CreateRequestOptions; export declare function createRecord(record: unknown, options?: ConstrainedRequestOptions): CreateRequestOptions; /** * Builds request options to update existing record for resources, * configured for the url, method and header expectations of most ActiveRecord APIs. * * **Basic Usage** * * ```ts * import { updateRecord } from '@warp-drive/utilities/active-record'; * * const person = store.peekRecord('person', '1'); * person.name = 'Chris'; * const data = await store.request(updateRecord(person)); * ``` * * **Supplying Options to Modify the Request Behavior** * * The following options are supported: * * - `patch` - Allows caller to specify whether to use a PATCH request instead of a PUT request, defaults to `false`. * - `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 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 { updateRecord } from '@warp-drive/utilities/active-record'; * * const person = store.peekRecord('person', '1'); * person.name = 'Chris'; * const options = updateRecord(person, { patch: true }); * const data = await store.request(options); * ``` * * @public * @param record * @param options */ export declare function updateRecord< T extends TypedRecordInstance, RT extends TypedRecordInstance = T >(record: T, options?: ConstrainedRequestOptions & { patch?: boolean; }): UpdateRequestOptions, T>; export declare function updateRecord(record: unknown, options?: ConstrainedRequestOptions & { patch?: boolean; }): UpdateRequestOptions;