import type { IResourceEntity, IResourceComposite, IResourceDecorator, IResourceBuilder, DynamoDbFactoryOptions, IDynamoDbResourceFactory, ILifecycleState, ResourceMetadata, IResourceVisitor, LifecycleStateType } from '../../../lib/runtime-web/types/declarative-api';
import type { IFrameworkResourceProvider } from '../../interfaces';
import { BaseResourceFactory, BaseResourceBuilder } from './base-factory';
/**
 * DynamoDB Table Resource Entity.
 *
 * Represents a DynamoDB table as a resource entity.
 */
export declare class DynamoDbTableEntity implements IResourceEntity {
    readonly id: string;
    readonly metadata: ResourceMetadata;
    readonly construct: unknown;
    readonly tableName: string;
    readonly tableArn: string;
    readonly gsiNames: readonly string[];
    readonly hasStream: boolean;
    readonly type: "dynamodb:table";
    private _state;
    constructor(id: string, metadata: ResourceMetadata, construct: unknown, tableName: string, tableArn: string, gsiNames?: readonly string[], hasStream?: boolean);
    get state(): ILifecycleState;
    transitionTo(targetState: LifecycleStateType): void;
    accept<T>(visitor: IResourceVisitor<T>): T;
}
/**
 * DynamoDB Table Builder.
 *
 * Fluent builder for constructing DynamoDB tables.
 */
export declare class DynamoDbTableBuilder<TProps = unknown> extends BaseResourceBuilder<DynamoDbTableEntity, TProps> {
    private _enableStream;
    private _streamViewType?;
    private _enablePitr;
    private _enableTtl;
    private _ttlAttributeName?;
    private _gsiProps;
    /**
     * Enable DynamoDB Streams.
     */
    withStream(viewType?: 'KEYS_ONLY' | 'NEW_IMAGE' | 'OLD_IMAGE' | 'NEW_AND_OLD_IMAGES'): this;
    /**
     * Enable Point-in-Time Recovery.
     */
    withPitr(enabled?: boolean): this;
    /**
     * Enable Time-to-Live.
     */
    withTtl(attributeName: string): this;
    /**
     * Add Global Secondary Indexes.
     */
    withGsi<TGsiProps>(gsiProps: TGsiProps[]): this;
    /**
     * Build the DynamoDB table entity.
     */
    build(): DynamoDbTableEntity;
}
/**
 * DynamoDB Resource Factory.
 *
 * Factory for creating DynamoDB tables and related resources.
 * Delegates resource creation to IFrameworkResourceProvider (RuntimeInfraStack).
 *
 * Validates: Requirements 2.2, 2.3, 5.1
 */
export declare class DynamoDbResourceFactory extends BaseResourceFactory<'dynamodb'> implements IDynamoDbResourceFactory {
    readonly familyType: "dynamodb";
    constructor(provider: IFrameworkResourceProvider, decorators?: readonly IResourceDecorator[]);
    /**
     * Create a resource with full CDK props.
     */
    create<TProps>(id: string, props: TProps, options?: DynamoDbFactoryOptions): IResourceComposite;
    /**
     * Get a builder for custom resource construction.
     */
    getBuilder<TProps>(id: string): IResourceBuilder<IResourceEntity, TProps>;
    /**
     * Check if this factory can create a resource of the given type.
     */
    canCreate(resourceType: string): boolean;
    /**
     * Get the supported resource types.
     */
    getSupportedTypes(): readonly string[];
    /**
     * Create a DynamoDB table.
     * Delegates to provider.createTable() for framework integration.
     * Passes full props to provider without filtering (Requirement 7.5).
     *
     * @typeParam TProps - Table props type
     * @param id - Unique identifier for the table
     * @param props - Full CDK TableProps (no restrictions)
     * @param options - DynamoDB-specific factory options
     * @returns The created table entity
     *
     * Validates: Requirements 3.5, 7.5
     */
    createTable<TProps>(id: string, props: TProps, options?: DynamoDbFactoryOptions): IResourceEntity;
    /**
     * Create a table with Global Secondary Indexes.
     * Supports both inline GSI props (via props.globalSecondaryIndexes) and separate GSI configs.
     *
     * @typeParam TProps - Table props type
     * @typeParam TGsiProps - GSI props type
     * @param id - Unique identifier for the table
     * @param props - Table props (may include globalSecondaryIndexes)
     * @param gsiProps - Additional GSI configurations (optional, merged with props.globalSecondaryIndexes)
     * @param options - DynamoDB-specific factory options
     * @returns A composite containing table and GSIs
     *
     * Validates: Requirements 3.5, 7.5
     */
    createTableWithGsi<TProps, TGsiProps>(id: string, props: TProps, gsiProps?: readonly TGsiProps[], options?: DynamoDbFactoryOptions): IResourceComposite;
}
