import { FC } from 'react';

interface WebAudioKnobProps {
    ref?: any;
    id?: string;
    onKnobInput?: (value: number) => void;
    onKnobEvent?: (event: any) => void;
    src?: string | null;
    value?: number;
    colors?: string;
    defvalue?: number;
    min?: number;
    max?: number;
    step?: number;
    width?: number | null;
    height?: number | null;
    diameter?: number;
    sprites?: number | null;
    sensitivity?: number;
    log?: 0 | 1;
    valuetip?: 0 | 1;
    tooltip?: string | null;
    conv?: string | null;
    enable?: 0 | 1;
    highlightColor?: string;
    bodyColor?: string;
    indicatorColor?: string;
    outline?: 0 | 1 | string;
    midilearn?: 0 | 1;
    midicc?: string | null;
}

declare const WebAudioKnob: FC<WebAudioKnobProps>;

interface WebAudioSliderProps {
    ref?: any;
    id?: string;
    onSliderInput?: (value: number) => void;
    onSliderEvent?: (event: any) => void;
    src?: string;
    knobsrc?: string;
    tracking?: "rel" | "abs";
    value?: number;
    defvalue?: number;
    min?: number;
    max?: number;
    step?: number;
    direction?: "horizontal" | "vertical";
    width?: number;
    height?: number;
    knobwidth?: number;
    knobheight?: number;
    ditchlength?: number;
    colors?: string;
    sprites?: number | null;
    sensitivity?: number;
    log?: 0 | 1;
    valuetip?: 0 | 1;
    tooltip?: string | null;
    conv?: string | null;
    enable?: 0 | 1;
    outline?: 0 | 1 | string;
    midilearn?: 0 | 1;
    midicc?: string | null;
}

declare const WebAudioSlider: FC<WebAudioSliderProps>;

interface WebAudioSwitchProps {
    ref?: any;
    id?: string;
    src?: string;
    value?: 0 | 1;
    defvalue?: 0 | 1;
    min?: number;
    max?: number;
    width?: number;
    height?: number;
    diameter?: number;
    type?: "toggle" | "kick" | "radio";
    group?: string | null;
    invert?: 0 | 1;
    tooltip?: string | null;
    enable?: 0 | 1;
    colors?: string;
    outline?: 0 | 1 | string;
    midilearn?: string;
    midicc?: string;
    onSwitchClick?: (value: any) => void;
    onSwitchClickEvent?: (event: any) => void;
    onSwitchChange?: (value: any) => void;
    onSwitchChangeEvent?: (event: any) => void;
}

declare const WebAudioSwitch: FC<WebAudioSwitchProps>;

interface WebAudioKeyboardProps {
    ref?: any;
    id?: string;
    values?: number | number[];
    keys?: number;
    colors?: string;
    width?: number | null;
    height?: number | null;
    min?: number;
    outline?: 0 | 1 | string;
    enable?: 0 | 1;
    onKeyboardChangeNote?: (value: any) => void;
    onKeyboardChangeEvent?: (event: any) => void;
}

declare const WebAudioKeyboard: FC<WebAudioKeyboardProps>;

interface WebAudioParamProps {
    src?: string | null;
    value?: number;
    width?: number;
    height?: number;
    fontsize?: number;
    colors?: string;
    outline?: 0 | 1 | string;
    id?: string;
    link?: string | null;
    rconv?: string | null;
}

declare const WebAudioParam: FC<WebAudioParamProps>;

export { WebAudioKeyboard, WebAudioKnob, WebAudioParam, WebAudioSlider, WebAudioSwitch };
