import { PlainTextElement } from '@slack/web-api';
import { ModalBuilder } from '../../surfaces';
import { FoxOption } from '..';
import { TBuilder } from '../../utilities';
import { PluginModalMetaBuilder } from '../../plugin/modal/plugin-modal-meta.builder';
import { PluginModalMapBuilder } from '../../plugin/modal/plugin-modal-map.builder';
export type TPluginModalMapIdRef = [
    /** [ID блока, на значения которого ориентируемся]:  */
    string,
    /** [{верное значение или его часть}, {верное значение или его часть}] */
    string[]
];
export type TPluginModalMapBuilderRef = [TBuilder, string[]];
export type TPluginModalMapValues = {
    /** ID блока, которому задаем видимость */
    [blockId: string]: {
        /** [ID блока, на значения которого ориентируемся]: [{верное значение или его часть}, {верное значение или его часть}] */
        [refBlockId: string]: string[];
    };
};
export type TPluginModalMapAddValuesParams = [
    /** ID блока, которому задаем видимость */
    string,
    /** Рефы */
    TPluginModalMapIdRef
];
export type TOptionGroup = {
    label: PlainTextElement;
    options: FoxOption[];
};
export type TModalPageParams = {
    /** Обьект модалки fox-block-builder */
    view: ModalBuilder;
};
export type TModalFormParams = TModalPageParams & {
    /** Обьект модалки fox-block-builder */
    view: ModalBuilder;
    /** Callback ID - путь контроллера @see ViewsController */
    callbackId?: string;
    /** Обьект метаданных формы */
    meta?: PluginModalMetaBuilder;
    /** Обьект видимости блоков */
    map?: PluginModalMapBuilder;
};
