import { PerfMarker, PerfMarkerDetails } from './PerfMarker';
declare const AVAILABLE_COLORS: readonly ["primary", "primary-light", "primary-dark", "secondary", "secondary-light", "secondary-dark", "tertiary", "tertiary-light", "tertiary-dark"];
type DevToolsColor = (typeof AVAILABLE_COLORS)[number];
export type DevToolsMarkerDetails = {
    label: string;
    track: string;
    trackGroup?: string;
    color?: DevToolsColor;
    details?: PerfMarkerDetails;
    tooltip?: string;
    startTs?: DOMHighResTimeStamp;
    endTs?: DOMHighResTimeStamp;
};
type HasRequiredProps<T> = T extends Record<string, never> ? false : {
    [K in keyof T]-?: {} extends Pick<T, K> ? never : K;
}[keyof T] extends never ? false : true;
type EndMethod<T extends Omit<DevToolsMarkerDetails, 'track' | 'label'>> = HasRequiredProps<T> extends true ? (markerDetails: T) => DevToolsMarker : (markerDetails?: T) => DevToolsMarker;
export declare class DevToolsMarker implements PerfMarker {
    readonly adaptableId: string;
    static create(adaptableId: string): DevToolsMarker;
    private markerDetails;
    private stopped;
    private constructor();
    start: (startDetails?: {
        details?: DevToolsMarkerDetails['details'];
    }) => this;
    get startTimestamp(): number;
    get track(): {
        readonly Init: {
            start: DevToolsMarker['start'];
            end: (markerDetails: Omit<DevToolsMarkerDetails, "track"> & {
                label: "Init" | "InitStore" | "LoadStore" | "InitAGGrid";
            }) => DevToolsMarker;
            label: {
                readonly Init: {
                    end: EndMethod<Omit<DevToolsMarkerDetails, 'track' | 'label'>>;
                    start: DevToolsMarker['start'];
                };
                readonly InitStore: {
                    end: EndMethod<Omit<DevToolsMarkerDetails, 'track' | 'label'>>;
                    start: DevToolsMarker['start'];
                };
                readonly LoadStore: {
                    end: EndMethod<Omit<DevToolsMarkerDetails, 'track' | 'label'>>;
                    start: DevToolsMarker['start'];
                };
                readonly InitAGGrid: {
                    end: EndMethod<Omit<DevToolsMarkerDetails, 'track' | 'label'>>;
                    start: DevToolsMarker['start'];
                };
            };
        };
        readonly LayoutManager: {
            start: DevToolsMarker['start'];
            end: (markerDetails: Omit<DevToolsMarkerDetails, "track"> & {
                label: "SetLayout" | "ApplyPivotLayout" | "ApplyTableLayout";
            }) => DevToolsMarker;
            label: {
                readonly SetLayout: {
                    end: EndMethod<Omit<DevToolsMarkerDetails, 'track' | 'label'>>;
                    start: DevToolsMarker['start'];
                };
                readonly ApplyPivotLayout: {
                    end: EndMethod<Omit<DevToolsMarkerDetails, 'track' | 'label'>>;
                    start: DevToolsMarker['start'];
                };
                readonly ApplyTableLayout: {
                    end: EndMethod<Omit<DevToolsMarkerDetails, 'track' | 'label'>>;
                    start: DevToolsMarker['start'];
                };
            };
        };
        readonly Runtime: {
            start: DevToolsMarker['start'];
            end: (markerDetails: Omit<DevToolsMarkerDetails, "track"> & {
                label: "SetLayout";
            }) => DevToolsMarker;
            label: {
                readonly SetLayout: {
                    end: EndMethod<Omit<DevToolsMarkerDetails, 'track' | 'label'>>;
                    start: DevToolsMarker['start'];
                };
            };
        };
        readonly Redux: {
            start: DevToolsMarker['start'];
            end: (markerDetails: Omit<DevToolsMarkerDetails, "track"> & {
                label: "Action";
            }) => DevToolsMarker;
            label: {
                readonly Action: {
                    end: EndMethod<Omit<DevToolsMarkerDetails, 'track' | 'label'>>;
                    start: DevToolsMarker['start'];
                };
            };
        };
    };
    end: (markerDetails?: Partial<DevToolsMarkerDetails>) => this;
}
export declare function areAdaptableProfileTracksEnabled(adaptableId: string | undefined): boolean;
export declare function getMarker(adaptableId: string): DevToolsMarker;
export type { PerfMarker };
