import { Exp, ExpMeta } from "../../exp"; import { Core } from "../../core"; import { Ctx } from "../../ctx"; import { Value } from "../../value"; export declare class Obj extends Exp { meta?: ExpMeta; properties: Array; constructor(properties: Array, meta?: ExpMeta); free_names(bound_names: Set): Set; subst(name: string, exp: Exp): Exp; private check_duplicated_field_name; check(ctx: Ctx, t: Value): Core; repr(): string; } export declare abstract class Prop { instanceofProp: boolean; abstract free_names(bound_names: Set): Set; abstract solution(name: string, exp: Exp): Prop; abstract to_entries(ctx: Ctx): Array<[string, Exp]>; abstract repr(): string; } export declare class SpreadProp extends Prop { exp: Exp; constructor(exp: Exp); free_names(bound_names: Set): Set; solution(name: string, exp: Exp): Prop; to_entries(ctx: Ctx): Array<[string, Exp]>; repr(): string; } export declare class FieldProp extends Prop { name: string; exp: Exp; constructor(name: string, exp: Exp); free_names(bound_names: Set): Set; solution(name: string, exp: Exp): Prop; to_entries(ctx: Ctx): Array<[string, Exp]>; repr(): string; } export declare class FieldShorthandProp extends Prop { name: string; constructor(name: string); free_names(bound_names: Set): Set; solution(name: string, exp: Exp): Prop; to_entries(ctx: Ctx): Array<[string, Exp]>; repr(): string; }