import * as KeyValueStore from "@effect/platform/KeyValueStore"; import type * as Clock from "effect/Clock"; import * as Context from "effect/Context"; import * as Duration from "effect/Duration"; import * as Effect from "effect/Effect"; import type * as Exit from "effect/Exit"; import * as Layer from "effect/Layer"; import * as Option from "effect/Option"; import * as ParseResult from "effect/ParseResult"; import * as PrimaryKey from "effect/PrimaryKey"; import * as Schema from "effect/Schema"; import type * as Scope from "effect/Scope"; /** * @since 1.0.0 * @category type ids */ export declare const ErrorTypeId: unique symbol; /** * @since 1.0.0 * @category type ids */ export type ErrorTypeId = typeof ErrorTypeId; /** * @since 1.0.0 * @category errors */ export type PersistenceError = PersistenceParseError | PersistenceBackingError; declare const PersistenceParseError_base: new >(args: import("effect/Types").Simplify) => import("effect/Cause").YieldableError & Record & { readonly _tag: "PersistenceError"; } & Readonly; /** * @since 1.0.0 * @category errors */ export declare class PersistenceParseError extends PersistenceParseError_base<{ readonly reason: "ParseError"; readonly method: string; readonly error: ParseResult.ParseError["issue"]; }> { /** * @since 1.0.0 */ static make(method: string, error: ParseResult.ParseError["issue"]): PersistenceParseError; get message(): string; } declare const PersistenceBackingError_base: new >(args: import("effect/Types").Simplify) => import("effect/Cause").YieldableError & Record & { readonly _tag: "PersistenceError"; } & Readonly; /** * @since 1.0.0 * @category errors */ export declare class PersistenceBackingError extends PersistenceBackingError_base<{ readonly reason: "BackingError"; readonly method: string; readonly cause: unknown; }> { /** * @since 1.0.0 */ static make(method: string, cause: unknown): PersistenceBackingError; get message(): "BackingError"; } /** * @since 1.0.0 * @category type ids */ export declare const BackingPersistenceTypeId: unique symbol; /** * @since 1.0.0 * @category type ids */ export type BackingPersistenceTypeId = typeof BackingPersistenceTypeId; /** * @since 1.0.0 * @category models */ export interface BackingPersistence { readonly [BackingPersistenceTypeId]: BackingPersistenceTypeId; readonly make: (storeId: string) => Effect.Effect; } /** * @since 1.0.0 * @category models */ export interface BackingPersistenceStore { readonly get: (key: string) => Effect.Effect, PersistenceError>; readonly getMany: (key: Array) => Effect.Effect>, PersistenceError>; readonly set: (key: string, value: unknown, ttl: Option.Option) => Effect.Effect; readonly setMany: (entries: ReadonlyArray]>) => Effect.Effect; readonly remove: (key: string) => Effect.Effect; readonly clear: Effect.Effect; } /** * @since 1.0.0 * @category tags */ export declare const BackingPersistence: Context.Tag; /** * @since 1.0.0 * @category type ids */ export declare const ResultPersistenceTypeId: unique symbol; /** * @since 1.0.0 * @category type ids */ export type ResultPersistenceTypeId = typeof ResultPersistenceTypeId; /** * @since 1.0.0 * @category models */ export interface ResultPersistence { readonly [ResultPersistenceTypeId]: ResultPersistenceTypeId; readonly make: (options: { readonly storeId: string; readonly timeToLive?: (key: ResultPersistence.KeyAny, exit: Exit.Exit) => Duration.DurationInput; }) => Effect.Effect; } /** * @since 1.0.0 * @category models */ export interface ResultPersistenceStore { readonly get: (key: ResultPersistence.Key) => Effect.Effect>, PersistenceError, R>; readonly getMany: (key: ReadonlyArray>) => Effect.Effect>>, PersistenceError, R>; readonly set: (key: ResultPersistence.Key, value: Exit.Exit) => Effect.Effect; readonly setMany: (entries: Iterable, Exit.Exit]>) => Effect.Effect; readonly remove: (key: ResultPersistence.Key) => Effect.Effect; readonly clear: Effect.Effect; } /** * @since 1.0.0 * @category models */ export interface Persistable extends Schema.WithResult, PrimaryKey.PrimaryKey { } /** * @since 1.0.0 * @category models */ export declare namespace ResultPersistence { /** * @since 1.0.0 * @category models */ interface Key extends Schema.WithResult, PrimaryKey.PrimaryKey { } /** * @since 1.0.0 * @category models */ type KeyAny = Persistable; /** * @since 1.0.0 * @category models */ type TimeToLiveArgs = A extends infer K ? K extends Persistable ? [request: K, exit: Exit.Exit<_A["Type"], _E["Type"]>] : never : never; } /** * @since 1.0.0 * @category tags */ export declare const ResultPersistence: Context.Tag; /** * @since 1.0.0 * @category layers */ export declare const layerResult: Layer.Layer; /** * @since 1.0.0 * @category layers */ export declare const layerMemory: Layer.Layer; /** * @since 1.0.0 * @category layers */ export declare const layerKeyValueStore: Layer.Layer; /** * @since 1.0.0 * @category layers */ export declare const layerResultMemory: Layer.Layer; /** * @since 1.0.0 * @category layers */ export declare const layerResultKeyValueStore: Layer.Layer; /** * @since 1.0.0 */ export declare const unsafeTtlToExpires: (clock: Clock.Clock, ttl: Option.Option) => number | null; export {}; //# sourceMappingURL=Persistence.d.ts.map