import { AdaptableApi } from './types';
export type DevToolsMessageAddress = 'adaptable-devtools-contentscript' | 'adaptable-devtools-contentscript-panel' | 'adaptable-devtools-background' | 'adaptable-page';
export type DevToolsGenericMessage = {
    source: DevToolsMessageAddress;
    target: DevToolsMessageAddress;
    payload: any;
    type: string;
};
export type DebugWarningPayload = {
    message: string;
    type: 'error' | 'warning';
    status?: 'new' | 'discarded';
    adaptableId?: string;
};
export type DevToolsFnOptions = {
    api: AdaptableApi;
};
export type DevToolsHostPageMessagePayload = {
    adaptableId: string;
    [key: string]: any;
};
export type DevToolsHostPageMessageType = 'mount' | 'update' | 'unmount' | 'log' | 'state-change';
export type DevToolsGridRuntime = {
    allRowsCount: number;
    visibleRowsCount: number;
    selectedRowsCount: number;
};
export type DevToolsMountPayload = {
    adaptableId: string;
    adaptableVersion: string;
    agGridVersion: string;
    licenseKey?: string;
};
export type DevToolsHostPageLogMessage = {
    type: Extract<DevToolsHostPageMessageType, 'log'>;
    payload: DevToolsHostPageLogMessagePayload;
};
export type DevToolsHostPageLogMessagePayload = {
    channel: string;
    color: string;
    args: any[];
    level: string;
    timestamp: number;
    adaptableId?: string;
};
export type DevToolsHostPageMessage = {
    source: Extract<DevToolsMessageAddress, 'adaptable-page'>;
    target: Extract<DevToolsMessageAddress, 'adaptable-devtools-background'>;
    url: string;
} & ({
    type: Extract<DevToolsHostPageMessageType, 'update'>;
    payload: DevToolsHostPageMessagePayload;
} | {
    type: Extract<DevToolsHostPageMessageType, 'unmount'>;
    payload: {
        adaptableId: string;
    };
} | {
    type: Extract<DevToolsHostPageMessageType, 'mount'>;
    payload: DevToolsMountPayload;
} | {
    type: Extract<DevToolsHostPageMessageType, 'state-change'>;
    payload: {
        adaptableId: string;
        state: any;
        actionName?: string;
        gridRuntime?: DevToolsGridRuntime;
    };
} | DevToolsHostPageLogMessage);
export type DevToolsHookFn = (adaptableId: string, options: null | DevToolsFnOptions) => void;
