import { ComponentInternalInstance } from 'vue';
import { dopedComponentInternalInstance } from './event-backbone.ts';
import { EventsBackboneAxonInterface, EventsBackboneAxonKey, EventsBackboneBrainInterface, EventsBackboneDendriteFunctions, EventsBackboneDendriteInterface, EventsBackboneNeuronInterface, EventsBackboneNeuronKey, EventsBackboneNeurotransmitterKey } from '../types';
export declare class EventsBackboneAxon implements EventsBackboneAxonInterface {
    private neuronFrom?;
    private neuronTo?;
    private readonly axonKey;
    constructor(ak: EventsBackboneAxonKey, neuronFrom: EventsBackboneNeuron, neuronTo: EventsBackboneNeuron);
    transmitSignal(s: EventsBackboneNeurotransmitterKey, d?: any): Promise<any>;
    getNeuronFrom(): EventsBackboneNeuron | undefined;
    getAxonKey(): string;
    destroy(notifySenderNeuron: boolean, doNotAutoRecreate?: boolean): void;
}
export declare class EventsBackboneDendrite implements EventsBackboneDendriteInterface {
    private dendriteComponent?;
    private neuron?;
    private callbacks;
    constructor(c: dopedComponentInternalInstance, ng: EventsBackboneNeuron, cbs?: EventsBackboneDendriteFunctions);
    getComponentInstance(): ComponentInternalInstance;
    setNeurotransmitterCallbacks(cbsf: EventsBackboneDendriteFunctions): void;
    removeNeurotransmitterCallbacks(cbsfk: EventsBackboneNeurotransmitterKey[]): void;
    getNeuron(): EventsBackboneNeuron;
    deliverSignalToDendrite(n: EventsBackboneNeurotransmitterKey, d?: any): any;
    sendSignalFromDendrite(ak: EventsBackboneAxonKey, s: EventsBackboneNeurotransmitterKey, data?: any): Promise<any>;
    deleteAxonFromDendrite(k: string, doNotAutoRecreate?: boolean): void;
    destroy(): void;
}
export declare class EventsBackboneNeuron implements EventsBackboneNeuronInterface {
    private readonly dendrites;
    private brain?;
    private readonly neuronKey;
    private readonly senderAxons;
    private readonly receiverAxons;
    private readonly pendingAxonRequests;
    constructor(b: EventsBackboneBrain, nk: EventsBackboneNeuronKey, ...ns: EventsBackboneDendrite[]);
    addDendrite(n: EventsBackboneDendrite): EventsBackboneDendrite;
    getDendrites(): Set<EventsBackboneDendrite>;
    deleteDendrite(n: EventsBackboneDendrite): void;
    hasDendrite(n: EventsBackboneDendrite): boolean;
    getNeuronKey(): string;
    getAxons(): Map<EventsBackboneAxonKey, EventsBackboneAxon>;
    getAxon(k: EventsBackboneAxonKey): EventsBackboneAxon | undefined;
    deleteAxon(k: EventsBackboneAxonKey, doNotAutoRecreate?: boolean): void;
    notifyCutAxonFromReceiverNeuron(ak: EventsBackboneAxonKey, neuronToKey: EventsBackboneNeuronKey, doNotAutoRecreate: boolean): Promise<void>;
    notifyCutAxonFromSenderNeuron(ak: EventsBackboneAxonKey): Promise<void>;
    addAxonRequest(nt: EventsBackboneNeuronKey): void;
    removeAxonRequest(nt: EventsBackboneNeuronKey): void;
    stopPendingAxonRequest(nt: EventsBackboneNeuronKey): void;
    requestAxon(ak: EventsBackboneAxonKey, neuronToKey: EventsBackboneNeuronKey): Promise<EventsBackboneAxon | undefined>;
    receiveAxon(a: EventsBackboneAxon): void;
    sendSignal(ak: EventsBackboneAxonKey, n: EventsBackboneNeurotransmitterKey, d?: any): Promise<any>;
    deliverSignal(n: EventsBackboneNeurotransmitterKey, d?: any): Promise<any>;
    get size(): number;
    get length(): number;
    destroy(): void;
}
export declare class EventsBackboneBrain implements EventsBackboneBrainInterface {
    private neurons;
    private readonly pendingAxonRequests;
    private readonly closePendingAxonRequests;
    constructor();
    generateNeuron(s: EventsBackboneNeuronKey, c: ComponentInternalInstance, cbs?: EventsBackboneDendriteFunctions): EventsBackboneDendrite;
    private cleanupPendingAxonRequestsCallbacks;
    requestNeuronForAxon(neuronFromKey: EventsBackboneNeuronKey, neuronToKey: EventsBackboneNeuronKey): Promise<EventsBackboneNeuron | void>;
    stopPendingAxonRequest(nf: EventsBackboneNeuronKey, nt: EventsBackboneNeuronKey): void;
    deleteNeuron(ngKey: EventsBackboneNeuronKey): void;
}
export declare function useBackboneBrain(): EventsBackboneBrain;
export default useBackboneBrain;
export declare function createNeuron(s: EventsBackboneNeuronKey, cbs: EventsBackboneDendriteFunctions): EventsBackboneDendrite;
