import { Metadata, MethodConfig, experimental } from '@grpc/grpc-js'; import Filter = experimental.Filter; import FilterFactory = experimental.FilterFactory; import { RE2 } from 're2-wasm'; export interface ClusterResult { name: string; methodConfig: MethodConfig; dynamicFilterFactories: FilterFactory[]; } export interface RouteAction { toString(): string; getCluster(): ClusterResult; getHash(metadata: Metadata, channelId: number): bigint; } export interface HashPolicy { type: 'HEADER' | 'CHANNEL_ID'; terminal: boolean; headerName?: string; regex?: RE2; regexSubstitution?: string; } export declare class SingleClusterRouteAction implements RouteAction { private cluster; private methodConfig; private extraFilterFactories; private hashPolicies; constructor(cluster: string, methodConfig: MethodConfig, extraFilterFactories: FilterFactory[], hashPolicies: HashPolicy[]); getCluster(): { name: string; methodConfig: MethodConfig; dynamicFilterFactories: experimental.FilterFactory[]; }; getHash(metadata: Metadata, channelId: number): bigint; toString(): string; } export interface WeightedCluster { name: string; weight: number; dynamicFilterFactories: FilterFactory[]; } export declare class WeightedClusterRouteAction implements RouteAction { private clusters; private totalWeight; private methodConfig; private hashPolicies; /** * The weighted cluster choices represented as a CDF */ private clusterChoices; constructor(clusters: WeightedCluster[], totalWeight: number, methodConfig: MethodConfig, hashPolicies: HashPolicy[]); getCluster(): { name: string; methodConfig: MethodConfig; dynamicFilterFactories: experimental.FilterFactory[]; }; getHash(metadata: Metadata, channelId: number): bigint; toString(): string; }