import { ConditionGroup } from '@bcase/core';
import { Reference } from './reference';
export interface ModuleFlow {
    readonly start: Reference;
    readonly blocks: {
        readonly [id: string]: ModuleFlow.NextBlock[];
    };
    readonly orphans: ModuleFlow.NextBlock[];
}
export declare namespace ModuleFlow {
    type NextBlock = Reference & {
        readonly condition?: ConditionGroup;
    };
    const DEFAULT_CONDITION: string;
    const empty: () => ModuleFlow;
}
export interface ModuleSettings {
    readonly active: boolean;
    readonly locked: boolean;
    readonly createdAt: string;
    readonly createdBy: string;
}
export interface Module extends Reference {
    readonly name: string;
    readonly description: string;
    readonly category: string;
    readonly image: string[];
    readonly flow: ModuleFlow;
    readonly settings: ModuleSettings;
}
export declare namespace Module {
    const empty: () => Module;
}
