import type { ReplaySubject } from 'rxjs';
import Register from './Register';
export interface Labelled {
label: string;
}
export interface Payload {
[key: string]: any;
}
export interface Meta {
[key: string]: any;
}
export interface Event
extends Labelled {
payload: P;
meta?: M;
}
export interface Factory
extends Labelled {
(payload: P, meta?: M): Event
;
is: (event: T) => event is S;
registered?: boolean;
}
export interface WithFilePropertyMeta extends Meta {
property: string | string[];
}
export interface CustomActionIdMeta extends Meta {
actionId: string;
}
export interface WithTriggeringLabelMeta extends Meta {
triggeredBy: string;
}
export interface TransactionMeta extends Meta {
transactionId: string;
}
export interface WithHashMeta extends Meta {
hash: string;
}
export declare type EventBus = ReplaySubject>;
export declare type FactoryOptions = {
scope?: string;
divider?: string;
aliases?: string | string[];
};
export declare const factoryRegister: Register;
export declare function factory(label: string, options?: FactoryOptions): Factory
;