import type { ItemSchema, ValidValue } from '../schema/index.js'; import type { PrimaryKey } from '../table/actions/parsePrimaryKey/index.js'; import type { Table } from '../table/index.js'; import type { DocumentClientOptions } from '../types/documentClientOptions.js'; import type { If } from '../types/if.js'; import { $interceptor, $sentArgs } from './constants.js'; import type { EntityMetadata } from './types/index.js'; import type { BuildEntitySchema, EntityAttrDefaultOptions, EntityAttrOptions, EntityAttributes, NarrowOptions, NeedsKeyCompute, SchemaOf, TimestampsDefaultOptions, TimestampsOptions } from './utils/index.js'; export declare class Entity { readonly type: 'entity'; readonly entityName: NAME; readonly table: TABLE; readonly attributes: ATTRIBUTES; readonly schema: BuildEntitySchema; readonly entityAttribute: ENTITY_ATTR_OPTIONS; readonly timestamps: TIMESTAMPS_OPTIONS; readonly computeKey?: (keyInput: EntityAttributes extends ATTRIBUTES ? any : ValidValue, { mode: 'key'; }>) => PrimaryKey; [$interceptor]?: (action: EntitySendableAction) => any; meta: EntityMetadata; constructor({ name, table, schema, computeKey, entityAttribute, timestamps, meta }: { name: NAME; table: TABLE; schema: SchemaOf; entityAttribute?: NarrowOptions; timestamps?: NarrowOptions; meta?: EntityMetadata; } & If, { computeKey: (keyInput: ValidValue, { mode: 'key'; }>) => PrimaryKey
; }, { computeKey?: undefined; }>); build = EntityAction>(Action: new (entity: this) => ACTION): ACTION; } export declare class EntityAction { readonly entity: ENTITY; static actionName: string; constructor(entity: ENTITY); } export interface EntitySendableAction extends EntityAction { [$sentArgs](): any[]; send(documentClientOptions?: DocumentClientOptions): Promise; }