import * as core from "@terrascript/core";
export interface GlobalSecondaryIndexArgs extends core.SchemaArgs {
    hashKey: string | core.StringOut;
    name: string | core.StringOut;
    nonKeyAttributes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    projectionType: string | core.StringOut;
    rangeKey?: string | core.StringOut;
    readCapacity?: number | core.NumberOut;
    writeCapacity?: number | core.NumberOut;
}
export declare class GlobalSecondaryIndex extends core.Schema<GlobalSecondaryIndexArgs> {
    hashKey: string | core.StringOut;
    name: string | core.StringOut;
    nonKeyAttributes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    projectionType: string | core.StringOut;
    rangeKey?: string | core.StringOut;
    readCapacity?: number | core.NumberOut;
    writeCapacity?: number | core.NumberOut;
}
export interface LocalSecondaryIndexArgs extends core.SchemaArgs {
    name: string | core.StringOut;
    nonKeyAttributes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    projectionType: string | core.StringOut;
    rangeKey: string | core.StringOut;
}
export declare class LocalSecondaryIndex extends core.Schema<LocalSecondaryIndexArgs> {
    name: string | core.StringOut;
    nonKeyAttributes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    projectionType: string | core.StringOut;
    rangeKey: string | core.StringOut;
}
export interface PointInTimeRecoveryArgs extends core.SchemaArgs {
    enabled: boolean | core.BooleanOut;
}
export declare class PointInTimeRecovery extends core.Schema<PointInTimeRecoveryArgs> {
    enabled: boolean | core.BooleanOut;
}
export interface AttributeArgs extends core.SchemaArgs {
    name: string | core.StringOut;
    type: string | core.StringOut;
}
export declare class Attribute extends core.Schema<AttributeArgs> {
    name: string | core.StringOut;
    type: string | core.StringOut;
}
export interface TtlArgs extends core.SchemaArgs {
    attributeName: string | core.StringOut;
    enabled?: boolean | core.BooleanOut;
}
export declare class Ttl extends core.Schema<TtlArgs> {
    attributeName: string | core.StringOut;
    enabled?: boolean | core.BooleanOut;
}
export interface ReplicaArgs extends core.SchemaArgs {
    kmsKeyArn?: string | core.StringOut;
    pointInTimeRecovery?: boolean | core.BooleanOut;
    propagateTags?: boolean | core.BooleanOut;
    regionName: string | core.StringOut;
}
export declare class Replica extends core.Schema<ReplicaArgs> {
    kmsKeyArn?: string | core.StringOut;
    pointInTimeRecovery?: boolean | core.BooleanOut;
    propagateTags?: boolean | core.BooleanOut;
    regionName: string | core.StringOut;
}
export interface ServerSideEncryptionArgs extends core.SchemaArgs {
    enabled: boolean | core.BooleanOut;
    kmsKeyArn?: string | core.StringOut;
}
export declare class ServerSideEncryption extends core.Schema<ServerSideEncryptionArgs> {
    enabled: boolean | core.BooleanOut;
    kmsKeyArn?: string | core.StringOut;
}
export interface TableArgs extends core.ResourceArgs {
    attribute?: core.Array<Attribute> | core.ArrayOut<Attribute>;
    billingMode?: string | core.StringOut;
    globalSecondaryIndex?: core.Array<GlobalSecondaryIndex> | core.ArrayOut<GlobalSecondaryIndex>;
    hashKey?: string | core.StringOut;
    localSecondaryIndex?: core.Array<LocalSecondaryIndex> | core.ArrayOut<LocalSecondaryIndex>;
    name: string | core.StringOut;
    pointInTimeRecovery?: PointInTimeRecovery;
    rangeKey?: string | core.StringOut;
    readCapacity?: number | core.NumberOut;
    replica?: core.Array<Replica> | core.ArrayOut<Replica>;
    restoreDateTime?: string | core.StringOut;
    restoreSourceName?: string | core.StringOut;
    restoreToLatestTime?: boolean | core.BooleanOut;
    serverSideEncryption?: ServerSideEncryption;
    streamEnabled?: boolean | core.BooleanOut;
    streamViewType?: string | core.StringOut;
    tableClass?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    ttl?: Ttl;
    writeCapacity?: number | core.NumberOut;
}
export declare class Table extends core.Resource<TableArgs> {
    arn: string | core.StringOut;
    attribute?: core.Array<Attribute> | core.ArrayOut<Attribute>;
    billingMode?: string | core.StringOut;
    globalSecondaryIndex?: core.Array<GlobalSecondaryIndex> | core.ArrayOut<GlobalSecondaryIndex>;
    hashKey?: string | core.StringOut;
    id: string | core.StringOut;
    localSecondaryIndex?: core.Array<LocalSecondaryIndex> | core.ArrayOut<LocalSecondaryIndex>;
    name: string | core.StringOut;
    pointInTimeRecovery?: PointInTimeRecovery;
    rangeKey?: string | core.StringOut;
    readCapacity?: number | core.NumberOut;
    replica?: core.Array<Replica> | core.ArrayOut<Replica>;
    restoreDateTime?: string | core.StringOut;
    restoreSourceName?: string | core.StringOut;
    restoreToLatestTime?: boolean | core.BooleanOut;
    serverSideEncryption?: ServerSideEncryption;
    streamArn: string | core.StringOut;
    streamEnabled?: boolean | core.BooleanOut;
    streamLabel: string | core.StringOut;
    streamViewType?: string | core.StringOut;
    tableClass?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    ttl?: Ttl;
    writeCapacity?: number | core.NumberOut;
    constructor(name: string, args?: TableArgs);
    getNamespace(): string;
}
//# sourceMappingURL=table.d.ts.map