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