import { SetURLSearchParamsLike } from '../../traces/hooks/use-trace-url-state';
import { LogsDatePreset, LogsEntityOptions } from '../log-filters';
import { PropertyFilterToken } from '../../../ds/components/PropertyFilter/types';
export interface LogsFeaturedIds {
    logId?: string | null;
    traceId?: string | null;
    spanId?: string | null;
}
export interface UseLogsUrlStateOptions {
    /** Called after `handleRemoveAll` clears all filter URL params. */
    onRemoveAll?: () => void;
}
export interface UseLogsUrlStateResult {
    searchParams: URLSearchParams;
    setSearchParams: SetURLSearchParamsLike;
    datePreset: LogsDatePreset;
    selectedDateFrom: Date | undefined;
    selectedDateTo: Date | undefined;
    datePresetRef: React.MutableRefObject<LogsDatePreset>;
    featuredLogId: string | null;
    featuredTraceId: string | null;
    featuredSpanId: string | null;
    selectedEntityOption: LogsEntityOptions | undefined;
    filterTokens: PropertyFilterToken[];
    /** Partial update of the featured log/trace/span selection. Omitted keys are left as-is. */
    handleFeaturedChange: (ids: LogsFeaturedIds) => void;
    handleFilterTokensChange: (nextTokens: PropertyFilterToken[]) => void;
    handleDateChange: (value: Date | undefined, type: 'from' | 'to') => void;
    handleDatePresetChange: (preset: LogsDatePreset) => void;
    handleRemoveAll: () => void;
    /** Lower-level helper used by `handleClear`: writes a token set and clears the log/trace/span selection. */
    applyFilterTokens: (tokens: PropertyFilterToken[]) => void;
}
/**
 * Owns all URL-derived state and URL-modifying handlers for the logs page. Routing-agnostic —
 * pass `searchParams` and `setSearchParams` from whichever router the consumer uses.
 */
export declare function useLogsUrlState(searchParams: URLSearchParams, setSearchParams: SetURLSearchParamsLike, options?: UseLogsUrlStateOptions): UseLogsUrlStateResult;
