import type { OperationModel, Sample } from '../models/index.js';
export interface LanguageSwitchProps {
    operation: OperationModel;
    sample: Sample;
}
export interface PanelToggleProps {
    operation: OperationModel;
    isExpanded: boolean;
    panelType: PanelToggleEvent['panelType'];
}
export interface CodeSampleCopyProps {
    operation: OperationModel;
    lang?: string;
    label?: string;
    type: 'request' | 'response';
    exampleId?: string;
    activeExampleName?: string;
    activeMimeName: string;
}
export interface TargetServerSwitchProps {
    operation: OperationModel;
    serverUrl: string;
}
export interface TryItOpenProps {
    operation: OperationModel;
}
export interface TryItSentProps {
    operation: OperationModel;
    isSuccess: boolean;
}
export declare enum AnalyticsEventType {
    CodeSampleLanguageSwitched = "CodeSampleLanguageSwitched",
    CodeSampleCopied = "CodeSampleCopied",
    OperationServerExpanded = "OperationServerExpanded",
    PanelToggle = "PanelToggle",
    TargetServerSwitched = "TargetServerSwitched",
    TryItOpen = "TryItOpen",
    TryItSent = "TryItSent"
}
export interface AnalyticsEvent {
    eventType: AnalyticsEventType;
    resource: 'Redocly_CodeSample' | 'Redocly_Operation' | 'Redocly_OperationTryIt';
    action: 'LanguageSwitched' | 'PanelToggled' | 'Opened' | 'Closed' | 'NavigatedOverrideLink' | 'Sent' | 'ValidationFailed' | 'CodeSampleCopied' | 'TargetServerSwitched';
    operationId?: string;
    operationPath: string;
    operationHttpVerb: string;
    operationSummary?: string | GenericObject;
}
export interface CodeSamplesLanguageSwitchedEvent extends AnalyticsEvent {
    lang: string;
    label: string;
    exampleId?: string;
}
export interface CodeSamplesCopiedEvent extends AnalyticsEvent {
    lang: string;
    label: string;
    type: 'request' | 'response';
    exampleId?: string;
    exampleMimeType?: string;
}
export type PanelType = 'request' | 'responses' | 'request-samples' | 'response-samples';
export interface PanelToggleEvent extends AnalyticsEvent {
    panelType: PanelType;
    state: 'expanded' | 'collapsed';
    operationId: string;
    operationPath: string;
    operationHttpVerb: string;
    operationSummary?: string | GenericObject;
}
export interface TargetServerSwitchedEvent extends AnalyticsEvent {
    serverUrl: string;
}
export type TryItOpenedEvent = AnalyticsEvent;
export type TryItSentEvent = AnalyticsEvent;
export type EventType = CodeSamplesLanguageSwitchedEvent | CodeSamplesCopiedEvent | TryItOpenedEvent | TryItSentEvent | PanelToggleEvent | TargetServerSwitchedEvent;
export type Events = {
    codeSamplesLanguageSwitch?: (event: CodeSamplesLanguageSwitchedEvent) => void;
    codeSamplesCopy?: (event: CodeSamplesCopiedEvent) => void;
    tryItOpen?: (event: TryItOpenedEvent) => void;
    tryItSent?: (event: TryItSentEvent) => void;
    panelToggle?: (event: PanelToggleEvent) => void;
    targetServerSwitch?: (event: TargetServerSwitchedEvent) => void;
};
