import { Common, Selectors } from '@kui-shell/test';
type Position = typeof Selectors.SPLIT_DEFAULT | typeof Selectors.SPLIT_LEFT | typeof Selectors.SPLIT_RIGHT;
interface Validation {
    /** Is the block expected to show as valid/invalid (true/false) on initial render? */
    valid?: boolean;
}
interface Cleanup {
    /** Does this code block have cleanup logic */
    cleanup?: boolean;
}
export type Block = Partial<Validation> & Partial<Cleanup> & {
    index: number;
    output: string;
    /** If we have an ossociated ProgressStepper UI? */
    status?: {
        /** Split position in which the ProgressStepper UI is rendered */
        position: Position;
        /** index in ProgressStepper UI */
        index: number;
        /** Expected execution status of the block, after execution... */
        status: 'done' | 'error';
    };
};
export declare function hasValidation(block: Block): block is Block & Required<Validation>;
export declare function hasCleanup(block: Block): block is Block & Required<Cleanup>;
export interface Input {
    /** Path to input file */
    input: string;
    /** Expected title of tab after loading that input file */
    title?: string;
    /** Specification of expected splits after loading that input file */
    splits: {
        position: Position;
        content: string;
        contentBlockIndex?: number;
        blocks?: Block[];
    }[];
}
export declare function checkBlockValidation(ctx: Common.ISuite, split: Position, block: Block & Required<Validation>, reverse?: boolean): Promise<void>;
export declare function checkBlockCleanup(ctx: Common.ISuite, split: Position, block: Block & Required<Cleanup>): Promise<void>;
export declare function clickToExecuteBlock(this: Common.ISuite, split: Position, block: Block): Promise<void>;
export {};
