import { Effect, Schema } from "effect";
export declare const SecretBackedValue: Schema.Union<readonly [Schema.String, Schema.Struct<{
    readonly secretId: Schema.String;
    readonly prefix: Schema.optional<Schema.String>;
}>]>;
export type SecretBackedValue = typeof SecretBackedValue.Type;
export declare const SecretBackedMap: Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, Schema.Struct<{
    readonly secretId: Schema.String;
    readonly prefix: Schema.optional<Schema.String>;
}>]>>;
export type SecretBackedMap = typeof SecretBackedMap.Type;
export declare const isSecretBackedRef: (value: SecretBackedValue) => value is Extract<SecretBackedValue, {
    readonly secretId: string;
}>;
export type ResolveSecretBackedMapOptions<E, E2> = {
    readonly values: Record<string, SecretBackedValue> | undefined;
    readonly getSecret: (secretId: string) => Effect.Effect<string | null, E>;
    readonly onMissing: (name: string, value: Extract<SecretBackedValue, {
        readonly secretId: string;
    }>) => E2;
    readonly onError?: (error: E, name: string, value: Extract<SecretBackedValue, {
        readonly secretId: string;
    }>) => E | E2;
    readonly missing?: "fail" | "drop";
};
export declare const resolveSecretBackedMap: <E, E2 = E>({ values, getSecret, onMissing, onError, missing, }: ResolveSecretBackedMapOptions<E, E2>) => Effect.Effect<Record<string, string> | undefined, E | E2>;
//# sourceMappingURL=secret-backed-value.d.ts.map