/**
 * Shared test helpers for attribute collection pass tests.
 */
export { describe, it } from "mocha";
export { expect } from "chai";
export { runAttributeCollectionPass } from "../attribute-collection-pass.js";
export type { IrModule, IrClassDeclaration, IrInterfaceDeclaration, IrFunctionDeclaration, } from "../../types.js";
import type { IrModule } from "../../types.js";
/**
 * Assert value is not null/undefined and return it typed as non-null.
 */
export declare const assertDefined: <T>(value: T | null | undefined, msg?: string) => T;
/**
 * Helper to create a minimal IrModule for testing
 */
export declare const createModule: (body: IrModule["body"], attributesApiLocalName?: string, attributeTargetsLocalName?: string) => IrModule;
/**
 * Helper to create a minimal identifier IR
 */
export declare const makeIdentifier: (name: string, resolvedClrType?: string) => {
    kind: "identifier";
    name: string;
    resolvedClrType: string | undefined;
};
export declare const makeTypedIdentifier: (name: string, inferredType: unknown) => any;
export declare const makeRefType: (name: string, resolvedClrType?: string) => {
    kind: "referenceType";
    name: string;
    resolvedClrType: string | undefined;
};
/**
 * Helper to create a minimal member access IR
 */
export declare const makeMemberAccess: (object: any, property: string) => any;
/**
 * Helper to create a minimal call IR
 */
export declare const makeCall: (callee: any, args: readonly any[], typeArguments?: readonly any[]) => any;
/**
 * Helper to create a minimal literal IR
 */
export declare const makeLiteral: (value: string | number | boolean) => {
    kind: "literal";
    value: string | number | boolean;
    raw: string;
};
export declare const makeObject: (properties: readonly unknown[]) => {
    kind: "object";
    properties: readonly unknown[];
};
export declare const makeObjectProp: (key: string | unknown, value: unknown) => any;
export declare const makeObjectSpread: (expression: unknown) => any;
export declare const makeUnaryTypeof: (expression: unknown) => any;
export declare const makeSpreadArg: (expression: unknown) => any;
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 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: any;
};
export declare const makeWrappedSelector: (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: any;
};
export declare const makeBadSelectorCallBody: (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: any;
};
export declare const makeTypeRootCall: (targetName: string, apiObjectName?: string) => any;
export declare const makeFunctionRootCall: (targetName: string, apiObjectName?: string) => any;
/**
 * Helper to create an attribute marker call IR for A<T>().add(Attr, ...args)
 */
export declare const makeMarkerCall: (targetName: string, attrName: string, args?: Array<{
    kind: "literal";
    value: string | number | boolean;
}>, resolvedClrType?: string, apiObjectName?: string) => {
    kind: "expressionStatement";
    expression: any;
};
export declare const makeTypeMarkerCallWithTarget: (targetName: string, attrName: string, targetArg: unknown, apiObjectName?: string) => {
    kind: "expressionStatement";
    expression: any;
};
export declare const makeCtorMarkerCall: (targetName: string, attrName: string) => {
    kind: "expressionStatement";
    expression: any;
};
export declare const makeCtorMarkerCallWithTarget: (targetName: string, attrName: string, targetArg: unknown) => {
    kind: "expressionStatement";
    expression: any;
};
export declare const makeMethodMarkerCall: (targetName: string, attrName: string, selector: unknown) => {
    kind: "expressionStatement";
    expression: any;
};
export declare const makeMethodMarkerCallWithTarget: (targetName: string, attrName: string, selector: unknown, targetArg: unknown) => {
    kind: "expressionStatement";
    expression: any;
};
export declare const makePropMarkerCall: (targetName: string, propName: string, attrName: string, selector?: unknown) => {
    kind: "expressionStatement";
    expression: any;
};
export declare const makePropMarkerCallWithTarget: (targetName: string, propName: string, attrName: string, targetArg: unknown) => {
    kind: "expressionStatement";
    expression: any;
};
export declare const makeAttrDescriptorDecl: (varName: string, attrName: string) => {
    kind: "variableDeclaration";
    declarationKind: "const";
    isExported: boolean;
    declarations: {
        kind: "variableDeclarator";
        name: {
            kind: "identifierPattern";
            name: string;
        };
        initializer: any;
    }[];
};
export declare const makeAddDescriptorMarkerCall: (targetName: string, varName: string) => {
    kind: "expressionStatement";
    expression: any;
};
export declare const makeInlineDescriptorMarkerCall: (targetName: string, attrName: string) => {
    kind: "expressionStatement";
    expression: any;
};
export declare const makeFunctionMarkerCall: (functionName: string, attrName: string, args?: Array<{
    kind: "literal";
    value: string | number | boolean;
}>, resolvedClrType?: string, apiObjectName?: string) => {
    kind: "expressionStatement";
    expression: any;
};
//# sourceMappingURL=helpers.d.ts.map