/// import ExpressionAttributeNames from './ExpressionAttributeNames'; import ExpressionAttributeValues from './ExpressionAttributeValues'; export type ConditionGenerator = (condition: ConditionExpression) => ConditionExpression | string; export type ValueFn = V | ((path: string, condition: ConditionExpression) => ConditionExpression | string); export type Comparator = '=' | '<>' | '<' | '<=' | '>' | '>='; export type FunctionName = 'attribute_exists' | 'attribute_not_exists' | 'attribute_type' | 'begins_with' | 'contains' | 'size'; export type AttributeTypeString = 'S' | 'SS' | 'N' | 'NS' | 'B' | 'BS' | 'BOOL' | 'NULL' | 'L' | 'M'; export type AttributeType = AttributeTypeString | StringConstructor | [StringConstructor] | NumberConstructor | [NumberConstructor] | ArrayBufferConstructor | typeof Buffer | [ArrayBufferConstructor | typeof Buffer] | BooleanConstructor | null | ArrayConstructor | ObjectConstructor; export type ContainsOperand = ([NonNullable] extends [string] ? NonNullable : [NonNullable] extends [Set] ? SV : never) | ((exp: ConditionExpression) => string); export default class ConditionExpression { private names; private values; private expression; static getAttributeTypeString(type: AttributeType): AttributeTypeString; constructor(names: ExpressionAttributeNames, values: ExpressionAttributeValues, init?: string | ConditionExpression); serialize(): string | undefined; name(...path: [K1, K2?, K3?, K4?, K5?, K6?, K7?, K8?, ...(string | number)[]]): string; value(key: string, value: unknown): string; eq(path: K1 | [K1], value: ValueFn): this; eq(path: [K1, K2], value: ValueFn): this; eq(path: [K1, K2, K3], value: ValueFn): this; eq(path: [K1, K2, K3, K4], value: ValueFn): this; eq(path: [K1, K2, K3, K4, K5], value: ValueFn): this; eq(path: [K1, K2, K3, K4, K5, K6], value: ValueFn): this; eq(path: [K1, K2, K3, K4, K5, K6, K7], value: ValueFn): this; eq(path: [K1, K2, K3, K4, K5, K6, K7, K8], value: ValueFn): this; nq(path: K1 | [K1], value: ValueFn): this; nq(path: [K1, K2], value: ValueFn): this; nq(path: [K1, K2, K3], value: ValueFn): this; nq(path: [K1, K2, K3, K4], value: ValueFn): this; nq(path: [K1, K2, K3, K4, K5], value: ValueFn): this; nq(path: [K1, K2, K3, K4, K5, K6], value: ValueFn): this; nq(path: [K1, K2, K3, K4, K5, K6, K7], value: ValueFn): this; nq(path: [K1, K2, K3, K4, K5, K6, K7, K8], value: ValueFn): this; lt(path: K1 | [K1], value: ValueFn): this; lt(path: [K1, K2], value: ValueFn): this; lt(path: [K1, K2, K3], value: ValueFn): this; lt(path: [K1, K2, K3, K4], value: ValueFn): this; lt(path: [K1, K2, K3, K4, K5], value: ValueFn): this; lt(path: [K1, K2, K3, K4, K5, K6], value: ValueFn): this; lt(path: [K1, K2, K3, K4, K5, K6, K7], value: ValueFn): this; lt(path: [K1, K2, K3, K4, K5, K6, K7, K8], value: ValueFn): this; lte(path: K1 | [K1], value: ValueFn): this; lte(path: [K1, K2], value: ValueFn): this; lte(path: [K1, K2, K3], value: ValueFn): this; lte(path: [K1, K2, K3, K4], value: ValueFn): this; lte(path: [K1, K2, K3, K4, K5], value: ValueFn): this; lte(path: [K1, K2, K3, K4, K5, K6], value: ValueFn): this; lte(path: [K1, K2, K3, K4, K5, K6, K7], value: ValueFn): this; lte(path: [K1, K2, K3, K4, K5, K6, K7, K8], value: ValueFn): this; gt(path: K1 | [K1], value: ValueFn): this; gt(path: [K1, K2], value: ValueFn): this; gt(path: [K1, K2, K3], value: ValueFn): this; gt(path: [K1, K2, K3, K4], value: ValueFn): this; gt(path: [K1, K2, K3, K4, K5], value: ValueFn): this; gt(path: [K1, K2, K3, K4, K5, K6], value: ValueFn): this; gt(path: [K1, K2, K3, K4, K5, K6, K7], value: ValueFn): this; gt(path: [K1, K2, K3, K4, K5, K6, K7, K8], value: ValueFn): this; gte(path: K1 | [K1], value: ValueFn): this; gte(path: [K1, K2], value: ValueFn): this; gte(path: [K1, K2, K3], value: ValueFn): this; gte(path: [K1, K2, K3, K4], value: ValueFn): this; gte(path: [K1, K2, K3, K4, K5], value: ValueFn): this; gte(path: [K1, K2, K3, K4, K5, K6], value: ValueFn): this; gte(path: [K1, K2, K3, K4, K5, K6, K7], value: ValueFn): this; gte(path: [K1, K2, K3, K4, K5, K6, K7, K8], value: ValueFn): this; comparator(comparator: Comparator, path: K1 | [K1], value: ValueFn): this; comparator(comparator: Comparator, path: [K1, K2], value: ValueFn): this; comparator(comparator: Comparator, path: [K1, K2, K3], value: ValueFn): this; comparator(comparator: Comparator, path: [K1, K2, K3, K4], value: ValueFn): this; comparator(comparator: Comparator, path: [K1, K2, K3, K4, K5], value: ValueFn): this; comparator(comparator: Comparator, path: [K1, K2, K3, K4, K5, K6], value: ValueFn): this; comparator(comparator: Comparator, path: [K1, K2, K3, K4, K5, K6, K7], value: ValueFn): this; comparator(comparator: Comparator, path: [K1, K2, K3, K4, K5, K6, K7, K8], value: ValueFn): this; between(path: K1 | [K1], from: ValueFn, to: ValueFn): this; between(path: [K1, K2], from: ValueFn, to: ValueFn): this; between(path: [K1, K2, K3], from: ValueFn, to: ValueFn): this; between(path: [K1, K2, K3, K4], from: ValueFn, to: ValueFn): this; between(path: [K1, K2, K3, K4, K5], from: ValueFn, to: ValueFn): this; between(path: [K1, K2, K3, K4, K5, K6], from: ValueFn, to: ValueFn): this; between(path: [K1, K2, K3, K4, K5, K6, K7], from: ValueFn, to: ValueFn): this; between(path: [K1, K2, K3, K4, K5, K6, K7, K8], from: ValueFn, to: ValueFn): this; attributeExists(path: K1 | [K1]): this; attributeExists(path: [K1, K2]): this; attributeExists(path: [K1, K2, K3]): this; attributeExists(path: [K1, K2, K3, K4]): this; attributeExists(path: [K1, K2, K3, K4, K5]): this; attributeExists(path: [K1, K2, K3, K4, K5, K6]): this; attributeExists(path: [K1, K2, K3, K4, K5, K6, K7]): this; attributeExists(path: [K1, K2, K3, K4, K5, K6, K7, K8]): this; attributeNotExists(path: K1 | [K1]): this; attributeNotExists(path: [K1, K2]): this; attributeNotExists(path: [K1, K2, K3]): this; attributeNotExists(path: [K1, K2, K3, K4]): this; attributeNotExists(path: [K1, K2, K3, K4, K5]): this; attributeNotExists(path: [K1, K2, K3, K4, K5, K6]): this; attributeNotExists(path: [K1, K2, K3, K4, K5, K6, K7]): this; attributeNotExists(path: [K1, K2, K3, K4, K5, K6, K7, K8]): this; attributeType(path: K1 | [K1], type: AttributeType): this; attributeType(path: [K1, K2], type: AttributeType): this; attributeType(path: [K1, K2, K3], type: AttributeType): this; attributeType(path: [K1, K2, K3, K4], type: AttributeType): this; attributeType(path: [K1, K2, K3, K4, K5], type: AttributeType): this; attributeType(path: [K1, K2, K3, K4, K5, K6], type: AttributeType): this; attributeType(path: [K1, K2, K3, K4, K5, K6, K7], type: AttributeType): this; attributeType(path: [K1, K2, K3, K4, K5, K6, K7, K8], type: AttributeType): this; beginsWith(path: K1 | [K1], substr: string): this; beginsWith(path: [K1, K2], substr: string): this; beginsWith(path: [K1, K2, K3], substr: string): this; beginsWith(path: [K1, K2, K3, K4], substr: string): this; beginsWith(path: [K1, K2, K3, K4, K5], substr: string): this; beginsWith(path: [K1, K2, K3, K4, K5, K6], substr: string): this; beginsWith(path: [K1, K2, K3, K4, K5, K6, K7], substr: string): this; beginsWith(path: [K1, K2, K3, K4, K5, K6, K7, K8], substr: string): this; contains(path: K1 | [K1], operand: ContainsOperand): this; contains(path: [K1, K2], operand: ContainsOperand): this; contains(path: [K1, K2, K3], operand: ContainsOperand): this; contains(path: [K1, K2, K3, K4], operand: ContainsOperand): this; contains(path: [K1, K2, K3, K4, K5], operand: ContainsOperand): this; contains(path: [K1, K2, K3, K4, K5, K6], operand: ContainsOperand): this; contains(path: [K1, K2, K3, K4, K5, K6, K7], operand: ContainsOperand): this; contains(path: [K1, K2, K3, K4, K5, K6, K7, K8], operand: ContainsOperand): this; size(path: K1 | [K1]): this; size(path: [K1, K2]): this; size(path: [K1, K2, K3]): this; size(path: [K1, K2, K3, K4]): this; size(path: [K1, K2, K3, K4, K5]): this; size(path: [K1, K2, K3, K4, K5, K6]): this; size(path: [K1, K2, K3, K4, K5, K6, K7]): this; size(path: [K1, K2, K3, K4, K5, K6, K7, K8]): this; fn(fnName: FunctionName, ...args: string[]): this; and(fn: ConditionGenerator): this; or(fn: ConditionGenerator): this; not(fn: ConditionGenerator): this; private append; protected calcValueStr(path: unknown[], pathName: string, value: ValueFn): string; }