///
import { Call, StatusObject, WriteObject } from './call-stream';
import { Metadata } from './metadata';
/**
* Filter classes represent related per-call logic and state that is primarily
* used to modify incoming and outgoing data
*/
export interface Filter {
sendMetadata(metadata: Promise): Promise;
receiveMetadata(metadata: Metadata): Metadata;
sendMessage(message: Promise): Promise;
receiveMessage(message: Promise): Promise;
receiveTrailers(status: StatusObject): StatusObject;
refresh(): void;
}
export declare abstract class BaseFilter implements Filter {
sendMetadata(metadata: Promise): Promise;
receiveMetadata(metadata: Metadata): Metadata;
sendMessage(message: Promise): Promise;
receiveMessage(message: Promise): Promise;
receiveTrailers(status: StatusObject): StatusObject;
refresh(): void;
}
export interface FilterFactory {
createFilter(callStream: Call): T;
}