import type { VKBridgeSend, VKBridgeSubscribeHandler } from './bridge.ts'; /** * API that can use middleware. */ export interface MiddlewareAPI< S extends VKBridgeSend = VKBridgeSend, L extends VKBridgeSubscribeHandler = VKBridgeSubscribeHandler, > { send: S; subscribe(listener: L): void; } /** * A middleware is a higher-order function that composes a dispatch function * to return a new `send` function. */ export type Middleware = ( api: MiddlewareAPI, ) => (next: S) => S;