import type { ArrayFlag, NumberFlag, StringFlag, BooleanFlag } from '../types.ts'; /** * Namespace for defining flags using decorators. * * Flags are named options that commands can accept from the CLI. * They can be passed using --flag-name or -alias syntax and are * made available as properties on the command instance. * * @example * ```ts * export class MakeCommand extends BaseCommand { * @flags.boolean({ description: 'Skip confirmation prompts' }) * declare force: boolean * * @flags.string({ description: 'Database connection', alias: 'c' }) * declare connection?: string * * @flags.array({ description: 'Additional tags' }) * declare tags?: string[] * } * ``` */ export declare const flags: { /** * Define flag that accepts a string value * * @param options - Configuration options for the string flag * * @example * ```ts * export class MakeCommand extends BaseCommand { * @flags.string({ description: 'Database connection name', alias: 'c' }) * declare connection?: string * * @flags.string({ description: 'Template name', required: true, default: 'default' }) * declare template: string * } * // Usage: node ace make --connection=mysql --template=api * // Usage: node ace make -c mysql --template=api * ``` */ string(options?: Partial, "type">>): (target: Target, propertyName: Key) => void; /** * Define flag that accepts a boolean value * * Boolean flags don't require a value - their presence indicates true. * They can optionally support negated variants with --no-flag-name. * * @param options - Configuration options for the boolean flag * * @example * ```ts * export class MigrateCommand extends BaseCommand { * @flags.boolean({ description: 'Skip confirmation prompts', alias: 'f' }) * declare force: boolean * * @flags.boolean({ description: 'Run in dry mode', showNegatedVariantInHelp: true }) * declare dryRun: boolean * } * // Usage: node ace migrate --force * // Usage: node ace migrate -f * // Usage: node ace migrate --dry-run or --no-dry-run * ``` */ boolean(options?: Partial, "type">>): (target: Target, propertyName: Key) => void; /** * Define flag that accepts a numeric value * * @param options - Configuration options for the number flag * * @example * ```ts * export class ServeCommand extends BaseCommand { * @flags.number({ description: 'Port number', alias: 'p', default: 3000 }) * declare port: number * * @flags.number({ description: 'Number of workers', required: false }) * declare workers?: number * } * // Usage: node ace serve --port=8080 * // Usage: node ace serve -p 8080 --workers=4 * ``` */ number(options?: Partial, "type">>): (target: Target, propertyName: Key) => void; /** * Define flag that accepts an array of values * * Array flags can be specified multiple times to build up an array of values. * * @param options - Configuration options for the array flag * * @example * ```ts * export class BuildCommand extends BaseCommand { * @flags.array({ description: 'Include additional files' }) * declare include?: string[] * * @flags.array({ description: 'Environment variables', alias: 'e' }) * declare env?: string[] * } * // Usage: node ace build --include=*.js --include=*.css * // Usage: node ace build -e NODE_ENV=production -e DEBUG=false * // Results: include = ['*.js', '*.css'], env = ['NODE_ENV=production', 'DEBUG=false'] * ``` */ array(options?: Partial, "type">>): (target: Target, propertyName: Key) => void; };