import { type CreateTableInput, type DynamoDB } from '@aws-sdk/client-dynamodb'; import { type Attribute } from '../attribute'; import { type AttributeMap, type IThroughput } from '../interfaces'; import type * as Metadata from '../metadata'; import { type ITable, type Table } from '../table'; export declare class Schema { private readonly table; isDyngoose: boolean; options: Metadata.Table; /** * The TableName in DynamoDB */ get name(): string; primaryKey: Metadata.Index.PrimaryKey; timeToLiveAttribute?: Attribute; globalSecondaryIndexes: Metadata.Index.GlobalSecondaryIndex[]; localSecondaryIndexes: Metadata.Index.LocalSecondaryIndex[]; /** * The desired Throughput for this table in DynamoDB */ throughput?: IThroughput; /** * Holds the DynamoDB Client for the table */ dynamo: DynamoDB; private readonly attributes; constructor(table: ITable); setMetadata(metadata: Metadata.Table): void; defineAttributeProperties(): void; defineGlobalSecondaryIndexes(): void; defineLocalSecondaryIndexes(): void; definePrimaryKeyProperty(): void; setThroughput(throughput: number | IThroughput): void; getAttributes(): IterableIterator<[string, Attribute]>; getAttributeByName(attributeName: string): Attribute; getAttributeByPropertyName(propertyName: string): Attribute; transformPropertyPathToAttributePath(propertyName: string): string; getAttributePathByPropertyName(propertyName: string): Array>; addAttribute(attribute: Attribute): Attribute; setPrimaryKey(primaryKey: string, sortKey: string | undefined, propertyName: string): void; createTableInput(forCloudFormation?: boolean): CreateTableInput; createCloudFormationResource(): any; toDynamo(record: Table | Map): AttributeMap; private findAttributeByPropertyName; }