import { SelectorBase } from '../selector/selector_base'; import { Config, SendOption, SendSuccess, SendFail } from '@tencent/aegis-core'; export interface ProtocolOptions extends Pick { selector: SelectorBase; } export type ProtocalClassType = new (options: ProtocolOptions) => BaseProtocal; export abstract class BaseProtocal { protected selector: SelectorBase; protected protocol: Config['protocol']; public constructor(options: ProtocolOptions) { this.selector = options.selector; this.protocol = options.protocol; } abstract send( options: SendOption, opt: { success?: SendSuccess; fail?: SendFail; bean?: string }, ): void; }