import { AtLeast } from "@codiac.io/codiac-common/contracts";
import { InteractionModes } from '../../../uilogic/config-ui-utils';
import { Privilege, RootMap } from '../../../apis/codiac-api/contracts';
import { CommandBaseExec } from '../../../command-base-exec';
export declare enum PrivilegeAbbrevsEnum {
    "modify" = "modify",
    "read" = "read",
    "none" = "none"
}
export interface IPermissionAssignment {
    entityType: string;
    entityKey: {
        enterpriseCode: string;
        environment: string;
        name: string;
    };
    role: string;
    privileges: Privilege[];
}
export type IPermission = {
    enterprise: string;
    environment: string;
    cabinet: string;
    role: string;
    privilege: PrivilegeAbbrevsEnum;
} & IPermissionAssignment;
export default class AuthCabinetAllow extends CommandBaseExec<IPermission> {
    static description: string;
    static aliases: string[];
    static examples: string[];
    static flags: {
        enterprise: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        environment: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        cabinet: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        role: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        privilege: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        silent: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        echo: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        "to-script": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        "take-defaults": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
    };
    static args: {};
    protected adminOnly: boolean;
    captureArgs(): Promise<[Partial<IPermission>, InteractionModes | undefined, boolean]>;
    buildCandidate_silently(partial: AtLeast<IPermission, "enterprise">, rootMap: RootMap): Promise<IPermission | undefined>;
    buildCandidate_interactively(partial: AtLeast<IPermission, "enterprise">, rootMap: RootMap, takeDefaults: boolean): Promise<IPermission | undefined>;
    buildCommandString(candidate: IPermission, cmd: string[]): string[];
    executeTask(candidate: IPermission): Promise<void>;
}
