import type { SymbolCreator } from "@alloy-js/core"; import { type Refkey } from "@alloy-js/core"; export interface PackageDescriptor { [path: string]: ModuleSymbolsDescriptor; } /** * Describes the structure of a module descriptor. * * A module descriptor can either be a string (representing the module name) * or an object with the following properties: * - `name`: The name of the module. * - `staticMembers`: An optional array of named module descriptors representing * static members of the module. * - `instanceMembers`: An optional array of named module descriptors representing * instance members of the module. */ export type NamedModuleDescriptor = string | { name: string; staticMembers?: Array; instanceMembers?: Array; }; /** * Describes the symbols exported by a module. */ export interface ModuleSymbolsDescriptor { default?: string; named?: NamedModuleDescriptor[]; } /** * Props for creating a package with a specific name, version, and descriptor. */ export interface CreatePackageProps { name: string; version: string; descriptor: T; builtin?: boolean; } /** * Infers the exported members of a module based on its descriptor. * * D - The module descriptor, which may specify a `default` export (as a string) * and/or an array of named exports (`named`). * * If `D` includes a `default` property of type `string`, the resulting type will include a * `default` property of type `Refkey`. If `D` includes a `named` property (an array of * `NamedModuleDescriptor`), the resulting type will include the mapped named exports as * defined by `NamedMap`. */ export type ModuleExports = (D extends { default: string; } ? { default: Refkey; } : {}) & (D["named"] extends NamedModuleDescriptor[] ? NamedMap : {}); export type PackageRefkeys> = ModuleExports & { [P in keyof PD as P extends "." ? never : P]: ModuleExports; }; export type NamedMap = { [S in Extract]: Refkey; } & { [O in Extract as O["name"]]: Refkey & { static: O extends { staticMembers: infer SM extends NamedModuleDescriptor[]; } ? NamedMap : {}; instance: O extends { instanceMembers: infer IM extends NamedModuleDescriptor[]; } ? NamedMap : {}; }; }; /** * Retrieve the package scope associated with an external package created via * createPackage. */ export declare function getPackageScope(pkg: ExternalPackage): any; export interface ExternalPackage { [externalPackageSymbol]: true; } declare const externalPackageSymbol: unique symbol; export declare function createPackage(props: CreatePackageProps): PackageRefkeys & SymbolCreator & ExternalPackage; export {}; //# sourceMappingURL=create-package.d.ts.map