/** * InputSanitizer — Static validation and sanitization for all user inputs. * * Every method returns SanitizeResult — no throwing, no null returns. * * Changes from CLI: * - Unified return type (SanitizeResult) across all methods * - Uses scaffold's ValidationError (not local duplicate) * - Dropped CLI-only: validateProjectInitInput, sanitizeScenarioType, sanitizeAIAssistantType * - Consolidated validateIssueNumber + sanitizeIssueNumber into single sanitizeIssueNumber */ import type { SanitizeResult } from './types.js'; export declare class InputSanitizer { /** * Validate and sanitize an issue number. * Accepts number or string input, returns validated number. */ static sanitizeIssueNumber(input: unknown): SanitizeResult; /** Sanitize a git branch name. */ static sanitizeBranchName(input: string): SanitizeResult; /** Sanitize a general text value. */ static sanitizeTextValue(input: string): SanitizeResult; /** Validate a GitHub Projects V2 project ID. */ static validateProjectId(projectId: string): SanitizeResult; /** Validate a GitHub Projects V2 field ID. */ static validateFieldId(fieldId: string): SanitizeResult; /** Validate a GitHub Projects V2 item ID. */ static validateItemId(itemId: string): SanitizeResult; /** * Validate a container name against the active methodology's naming rule. * * The pattern and label come from the profile's execution container * (`namePattern` / `singular` / `nameExample`) so a Scrum sprint validates * as "Sprint 14" and a Shape Up cycle as "cycle-001-...", not forced into * Hydro's "wave-NNN". Falls back to the Hydro wave pattern only when no * profile pattern is supplied (legacy callers). */ static validateContainerFormat(name: string, opts?: { pattern?: string; label?: string; example?: string; }): SanitizeResult; /** Sanitize a GitHub issue comment. */ static sanitizeCommentText(input: string): SanitizeResult; /** Validate a workflow status value. */ static validateWorkflowStatus(status: string, validStatuses?: readonly string[]): SanitizeResult; /** Validate a repository name (owner/repo format). */ static validateRepositoryName(repo: string): SanitizeResult; /** Sanitize a project name. */ static sanitizeProjectName(input: string): SanitizeResult; /** Sanitize a field name. */ static sanitizeFieldName(input: string): SanitizeResult; /** Sanitize a field option value. */ static sanitizeFieldOption(input: string): SanitizeResult; /** * Sanitize a file path. * Must be absolute. Blocks path traversal (..), null bytes, and ~. */ static sanitizeFilePath(input: string): SanitizeResult; /** * Sanitize a file name (not a path). * Blocks separators, control chars, Windows reserved names. */ static sanitizeFileName(input: string): SanitizeResult; /** * Sanitize a wave name for branch/label use. * Alphanumeric + -_. only. Blocks reserved names, path traversal, slashes. */ static sanitizeWaveName(input: string): SanitizeResult; /** Sanitize a repository reference for shell safety. */ static sanitizeRepositoryReference(input: string): SanitizeResult; } //# sourceMappingURL=input-sanitizer.d.ts.map