import ExecOptions from './execOptions';
import { Entity, MarkdownResponse } from './entity';
/**
 * If your controller wants to manipulate the tab layout, this is your
 * response type!
 *
 */
type TabLayoutModificationResponse<Request extends ModificationRequest = ModificationRequest> = {
    apiVersion: 'kui-shell/v1';
    kind: 'TabLayoutModificationResponse';
    spec: Request & {
        ok: MarkdownResponse;
    };
};
export type NewSplitRequest = {
    modification: 'NewSplit';
    options?: Pick<ExecOptions, 'data' | 'masquerade'> & {
        /** Splice the split at this index; default (and if out of range) is at-end */
        index?: number;
        /** Use an inverted color scheme for the new split? */
        inverseColors?: boolean;
        /** Is this split to be positioned specially, e.g. as a right strip? */
        position?: 'default' | 'left-strip' | 'right-strip';
        /** Execute this command line in the new split */
        cmdline?: string;
        /** Only perform the split if the given command returns true */
        if?: string;
        /** Only perform the split if the given command returns false */
        ifnot?: string;
        /** Swap the positions of the given two splits */
        swap?: {
            a: number;
            b: number;
        };
        /**
         * Force this new split to have (or not) an active input,
         * independent of what the default behavior would otherwis
         * say?
         */
        hasActiveInput?: boolean;
    };
};
type ModificationRequest = NewSplitRequest;
export declare function isNewSplitRequest(req: TabLayoutModificationResponse): req is TabLayoutModificationResponse<NewSplitRequest>;
export declare function isTabLayoutModificationResponse(entity: Entity): entity is TabLayoutModificationResponse;
export default TabLayoutModificationResponse;
