/** * Submit personas to the collection * Handles both authenticated and anonymous submission workflows * * Security Features: * - Rate limiting to prevent spam (5 submissions per hour per session) * - URL length validation for GitHub limits * - No email submission pathway (GitHub account required) */ import { Persona } from '../types/persona.js'; import { RateLimitStatus } from '../utils/RateLimiter.js'; export declare class PersonaSubmitter { private rateLimiter; constructor(); /** * Generate GitHub issue for persona submission * Includes URL length validation to comply with GitHub's ~8KB limit */ generateSubmissionIssue(persona: Persona): { issueTitle: string; issueBody: string; githubIssueUrl: string; rateLimitStatus?: RateLimitStatus; }; /** * Format submission response for authenticated users */ formatSubmissionResponse(persona: Persona, githubIssueUrl: string, personaIndicator?: string): string; /** * Format anonymous submission response for unauthenticated users */ formatAnonymousSubmissionResponse(persona: Persona, githubIssueUrl: string, personaIndicator?: string): string; /** * Build the full issue body with all persona details */ private buildIssueBody; /** * Build a truncated issue body to fit within URL limits */ private buildTruncatedIssueBody; /** * Serialize persona metadata to YAML format */ private serializeMetadata; /** * Build the GitHub issue URL */ private buildGitHubIssueUrl; /** * Build common response header used by both authenticated and anonymous responses */ private buildResponseHeader; /** * Build standard submission steps for authenticated users */ private buildStandardSubmissionSteps; /** * Build anonymous submission process instructions */ private buildAnonymousSubmissionProcess; /** * Build anonymous submission next steps and expectations */ private buildAnonymousNextSteps; } //# sourceMappingURL=PersonaSubmitter.d.ts.map