import type { LICENSE_FEATURES } from '@n8n/constants';
import { type Constructable } from '@n8n/di';
export interface BaseEntity {
    hasId(): boolean;
    save(options?: unknown): Promise<this>;
    remove(options?: unknown): Promise<this>;
    softRemove(options?: unknown): Promise<this>;
    recover(options?: unknown): Promise<this>;
    reload(): Promise<void>;
}
export type EntityClass = new () => BaseEntity;
export type ModuleSettings = Record<string, unknown>;
export interface ModuleInterface {
    init?(): Promise<void>;
    entities?(): EntityClass[];
    settings?(): Promise<ModuleSettings>;
}
export type ModuleClass = Constructable<ModuleInterface>;
export type LicenseFlag = (typeof LICENSE_FEATURES)[keyof typeof LICENSE_FEATURES];
export declare const BackendModule: (opts: {
    name: string;
    licenseFlag?: LicenseFlag;
}) => ClassDecorator;
