import { JetStreamPublishOptions, JsMsg } from '@nats-io/jetstream';
import { EntityUpdateContext, IFunctionStartContext } from '../eang-core.js';
import { Payload } from '@nats-io/nats-core';
import { Cnx, EangEventTypes, Obj } from './entity.js';
export interface IEangEvent {
    msg: JsMsg;
    subjectData: IObjSubjectData | ICnxSubjectData;
    entity: Obj | Cnx;
    eventType: EangEventTypes;
    context?: IFunctionStartContext | EntityUpdateContext;
    tenant: string;
    organizationalUnit: string;
    user: string;
}
export interface IEangOutMessage {
    subject: string;
    payload: Payload;
    opts: Partial<JetStreamPublishOptions>;
}
export declare function parseMsg(msg: JsMsg): IEangEvent;
export interface IObjSubjectData {
    entityType: 'obj';
    tenant: string;
    organizationalUnit: string;
    user: string;
    typeOf: string;
    instanceOf: string;
    childOf: string;
    key: string;
    eventType: string;
}
export interface ICnxSubjectData {
    entityType: 'cnx';
    tenant: string;
    organizationalUnit: string;
    user: string;
    typeOf: string;
    instanceOf: string;
    key: string;
    eventType: string;
    fromObjTypeOf: string;
    fromObjInstanceOf: string;
    fromObjKey: string;
    toObjTypeOf: string;
    toObjInstanceOf: string;
    toObjKey: string;
}
export declare function parseSubjectData(subject: string): IObjSubjectData | ICnxSubjectData;
