export interface MultiTaskELMOptions {
    tasks: Array<{
        name: string;
        categories: string[];
        weight?: number;
    }>;
    sharedHiddenUnits?: number;
    taskSpecificHiddenUnits?: number[];
    activation?: 'relu' | 'tanh' | 'sigmoid' | 'linear';
    maxLen?: number;
    useTokenizer?: boolean;
}
export interface MultiTaskELMResult {
    task: string;
    label: string;
    prob: number;
}
/**
 * Multi-Task ELM for joint learning across related tasks
 * Features:
 * - Shared feature extraction layer
 * - Task-specific output layers
 * - Task weighting for importance
 * - Joint optimization
 */
export declare class MultiTaskELM {
    private sharedELM;
    private taskELMs;
    private tasks;
    private options;
    private trained;
    constructor(options: MultiTaskELMOptions);
    /**
     * Train multi-task ELM
     * @param X Input features
     * @param yTaskData Map of task name to labels
     */
    train(X: number[][], yTaskData: Map<string, number[] | string[]>): void;
    /**
     * Predict for all tasks
     */
    predict(X: number[] | number[][], topK?: number): Map<string, MultiTaskELMResult[]>;
    /**
     * Predict for a specific task
     */
    predictTask(x: number[] | number[][], taskName: string, topK?: number): MultiTaskELMResult[];
    /**
     * Extract features from shared layer
     */
    private _extractSharedFeatures;
    /**
     * Get task names
     */
    getTaskNames(): string[];
    /**
     * Get task weights
     */
    getTaskWeights(): Map<string, number>;
}
//# sourceMappingURL=multi-task-elm.d.ts.map