export type MaskInputMask = string | Array<string | RegExp>;
export interface MaskInputState {
    value: string;
    selection: {
        start: number;
        end: number;
    } | null;
}
export interface MaskOptions {
    mask: MaskInputMask;
    tokens?: Record<string, RegExp>;
    modify?: (value: string) => Partial<Pick<MaskOptions, 'mask' | 'tokens' | 'slotChar' | 'separate'>> | undefined;
    separate?: boolean;
    slotChar?: string | null;
    transform?: (char: string) => string;
}
export interface MaskSlot {
    type: 'token' | 'literal';
    char: string;
    pattern?: RegExp;
    optional?: boolean;
}
export declare function parseMask(mask: MaskInputMask, tokens: Record<string, RegExp>): MaskSlot[];
export declare function resolveMaskOptions(options: MaskOptions, rawValue: string): {
    slots: MaskSlot[];
    slotChar: string | null;
    separate: boolean;
    transform: ((char: string) => string) | undefined;
};
export declare function applyMaskToRaw(raw: string, slots: MaskSlot[], transform?: (char: string) => string): string;
export declare function processInput(input: string, slots: MaskSlot[], transform?: (char: string) => string): string;
export declare function extractRaw(masked: string, slots: MaskSlot[]): string;
export declare function buildDisplayValue(value: string, slots: MaskSlot[], slotChar: string | null | undefined, show: boolean): string;
export declare function isComplete(masked: string, slots: MaskSlot[]): boolean;
export declare function nextToken(slots: MaskSlot[], from: number): number;
export declare function previousToken(slots: MaskSlot[], from: number): number;
