import { CharacterArg, TextType } from '..'; import { AnyExpression, Expression } from '../../expressions'; import { ConstraintConfig } from '../../functions'; import { Type } from '../index'; import { IntegerArg } from '../math'; export declare const BIT: (n?: number | undefined) => BitType; export declare type BitArg = BitType['argument']; export interface BitType extends Type<'BIT', R> { expression: BinaryExpression>; argument: Expression | this['input'] | Expression; required(conf?: ConstraintConfig): BitType; } export declare const VARBIT: (n?: number | undefined) => VarbitType; export declare type VarbitArg = VarbitType['argument']; export interface VarbitType extends Type<'VARBIT', R> { expression: BinaryExpression>; argument: Expression | this['input'] | Expression; required(conf?: ConstraintConfig): VarbitType; } export declare type BinaryTypes = BitType | VarbitType; export declare type BinaryArg = BinaryTypes['argument']; export interface BinaryExpression extends AnyExpression { concat(arg: BinaryArg): Expression>; concat(arg: CharacterArg): Expression>; and(arg: BinaryArg): Expression>; or(arg: BinaryArg): Expression>; xor(arg: BinaryArg): Expression>; not(): Expression>; lshift(arg: IntegerArg): Expression>; rshift(arg: IntegerArg): Expression>; }