import type { ComponentRenderSpan, PerformanceEntrySpan, Span } from '../spanTypes';
export interface ComponentRenderStub extends Partial<Omit<ComponentRenderSpan<any>, 'startTime' | 'duration'>> {
    entryType: 'component-render' | 'component-render-start';
    duration: number;
    startTime?: number;
    name: string;
}
export interface LongTaskStub {
    entryType: 'longtask';
    duration: number;
    startTime?: number;
    name?: string;
}
export interface MarkStub extends Partial<Omit<PerformanceEntrySpan<any>, 'startTime' | 'duration'>> {
    entryType: 'mark';
    name: string;
    startTime?: number;
}
export interface FmpStub {
    entryType: 'fmp';
    startTime?: number;
}
export interface IdleStub {
    entryType: 'idle';
    duration: number;
}
export type Stub = ComponentRenderStub | LongTaskStub | MarkStub | FmpStub | IdleStub;
export declare const Render: (name: string, duration: number, options?: {
    startTime?: number;
} & Partial<Omit<ComponentRenderSpan<any>, "startTime" | "duration">>) => ComponentRenderStub;
export declare const LongTask: (duration: number, options?: {
    start?: number;
}) => LongTaskStub;
export declare const Idle: (duration: number) => IdleStub;
export declare const Check: MarkStub;
export declare const FMP: FmpStub;
export declare function makeEntries(events: Stub[]): {
    entries: PerformanceEntry[];
    fmpTime: number | null;
};
export declare function getSpansFromTimeline<RelationSchemasT>(_: TemplateStringsArray, ...exprs: (Stub | number)[]): {
    spans: Span<RelationSchemasT>[];
    fmpTime: number | null;
};
