import { Tensor } from '@tensorflow/tfjs-node';
import { Language } from './language';
export declare type Vocabulary = {
    [word: string]: number;
};
export declare type WordEmbeddingType = '10k-fasttext' | 'glove';
export declare type WordEmbeddingDimension = 50 | 300;
export interface WordEmbeddingsConfig {
    type: WordEmbeddingType;
    dimension: WordEmbeddingDimension;
    language: Language;
    vocabulary: Vocabulary;
}
export interface Normalizer {
    normalize(text: string): string;
}
export interface Stemmer {
    stem(text: string, language: Language): string;
}
export interface Tokenizer {
    tokenize(text: string): string[];
}
export interface PreprocessorEngines {
    normalizer?: Normalizer;
    tokenizer?: Tokenizer;
    stemmer?: Stemmer;
}
export declare type DataSet = {
    label: string;
    feature: string;
}[];
export declare type InputSet = Tensor;
export declare type OutputSet = Tensor;
export declare type IntentEncoder = {
    [intent: string]: number;
};
export declare type IntentDecoder = {
    [id: number]: string;
};
export declare type EncodedPrediction = {
    intentId: number;
    confidence: number;
};
export declare type DecodedPrediction = {
    intent: string;
    confidence: number;
};
export interface ModelData {
    language: Language;
    intents: IntentDecoder;
    maxSeqLen: number;
    vocabulary: Vocabulary;
}
export interface ModelParameters {
    maxSeqLen: number;
    learningRate: number;
    intentsCount: number;
    trainableEmbeddings: boolean;
}
export declare enum ModelTemplatesType {
    SIMPLE_NN = 0
}
export interface TrainingParameters {
    x: InputSet;
    y: OutputSet;
    epochs: number;
    batchSize: number;
    validationSplit: number;
}
