import type { Environment } from "../env";
import { type Expr } from "../expr";
import { type Token } from "../token";
import type { FunctionParameter, TypeField, SomeType, Type } from "./definitions";
export declare function typeRequiresComptimeModifier(type: Type | undefined, env: Environment): boolean;
export declare function typeProhibitsComptimeModifier(type: Type | undefined, env: Environment): boolean;
export declare function isComptimeOnlyType(type: Type, env: Environment): boolean;
export declare function isRuntimeOnlyType(type: Type, env: Environment): boolean;
export declare function typeContainsRcType(type?: Type, checkedTypes?: Type[]): boolean;
export declare function typeIsControlBound(type?: Type, checkedTypes?: Type[]): boolean;
export declare function typeRepresentationContainsRawPtr(type?: Type, checkedTypes?: Type[]): boolean;
export declare function typeMayProvideSliceSource(type?: Type, checkedTypes?: Type[]): boolean;
export declare function typeContainsSomeType(type?: Type, checkedTypes?: Type[]): boolean;
export declare function typeContainsUnboundSomeType(type?: Type, boundNames?: Set<string>, checkedTypes?: Type[]): boolean;
export declare function typeContainsSomeTypeForCodegenParam(type?: Type, checkedTypes?: Type[]): boolean;
export declare function typeContainsUnknownValue(type: Type, visited?: Set<string>): boolean;
export declare function getAllSomeTypes(type: Type): Set<SomeType>;
export declare function typeRequiresInference(type?: Type): boolean;
export declare function convertComptimeTypeToRuntimeType({ type, expectedType, expr, env, }: {
    type: Type;
    expectedType?: Type;
    expr?: Expr;
    env: Environment;
}): Type;
export declare function getIntegerTypeBits(type: Type): number;
export declare function getIntegerTypeRange(type: Type): {
    min: bigint;
    max: bigint;
};
export declare function canComptimeIntCastTo(targetType: Type): boolean;
export declare function canComptimeFloatCastTo(targetType: Type): boolean;
export declare function functionParameterToString(parameter: FunctionParameter, visited?: Set<string>): string;
export declare function tupleFieldToString(element: TypeField, visited?: Set<string>): string;
export declare function typeToString(type: Type, visited?: Set<string>): string;
export declare function setTargetPointerSize(bits: number): void;
export declare function getTargetPointerSizeBits(): number;
export declare function getTargetPointerSizeBytes(): number;
export declare function getAlignmentOfType(type: Type): number | null;
export declare function getSizeOfType(type: Type): number | null;
export declare function prohibitVoidType(type: Type, token: Token): void;
export declare function canTypeFormRcCycle(type: Type, visitedTypes: Set<string>, env: Environment): boolean;
export declare function typeContainsSelfTypeForDynamicDispatchCheck(type: Type, selfType: Type | undefined): boolean;
