import { type Value } from "@intentius/chant"; import { Table } from "../generated/index.js"; export interface DynamoDBKey { name: string; type?: "S" | "N" | "B"; } export interface DynamoDBCapacity { readCapacity: number; writeCapacity: number; } export interface DynamoDBGlobalSecondaryIndex { name: string; partitionKey: DynamoDBKey; sortKey?: DynamoDBKey; /** Defaults to "ALL" — projecting the whole item is the common case; narrow it deliberately. */ projectionType?: "ALL" | "KEYS_ONLY" | "INCLUDE"; /** Only meaningful with projectionType "INCLUDE". */ nonKeyAttributes?: string[]; /** PROVISIONED tables only. Falls back to the table's own capacity when a GSI doesn't need its own. */ provisionedThroughput?: DynamoDBCapacity; } export interface DynamoDBTableProps { /** `Value`: a name is routinely built with `Sub`/`Ref` (#1366). */ tableName?: Value; partitionKey: DynamoDBKey; sortKey?: DynamoDBKey; /** Defaults to "PAY_PER_REQUEST" — the recommended default for most workloads (matches LambdaDynamoDB). */ billingMode?: "PAY_PER_REQUEST" | "PROVISIONED"; /** Required when billingMode is "PROVISIONED"; ignored otherwise. Falls back to 5/5 (the DynamoDB console default) if omitted. */ provisionedThroughput?: DynamoDBCapacity; globalSecondaryIndexes?: DynamoDBGlobalSecondaryIndex[]; /** Attribute name that carries the expiry timestamp. Enables TimeToLiveSpecification when set. */ ttlAttribute?: string; /** Enables StreamSpecification. `true` defaults to NEW_AND_OLD_IMAGES (the shape most stream consumers want). */ stream?: boolean | { viewType?: "NEW_IMAGE" | "OLD_IMAGE" | "NEW_AND_OLD_IMAGES" | "KEYS_ONLY"; }; defaults?: { table?: Partial[0]>; }; } export declare const DynamoDBTable: import("@intentius/chant").CompositeDefinition; }>; //# sourceMappingURL=dynamodb-table.d.ts.map