# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.1.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property
from abc import abstractmethod

import winrt._winrt
import winrt.system
import winrt.windows.devices.enumeration as windows_devices_enumeration
import winrt.windows.foundation as windows_foundation
import winrt.windows.storage.streams as windows_storage_streams

from winrt.windows.devices.midi import MidiMessageType

Self = typing.TypeVar('Self')

@typing.final
class MidiActiveSensingMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiActiveSensingMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiActiveSensingMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiActiveSensingMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...

@typing.final
class MidiChannelPressureMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], channel: winrt.system.UInt8, pressure: winrt.system.UInt8) -> Self: ...
    # System.Byte Windows.Devices.Midi.MidiChannelPressureMessage::get_Channel()
    @_property
    def channel(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiChannelPressureMessage::get_Pressure()
    @_property
    def pressure(self) -> winrt.system.UInt8: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiChannelPressureMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiChannelPressureMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiChannelPressureMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...

@typing.final
class MidiContinueMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiContinueMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiContinueMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiContinueMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...

@typing.final
class MidiControlChangeMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], channel: winrt.system.UInt8, controller: winrt.system.UInt8, control_value: winrt.system.UInt8) -> Self: ...
    # System.Byte Windows.Devices.Midi.MidiControlChangeMessage::get_Channel()
    @_property
    def channel(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiControlChangeMessage::get_ControlValue()
    @_property
    def control_value(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiControlChangeMessage::get_Controller()
    @_property
    def controller(self) -> winrt.system.UInt8: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiControlChangeMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiControlChangeMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiControlChangeMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...

@typing.final
class MidiInPort_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Devices.Midi.MidiInPort> Windows.Devices.Midi.MidiInPort::FromIdAsync(System.String)
    def from_id_async(cls, device_id: str, /) -> windows_foundation.IAsyncOperation[MidiInPort]: ...
    # System.String Windows.Devices.Midi.MidiInPort::GetDeviceSelector()
    def get_device_selector(cls) -> str: ...

@typing.final
class MidiInPort(winrt.system.Object, windows_foundation.IClosable, metaclass=MidiInPort_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Devices.Midi.MidiInPort::Close()
    def close(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Devices.Midi.MidiInPort::add_MessageReceived(Windows.Foundation.TypedEventHandler`2<Windows.Devices.Midi.MidiInPort,Windows.Devices.Midi.MidiMessageReceivedEventArgs>)
    def add_message_received(self, handler: windows_foundation.TypedEventHandler[MidiInPort, MidiMessageReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Devices.Midi.MidiInPort::remove_MessageReceived(Windows.Foundation.EventRegistrationToken)
    def remove_message_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.String Windows.Devices.Midi.MidiInPort::get_DeviceId()
    @_property
    def device_id(self) -> str: ...

@typing.final
class MidiMessageReceivedEventArgs(winrt.system.Object):
    # Windows.Devices.Midi.IMidiMessage Windows.Devices.Midi.MidiMessageReceivedEventArgs::get_Message()
    @_property
    def message(self) -> IMidiMessage: ...

@typing.final
class MidiNoteOffMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], channel: winrt.system.UInt8, note: winrt.system.UInt8, velocity: winrt.system.UInt8) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiNoteOffMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiNoteOffMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiNoteOffMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...
    # System.Byte Windows.Devices.Midi.MidiNoteOffMessage::get_Channel()
    @_property
    def channel(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiNoteOffMessage::get_Note()
    @_property
    def note(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiNoteOffMessage::get_Velocity()
    @_property
    def velocity(self) -> winrt.system.UInt8: ...

@typing.final
class MidiNoteOnMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], channel: winrt.system.UInt8, note: winrt.system.UInt8, velocity: winrt.system.UInt8) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiNoteOnMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiNoteOnMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiNoteOnMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...
    # System.Byte Windows.Devices.Midi.MidiNoteOnMessage::get_Channel()
    @_property
    def channel(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiNoteOnMessage::get_Note()
    @_property
    def note(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiNoteOnMessage::get_Velocity()
    @_property
    def velocity(self) -> winrt.system.UInt8: ...

@typing.final
class MidiOutPort_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Devices.Midi.IMidiOutPort> Windows.Devices.Midi.MidiOutPort::FromIdAsync(System.String)
    def from_id_async(cls, device_id: str, /) -> windows_foundation.IAsyncOperation[IMidiOutPort]: ...
    # System.String Windows.Devices.Midi.MidiOutPort::GetDeviceSelector()
    def get_device_selector(cls) -> str: ...

@typing.final
class MidiOutPort(winrt.system.Object, IMidiOutPort, windows_foundation.IClosable, metaclass=MidiOutPort_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Devices.Midi.MidiOutPort::Close()
    def close(self) -> None: ...
    # System.Void Windows.Devices.Midi.MidiOutPort::SendBuffer(Windows.Storage.Streams.IBuffer)
    def send_buffer(self, midi_data: windows_storage_streams.IBuffer, /) -> None: ...
    # System.Void Windows.Devices.Midi.MidiOutPort::SendMessage(Windows.Devices.Midi.IMidiMessage)
    def send_message(self, midi_message: IMidiMessage, /) -> None: ...
    # System.String Windows.Devices.Midi.MidiOutPort::get_DeviceId()
    @_property
    def device_id(self) -> str: ...

@typing.final
class MidiPitchBendChangeMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], channel: winrt.system.UInt8, bend: winrt.system.UInt16) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiPitchBendChangeMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiPitchBendChangeMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiPitchBendChangeMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...
    # System.UInt16 Windows.Devices.Midi.MidiPitchBendChangeMessage::get_Bend()
    @_property
    def bend(self) -> winrt.system.UInt16: ...
    # System.Byte Windows.Devices.Midi.MidiPitchBendChangeMessage::get_Channel()
    @_property
    def channel(self) -> winrt.system.UInt8: ...

@typing.final
class MidiPolyphonicKeyPressureMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], channel: winrt.system.UInt8, note: winrt.system.UInt8, pressure: winrt.system.UInt8) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiPolyphonicKeyPressureMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiPolyphonicKeyPressureMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiPolyphonicKeyPressureMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...
    # System.Byte Windows.Devices.Midi.MidiPolyphonicKeyPressureMessage::get_Channel()
    @_property
    def channel(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiPolyphonicKeyPressureMessage::get_Note()
    @_property
    def note(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiPolyphonicKeyPressureMessage::get_Pressure()
    @_property
    def pressure(self) -> winrt.system.UInt8: ...

@typing.final
class MidiProgramChangeMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], channel: winrt.system.UInt8, program: winrt.system.UInt8) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiProgramChangeMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiProgramChangeMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiProgramChangeMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...
    # System.Byte Windows.Devices.Midi.MidiProgramChangeMessage::get_Channel()
    @_property
    def channel(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiProgramChangeMessage::get_Program()
    @_property
    def program(self) -> winrt.system.UInt8: ...

@typing.final
class MidiSongPositionPointerMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], beats: winrt.system.UInt16) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiSongPositionPointerMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiSongPositionPointerMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiSongPositionPointerMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...
    # System.UInt16 Windows.Devices.Midi.MidiSongPositionPointerMessage::get_Beats()
    @_property
    def beats(self) -> winrt.system.UInt16: ...

@typing.final
class MidiSongSelectMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], song: winrt.system.UInt8) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiSongSelectMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiSongSelectMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiSongSelectMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...
    # System.Byte Windows.Devices.Midi.MidiSongSelectMessage::get_Song()
    @_property
    def song(self) -> winrt.system.UInt8: ...

@typing.final
class MidiStartMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiStartMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiStartMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiStartMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...

@typing.final
class MidiStopMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiStopMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiStopMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiStopMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...

@typing.final
class MidiSynthesizer_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Devices.Midi.MidiSynthesizer> Windows.Devices.Midi.MidiSynthesizer::CreateAsync()
    def create_async(cls) -> windows_foundation.IAsyncOperation[MidiSynthesizer]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Devices.Midi.MidiSynthesizer> Windows.Devices.Midi.MidiSynthesizer::CreateAsync(Windows.Devices.Enumeration.DeviceInformation)
    def create_from_audio_device_async(cls, audio_device: windows_devices_enumeration.DeviceInformation, /) -> windows_foundation.IAsyncOperation[MidiSynthesizer]: ...
    # System.Boolean Windows.Devices.Midi.MidiSynthesizer::IsSynthesizer(Windows.Devices.Enumeration.DeviceInformation)
    def is_synthesizer(cls, midi_device: windows_devices_enumeration.DeviceInformation, /) -> bool: ...

@typing.final
class MidiSynthesizer(winrt.system.Object, IMidiOutPort, windows_foundation.IClosable, metaclass=MidiSynthesizer_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Devices.Midi.MidiSynthesizer::Close()
    def close(self) -> None: ...
    # System.Void Windows.Devices.Midi.MidiSynthesizer::SendBuffer(Windows.Storage.Streams.IBuffer)
    def send_buffer(self, midi_data: windows_storage_streams.IBuffer, /) -> None: ...
    # System.Void Windows.Devices.Midi.MidiSynthesizer::SendMessage(Windows.Devices.Midi.IMidiMessage)
    def send_message(self, midi_message: IMidiMessage, /) -> None: ...
    # System.String Windows.Devices.Midi.MidiSynthesizer::get_DeviceId()
    @_property
    def device_id(self) -> str: ...
    # System.Double Windows.Devices.Midi.MidiSynthesizer::get_Volume()
    @_property
    def volume(self) -> winrt.system.Double: ...
    # System.Void Windows.Devices.Midi.MidiSynthesizer::put_Volume(System.Double)
    @volume.setter
    def volume(self, value: winrt.system.Double) -> None: ...
    # Windows.Devices.Enumeration.DeviceInformation Windows.Devices.Midi.MidiSynthesizer::get_AudioDevice()
    @_property
    def audio_device(self) -> windows_devices_enumeration.DeviceInformation: ...

@typing.final
class MidiSystemExclusiveMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], raw_data: windows_storage_streams.IBuffer) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiSystemExclusiveMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiSystemExclusiveMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiSystemExclusiveMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...

@typing.final
class MidiSystemResetMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiSystemResetMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiSystemResetMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiSystemResetMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...

@typing.final
class MidiTimeCodeMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self], frame_type: winrt.system.UInt8, values: winrt.system.UInt8) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiTimeCodeMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiTimeCodeMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiTimeCodeMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...
    # System.Byte Windows.Devices.Midi.MidiTimeCodeMessage::get_FrameType()
    @_property
    def frame_type(self) -> winrt.system.UInt8: ...
    # System.Byte Windows.Devices.Midi.MidiTimeCodeMessage::get_Values()
    @_property
    def values(self) -> winrt.system.UInt8: ...

@typing.final
class MidiTimingClockMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiTimingClockMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiTimingClockMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiTimingClockMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...

@typing.final
class MidiTuneRequestMessage(winrt.system.Object, IMidiMessage):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.MidiTuneRequestMessage::get_RawData()
    @_property
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.MidiTuneRequestMessage::get_Timestamp()
    @_property
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.MidiTuneRequestMessage::get_Type()
    @_property
    def type(self) -> MidiMessageType: ...

@typing.final
class _IMidiMessage: ...

class IMidiMessage(winrt._winrt.IInspectable):
    # Windows.Storage.Streams.IBuffer Windows.Devices.Midi.IMidiMessage::get_RawData()
    @_property
    @abstractmethod
    def raw_data(self) -> windows_storage_streams.IBuffer: ...
    # Windows.Foundation.TimeSpan Windows.Devices.Midi.IMidiMessage::get_Timestamp()
    @_property
    @abstractmethod
    def timestamp(self) -> datetime.timedelta: ...
    # Windows.Devices.Midi.MidiMessageType Windows.Devices.Midi.IMidiMessage::get_Type()
    @_property
    @abstractmethod
    def type(self) -> MidiMessageType: ...

@typing.final
class _IMidiOutPort: ...

class IMidiOutPort(windows_foundation.IClosable, winrt._winrt.IInspectable):
    # System.Void Windows.Devices.Midi.IMidiOutPort::SendBuffer(Windows.Storage.Streams.IBuffer)
    @abstractmethod
    def send_buffer(self, midi_data: windows_storage_streams.IBuffer, /) -> None: ...
    # System.Void Windows.Devices.Midi.IMidiOutPort::SendMessage(Windows.Devices.Midi.IMidiMessage)
    @abstractmethod
    def send_message(self, midi_message: IMidiMessage, /) -> None: ...
    # System.String Windows.Devices.Midi.IMidiOutPort::get_DeviceId()
    @_property
    @abstractmethod
    def device_id(self) -> str: ...

