import { UserDBInterface } from '../../../../db/dist/index.mjs';
export interface MidiDevice {
    title: string;
    value: string;
}
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
    _id: {
        type: StringConstructor;
        required: true;
    };
    user: {
        type: () => UserDBInterface;
        required: true;
    };
}>, {
    midiSupported: import('vue').Ref<boolean, boolean>;
    inputs: import('vue').Ref<{
        title: string;
        value: string;
    }[], MidiDevice[] | {
        title: string;
        value: string;
    }[]>;
    outputs: import('vue').Ref<{
        title: string;
        value: string;
    }[], MidiDevice[] | {
        title: string;
        value: string;
    }[]>;
    selectedInput: import('vue').Ref<string, string>;
    selectedOutput: import('vue').Ref<string, string>;
    updatePending: import('vue').Ref<boolean, boolean>;
    playSound: () => void;
    saveSettings: () => Promise<void>;
    configChanged: import('vue').Ref<boolean, boolean>;
    lowestNote: import('vue').Ref<number, number>;
    highestNote: import('vue').Ref<number, number>;
    keyboardRangeOptions: import('vue').Ref<{
        title: string;
        value: string;
    }[], {
        title: string;
        value: string;
    }[] | {
        title: string;
        value: string;
    }[]>;
    selectedKeyboardRange: import('vue').Ref<string, string>;
    noteOptions: import('vue').Ref<{
        title: string;
        value: number;
    }[], {
        title: string;
        value: number;
    }[] | {
        title: string;
        value: number;
    }[]>;
    updateCustomRangeFromPreset: () => void;
    updateRangeAndCheckChanges: () => void;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
    _id: {
        type: StringConstructor;
        required: true;
    };
    user: {
        type: () => UserDBInterface;
        required: true;
    };
}>> & Readonly<{}>, {}, {}, {
    PianoRangeVisualizer: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
        lowestNote: {
            type: NumberConstructor;
            required: true;
        };
        highestNote: {
            type: NumberConstructor;
            required: true;
        };
        maxWidth: {
            type: NumberConstructor;
            default: number;
        };
    }>, {
        pianoWrapper: import('vue').Ref<HTMLElement | null, HTMLElement | null>;
        keyHeight: number;
        blackKeyHeight: number;
        whiteKeyWidth: import('vue').ComputedRef<number>;
        blackKeyWidth: import('vue').ComputedRef<number>;
        svgWidth: import('vue').ComputedRef<number>;
        isWhiteKey: (noteNumber: number) => boolean;
        getKeyPosition: (noteNumber: number) => number;
        getNoteLabel: (noteNumber: number) => string;
    }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
        lowestNote: {
            type: NumberConstructor;
            required: true;
        };
        highestNote: {
            type: NumberConstructor;
            required: true;
        };
        maxWidth: {
            type: NumberConstructor;
            default: number;
        };
    }>> & Readonly<{}>, {
        maxWidth: number;
    }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
export default _default;
//# sourceMappingURL=MidiConfig.vue.d.ts.map