export interface AttributeValue {
    S?: string;
    N?: string;
    B?: string;
    SS?: string[];
    NS?: string[];
    BS?: string[];
    M?: Record<string, AttributeValue>;
    L?: AttributeValue[];
    NULL?: boolean;
    BOOL?: boolean;
}
export interface KeySchemaElement {
    AttributeName: string;
    KeyType: 'HASH' | 'RANGE';
}
export interface AttributeDefinition {
    AttributeName: string;
    AttributeType: 'S' | 'N' | 'B';
}
export interface GlobalSecondaryIndex {
    IndexName: string;
    KeySchema: KeySchemaElement[];
    Projection: {
        ProjectionType: 'ALL' | 'KEYS_ONLY' | 'INCLUDE';
        NonKeyAttributes?: string[];
    };
    ProvisionedThroughput?: {
        ReadCapacityUnits: number;
        WriteCapacityUnits: number;
    };
}
export interface TableDescription {
    TableName: string;
    TableStatus: 'CREATING' | 'UPDATING' | 'DELETING' | 'ACTIVE' | 'INACCESSIBLE_ENCRYPTION_CREDENTIALS' | 'ARCHIVING' | 'ARCHIVED';
    TableArn: string;
    ItemCount: number;
    TableSizeBytes: number;
    CreationDateTime: string;
    KeySchema: KeySchemaElement[];
    AttributeDefinitions: AttributeDefinition[];
    GlobalSecondaryIndexes?: GlobalSecondaryIndex[];
}
/**
 * DynamoDB client for direct API calls
 */
export declare class DynamoDBClient {
    private client;
    private region;
    private endpoint?;
    constructor(region?: string, options?: {
        endpoint?: string;
    });
    private request;
    /**
     * Create a new DynamoDB table
     */
    createTable(params: {
        TableName: string;
        KeySchema: KeySchemaElement[];
        AttributeDefinitions: AttributeDefinition[];
        BillingMode?: 'PROVISIONED' | 'PAY_PER_REQUEST';
        ProvisionedThroughput?: {
            ReadCapacityUnits: number;
            WriteCapacityUnits: number;
        };
        GlobalSecondaryIndexes?: GlobalSecondaryIndex[];
        Tags?: Array<{
            Key: string;
            Value: string;
        }>;
        TimeToLiveSpecification?: {
            AttributeName: string;
            Enabled: boolean;
        };
    }): Promise<{
        TableDescription: TableDescription;
    }>;
    /**
     * Delete a DynamoDB table
     */
    deleteTable(params: {
        TableName: string;
    }): Promise<{
        TableDescription: TableDescription;
    }>;
    /**
     * Describe a DynamoDB table
     */
    describeTable(params: {
        TableName: string;
    }): Promise<{
        Table: TableDescription;
    }>;
    /**
     * List all DynamoDB tables
     */
    listTables(params?: {
        ExclusiveStartTableName?: string;
        Limit?: number;
    }): Promise<{
        TableNames: string[];
        LastEvaluatedTableName?: string;
    }>;
    /**
     * Put an item into a table
     */
    putItem(params: {
        TableName: string;
        Item: Record<string, AttributeValue>;
        ConditionExpression?: string;
        ExpressionAttributeNames?: Record<string, string>;
        ExpressionAttributeValues?: Record<string, AttributeValue>;
        ReturnValues?: 'NONE' | 'ALL_OLD';
    }): Promise<{
        Attributes?: Record<string, AttributeValue>;
    }>;
    /**
     * Get an item from a table
     */
    getItem(params: {
        TableName: string;
        Key: Record<string, AttributeValue>;
        ProjectionExpression?: string;
        ExpressionAttributeNames?: Record<string, string>;
        ConsistentRead?: boolean;
    }): Promise<{
        Item?: Record<string, AttributeValue>;
    }>;
    /**
     * Update an item in a table
     */
    updateItem(params: {
        TableName: string;
        Key: Record<string, AttributeValue>;
        UpdateExpression: string;
        ConditionExpression?: string;
        ExpressionAttributeNames?: Record<string, string>;
        ExpressionAttributeValues?: Record<string, AttributeValue>;
        ReturnValues?: 'NONE' | 'ALL_OLD' | 'UPDATED_OLD' | 'ALL_NEW' | 'UPDATED_NEW';
    }): Promise<{
        Attributes?: Record<string, AttributeValue>;
    }>;
    /**
     * Delete an item from a table
     */
    deleteItem(params: {
        TableName: string;
        Key: Record<string, AttributeValue>;
        ConditionExpression?: string;
        ExpressionAttributeNames?: Record<string, string>;
        ExpressionAttributeValues?: Record<string, AttributeValue>;
        ReturnValues?: 'NONE' | 'ALL_OLD';
    }): Promise<{
        Attributes?: Record<string, AttributeValue>;
    }>;
    /**
     * Query items from a table
     */
    query(params: {
        TableName: string;
        IndexName?: string;
        KeyConditionExpression: string;
        FilterExpression?: string;
        ProjectionExpression?: string;
        ExpressionAttributeNames?: Record<string, string>;
        ExpressionAttributeValues?: Record<string, AttributeValue>;
        Limit?: number;
        ExclusiveStartKey?: Record<string, AttributeValue>;
        ScanIndexForward?: boolean;
        ConsistentRead?: boolean;
    }): Promise<{
        Items: Array<Record<string, AttributeValue>>;
        Count: number;
        ScannedCount: number;
        LastEvaluatedKey?: Record<string, AttributeValue>;
    }>;
    /**
     * Scan items from a table
     */
    scan(params: {
        TableName: string;
        IndexName?: string;
        FilterExpression?: string;
        ProjectionExpression?: string;
        ExpressionAttributeNames?: Record<string, string>;
        ExpressionAttributeValues?: Record<string, AttributeValue>;
        Limit?: number;
        ExclusiveStartKey?: Record<string, AttributeValue>;
        ConsistentRead?: boolean;
    }): Promise<{
        Items: Array<Record<string, AttributeValue>>;
        Count: number;
        ScannedCount: number;
        LastEvaluatedKey?: Record<string, AttributeValue>;
    }>;
    /**
     * Batch write items
     */
    batchWriteItem(params: {
        RequestItems: Record<string, Array<{
            PutRequest?: {
                Item: Record<string, AttributeValue>;
            };
            DeleteRequest?: {
                Key: Record<string, AttributeValue>;
            };
        }>>;
    }): Promise<{
        UnprocessedItems: Record<string, Array<{
            PutRequest?: {
                Item: Record<string, AttributeValue>;
            };
            DeleteRequest?: {
                Key: Record<string, AttributeValue>;
            };
        }>>;
    }>;
    /**
     * Batch get items
     */
    batchGetItem(params: {
        RequestItems: Record<string, {
            Keys: Array<Record<string, AttributeValue>>;
            ProjectionExpression?: string;
            ExpressionAttributeNames?: Record<string, string>;
            ConsistentRead?: boolean;
        }>;
    }): Promise<{
        Responses: Record<string, Array<Record<string, AttributeValue>>>;
        UnprocessedKeys: Record<string, {
            Keys: Array<Record<string, AttributeValue>>;
        }>;
    }>;
    /**
     * Update time to live settings
     */
    updateTimeToLive(params: {
        TableName: string;
        TimeToLiveSpecification: {
            AttributeName: string;
            Enabled: boolean;
        };
    }): Promise<{
        TimeToLiveSpecification: {
            AttributeName: string;
            Enabled: boolean;
        };
    }>;
    /**
     * Helper: Marshal a JavaScript object to DynamoDB format
     */
    static marshal(obj: Record<string, any>): Record<string, AttributeValue>;
    /**
     * Helper: Marshal a single value to DynamoDB format
     */
    static marshalValue(value: any): AttributeValue;
    /**
     * Helper: Unmarshal DynamoDB format to JavaScript object
     */
    static unmarshal(item: Record<string, AttributeValue>): Record<string, any>;
    /**
     * Helper: Unmarshal a single DynamoDB value
     */
    static unmarshalValue(value: AttributeValue): any;
}
