import { UmbWorkspaceRouteManager } from '../controllers/workspace-route-manager.controller.js';
import type { UmbSubmittableWorkspaceContext } from '../contexts/tokens/submittable-workspace-context.interface.js';
import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
import { UmbContextBase } from '../../../../libs/class-api/index.js';
import type { UmbModalContext } from '../../modal/index.js';
import type { Observable } from '../../../../external/rxjs/index.js';
import type { UmbValidationController } from '../../validation/index.js';
import { UmbViewContext } from '../../view/index.js';
export declare abstract class UmbSubmittableWorkspaceContextBase<WorkspaceDataModelType> extends UmbContextBase implements UmbSubmittableWorkspaceContext {
    #private;
    readonly workspaceAlias: string;
    readonly modalContext?: UmbModalContext<{
        preset: object;
    }>;
    readonly view: UmbViewContext;
    /**
     * Appends a validation context to the workspace.
     * @param context
     */
    addValidationContext(context: UmbValidationController): void;
    abstract readonly unique: Observable<string | null | undefined>;
    isNew: Observable<boolean | undefined>;
    readonly routes: UmbWorkspaceRouteManager;
    constructor(host: UmbControllerHost, workspaceAlias: string);
    protected resetState(): void;
    getIsNew(): boolean | undefined;
    protected setIsNew(isNew: boolean): void;
    /**
     * If a Workspace has multiple validation contexts, then this method can be overwritten to return the correct one.
     * @returns Promise that resolves to void when the validation is complete.
     */
    validate(): Promise<Array<void>>;
    requestSubmit(): Promise<void>;
    protected _validateAndLog: () => Promise<void>;
    validateAndSubmit(onValid: () => Promise<void>, onInvalid: (reason?: any) => Promise<void>): Promise<void>;
    protected _validateByAndSubmit(validationMethod: () => Promise<unknown>, onValid: () => Promise<void>, onInvalid: (reason?: any) => Promise<void>): Promise<void>;
    protected _closeModal(): void;
    abstract getUnique(): string | null | undefined;
    abstract getEntityType(): string;
    abstract getData(): WorkspaceDataModelType | undefined;
    protected abstract submit(): Promise<void>;
    protected invalidSubmit(reason?: any): Promise<void>;
    destroy(): void;
}
export declare abstract class UmbEditableWorkspaceContextBase<WorkspaceDataModelType> extends UmbSubmittableWorkspaceContextBase<WorkspaceDataModelType> {
}
