import * as Ref from "effect/Ref"; import * as Context from "../Context.js"; import * as Effect from "../Effect.js"; import type { InvalidationKey } from "../rpc/Invalidation.js"; export type { InvalidationKey }; /** Shape of the per-mutation service that accumulates server-provided invalidation keys. */ export interface InvalidationKeysService { readonly add: (key: InvalidationKey) => Effect.Effect; readonly get: Effect.Effect>; } /** * Context.Reference that accumulates invalidation keys received from the server via the * `x-invalidate` HTTP response header. * * The default is a no-op: when not explicitly provided (e.g. outside a mutation wrapper) * all calls are ignored. The mutation wrapper in `@effect-app/vue` provides a real * implementation backed by a `Ref`. */ export declare const InvalidationKeysFromServer: Context.Reference; export type InvalidationKeysFromServer = typeof InvalidationKeysFromServer; /** * Creates a fresh `InvalidationKeysService` implementation backed by a `Ref`. * * @param ref - The `Ref` that stores the accumulated keys. * @param onAdded - V3: Optional Effect run after a key is added. Use to trigger mid-stream * query invalidation without waiting for the stream to complete. */ export declare const makeInvalidationKeysService: (ref: Ref.Ref>, onAdded?: (key: InvalidationKey) => Effect.Effect) => InvalidationKeysService; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW52YWxpZGF0aW9uS2V5cy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9JbnZhbGlkYXRpb25LZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFBO0FBQ2pDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRTdELFlBQVksRUFBRSxlQUFlLEVBQUUsQ0FBQTtBQUMvQiw0RkFBNEY7QUFDNUYsTUFBTSxXQUFXLHVCQUF1QjtJQUN0QyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLGVBQWUsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzNELFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQTtDQUM1RDtBQUVEOzs7Ozs7O0dBT0c7QUFDSCxlQUFPLE1BQU0sMEJBQTBCLDRDQVF0QyxDQUFBO0FBQ0QsTUFBTSxNQUFNLDBCQUEwQixHQUFHLE9BQU8sMEJBQTBCLENBQUE7QUFFMUU7Ozs7OztHQU1HO0FBQ0gsZUFBTyxNQUFNLDJCQUEyQixRQUNqQyxHQUFHLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxZQUNsQyxDQUFDLEdBQUcsRUFBRSxlQUFlLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FDdEQsdUJBUUQsQ0FBQSJ9