import { CuneiformCommand } from '../../../base/cuneiform-command.js'; import { type ObjectResult } from '../../../operations/DefinitionCreateOperation.js'; import { type AvailabilityGrid } from '../../../services/DataAvailabilityService.js'; /** * Command result type for JSON output. */ export type DefinitionCreateResult = { /** Whether the operation was successful */ success: boolean; /** Number of definitions created */ created: number; /** Number of definitions that failed to create */ failed: number; /** Number of objects skipped (already have definitions) */ skipped: number; /** Total number of objects processed */ total: number; /** Whether this was a dry run */ dryRun: boolean; /** List of creation failures with details */ failures: Array<{ objectName: string; error: string; errorCode: string; }>; /** Per-definition results with status indicators */ results: ObjectResult[]; /** Data availability grid (present when --method comparative/recordtype/full) */ availabilityGrid?: AvailabilityGrid; /** Error message if failed */ error?: string; }; /** * Creates profiling definitions for Salesforce objects. */ export default class DefinitionCreate extends CuneiformCommand { static readonly summary: string; static readonly description: string; static readonly examples: string[]; static readonly flags: { 'target-org': import("@oclif/core/interfaces").OptionFlag; 'api-version': import("@oclif/core/interfaces").OptionFlag; objects: import("@oclif/core/interfaces").OptionFlag; filter: import("@oclif/core/interfaces").OptionFlag<"standard" | "custom" | "all", import("@oclif/core/interfaces").CustomOptions>; pattern: import("@oclif/core/interfaces").OptionFlag; namespace: import("@oclif/core/interfaces").OptionFlag; classification: import("@oclif/core/interfaces").OptionFlag<"all" | "customer" | "internal", import("@oclif/core/interfaces").CustomOptions>; 'with-records': import("@oclif/core/interfaces").BooleanFlag; 'without-records': import("@oclif/core/interfaces").BooleanFlag; 'with-record-types': import("@oclif/core/interfaces").BooleanFlag; category: import("@oclif/core/interfaces").OptionFlag; 'min-records': import("@oclif/core/interfaces").OptionFlag; limit: import("@oclif/core/interfaces").OptionFlag; method: import("@oclif/core/interfaces").OptionFlag<"metadata" | "historical" | "comparative" | "outcome" | "recordtype" | "full", import("@oclif/core/interfaces").CustomOptions>; recordtype: import("@oclif/core/interfaces").OptionFlag; 'record-type-status': import("@oclif/core/interfaces").OptionFlag<"active" | "inactive" | "all", import("@oclif/core/interfaces").CustomOptions>; year: import("@oclif/core/interfaces").OptionFlag; depth: import("@oclif/core/interfaces").OptionFlag; from: import("@oclif/core/interfaces").OptionFlag; to: import("@oclif/core/interfaces").OptionFlag; 'no-value-frequency': import("@oclif/core/interfaces").BooleanFlag; 'use-prior': import("@oclif/core/interfaces").BooleanFlag; 'lifetime-primary': import("@oclif/core/interfaces").BooleanFlag; 'date-literal': import("@oclif/core/interfaces").OptionFlag; 'date-field': import("@oclif/core/interfaces").OptionFlag; profiled: import("@oclif/core/interfaces").BooleanFlag; 'dry-run': import("@oclif/core/interfaces").BooleanFlag; 'no-prompt': import("@oclif/core/interfaces").BooleanFlag; profile: import("@oclif/core/interfaces").BooleanFlag; open: import("@oclif/core/interfaces").BooleanFlag; logs: import("@oclif/core/interfaces").BooleanFlag; 'name-prefix': import("@oclif/core/interfaces").OptionFlag; 'name-suffix': import("@oclif/core/interfaces").OptionFlag; 'time-category': import("@oclif/core/interfaces").OptionFlag; 'segment-category': import("@oclif/core/interfaces").OptionFlag; origin: import("@oclif/core/interfaces").OptionFlag; }; /** * Determines the effective --with-records value. * * When --method full is used and no explicit scope/filter flags are supplied by the user, * defaults withRecords to true so the default scope is "customer objects with records." * This prevents full profiling from targeting empty or system-only objects. * * Scope flags that suppress the default: --with-records, --without-records, --filter (non-default), * --objects, --pattern. */ private static resolveWithRecords; /** * Executes the create command. * * @returns DefinitionCreateResult with success status and creation statistics */ run(): Promise; /** * Two-stage confirmation: summary then detailed preview table. */ private handlePreviewReady; /** * Handles operation failure by translating error codes to user-friendly messages. */ private handleOperationFailure; /** * Handles post-creation actions: --profile, --open, --logs. */ private handlePostCreationActions; /** * Triggers fire-and-forget profiling for successfully created definitions. */ private triggerProfiling; /** * Opens the first created definition in the default browser. */ private openInBrowser; /** * Writes session logs to a timestamped directory. */ private writeSessionLogs; }