import type { AttributeValue, ScalarAttributeType } from "@distilled.cloud/aws/dynamodb";
import * as Effect from "effect/Effect";
import * as S from "effect/Schema";
declare const InvalidAttributeValue_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
readonly _tag: "InvalidAttributeValue";
} & Readonly;
/**
* Raised when a JavaScript value cannot be marshalled to a DynamoDB
* `AttributeValue` (e.g. a function or symbol).
*/
export declare class InvalidAttributeValue extends InvalidAttributeValue_base<{
message: string;
value: any;
}> {
}
/**
* Marshal a plain JavaScript value into a DynamoDB `AttributeValue`.
*
* @example Marshal a nested object
* ```typescript
* const item = yield* toAttributeValue({ name: "Alice", scores: [1, 2, 3] });
* // { M: { name: { S: "Alice" }, scores: { L: [{ N: "1" }, ...] } } }
* ```
*/
export declare const toAttributeValue: (value: any) => Effect.Effect;
/**
* Unmarshal a DynamoDB `AttributeValue` back into a plain JavaScript value
* (inverse of {@link toAttributeValue}).
*/
export declare const fromAttributeValue: (value: AttributeValue) => any;
export declare const isScalarAttributeType: (type: string) => type is ScalarAttributeType;
export declare const toAttributeType: (schema: S.Schema) => "L" | "M" | "N" | "NS" | "S" | "SS";
export declare const isMapSchemaType: (schema: S.Schema) => boolean;
export declare const isStringSetSchema: (schema: S.Schema) => boolean;
export declare const isNumberSetSchema: (schema: S.Schema) => boolean;
export {};
//# sourceMappingURL=AttributeValue.d.ts.map