import Topology = require("./Topology");
import AST = require("./AST");
import Heap = require("./Heap");
import nodes = require("./ast/nodes");
import Activations = require('./ast/activations');
export { Lysergic, Topology, AST, Heap, Activations, nodes };
export declare enum LysergicStatus {
    UNLOCKED = 0,
    LOCKED = 1,
}
export interface ILysergicOptions {
    bias?: boolean;
    learningRate?: number;
    momentum?: number;
    heap?: Heap.Heap;
}
export declare enum StatusTypes {
    IDLE = 0,
    INIT = 1,
    REVERSE_INIT = 2,
    ACTIVATING = 3,
    PROPAGATING = 4,
    TRAINING = 5,
    BUILDING = 6,
}
export default class Lysergic {
    options: ILysergicOptions;
    learningRate: number;
    momentum: number;
    engineStatus: StatusTypes;
    topology: Topology.Topology;
    ast: AST.AST;
    heap: Heap.Heap;
    status: LysergicStatus;
    constructor(options?: ILysergicOptions);
    addUnit(options: Topology.ITopologyUnitOptions): number;
    addLayer(size: number, options: Topology.ITopologyUnitOptions): number[];
    addConnection(from: number, to: number, weight: number): void;
    addGate(from: any, to: any, gater: any): void;
    build(): Promise<void>;
    getAST(): nodes.DocumentNode;
    getBuffer(): Promise<ArrayBuffer>;
    getMemory(): Promise<Float64Array>;
    setInputs(inputs: number[]): Promise<void>;
    getOutputs(): Promise<ArrayLike<number>>;
    setTargets(targets: number[]): Promise<void>;
    toJSON(asString?: boolean): object | string;
    static fromJSON(json: string | object): Lysergic;
    clone(): Lysergic;
}
