type ToMessage<S> = string | ((s: S[]) => string);
declare class Check<S> {
    private ctx;
    private readonly received;
    private readonly expected;
    private readonly failed;
    private readonly message;
    constructor(ctx: jest.MatcherContext, received: S, expected: S, failed?: boolean, message?: string);
    print(message: ToMessage<S>): string;
    not(p: (s: S[]) => boolean, message: ToMessage<S>): Check<S>;
    undefined(p: (s: S[]) => any, message: ToMessage<S>): Check<S>;
    else(message?: ToMessage<S>): jest.CustomMatcherResult;
}
export declare const check: <S>(ctx: jest.MatcherContext, received: S, expected?: S) => Check<S>;
export declare const checkDefined: <S>(ctx: jest.MatcherContext, received: S, expected?: S) => Check<S>;
export {};
