using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.Remoting.Messaging;
namespace System.Runtime.Remoting.Channels
{
/// Provides required functions and properties for client channel sinks.
// Token: 0x020003A5 RID: 933
[ComVisible(true)]
public interface IClientChannelSink : IChannelSinkBase
{
/// Gets the next client channel sink in the client sink chain.
/// The next client channel sink in the client sink chain.
/// The immediate caller does not have infrastructure permission.
///
///
///
// Token: 0x17000708 RID: 1800
// (get) Token: 0x060025AB RID: 9643
IClientChannelSink NextChannelSink { get; }
/// Requests asynchronous processing of a method call on the current sink.
/// A stack of channel sinks that called this sink.
/// The message to process.
/// The headers to add to the outgoing message heading to the server.
/// The stream headed to the transport sink.
/// The immediate caller does not have infrastructure permission.
// Token: 0x060025AC RID: 9644
void AsyncProcessRequest(IClientChannelSinkStack sinkStack, IMessage msg, ITransportHeaders headers, Stream stream);
/// Requests asynchronous processing of a response to a method call on the current sink.
/// A stack of sinks that called this sink.
/// Information generated on the request side that is associated with this sink.
/// The headers retrieved from the server response stream.
/// The stream coming back from the transport sink.
/// The immediate caller does not have infrastructure permission.
// Token: 0x060025AD RID: 9645
void AsyncProcessResponse(IClientResponseChannelSinkStack sinkStack, object state, ITransportHeaders headers, Stream stream);
/// Returns the onto which the provided message is to be serialized.
/// The onto which the provided message is to be serialized.
/// The containing details about the method call.
/// The headers to add to the outgoing message heading to the server.
/// The immediate caller does not have infrastructure permission.
// Token: 0x060025AE RID: 9646
Stream GetRequestStream(IMessage msg, ITransportHeaders headers);
/// Requests message processing from the current sink.
/// The message to process.
/// The headers to add to the outgoing message heading to the server.
/// The stream headed to the transport sink.
/// When this method returns, contains a interface that holds the headers that the server returned. This parameter is passed uninitialized.
/// When this method returns, contains a coming back from the transport sink. This parameter is passed uninitialized.
/// The immediate caller does not have infrastructure permission.
// Token: 0x060025AF RID: 9647
void ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, out ITransportHeaders responseHeaders, out Stream responseStream);
}
}