import { InputMessage, OutputMessage, Policy } from './types.js'; /** A policy function with opts to run it with. Used by the pipeline. */ type PolicyTuple

= [policy: P, opts?: InferPolicyOpts

]; /** Infer opts from the policy. */ type InferPolicyOpts

= P extends Policy ? Opts : never; /** Helper type for proper type inference of PolicyTuples. */ type Policies = { [K in keyof T]: PolicyTuple | Policy; }; /** * Processes messages through multiple policies. * * If any policy returns a `reject` or `shadowReject` action, the pipeline will stop and return the rejected message. * * @example * ```ts * const result = await pipeline(msg, [ * noopPolicy, * [filterPolicy, { kinds: [0, 1, 3, 5, 7, 1984, 9734, 9735, 10002] }], * [keywordPolicy, ['https://t.me/']], * [regexPolicy, /(🟠|🔥|😳)ChtaGPT/i], * [pubkeyBanPolicy, ['e810fafa1e89cdf80cced8e013938e87e21b699b24c8570537be92aec4b12c18']], * [hellthreadPolicy, { limit: 100 }], * [rateLimitPolicy, { whitelist: ['127.0.0.1'] }], * [antiDuplicationPolicy, { ttl: 60000, minLength: 50 }], * ]); * ``` */ declare function pipeline(msg: InputMessage, policies: [...Policies]): Promise; export default pipeline; export type { PolicyTuple };