export interface SetupPluginConfigPayload {
    sidebarNavigation: NavigationItemAddPayload[];
}
export interface SetupScaffoldingConfigPayload {
    scaffoldingHash: string;
    pluginHash: string;
    privileges: (Record<string, boolean> & {
        isAdmin: boolean;
    }) | null;
    locale: string;
    initialPath?: string;
}
export interface LocalePayload {
    locale: string;
}
export interface NavigationNavigatePayload {
    path?: string;
    title?: string[];
}
export interface NavigationItemAddPayload {
    route: string;
    label: string;
    disabled: boolean;
}
export type NavigationSetItemsPayload = SetupPluginConfigPayload;
export interface NavigationItemRemovePayload {
    route: string;
}
export interface NavigationItemUpdatePayload extends NavigationItemRemovePayload {
    label?: string;
    disabled?: boolean;
}
export interface WebsocketStatusPayload {
    state: "opened" | "closed" | "error";
    details?: string;
}
export interface WebsocketMessagePayload {
    event: string;
    id: string;
    mand_id: number;
    uid: number;
    source: string;
    data: unknown;
}
export interface WebsocketSubscribePayload {
    include?: string[];
    exclude?: string[];
}
export declare enum MessageDomain {
    setup = "setup",
    navigation = "navigation",
    websocket = "websocket"
}
export declare enum MessageType {
    pluginConfig = "pluginConfig",
    scaffoldingConfig = "scaffoldingConfig",
    locale = "locale",
    navigate = "navigate",
    itemAdd = "itemAdd",
    itemUpdate = "itemUpdate",
    itemRemove = "itemRemove",
    setItems = "setItems",
    status = "status",
    message = "message",
    subscribe = "subscribe",
    unsubscribe = "unsubscribe"
}
export interface Message<Payload> {
    source?: MessageEventSource | null;
    origin?: string;
    identifier?: string;
    domain: MessageDomain;
    type: MessageType;
    payload: Payload;
}
export interface Subscriber {
    domain: MessageDomain;
    type: MessageType;
    callback: (message: any) => void;
}
export interface CommunicationPartner {
    identifier: string;
    target: Window;
    origin: string;
}
