import { type StubParticipantPayload } from '../Utils/group-stub-params.js'; type Ctor = new (...args: never[]) => unknown; type ThrowMatcher = string | RegExp | Error | Ctor | ((err: Error) => boolean); interface Matchers { toBe(expected: T): void; toEqual(expected: unknown): void; toBeDefined(): void; toBeUndefined(): void; toBeTruthy(): void; toBeFalsy(): void; toBeInstanceOf(ctor: Ctor): void; toBeGreaterThan(n: number): void; toBeGreaterThanOrEqual(n: number): void; toBeLessThan(n: number): void; toBeLessThanOrEqual(n: number): void; toContain(item: unknown): void; toHaveLength(n: number): void; toHaveProperty(path: string): void; toThrow(matcher?: ThrowMatcher): void; /** Asserts the actual object contains all the given keys with deep-equal values (extra keys allowed). */ toMatchObject(expected: Partial | Record): void; } interface AsyncMatchers { toBe(expected: T): Promise; toBeUndefined(): Promise; toThrow(matcher?: ThrowMatcher): Promise; } interface Expect extends Matchers { readonly not: Pick, 'toBe' | 'toThrow'>; readonly resolves: AsyncMatchers>; readonly rejects: AsyncMatchers; } /** * Assert a `messageStubParameters[i]` raw string decodes to a participant * payload that contains AT LEAST the expected fields. Extra fields on the * decoded payload (e.g. a `phoneNumber` the bridge happens to include) do * NOT fail the assert — callers state only what they care about. Fails * loudly when the string is missing, not valid JSON, or has the wrong * shape, which catches regressions where a raw JID leaks back in. */ export declare function expectStubParticipant(raw: string | null | undefined, expected: StubParticipantPayload): void; export declare function expect(actual: T): Expect; export {}; //# sourceMappingURL=expect.d.ts.map