import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; import { AllIndexesByName, KeyCondition, IndexFieldNames, Filter, Index, KindaPretty, Parser, RecordKey, Resource, DistributedTable as BaseDistributedTable } from 'wirejs-resources'; /** * A table of records that favors very high *overall* scalability at the expense of * scalability *between* partitions. Providers will distribute your data across many * servers based on the partition key as the table and/or traffic increases. * * ### Do NOT change partition keys. (In Production.) * * Changing it will cause some providers to drop and recreate your table. * * High cardinality, non-sequential partition keys allow for the best overall scaling. */ export declare class DistributedTable, const T extends KindaPretty>, const Key extends Index, const Indexes extends Index[] | undefined = undefined> extends Resource implements Omit, '#private'> { #private; parse: P; key: Key; indexes: Indexes | undefined; ddbClient: DynamoDBClient; private table; constructor(scope: Resource | string, id: string, options: { parse: P; key: Key; indexes?: Indexes; ttlAttribute?: string; }); get partitionKeyName(): Key['partition']['field']; get sortKeyName(): 'field' extends keyof Key['sort'] ? (Key['sort']['field'] extends string ? Key['sort']['field'] : undefined) : undefined; save(item: T, options?: { onlyIfNotExists?: boolean; }): Promise; saveMany(items: T[]): Promise; delete(item: RecordKey): Promise; deleteMany(items: (RecordKey)[]): Promise; get(key: RecordKey): Promise; scan(options?: { filter?: Filter; }): AsyncGenerator; query> & string>(options: { by: GivenPartition; where: KeyCondition, GivenPartition>; filter?: Filter, GivenPartition> & string>>; }): AsyncGenerator; isAlreadyExistsError(error: any): boolean; }