import type { ReactiveDataDocument } from "@warp-drive/core/reactive"; import type { QueryParamsSource } from "@warp-drive/core/types/params"; import type { TypedRecordInstance, TypeFromInstance } from "@warp-drive/core/types/record"; import type { ConstrainedRequestOptions, PostQueryRequestOptions, QueryRequestOptions } from "@warp-drive/core/types/request"; /** * Builds request options to query for resources, usually by a primary * type, configured for the url and header expectations of most JSON:API APIs. * * The key difference between this and `postQuery` is that this method will send the query * as query params in the url of a "GET" request instead of as the JSON body of a "POST" * request. * * **Basic Usage** * * ```ts * import { query } from '@warp-drive/utilities/json-api'; * * const data = await store.request(query('person')); * ``` * * **With Query Params** * * ```ts * import { query } from '@warp-drive/utilities/json-api'; * * const options = query('person', { 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 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 { query } from '@warp-drive/utilities/json-api'; * * const options = query('person', { include: ['pets', 'friends'] }, { reload: true }); * const data = await store.request(options); * ``` * * @public */ export declare function query(type: TypeFromInstance, query?: QueryParamsSource, options?: ConstrainedRequestOptions): QueryRequestOptions>; export declare function query(type: string, query?: QueryParamsSource, options?: ConstrainedRequestOptions): QueryRequestOptions; /** * Builds request options to query for resources, usually by a primary * type, configured for the url and header expectations of most JSON:API APIs. * * The key difference between this and `query` is that this method will send the query * as the JSON body of a "POST" request instead of as query params in the url of a "GET" * request. * * A CacheKey is generated from the url and query params, and used to cache the response * in the store. * * ```ts * import { postQuery } from '@warp-drive/utilities/json-api'; * * const options = postQuery('person', { 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 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 { postQuery } from '@warp-drive/utilities/json-api'; * * const options = postQuery('person', { include: ['pets', 'friends'] }, { reload: true }); * const data = await store.request(options); * ``` * * @public * @param identifier * @param query * @param options */ export declare function postQuery(type: TypeFromInstance, query?: QueryParamsSource, options?: ConstrainedRequestOptions): PostQueryRequestOptions>; export declare function postQuery(type: string, query?: QueryParamsSource, options?: ConstrainedRequestOptions): PostQueryRequestOptions;