// ToBytes converts the UnsafeEnvoyBuffer to a byte slice. It creates a copy of the data in Go memory.
// Scheduler is the interface that provides scheduling capabilities for asynchronous operations.
// HttpFilterHandle is the interface that provides access to the plugin's context and configuration.
GetMetadataString(source MetadataSourceType, metadataNamespace, key string) (UnsafeEnvoyBuffer, bool)
GetMetadataListNumber(source MetadataSourceType, metadataNamespace, key string, index int) (float64, bool)
// stored under the given namespace and key. Returns an empty buffer and false if the metadata is
GetMetadataListString(source MetadataSourceType, metadataNamespace, key string, index int) (UnsafeEnvoyBuffer, bool)
GetMetadataListBool(source MetadataSourceType, metadataNamespace, key string, index int) (bool, bool)
// ReceivedRequestBody retrieves the latest received request body chunk in the OnRequestBody callback.
// ReceivedResponseBody retrieves the latest received response body chunk in the OnResponseBody callback.
// NOTE: This is only valid in the OnResponseBody callback, and it retrieves the latest received
// @Return the result of the HTTP callout initialization and the callout ID. Non-success results
StartHttpStream(cluster string, headers [][2]string, body []byte, endOfStream bool, timeoutMs uint64,
// SendHttpStreamTrailers sends trailers on an existing HTTP stream started via StartHttpStream.