import * as IR from "../../ir"; import { CrochetModule, CrochetType, CrochetValue, Environment, State, Tag } from "../intrinsics"; export declare abstract class Pattern { abstract unify(env: Environment, value: CrochetValue): Environment | null; } export declare class ValuePattern extends Pattern { readonly value: CrochetValue; constructor(value: CrochetValue); unify(env: Environment, value: CrochetValue): Environment | null; } export declare class VariablePattern extends Pattern { readonly name: string; constructor(name: string); unify(env: Environment, value: CrochetValue): Environment | null; } export declare class WildcardPattern extends Pattern { unify(env: Environment, value: CrochetValue): Environment | null; } export declare class TypePattern extends Pattern { readonly type: CrochetType; readonly pattern: Pattern; constructor(type: CrochetType, pattern: Pattern); unify(env: Environment, value: CrochetValue): Environment | null; } export declare function compile_pattern(state: State, module: CrochetModule, env: Environment, pattern: IR.Pattern): Pattern; export declare function unify_all(env: Environment, value: CrochetValue[], pattern: Pattern): Environment[];