import type { Assertion, AsymmetricMatchersContaining } from "vitest"; import type { Test as SuperTest } from "supertest"; import MonkeyError from "../src/utils/error"; type ExpectedRateLimit = { /** max calls */ max: number; /** window in milliseconds. Needs to be within 2500ms */ windowMs: number; }; interface RestRequestMatcher { toBeRateLimited: (expected: ExpectedRateLimit) => RestRequestMatcher; } interface ThrowMatcher { toMatchMonkeyError: (expected: { status: number; message: string; }) => MatcherResult; } declare module "vitest" { interface Assertion extends RestRequestMatcher, ThrowMatcher {} interface AsymmetricMatchersContaining extends RestRequestMatcher, ThrowMatcher {} } interface MatcherResult { pass: boolean; message: () => string; actual?: unknown; expected?: unknown; }