import type { Environment } from "../../env";
import type { Token } from "../../token";
import type { DynType, EnumType, IsoType, SomeType, StructType, TupleType, UnionType } from "../../types/definitions";
import type { EvaluatorContext } from "../context";
export declare function addFunctionSignatureToSelfTypeModule({ label, functionSignature, SelfType, env, context, }: {
    label: string;
    functionSignature: string;
    SelfType: StructType | EnumType | DynType | SomeType | IsoType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function addFunctionCodeToSelfTypeModule({ label, functionCode, SelfType, env, context, }: {
    label: string;
    functionCode: string;
    SelfType: StructType | EnumType | DynType | SomeType | IsoType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare const DisposeFnSignature = "(fn(__yo_self : Self) -> unit)";
export declare const DropFnSignature = "(fn(__yo_self : Self) -> unit)";
export declare const DupFnSignature = "(fn(__yo_self : Self) -> Self)";
export declare function addRcFunctionsToStructType({ structType, env, context, }: {
    structType: StructType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function addRcFunctionSignaturesToStructType({ structType, env, context, }: {
    structType: StructType;
    env: Environment;
    context: EvaluatorContext;
}): void;
export declare function addRcFunctionsToEnumType({ enumType, env, context, }: {
    enumType: EnumType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function addRcFunctionSignaturesToEnumType({ enumType, env, context, }: {
    enumType: EnumType;
    env: Environment;
    context: EvaluatorContext;
}): Environment | undefined;
export declare function addRcFunctionsToDynType({ dynType, env, context, }: {
    dynType: DynType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function addRcFunctionsToSomeType({ someType, env, context, }: {
    someType: SomeType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function addRcFunctionsToIsoType({ isoType, env, context, }: {
    isoType: IsoType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function attachTraitToReceiverType(moduleName: string, receiverType: StructType | EnumType | UnionType | TupleType | SomeType, env: Environment, context: EvaluatorContext): Environment;
export declare function autoDeriveSendForStructType({ structType, env, context, }: {
    structType: StructType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveRcForStructType({ structType, env, context, }: {
    structType: StructType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveSendForEnumType({ enumType, env, context, }: {
    enumType: EnumType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveSendForUnionType({ unionType, env, context, }: {
    unionType: UnionType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveAcyclicForStructType({ structType, env, context, }: {
    structType: StructType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveAcyclicForEnumType({ enumType, env, context, }: {
    enumType: EnumType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveAcyclicForUnionType({ unionType, env, context, }: {
    unionType: UnionType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveComptimeForStructType({ structType, env, context, }: {
    structType: StructType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveComptimeForEnumType({ enumType, env, context, }: {
    enumType: EnumType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveRuntimeForStructType({ structType, env, context, }: {
    structType: StructType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveRuntimeForEnumType({ enumType, env, context, }: {
    enumType: EnumType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveRuntimeForUnionType({ unionType, env, context, }: {
    unionType: UnionType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveSendForTupleType({ tupleType, env, context, }: {
    tupleType: TupleType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveComptimeForTupleType({ tupleType, env, context, }: {
    tupleType: TupleType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveRuntimeForTupleType({ tupleType, env, context, }: {
    tupleType: TupleType;
    env: Environment;
    context: EvaluatorContext;
}): Environment;
export declare function autoDeriveTraitsAndAddRcFunctionsForStructType({ structType, env, context, errorToken, }: {
    structType: StructType;
    env: Environment;
    context: EvaluatorContext;
    errorToken: Token;
}): Environment;
export declare function autoDeriveTraitsAndAddRcFunctionsForEnumType({ enumType, env, context, errorToken, }: {
    enumType: EnumType;
    env: Environment;
    context: EvaluatorContext;
    errorToken: Token;
}): Environment;
export declare function autoDeriveTraitsAndAddRcFunctionsForTupleType({ tupleType, env, context, errorToken, }: {
    tupleType: TupleType;
    env: Environment;
    context: EvaluatorContext;
    errorToken: Token;
}): Environment;
