import type { Condition } from '../../../entity/actions/parseCondition/index.js'; import type { EntityPathsUnion } from '../../../entity/actions/parsePaths/index.js'; import type { Entity } from '../../../entity/index.js'; import type { CapacityOption } from '../../../options/capacity.js'; import type { NoEntityMatchBehavior } from '../../../options/noEntityMatchBehavior.js'; import type { AllProjectedAttributesSelectOption, SelectOption, SpecificAttributesSelectOption } from '../../../options/select.js'; import type { IndexNames } from '../../../table/actions/indexes.js'; import type { Table } from '../../../table/index.js'; export type ScanOptions = { capacity?: CapacityOption; exclusiveStartKey?: Record; limit?: number; maxPages?: number; filter?: Entity[] extends ENTITIES ? Condition : never; filters?: Entity[] extends ENTITIES ? Record : { [ENTITY in ENTITIES[number] as ENTITY['entityName']]?: Condition; }; entityAttrFilter?: boolean; noEntityMatchBehavior?: NoEntityMatchBehavior; showEntityAttr?: boolean; tableName?: string; } & ({ segment?: never; totalSegments?: never; } | { segment: number; totalSegments: number; }) & ({ consistent?: boolean; select?: Exclude; index?: undefined; } | { consistent?: false; select?: SelectOption; index: IndexNames; } | { consistent?: boolean; select?: SelectOption; index: IndexNames; }) & ({ attributes?: undefined; select?: SelectOption; } | { attributes: Entity[] extends ENTITIES ? string[] : EntityPathsUnion[]; select?: SpecificAttributesSelectOption; });