import type { Effect, Stream } from 'effect'; import type { AnyEntityESchema, AnyUnkeyedESchema } from '../../../eschema/index.js'; import type { ChangeNotice, DecodedEntity, DecodedSingleEntity } from '../../../core/index.js'; import type { SnapshotIncompatible } from '../../../snapshot/index.js'; import type { DatabaseError } from '../error/index.js'; import type { EncodedItem, StdTableService } from '../contract/index.js'; import { type GlobalSecondaryIndex, type GlobalSecondaryIndexMap, type LocalSecondaryIndex, type LocalSecondaryIndexMap, type PrimaryIndex, type TableDefinition as DefinitionTableDefinition } from '../definition/index.js'; import type { AnyTransactOp, KeyedBuilderStart, SingleBuilder, TableEffect, TransactOp } from '../entity/index.js'; export interface ScanOptions { readonly parallelism?: number; } export interface DriftResult { readonly drifted: boolean; readonly currentForm: EncodedItem; } type TableStream = Stream.Stream>; export interface StdTable { readonly logicalName: Name; readonly primary: Primary; readonly localSecondaryIndexes: Lsis; readonly globalSecondaryIndexes: Gsis; readonly registeredEntities: DefinitionTableDefinition['registeredEntities']; snapshot(): ReturnType['snapshot']>; entity(schema: S): KeyedBuilderStart; singleEntity(schema: S): SingleBuilder; transact[]>(ops: Ops): TableEffect<{ readonly [K in keyof Ops]: Ops[K] extends { readonly operationKind: 'checkOp'; } ? null : Ops[K] extends TransactOp ? DecodedEntity | DecodedSingleEntity : never; }, Name>; dangerouslyRemoveAllItems(confirmation: 'I KNOW WHAT I AM DOING'): TableEffect<{ readonly itemsDeleted: number; }, Name>; subscribe(): Stream.Stream; scan(options?: ScanOptions): TableStream; drift(item: EncodedItem): TableEffect; reindex(currentForm: EncodedItem): TableEffect; verifySnapshot(): Effect.Effect>; } export interface TableBuilder { readonly logicalName: Name; primary(pk: Pk, sk: Sk): TopologyBuilder, {}, {}>; } export interface TopologyBuilder { lsi(name: Slot, sk: Sk): TopologyBuilder>, Gsis>; gsi(name: Slot, pk: Pk, sk: Sk): TopologyBuilder>>; build(): StdTable; } export declare const StdTable: { make(name: Name): TableBuilder; }; export {}; //# sourceMappingURL=table.d.ts.map