---
agentTools:
  projectIndex: https://docs.rainway.com/llms.txt
---

# .NET SDK

# Rainway.SDK assembly

## Rainway.SDK namespace

| public type                                             | description                                                                                |
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| enum [ButtonAction](./net-sdk-buttonaction)             | An action (down or up) on a mouse button.                                                  |
| class [DataChannel](./net-sdk-datachannel)              | A data channel from our device to another Peer on the Rainway Network.                     |
| enum [DataChannelMode](./net-sdk-datachannelmode)       | Data channel reliability mode.                                                             |
| enum [Error](./net-sdk-error)                           | Rainway SDK error codes                                                                    |
| class [InputBody](./net-sdk-inputbody)                  | The body of an input event.                                                                |
| \[Flags] enum [InputLevel](./net-sdk-inputlevel)        | Input level permissions granted. These are composable bitflags.                            |
| enum [InputTag](./net-sdk-inputtag)                     | Tag indicating the type of input.                                                          |
| enum [KeyboardAction](./net-sdk-keyboardaction)         | An action (down or up) on a keyboard button.                                               |
| class [LogBody](./net-sdk-logbody)                      | The body of a log.                                                                         |
| enum [LogLevel](./net-sdk-loglevel)                     | Rainway SDK log levels                                                                     |
| enum [MouseButton](./net-sdk-mousebutton)               | A button on the mouse. This is not a flags enum.                                           |
| class [OutboundStream](./net-sdk-outboundstream)        | An outbound stream from our device to another Peer on the Rainway Network.                 |
| class [Peer](./net-sdk-peer)                            | An object representing a connection to a remote Rainway peer.                              |
| enum [PeerState](./net-sdk-peerstate)                   | The connectivity state of a peer                                                           |
| \[Flags] enum [PenFlags](./net-sdk-penflags)            | Flags indicating the state of a pen input device.                                          |
| \[Flags] enum [PenMask](./net-sdk-penmask)              | Flags indicating which data is valid on a pen input.                                       |
| class [RainwayConnection](./net-sdk-rainwayconnection)  | A connection to the Rainway network over which peer connection requests are transmitted.   |
| static class [RainwaySDK](./net-sdk-rainwaysdk)         | Entrypoint and native library facilities for the Rainway SDK.                              |
| enum [RainwayVirtualKey](./net-sdk-rainwayvirtualkey)   | A virtual key. <https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes> |
| enum [ResolutionStrategy](./net-sdk-resolutionstrategy) | Determines how the display resolution is set at the start of the stream.                   |
| enum [ScrollAxis](./net-sdk-scrollaxis)                 | An axis scrolled on.                                                                       |
| enum [StreamType](./net-sdk-streamtype)                 | A type of stream                                                                           |
| \[Flags] enum [XInputButtons](./net-sdk-xinputbuttons)  | A bitflag enum of gamepad buttons.                                                         |

## Rainway.SDK.BYOFB namespace

| public type                                                                       | description                                                             |
| --------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| class [AudioMetadata](./net-sdk-byofb-audiometadata)                              | Metadata describing an audio buffer.                                    |
| class [D3D11Texture2D](./net-sdk-byofb-d3d11texture2d)                            | Transparent type that represents a pointer to a D3D11Texture2D texture. |
| class [FloatAudioBuffer](./net-sdk-byofb-floataudiobuffer)                        | Float audio buffer.                                                     |
| static class [OutboundStreamExtensions](./net-sdk-byofb-outboundstreamextensions) | BYOFB extensions for [`OutboundStream`](./net-sdk-outboundstream).      |
| class [PCMAudioBuffer](./net-sdk-byofb-pcmaudiobuffer)                            | PCM audio buffer.                                                       |

## Rainway.SDK.Events namespace

| public type                                                                                         | description                                                                                                 |
| --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| abstract class [BaseEvent\<TManaged>](./net-sdk-events-baseevent-1)                                 | The base event type.                                                                                        |
| abstract class [BaseRequestEvent\<TAcceptedOptions,TAccepted>](./net-sdk-events-baserequestevent-2) | The base request event type.                                                                                |
| class [CloseEvent](./net-sdk-events-closeevent)                                                     | An event that occurs when something is closed.                                                              |
| class [DataChannelEvent](./net-sdk-events-datachannelevent)                                         | An event that occurs when a [`DataChannel`](./net-sdk-datachannel) is created.                              |
| delegate [EventHandler\<TEventArgs>](./net-sdk-events-eventhandler-1)                               | A typed event handler, with no sender                                                                       |
| delegate [EventHandler\<TSender,TEventArgs>](./net-sdk-events-eventhandler-2)                       | A typed event handler                                                                                       |
| class [InputEvent](./net-sdk-events-inputevent)                                                     | An event that occurs when input arrives for a given [`OutboundStream`](./net-sdk-outboundstream).           |
| class [LogEvent](./net-sdk-events-logevent)                                                         | An event that occurs when the [`RainwaySDK`](./net-sdk-rainwaysdk) logs data.                               |
| abstract class [MessageEvent](./net-sdk-events-messageevent)                                        | An event that occurs when a [`DataChannel`](./net-sdk-datachannel) gets a message.                          |
| class [MessageEventRequest](./net-sdk-events-messageeventrequest)                                   | A [`MessageEvent`](./net-sdk-events-messageevent) that expects a response.                                  |
| class [MessageEventStandalone](./net-sdk-events-messageeventstandalone)                             | A [`MessageEvent`](./net-sdk-events-messageevent) that does not expect a response.                          |
| class [PeerJoinEvent](./net-sdk-events-peerjoinevent)                                               | An event that occurs when a [`Peer`](./net-sdk-peer) joins a [`OutboundStream`](./net-sdk-outboundstream).  |
| class [PeerLeaveEvent](./net-sdk-events-peerleaveevent)                                             | An event that occurs when a [`Peer`](./net-sdk-peer) leaves a [`OutboundStream`](./net-sdk-outboundstream). |
| class [PeerRequestEvent](./net-sdk-events-peerrequestevent)                                         | An event that occurs when a remote peer requests to connect.                                                |
| class [PeerStateChangeEvent](./net-sdk-events-peerstatechangeevent)                                 | An event that occurs when a [`Peer`](./net-sdk-peer) changes [`PeerState`](./net-sdk-peerstate).            |
| class [StreamRequestEvent](./net-sdk-events-streamrequestevent)                                     | An event that occurs when a remote peer requests an [`OutboundStream`](./net-sdk-outboundstream).           |

## Rainway.SDK.Identifiers namespace

| public type                                                | description                                                                       |
| ---------------------------------------------------------- | --------------------------------------------------------------------------------- |
| class [DataChannelId](./net-sdk-identifiers-datachannelid) | Transparent type that represents a data channel identifier. Equivalent to String. |
| class [PeerId](./net-sdk-identifiers-peerid)               | Transparent type that represents a peer identifier. Equivalent to Int64.          |
| class [StreamId](./net-sdk-identifiers-streamid)           | Transparent type that represents a stream identifier. Equivalent to Byte.         |

## Rainway.SDK.Interop namespace

| public type                                                        | description                          |
| ------------------------------------------------------------------ | ------------------------------------ |
| class [InvocationException](./net-sdk-interop-invocationexception) | Raised when an FFI invocation fails. |

## Rainway.SDK.Options namespace

| public type                                                            | description                                                     |
| ---------------------------------------------------------------------- | --------------------------------------------------------------- |
| class [ConnectOptions](./net-sdk-options-connectoptions)               | Options for connecting to the Rainway Network.                  |
| class [DataChannelOptions](./net-sdk-options-datachanneloptions)       | Options for creating a data channel.                            |
| class [OutboundStreamOptions](./net-sdk-options-outboundstreamoptions) | Options for creating an outbound stream.                        |
| class [PeerConnectOptions](./net-sdk-options-peerconnectoptions)       | Options for connecting to a remote peer on the Rainway Network. |
| class [PeerOptions](./net-sdk-options-peeroptions)                     | Options for configuring a Peer.                                 |