import { ContextType, HostEvent, RuntimeFilter } from '../../types';
import { SessionInterface } from '../../utils/graphql/answerService/answerService';
export interface LiveboardTab {
    id: string;
    name: string;
    [key: string]: any;
}
export declare enum UIPassthroughEvent {
    PinAnswerToLiveboard = "addVizToPinboard",
    SaveAnswer = "saveAnswer",
    GetDiscoverabilityStatus = "getDiscoverabilityStatus",
    GetAvailableUIPassthroughs = "getAvailableUiPassthroughs",
    GetAnswerConfig = "getAnswerPageConfig",
    GetLiveboardConfig = "getPinboardPageConfig",
    GetUnsavedAnswerTML = "getUnsavedAnswerTML",
    UpdateFilters = "updateFilters",
    Drilldown = "drillDown",
    GetAnswerSession = "getAnswerSession",
    GetFilters = "getFilters",
    GetIframeUrl = "getIframeUrl",
    GetParameters = "getParameters",
    GetTML = "getTML",
    GetTabs = "getTabs",
    GetExportRequestForCurrentPinboard = "getExportRequestForCurrentPinboard"
}
export type UIPassthroughContractBase = {
    [UIPassthroughEvent.PinAnswerToLiveboard]: {
        request: {
            vizId?: string;
            newVizName: string;
            newVizDescription?: string;
            liveboardId?: string;
            tabId?: string;
            newLiveboardName?: string;
            newTabName?: string;
        };
        response: {
            liveboardId: string;
            tabId: string;
            vizId: string;
        };
    };
    [UIPassthroughEvent.SaveAnswer]: {
        request: {
            name: string;
            description: string;
            vizId?: string;
            isDiscoverable?: boolean;
        };
        response: {
            answerId: string;
            saveResponse?: any;
            shareResponse?: any;
        };
    };
    [UIPassthroughEvent.GetDiscoverabilityStatus]: {
        request: any;
        response: {
            shouldShowDiscoverability: boolean;
            isDiscoverabilityCheckboxUnselectedPerOrg: boolean;
        };
    };
    [UIPassthroughEvent.GetAvailableUIPassthroughs]: {
        request: any;
        response: {
            keys: string[];
        };
    };
    [UIPassthroughEvent.GetAnswerConfig]: {
        request: {
            vizId?: string;
        };
        response: any;
    };
    [UIPassthroughEvent.GetLiveboardConfig]: {
        request: any;
        response: any;
    };
    [UIPassthroughEvent.GetUnsavedAnswerTML]: {
        request: {
            sessionId?: string;
            vizId?: string;
        };
        response: {
            tml: string;
        };
    };
    [UIPassthroughEvent.GetAnswerSession]: {
        request: {
            vizId?: string;
        };
        response: {
            session: SessionInterface;
            embedAnswerData?: Record<string, any>;
        };
    };
    [UIPassthroughEvent.GetFilters]: {
        request: {
            vizId?: string;
        };
        response: {
            liveboardFilters: Record<string, any>[];
            runtimeFilters: RuntimeFilter[];
        };
    };
    [UIPassthroughEvent.GetIframeUrl]: {
        request: Record<string, never>;
        response: {
            iframeUrl: string;
        };
    };
    [UIPassthroughEvent.GetParameters]: {
        request: Record<string, never>;
        response: {
            parameters: Record<string, any>[];
        };
    };
    [UIPassthroughEvent.GetTML]: {
        request: {
            vizId?: string;
            includeNonExecutedSearchTokens?: boolean;
        };
        response: Record<string, any>;
    };
    [UIPassthroughEvent.GetTabs]: {
        request: Record<string, never>;
        response: {
            orderedTabIds: string[];
            numberOfTabs: number;
            Tabs: LiveboardTab[];
        };
    };
    [UIPassthroughEvent.GetExportRequestForCurrentPinboard]: {
        request: Record<string, never>;
        response: {
            data: {
                v2Content: string;
            };
            type: UIPassthroughEvent.GetExportRequestForCurrentPinboard;
        };
    };
    [UIPassthroughEvent.UpdateFilters]: {
        request: {
            filter?: {
                column: string;
                oper: string;
                values: string[];
                type?: string;
            };
            filters?: {
                column: string;
                oper: string;
                values: string[];
                type?: string;
            }[];
        };
        response: unknown;
    };
    [UIPassthroughEvent.Drilldown]: {
        request: {
            points: {
                selectedPoints?: string[];
                clickedPoint?: string;
            };
            columnGuid?: string;
            autoDrillDown?: boolean;
            vizId?: string;
        };
        response: unknown;
    };
};
export type UIPassthroughRequest<T extends keyof UIPassthroughContractBase> = UIPassthroughContractBase[T]['request'];
export type UIPassthroughResponse<T extends keyof UIPassthroughContractBase> = UIPassthroughContractBase[T]['response'];
export type UIPassthroughArrayResponse<ApiName extends keyof UIPassthroughContractBase> = Array<{
    refId?: string;
    value?: UIPassthroughResponse<ApiName>;
    error?: any;
}>;
export type EmbedApiHostEventMapping = {
    [HostEvent.Pin]: UIPassthroughEvent.PinAnswerToLiveboard;
    [HostEvent.SaveAnswer]: UIPassthroughEvent.SaveAnswer;
    [HostEvent.GetAnswerSession]: UIPassthroughEvent.GetAnswerSession;
    [HostEvent.GetFilters]: UIPassthroughEvent.GetFilters;
    [HostEvent.GetIframeUrl]: UIPassthroughEvent.GetIframeUrl;
    [HostEvent.GetParameters]: UIPassthroughEvent.GetParameters;
    [HostEvent.GetTML]: UIPassthroughEvent.GetTML;
    [HostEvent.GetTabs]: UIPassthroughEvent.GetTabs;
    [HostEvent.getExportRequestForCurrentPinboard]: UIPassthroughEvent.GetExportRequestForCurrentPinboard;
};
export type HostEventRequest<HostEventT extends HostEvent> = HostEventT extends keyof EmbedApiHostEventMapping ? UIPassthroughRequest<EmbedApiHostEventMapping[HostEventT]> : any;
export type HostEventResponse<HostEventT extends HostEvent, ContextT extends ContextType> = HostEventT extends keyof EmbedApiHostEventMapping ? UIPassthroughResponse<EmbedApiHostEventMapping[HostEventT]> : any;
export type TriggerPayload<PayloadT, HostEventT extends HostEvent> = PayloadT | HostEventRequest<HostEventT>;
export type TriggerResponse<PayloadT, HostEventT extends HostEvent, ContextT extends ContextType> = PayloadT extends HostEventRequest<HostEventT> ? HostEventResponse<HostEventT, ContextT> : any;
//# sourceMappingURL=contracts.d.ts.map