export { describe, it } from "mocha";
export { expect } from "chai";
export { runOverloadCollectionPass, runOverloadFamilyConsistencyPass, } from "../index.js";
export type { IrCallExpression, IrModule, IrClassDeclaration, IrFunctionDeclaration, IrInterfaceDeclaration, IrExpression, IrMethodDeclaration, IrMethodSignature, IrParameter, IrType, } from "../../types.js";
import type { IrCallExpression, IrExpression, IrFunctionDeclaration, IrMethodDeclaration, IrMethodSignature, IrModule, IrParameter, IrType } from "../../types.js";
export declare const assertDefined: <T>(value: T | null | undefined, msg?: string) => T;
export declare const createModule: (body: IrModule["body"], overloadsApiLocalName?: string) => IrModule;
export declare const makeIdentifier: (name: string) => {
    kind: "identifier";
    name: string;
};
export declare const makeReferenceType: (name: string) => {
    kind: "referenceType";
    name: string;
};
export declare const makePrimitiveType: (name: "string" | "number" | "int" | "char" | "boolean" | "null" | "undefined") => {
    kind: "primitiveType";
    name: "string" | "number" | "boolean" | "undefined" | "int" | "char" | "null";
};
export declare const makeUnknownType: () => {
    kind: "unknownType";
    explicit: true;
};
export declare const makeAnyType: () => {
    kind: "anyType";
};
export declare const makeMemberAccess: (object: IrExpression, property: string) => IrExpression;
export declare const makeCall: (callee: IrExpression, args: readonly IrExpression[], typeArguments?: readonly IrType[]) => IrCallExpression;
export declare const makeLiteral: (value: string | number | boolean) => {
    kind: "literal";
    value: string | number | boolean;
    raw: string;
};
export declare const makeParameter: (name: string) => {
    kind: "parameter";
    pattern: {
        kind: "identifierPattern";
        name: string;
    };
    type: undefined;
    initializer: undefined;
    isOptional: boolean;
    isRest: boolean;
    passing: "value";
};
export declare const makeTypedParameter: (name: string, type: IrType) => IrParameter;
export declare const makeBlock: () => {
    kind: "blockStatement";
    statements: never[];
};
export declare const makeFunctionDeclaration: (name: string, parameters: readonly IrParameter[], returnType: IrType, options?: {
    readonly isExported?: boolean;
    readonly isDeclarationOnly?: boolean;
}) => IrFunctionDeclaration;
export declare const makeMethodDeclaration: (name: string, parameters: readonly IrParameter[], returnType: IrType, options?: {
    readonly isStatic?: boolean;
    readonly hasBody?: boolean;
    readonly accessibility?: "public" | "private" | "protected" | "internal";
}) => IrMethodDeclaration;
export declare const makeMethodSignature: (name: string, parameters: readonly IrParameter[], returnType: IrType) => IrMethodSignature;
export declare const makeSelector: (memberName: string) => {
    kind: "arrowFunction";
    parameters: {
        kind: "parameter";
        pattern: {
            kind: "identifierPattern";
            name: string;
        };
        type: undefined;
        initializer: undefined;
        isOptional: boolean;
        isRest: boolean;
        passing: "value";
    }[];
    isAsync: boolean;
    body: IrExpression;
};
export declare const makeBadSelector: (memberName: string) => {
    kind: "arrowFunction";
    parameters: {
        kind: "parameter";
        pattern: {
            kind: "identifierPattern";
            name: string;
        };
        type: undefined;
        initializer: undefined;
        isOptional: boolean;
        isRest: boolean;
        passing: "value";
    }[];
    isAsync: boolean;
    body: IrCallExpression;
};
export declare const makeFunctionMarkerCall: (functionName: string, familyName: string, apiObjectName?: string) => {
    kind: "expressionStatement";
    expression: IrCallExpression;
};
export declare const makeMethodMarkerCall: (typeName: string, memberName: string, familyName: string, _isStatic?: boolean, apiObjectName?: string) => {
    kind: "expressionStatement";
    expression: IrCallExpression;
};
export declare const makeMethodMarkerCallWithSelector: (typeName: string, selector: IrExpression, familyName: string, _isStatic?: boolean, apiObjectName?: string) => {
    kind: "expressionStatement";
    expression: IrCallExpression;
};
//# sourceMappingURL=helpers.d.ts.map