import { Either } from 'effect'; import type { ActionTypes, RequestMiddleware } from '@forgerock/sdk-request-middleware'; import type { logger as loggerFn } from '@forgerock/sdk-logger'; import type { GenericError } from '@forgerock/sdk-types'; import type { ErrorNode, ContinueNode, StartNode, SuccessNode, Collectors, CollectorCategory } from './node.types.js'; import type { CollectorValueType, CollectorValueTypes, InternalErrorResponse, UpdatableCollectors } from './client.types.js'; export declare function createClientStore({ requestMiddleware, logger, }: { requestMiddleware?: RequestMiddleware[]; logger?: ReturnType; }): import("@reduxjs/toolkit").EnhancedStore<{ config: { endpoints: import("./wellknown.types.js").Endpoints; clientId: string; redirectUri: string; responseType: string; scope: string; }; node: ContinueNode | ErrorNode | import("./node.types.js").FailureNode | StartNode | SuccessNode; davinci: import("@reduxjs/toolkit/query").CombinedState<{ flow: import("@reduxjs/toolkit/query").MutationDefinition, never, unknown, "davinci", any>; next: import("@reduxjs/toolkit/query").MutationDefinition, never, unknown, "davinci", any>; start: import("@reduxjs/toolkit/query").MutationDefinition | undefined, import("@reduxjs/toolkit/query").BaseQueryFn, never, unknown, "davinci", unknown>; resume: import("@reduxjs/toolkit/query").QueryDefinition<{ serverInfo: ContinueNode["server"]; continueToken: string; }, import("@reduxjs/toolkit/query").BaseQueryFn, never, unknown, "davinci", unknown>; poll: import("@reduxjs/toolkit/query").MutationDefinition<{ endpoint: string; interactionId: string; }, import("@reduxjs/toolkit/query").BaseQueryFn, never, unknown, "davinci", unknown>; }, never, "davinci">; wellknown: import("@reduxjs/toolkit/query").CombinedState<{ configuration: import("@reduxjs/toolkit/query").QueryDefinition, never, import("@forgerock/sdk-types").WellknownResponse, "wellknown", unknown>; }, never, "wellknown">; }, import("@reduxjs/toolkit").UnknownAction, import("@reduxjs/toolkit").Tuple<[import("@reduxjs/toolkit").StoreEnhancer<{ dispatch: import("@reduxjs/toolkit").ThunkDispatch<{ config: { endpoints: import("./wellknown.types.js").Endpoints; clientId: string; redirectUri: string; responseType: string; scope: string; }; node: ContinueNode | ErrorNode | import("./node.types.js").FailureNode | StartNode | SuccessNode; davinci: import("@reduxjs/toolkit/query").CombinedState<{ flow: import("@reduxjs/toolkit/query").MutationDefinition, never, unknown, "davinci", any>; next: import("@reduxjs/toolkit/query").MutationDefinition, never, unknown, "davinci", any>; start: import("@reduxjs/toolkit/query").MutationDefinition | undefined, import("@reduxjs/toolkit/query").BaseQueryFn, never, unknown, "davinci", unknown>; resume: import("@reduxjs/toolkit/query").QueryDefinition<{ serverInfo: ContinueNode["server"]; continueToken: string; }, import("@reduxjs/toolkit/query").BaseQueryFn, never, unknown, "davinci", unknown>; poll: import("@reduxjs/toolkit/query").MutationDefinition<{ endpoint: string; interactionId: string; }, import("@reduxjs/toolkit/query").BaseQueryFn, never, unknown, "davinci", unknown>; }, never, "davinci">; wellknown: import("@reduxjs/toolkit/query").CombinedState<{ configuration: import("@reduxjs/toolkit/query").QueryDefinition, never, import("@forgerock/sdk-types").WellknownResponse, "wellknown", unknown>; }, never, "wellknown">; }, { /** * This becomes the `api.extra` argument, and will be passed into the * customer query wrapper for `baseQuery` */ requestMiddleware: RequestMiddleware[] | undefined; logger: { changeLevel: (level: import("@forgerock/sdk-logger").LogLevel) => void; error: (...args: import("@forgerock/sdk-logger").LogMessage[]) => void; warn: (...args: import("@forgerock/sdk-logger").LogMessage[]) => void; info: (...args: import("@forgerock/sdk-logger").LogMessage[]) => void; debug: (...args: import("@forgerock/sdk-logger").LogMessage[]) => void; } | undefined; }, import("@reduxjs/toolkit").UnknownAction>; }>, import("@reduxjs/toolkit").StoreEnhancer]>>; export type ClientStore = typeof createClientStore; export type RootState = ReturnType['getState']>; export interface RootStateWithNode extends RootState { node: T; } export type AppDispatch = ReturnType['dispatch']>; /** * @function createInternalError * @description - Creates an InternalErrorResponse object * @param message - The error message * @param type - The error type * @returns - An InternalErrorResponse object */ export declare function createInternalError(message: string, type?: GenericError['type']): InternalErrorResponse; /** * Type guard: checks if a value is an InternalErrorResponse. */ export declare function isInternalError(value: unknown): value is InternalErrorResponse; /** * Logs a collector update or validation failure and returns a * function producing the corresponding `InternalErrorResponse`. * * @param message - The error message to log and embed in the response * @param type - Whether the failure stems from a bad argument or invalid state * @param cb - Logging callback invoked with `message` (e.g. `log.error`) * @returns A function that, when called, returns the `InternalErrorResponse` */ export declare function handleUpdateValidateError(message: string, type: 'argument_error' | 'state_error', cb: (message: string) => void): () => InternalErrorResponse; /** * Type guard: checks whether a collector's `category` is one of the given * `validCategories`, narrowing it to the matching union member on success. * * @param collector - The collector to check * @param validCategories - The set of categories considered valid * @returns `true` if `collector.category` is included in `validCategories` */ export declare function isValidCollectorCategory(collector: Collectors, validCategories: C[]): collector is Extract; /** * Validates a value against the shape a given collector accepts, returning the * value narrowed to `CollectorValueType` on success. * * This is the single source of truth for the collector→value-type correlation: * both `update()` (pre-dispatch, to fail fast) and the `node/update` reducer * (post-dispatch, to type the assignment) call this same function so the * mapping can't drift between the two call sites. * * @param collector - The collector the value is being validated against * @param value - The candidate value to validate * @returns `Either.right` with the narrowed value, or `Either.left` with the validation error */ export declare function resolveCollectorUpdateValue(collector: T, value: CollectorValueTypes): Either.Either, InternalErrorResponse>; //# sourceMappingURL=client.store.utils.d.ts.map