## API Report File for "@commandville/core"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

/// <reference types="node" />

import type { Choices } from 'yargs';
import type { Duplex } from 'stream';

// Warning: (ae-missing-release-tag) "AsyncParser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type AsyncParser = (args: string[]) => Promise<string | void>;

// Warning: (ae-missing-release-tag) "CliHandler" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type CliHandler = (args: Record<string, unknown>) => Promise<void>;

// Warning: (ae-missing-release-tag) "CliParser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type CliParser = StreamParser | AsyncParser | Parser;

// Warning: (ae-missing-release-tag) "Command" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface Command<R extends StreamParser | AsyncParser | Parser = CliParser, T extends CommandConfig = CommandConfig> extends CommandDescription {
    // (undocumented)
    (configOptions: T): R;
}

// Warning: (ae-missing-release-tag) "CommandConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface CommandConfig {
    // (undocumented)
    [key: string]: unknown;
}

// Warning: (ae-missing-release-tag) "CommandDescription" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface CommandDescription {
    // (undocumented)
    aliases?: string | string[];
    // (undocumented)
    command: string;
    // (undocumented)
    deprecated?: boolean;
    // (undocumented)
    description?: string;
    // (undocumented)
    options?: CommandOptions;
    // (undocumented)
    postprocess?: Duplex;
    // (undocumented)
    preprocess?: Duplex;
}

// Warning: (ae-missing-release-tag) "CommandLocation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface CommandLocation {
    // (undocumented)
    cwd?: string;
    // (undocumented)
    filePathOrGlob: string;
    // (undocumented)
    prefix?: string;
}

// Warning: (ae-missing-release-tag) "CommandOption" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface CommandOption {
    // (undocumented)
    aliases?: string | string[];
    // (undocumented)
    array?: boolean;
    // (undocumented)
    choices?: Choices;
    // (undocumented)
    coerce?: (arg: unknown) => unknown;
    // (undocumented)
    config?: boolean;
    // (undocumented)
    configParser?: (configPath: string) => object;
    // (undocumented)
    conflicts?: string | string[];
    // (undocumented)
    default?: unknown;
    // (undocumented)
    deprecated?: boolean;
    // (undocumented)
    description: string;
    // (undocumented)
    implies?: string | string;
    // (undocumented)
    nargs?: number;
    // (undocumented)
    normalize?: boolean;
    // (undocumented)
    required?: boolean;
    // (undocumented)
    requiresArgs?: boolean;
    // (undocumented)
    type: 'string' | 'number' | 'boolean' | 'count';
}

// Warning: (ae-missing-release-tag) "CommandOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type CommandOptions = Record<string, CommandOption>;

// Warning: (ae-missing-release-tag) "load" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function load(options: ProgramLoader): Promise<{
    parse: (argv: string[]) => Promise<void>;
}>;

// Warning: (ae-missing-release-tag) "Parser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type Parser = (args: string[]) => string | void;

// Warning: (ae-missing-release-tag) "program" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function program(programDescription: ProgramDescription): ProgramParser;

// Warning: (ae-missing-release-tag) "ProgramDescription" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface ProgramDescription {
    // (undocumented)
    commands: Command[];
    // (undocumented)
    config?: Record<string, unknown>;
    // (undocumented)
    defaultCommand?: string;
    // (undocumented)
    envFile?: string;
    // (undocumented)
    envPrefix?: string;
    // (undocumented)
    loadEnv?: boolean;
    // (undocumented)
    program: string;
    // (undocumented)
    version?: string;
}

// Warning: (ae-missing-release-tag) "ProgramLoader" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface ProgramLoader extends Omit<ProgramDescription, 'commands'> {
    // (undocumented)
    commands: Array<CommandLocation | string>;
}

// Warning: (ae-missing-release-tag) "ProgramParser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface ProgramParser {
    // (undocumented)
    parse: (argv: string[]) => Promise<void>;
}

// Warning: (ae-missing-release-tag) "StreamParser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type StreamParser = Duplex;

// (No @packageDocumentation comment for this package)

```
