export declare type PackageMeta = { readonly name: string; readonly target: Target; readonly sources: File[]; readonly native_sources: File[]; readonly dependencies: Dependency[]; readonly capabilities: Capabilities; }; export declare type Package = { readonly filename: string; readonly meta: PackageMeta; }; export declare enum TargetTag { ANY = 0, NODE = 1, WEB = 2 } export declare type Target = TargetAny | TargetNode | TargetWeb; export declare type TargetAny = { readonly tag: TargetTag.ANY; toString(): string; }; export declare type TargetNode = { readonly tag: TargetTag.NODE; toString(): string; }; export declare type TargetWeb = { readonly tag: TargetTag.WEB; toString(): string; }; export declare type Dependency = { readonly name: string; readonly capabilities: Set; readonly target: Target; }; export declare type File = { readonly filename: string; readonly target: Target; }; export declare type Capabilities = { readonly requires: Set; readonly provides: Set; }; export declare type ProvideCapability = { name: string; description: string; }; export declare type Capability = string; export declare function pkg(filename: string, meta: PackageMeta): Package; export declare function file(x: File): File; export declare function target_any(): TargetAny; export declare function target_node(): TargetNode; export declare function target_web(): TargetWeb; export declare function dependency(x: Dependency): Dependency; export declare function capability(x: Capability): Capability; export declare function provide_capability(x: ProvideCapability): ProvideCapability; export declare function capabilities(x: Capabilities): Capabilities;