import { aws_kms as kms, Resource } from 'aws-cdk-lib';
import { GlobalSecondaryIndexProps, ITable, LocalSecondaryIndexProps, SchemaOptions, TableProps } from 'aws-cdk-lib/aws-dynamodb';
import { IGrantable, Grant } from 'aws-cdk-lib/aws-iam';
import { Construct } from 'constructs';
export declare const CUSTOM_DDB_CFN_TYPE = "Custom::AmplifyDynamoDBTable";
export declare const CUSTOM_IMPORTED_DDB_CFN_TYPE = "Custom::ImportedAmplifyDynamoDBTable";
export interface AmplifyDynamoDBTableProps extends TableProps {
    customResourceServiceToken: string;
    allowDestructiveGraphqlSchemaUpdates?: boolean;
    replaceTableUponGsiUpdate?: boolean;
    isImported?: boolean;
}
export declare class AmplifyDynamoDBTable extends Resource {
    readonly encryptionKey?: kms.IKey;
    readonly tableArn: string;
    readonly tableName: string;
    readonly tableStreamArn: string | undefined;
    readonly tableFromAttr: ITable;
    private readonly customResourceServiceToken;
    private readonly table;
    private readonly keySchema;
    private readonly attributeDefinitions;
    private readonly globalSecondaryIndexes;
    private readonly localSecondaryIndexes;
    private readonly secondaryIndexSchemas;
    private readonly nonKeyAttributes;
    private readonly tablePartitionKey;
    private readonly tableSortKey?;
    private readonly billingMode;
    constructor(scope: Construct, id: string, props: AmplifyDynamoDBTableProps);
    addGlobalSecondaryIndex(props: GlobalSecondaryIndexProps): void;
    addLocalSecondaryIndex(props: LocalSecondaryIndexProps): void;
    schema(indexName?: string): SchemaOptions;
    grantStreamRead(grantee: IGrantable): Grant;
    private addKey;
    private findKey;
    private registerAttribute;
    private validateTable;
    private parseEncryption;
    private validateProvisioning;
    private validateIndexName;
    private validateNonKeyAttributes;
    private buildIndexKeySchema;
    private buildIndexProjection;
}
//# sourceMappingURL=index.d.ts.map