import { Modding } from "@flamework/core";
import { Range, type RangeJSON } from "@rbxts/range";
type ClassType<T = object, Args extends unknown[] = never[]> = {
    new (...args: Args): T;
};
declare class Assert {
    static propertyEqual(object: object, property: string, expectedValue: unknown): void;
    static hasProperty(object: object, property: string): void;
    static doesNotThrowAsync(method: () => Promise<void>): Promise<void>;
    static throwsAsync(method: () => Promise<void>): void;
    static throwsAsync(method: () => Promise<void>, exception: string): void;
    static doesNotThrow(method: () => void): void;
    static throws(method: () => void): void;
    static throws(method: () => void, exception: string): void;
    static all<T extends defined>(array: T[], predicate: (element: T) => void): void;
    static doesNotContain<T extends defined>(element: T, array: T[]): void;
    static contains<T extends defined>(expectedElement: T, array: T[]): void;
    static contains<T extends defined>(array: T[], predicate: (element: T) => boolean): void;
    static empty(array: defined[]): void;
    static startsWith(str: string, substring: string): void;
    static endsWith(str: string, substring: string): void;
    static inRange(number: number, range: RangeJSON): void;
    static inRange(number: number, range: Range): void;
    static inRange(number: number, minimum: number, maximum: number): void;
    /** @metadata macro */
    static isType<Expected>(value: unknown, guard?: ((value: unknown) => value is Expected) | Modding.Generic<Expected, "guard">): value is Expected;
    static isCheckableType(value: unknown, expectedType: keyof CheckableTypes | ClassType): void;
    static true(value: unknown): void;
    static false(value: unknown): void;
    static undefined(value: unknown): void;
    static notUndefined(value: unknown): void;
    static notEqual(expected: unknown, actual: unknown): void;
    static equal(expected: unknown, actual: unknown): void;
}
export = Assert;
