import type { DevtoolsPluginApi, TimelineEvent, ExtractSettingsTypes } from '@vue/devtools-api';
import { SubscriptionChannel } from '../useSubscription/models/channel';
export declare const SUBSCRIPTION_DEVTOOLS_SETTINGS: {};
export type SubscriptionDevtoolsSettings = ExtractSettingsTypes<typeof SUBSCRIPTION_DEVTOOLS_SETTINGS>;
export declare function init(api: DevtoolsPluginApi<SubscriptionDevtoolsSettings>): void;
export declare function addChannel(channel: SubscriptionChannel): void;
export type UpdateChannelEventTypes = 'Loading' | 'Error' | 'Executed' | 'Response' | 'Refresh' | 'Paused' | 'Late';
type UpdateChannelEvent = {
    [K in UpdateChannelEventTypes]: CreateSubscriptionDevtoolsTimelineEvent<K, EventTypeToDataMap[K]>;
}[UpdateChannelEventTypes];
export declare function updateChannel(channel: SubscriptionChannel, event: UpdateChannelEvent): void;
export declare function removeChannel(channel: SubscriptionChannel): void;
export declare function registerChannelSubscription(channel: SubscriptionChannel, subscriptionId: number): void;
export declare function removeChannelSubscription(channel: SubscriptionChannel, subscriptionId: number): void;
type CreateSubscriptionDevtoolsTimelineEvent<TEvent extends string, TData> = Omit<TimelineEvent<TData>, 'time'> & {
    title: `${string} · ${TEvent}`;
    groupId: string;
};
type EventTypeToDataMap = {
    'Channel created': {
        channel: SubscriptionChannel;
        action: string;
    };
    'Channel removed': {
        channel: SubscriptionChannel;
        action: string;
    };
    'Subscription created': {
        channel: SubscriptionChannel;
        action: string;
        subscriptionId: number;
    };
    'Subscription removed': {
        channel: SubscriptionChannel;
        action: string;
        subscriptionId: number;
    };
    'Loading': {
        channel: SubscriptionChannel;
        action: string;
        loading: boolean;
    };
    'Error': {
        channel: SubscriptionChannel;
        action: string;
        error: unknown;
    };
    'Executed': {
        channel: SubscriptionChannel;
        action: string;
        executed: boolean;
    };
    'Response': {
        channel: SubscriptionChannel;
        action: string;
        response: unknown;
    };
    'Refresh': {
        channel: SubscriptionChannel;
        action: string;
    };
    'Paused': {
        channel: SubscriptionChannel;
        action: string;
        paused: boolean;
    };
    'Late': {
        channel: SubscriptionChannel;
        action: string;
        late: boolean;
    };
};
export {};
