import { SurfaceType, BlockType, ElementType } from '../constants';
import type { ObjectLiteral } from '../types';
import type { PlainTextObject } from '../objects';
export declare const Param: Record<string, string>;
export declare class SlackDto implements ObjectLiteral {
    constructor(params: ObjectLiteral);
    static mapParam(param: string): string;
}
export declare class SlackMessageDto extends SlackDto {
    readonly text: string;
    readonly channel: string;
    readonly ts: string;
    readonly blocks?: SlackBlockDto[];
    readonly attachments?: SlackDto[];
}
export declare class SlackHomeTabDto extends SlackDto {
    readonly type = SurfaceType.HomeTab;
    readonly blocks: SlackBlockDto[];
}
export declare class SlackModalDto extends SlackDto {
    readonly type = SurfaceType.Modal;
    readonly title: PlainTextObject;
    readonly blocks: SlackBlockDto[];
}
export declare class SlackWorkflowStepDto extends SlackDto {
    readonly type = SurfaceType.WorkflowStep;
    readonly blocks: SlackBlockDto[];
}
export type SlackViewDto = SlackModalDto | SlackWorkflowStepDto | SlackHomeTabDto;
export declare class SlackBlockDto extends SlackDto {
    readonly type: BlockType;
    readonly block_id: string;
}
export declare class SlackElementDto extends SlackDto {
    readonly type: ElementType;
}
