import { AnyExpression, Expression } from '../../expressions'; import { ConstraintConfig } from '../../functions'; import { BooleanType, Type } from '../index'; import { BigintArg } from '../math'; export declare const ARRAY: , boolean, any>>(of: O) => ArrayType; export declare type ArrayArg = ArrayType['argument']; export interface ArrayType extends Type<'ARRAY', R, T['output']> { expression: ArrayExpression; argument: Expression> | this['input'] | Expression[] | Expression; required(conf?: ConstraintConfig): ArrayType; } export interface ArrayExpression extends AnyExpression> { concat(arr: ArrayArg): Expression>; overlap(arg: ArrayArg): Expression>; unshift(arg: T['argument']): Expression>; push(arg: T['argument']): Expression>; contain(arg: ArrayArg): Expression>; contained(arg: ArrayArg): Expression>; item(l: BigintArg): Expression; item(l: BigintArg, u: BigintArg): Expression>; item(l: BigintArg, u?: BigintArg): Expression> | Expression; }