/*
 * Copyright (C) 2025 Mohamad Al-Jaf
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#ifdef __WIDL__
#pragma winrt ns_prefix
#endif

import "inspectable.idl";
import "asyncinfo.idl";
import "eventtoken.idl";
import "windowscontracts.idl";
import "windows.foundation.idl";
/* import "windows.applicationmodel.appservice.idl"; */
import "windows.graphics.directx.direct3d11.idl";
import "windows.graphics.imaging.idl";
import "windows.media.idl";
import "windows.media.capture.idl";
/* import "windows.media.capture.frames.idl"; */
import "windows.media.devices.idl";
/* import "windows.media.devices.core.idl"; */
import "windows.media.effects.idl";
import "windows.media.faceanalysis.idl";
import "windows.media.mediaproperties.idl";
/* import "windows.media.playback.idl"; */
/* import "windows.media.protection.idl"; */
/* import "windows.media.streaming.adaptive.idl"; */
/* import "windows.networking.backgroundtransfer.idl"; */
import "windows.storage.idl";
import "windows.storage.fileproperties.idl";
import "windows.storage.streams.idl";
import "windows.ui.idl";

namespace Windows.Media.Core {
    interface IMediaSource;

    [
        contract(Windows.Foundation.UniversalApiContract, 1.0),
        uuid(e7bfb599-a09d-4c21-bcdf-20af4f86b3d9)
    ]
    interface IMediaSource : IInspectable
    {
    }
}
