import { TMethod } from '@onesy/models';
export declare type TArrayVariant = 'preorder';
interface IOnesyNode {
    value: number;
    word?: any;
    path?: string;
    left: OnesyNode;
    right: OnesyNode;
    [p: string]: any;
}
export declare class OnesyHuffmanCodeResponse {
    value: any;
    values?: Record<string, string>;
    values_encoded?: any;
    probabilities?: Record<string, number>;
    efficiency?: number;
    redundency?: number;
    entropy?: number;
    original_byte_size?: number;
    values_byte_size?: number;
    value_byte_size?: number;
    encoded_byte_size?: number;
    compression_ratio?: number;
    compression_percentage?: number;
    positive?: boolean;
    average_code_word_length?: number;
    performance_milliseconds?: number;
    performance?: string;
    constructor(value?: any, values?: Record<string, string>, values_encoded?: any, probabilities?: Record<string, number>, efficiency?: number, redundency?: number, entropy?: number, original_byte_size?: number, values_byte_size?: number, value_byte_size?: number, encoded_byte_size?: number, compression_ratio?: number, compression_percentage?: number, positive?: boolean, average_code_word_length?: number, performance_milliseconds?: number, performance?: string);
}
export declare class OnesyNode implements IOnesyNode {
    value: number;
    word?: any;
    left: OnesyNode;
    right: OnesyNode;
    [p: string]: any;
    constructor(value?: number, word?: any);
    get leaf(): boolean;
    get maxDepth(): number;
}
interface IOnesyHuffmanTree {
    root: OnesyNode;
}
export declare class OnesyHuffmanTree implements IOnesyHuffmanTree {
    root: OnesyNode;
    static make(value: Array<any>): OnesyHuffmanTree;
    get array(): Array<any>;
    isRoot(value: OnesyNode): boolean;
    preorder(value: OnesyNode, method: TMethod): void;
    make(value_: Array<any>): OnesyHuffmanTree;
}
export declare type TEncoding = 'binary' | 'hexadecimal';
export interface IOptions {
    encode_values?: boolean;
    base64?: boolean;
}
export declare const optionsDefault: IOptions;
declare class OnesyHuffmanCode {
    value?: string;
    options: IOptions;
    huffmanTree: OnesyHuffmanTree;
    probabilities: Record<string, number>;
    values: Record<string, string>;
    response: OnesyHuffmanCodeResponse;
    private startTime;
    static get OnesyHuffmanCodeResponse(): typeof OnesyHuffmanCodeResponse;
    static get OnesyNode(): typeof OnesyNode;
    static get OnesyHuffmanTree(): typeof OnesyHuffmanTree;
    static encodeValue(value: string): string;
    static decodeValue(value_: string): string;
    static encodeValues(values: Record<string, string>, encodeValues?: boolean): string | object;
    static decodeValues(value: string): object;
    static getValues(onesyHuffmanTree: OnesyHuffmanTree): Record<string, string>;
    static decode(value: string, values: Record<string, string>): OnesyHuffmanCodeResponse;
    static encodeBase64(value: string): string;
    static decodeBase64(value: string): string;
    get encoded(): OnesyHuffmanCodeResponse;
    get entropy(): number;
    get averageCodeWordLength(): number;
    get redundency(): number;
    get efficiency(): number;
    constructor(value?: string, options?: IOptions);
    private init;
    encode(): OnesyHuffmanCodeResponse;
    decode(value_: string): OnesyHuffmanCodeResponse;
    getProbabilities(): Record<string, number>;
    normalizeProbabilities(): Record<string, number>;
    makeHuffmanTree(): OnesyHuffmanTree;
}
export default OnesyHuffmanCode;
