export interface EtlError extends EtlBase {
    message: string;
}
export interface EtlBase {
    id: string;
    aminoId: string;
    parentAminoId: string;
    name: string;
    loopbackModel: any;
    status: string;
    getPojo(): any;
    addErrors(errors: any[], cb: (err: Error, etlErrors: EtlError[]) => void): void;
    loadEntireObject(cb: (err: Error, etlBase: EtlBase) => void): void;
    writeToDb(cb?: (err?: Error, etlBase?: EtlBase) => void): void;
    removeFromDb(cb?: (err?: Error, etlBase?: EtlBase) => void): void;
}
export interface EtlFile extends EtlBase {
    path: string;
    size: number;
    createDate: Date;
    flows: EtlFlow[];
    addFlows(flows: any[], cb: (err: Error, etlFlows: EtlFlow[]) => void): void;
}
export interface EtlFlow extends EtlBase {
    type: string;
    expanded: boolean;
    currentStepIndex: number;
    steps: EtlStep[];
    addSteps(steps: any[], cb: (err: Error, etlSteps: EtlStep[]) => void): void;
}
export interface EtlStep extends EtlBase {
    startTime: Date;
    currentTime: Date;
    endTime: Date;
    progress: number;
    index: number;
}
export interface EtlTask extends EtlBase {
    fileId: string;
    flowId: string;
}
