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;
});