/** * DynamoDB Infrastructure Projection for Manifest IR. * * Generates CloudFormation and AWS CDK (TypeScript) table definitions from * the IR's `stores` declarations. Supports both per-entity tables and * single-table design patterns. * * Surfaces: * - dynamodb.cloudformation → CloudFormation YAML template with table * definitions, GSIs, and DynamoDB Streams configuration for the * transactional outbox. * - dynamodb.cdk → AWS CDK TypeScript code (aws-cdk-lib) that * provisions the same tables in a CDK Stack. * - dynamodb.terraform → Terraform HCL for the same resources. * * Design philosophy: * - One table per entity by default (simplest, most common pattern) * - Single-table design: detected when `config.singleTable` is true; all * entities are mapped to one table with composite (pk, sk) keys. * - Streams: the outbox table always gets NEW_AND_OLD_IMAGES stream * specification. The data table gets KEYS_ONLY streams unless the IR * has event reactions that need full item context. */ import type { IR } from '../../ir'; import type { ProjectionTarget, ProjectionRequest, ProjectionResult } from '../interface'; export declare const SURFACE_CLOUDFORMATION: "dynamodb.cloudformation"; export declare const SURFACE_CDK: "dynamodb.cdk"; export declare const SURFACE_TERRAFORM: "dynamodb.terraform"; export declare const SURFACES: readonly ["dynamodb.cloudformation", "dynamodb.cdk", "dynamodb.terraform"]; export interface DynamoDBProjectionOptions { /** * When true, emit a single-table design (all entities share one table). * Detected automatically when any store config sets `singleTable: true`. * Default: false. */ singleTable?: boolean; /** Billing mode for provisioned tables. Default: PAY_PER_REQUEST. */ billingMode?: 'PAY_PER_REQUEST' | 'PROVISIONED'; /** Stack/app name for resource naming. Default: 'manifest'. */ stackName?: string; } export declare class DynamoDBProjection implements ProjectionTarget { readonly name = "dynamodb"; readonly description = "Generates AWS DynamoDB infrastructure (CloudFormation, CDK, Terraform) from Manifest IR stores"; readonly surfaces: readonly ["dynamodb.cloudformation", "dynamodb.cdk", "dynamodb.terraform"]; readonly descriptorMeta: import("..").ProjectionDescriptorMeta; generate(ir: IR, request: ProjectionRequest): ProjectionResult; } //# sourceMappingURL=generator.d.ts.map