import type { FrontierSourceLanguage, SemanticMergeReadiness } from '@shapeshift-labs/frontier-lang-kernel'; import type { NativeImportLossSummary } from './native-import-losses.js'; import type { NativeImportResultContract } from './native-import-contracts.js'; import type { NativeProjectImportResult } from './native-project.js'; import type { NativeProjectAdmissionSemanticEvidence } from './native-project-admission-semantic-evidence.js'; import type { SemanticMergeCandidateAdmissionRecord, SemanticMergeCandidateOverlapRecord, SemanticMergeCandidateProjectionRisk } from './semantic-merge-candidates.js'; export type { NativeProjectAdmissionSemanticEvidence, NativeProjectAdmissionSemanticEvidenceWarning, NativeProjectAdmissionSemanticEvidenceWarningCode } from './native-project-admission-semantic-evidence.js'; export type NativeProjectImportAdmissionAction = 'admit' | 'prioritize' | 'reject'; export type NativeProjectImportAdmissionPriority = 'low' | 'normal' | 'high' | 'critical' | 'blocker'; export type NativeProjectImportAdmissionRisk = 'low' | 'medium' | 'high' | 'unknown'; export type NativeProjectSourcePreservationQuality = 'exact' | 'lossy' | 'missing' | 'stale' | 'empty'; export interface NativeProjectAdmissionParserEvidence { readonly parser?: string; readonly astFormat?: string; readonly exactness?: string; readonly semanticCoverageLevel?: string; readonly exactAst: boolean; readonly tokens: boolean; readonly trivia: boolean; readonly diagnostics: boolean; readonly diagnosticCount: number; readonly sourceRanges: boolean; readonly generatedRanges: boolean; readonly evidenceRecords: number; readonly missing: boolean; } export interface NativeProjectAdmissionParserEvidenceSummary { readonly parsers: readonly string[]; readonly byParser: Readonly>; readonly byExactness: Readonly>; readonly semanticCoverageLevels: readonly string[]; readonly exactAstSources: number; readonly tokenSources: number; readonly triviaSources: number; readonly sourceRangeSources: number; readonly generatedRangeSources: number; readonly diagnosticsSources: number; readonly missingParserSources: number; readonly evidenceRecords: number; } export interface NativeProjectAdmissionSemanticMergeScoreSummary { readonly sourceCount: number; readonly min: number; readonly max: number; readonly average: number; readonly sortKey: number; readonly lowestSourcePaths: readonly string[]; } export interface NativeProjectAdmissionMissingEvidenceHint { readonly evidenceKey?: string; readonly task: string; readonly count: number; readonly sourcePaths: readonly string[]; readonly languages: readonly string[]; readonly lossIds: readonly string[]; readonly lossKinds: readonly string[]; readonly lossClasses: readonly string[]; readonly readiness: SemanticMergeReadiness; } export interface NativeProjectAdmissionTaskHint { readonly id?: string; readonly task: string; readonly reason?: string; readonly priority: NativeProjectImportAdmissionPriority; readonly readiness: SemanticMergeReadiness; readonly count: number; readonly sourcePaths: readonly string[]; readonly languages: readonly string[]; readonly lossClasses: readonly string[]; readonly evidenceKeys: readonly string[]; } export interface NativeProjectAdmissionSourceSummary { readonly id?: string; readonly language: FrontierSourceLanguage | string; readonly sourcePath?: string; readonly sourceHash?: string; readonly readiness: SemanticMergeReadiness; readonly parser?: string; readonly parserEvidence: NativeProjectAdmissionParserEvidence; readonly semanticCounts: { readonly symbols: number; readonly occurrences: number; readonly relations: number; readonly facts: number; }; readonly semanticSymbols: number; readonly emptySemanticEvidence: boolean; readonly sourcePreservationQuality: NativeProjectSourcePreservationQuality; readonly lossClasses: readonly string[]; readonly semanticMergeScore: number; readonly missingEvidence: readonly NativeProjectAdmissionMissingEvidenceHint[]; readonly nextMissingTask?: NativeProjectAdmissionTaskHint; readonly nextMissingTasks: readonly NativeProjectAdmissionTaskHint[]; } export interface NativeProjectAdmissionLanguageReadinessSummary { readonly language: FrontierSourceLanguage | string; readonly readiness: SemanticMergeReadiness; readonly sourceCount: number; readonly sourcePaths: readonly string[]; readonly byLossClass: Readonly>; readonly parserEvidence: NativeProjectAdmissionParserEvidenceSummary; readonly semanticMergeScore: NativeProjectAdmissionSemanticMergeScoreSummary; readonly topMissingEvidence: readonly NativeProjectAdmissionMissingEvidenceHint[]; readonly nextMissingTasks: readonly NativeProjectAdmissionTaskHint[]; } export interface NativeProjectAdmissionLanguageSummary { readonly language: FrontierSourceLanguage | string; readonly sourceCount: number; readonly sourcePaths: readonly string[]; readonly readiness: SemanticMergeReadiness; readonly semanticSymbols: number; readonly emptySemanticEvidenceSources: number; readonly sourcePreservationQuality: NativeProjectSourcePreservationQuality; readonly staleSourcePaths: readonly string[]; readonly mergeCandidates: number; readonly highestRisk: NativeProjectImportAdmissionRisk; readonly byReadiness: Readonly>; readonly byLossClass: Readonly>; readonly parserEvidence: NativeProjectAdmissionParserEvidenceSummary; readonly semanticMergeScore: NativeProjectAdmissionSemanticMergeScoreSummary; readonly topMissingEvidence: readonly NativeProjectAdmissionMissingEvidenceHint[]; readonly nextMissingTasks: readonly NativeProjectAdmissionTaskHint[]; } export interface NativeProjectAdmissionLanguages { readonly total: number; readonly byReadiness: Readonly>; readonly bySourceReadiness: Readonly>; readonly byLossClass: Readonly>; readonly bySourcePreservationQuality: Readonly>; readonly parserEvidence: NativeProjectAdmissionParserEvidenceSummary; readonly semanticMergeScore: NativeProjectAdmissionSemanticMergeScoreSummary; readonly topMissingEvidence: readonly NativeProjectAdmissionMissingEvidenceHint[]; readonly nextMissingTasks: readonly NativeProjectAdmissionTaskHint[]; readonly sourceRows: readonly NativeProjectAdmissionSourceSummary[]; readonly readinessRows: readonly NativeProjectAdmissionLanguageReadinessSummary[]; readonly rows: readonly NativeProjectAdmissionLanguageSummary[]; } export type NativeProjectAdmissionSourceStalenessReason = | 'source-hash-mismatch' | 'content-hash-mismatch' | 'source-preservation-hash-mismatch' | 'source-hash-unverified' | 'base-hash-mismatch' | 'dirty-workspace'; export interface NativeProjectAdmissionSourceStalenessRecord { readonly sourcePath?: string; readonly sourceHash?: string; readonly declaredSourceHash?: string; readonly contentHash?: string; readonly declaredContentHash?: string; readonly baseHash?: string; readonly expectedBaseHash?: string; readonly currentBaseHash?: string; readonly staleByContentHash: boolean; readonly staleByBaseHash: boolean; readonly dirtyWorkspace: boolean; readonly unverifiedSourceHash: boolean; readonly reasonCodes: readonly NativeProjectAdmissionSourceStalenessReason[]; } export interface NativeProjectAdmissionSourceStaleness { readonly total: number; readonly stale: number; readonly contentHashStale: number; readonly baseHashStale: number; readonly dirtyWorkspace: number; readonly unverified: number; readonly staleSourcePaths: readonly string[]; readonly contentHashStaleSourcePaths: readonly string[]; readonly baseHashStaleSourcePaths: readonly string[]; readonly dirtyWorkspaceSourcePaths: readonly string[]; readonly unverifiedSourcePaths: readonly string[]; readonly records: readonly NativeProjectAdmissionSourceStalenessRecord[]; } export interface NativeProjectAdmissionSourcePreservation { readonly quality: NativeProjectSourcePreservationQuality; readonly total: number; readonly exactSourceAvailable: number; readonly sourceBytes: number; readonly tokens: number; readonly trivia: number; readonly directives: number; readonly comments: number; readonly truncated: boolean; readonly stale: number; readonly missing: number; readonly lossy: number; readonly contentHashStale: number; readonly baseHashStale: number; readonly dirtyWorkspace: number; readonly staleSourcePaths: readonly string[]; readonly contentHashStaleSourcePaths: readonly string[]; readonly baseHashStaleSourcePaths: readonly string[]; readonly dirtyWorkspaceSourcePaths: readonly string[]; readonly lossySourcePaths: readonly string[]; readonly byQuality: Readonly>; } export interface NativeProjectAdmissionOwnership { readonly total: number; readonly changed: number; readonly ids: readonly string[]; readonly keys: readonly string[]; readonly changedIds: readonly string[]; readonly changedKeys: readonly string[]; readonly candidateRegionConflictKeys: readonly string[]; readonly sourcePaths: readonly string[]; readonly byKind: Readonly>; readonly byGranularity: Readonly>; readonly byPrecision: Readonly>; readonly byLanguage: Readonly>; } export interface NativeProjectAdmissionMergeCandidates { readonly total: number; readonly readiness: SemanticMergeReadiness; readonly highestRisk: NativeProjectImportAdmissionRisk; readonly byRisk: Readonly>; readonly byReadiness: Readonly>; readonly byProjectionRisk: Readonly>; readonly highRiskCandidateIds: readonly string[]; readonly reviewCandidateIds: readonly string[]; readonly blockedCandidateIds: readonly string[]; readonly highProjectionRiskCandidateIds: readonly string[]; readonly conflictKeys: readonly string[]; readonly readinessOrderCandidateIds: readonly string[]; readonly changedSemanticRegions: { readonly total: number; readonly byKind: Readonly>; readonly conflictKeys: readonly string[]; }; readonly overlaps: { readonly total: number; readonly candidateIds: readonly string[]; readonly conflictKeys: readonly string[]; readonly sourcePaths: readonly string[]; readonly pairs: readonly SemanticMergeCandidateOverlapRecord[]; }; readonly records: readonly SemanticMergeCandidateAdmissionRecord[]; readonly projectionRisk?: SemanticMergeCandidateProjectionRisk; readonly patchRisk?: NativeProjectImportAdmissionRisk; } export type NativeProjectAdmissionScoreComponentKey = | 'semanticEvidence' | 'sourcePreservation' | 'sourceFreshness' | 'ownershipChange' | 'proofReadiness' | 'targetProjectionCoverage'; export type NativeProjectAdmissionScoreComponentStatus = 'strong' | 'partial' | 'weak' | 'blocked'; export interface NativeProjectAdmissionScoreComponent { readonly key: NativeProjectAdmissionScoreComponentKey; readonly score: number; readonly weight: number; readonly weightedScore: number; readonly status: NativeProjectAdmissionScoreComponentStatus; readonly reasons: readonly string[]; readonly signals: Record; } export interface NativeProjectAdmissionMergeScoreComponents { readonly semanticEvidence: NativeProjectAdmissionScoreComponent; readonly sourcePreservation: NativeProjectAdmissionScoreComponent; readonly sourceFreshness: NativeProjectAdmissionScoreComponent; readonly ownershipChange: NativeProjectAdmissionScoreComponent; readonly proofReadiness: NativeProjectAdmissionScoreComponent; readonly targetProjectionCoverage: NativeProjectAdmissionScoreComponent; } export interface NativeProjectAdmissionMergeScore { readonly schema: 'frontier.lang.semanticMergeScore.v1'; readonly version: 1; readonly value: number; readonly uncappedValue: number; readonly sortKey: number; readonly higherIsBetter: true; readonly readiness: SemanticMergeReadiness; readonly risk: NativeProjectImportAdmissionRisk; readonly action: NativeProjectImportAdmissionAction; readonly priority: NativeProjectImportAdmissionPriority; readonly components: NativeProjectAdmissionMergeScoreComponents; readonly penalties: readonly string[]; } export interface NativeProjectImportAdmission { readonly kind: 'frontier.lang.projectImportAdmission'; readonly version: 1; readonly projectImportId?: string; readonly language?: FrontierSourceLanguage | 'mixed' | string; readonly projectRoot?: string; readonly action: NativeProjectImportAdmissionAction; readonly priority: NativeProjectImportAdmissionPriority; readonly readiness: SemanticMergeReadiness; readonly sourceCount: number; readonly languages: NativeProjectAdmissionLanguages; readonly semanticEvidence: NativeProjectAdmissionSemanticEvidence; readonly sourceStaleness: NativeProjectAdmissionSourceStaleness; readonly sourcePreservation: NativeProjectAdmissionSourcePreservation; readonly ownership: NativeProjectAdmissionOwnership; readonly mergeCandidates: NativeProjectAdmissionMergeCandidates; readonly mergeScore?: NativeProjectAdmissionMergeScore; readonly reasons: readonly string[]; readonly metadata: Record; } export interface CreateProjectImportAdmissionRecordOptions { readonly importResultContract?: NativeImportResultContract; readonly lossSummary?: NativeImportLossSummary; } export declare function createProjectImportAdmissionRecord( projectResult: NativeProjectImportResult, options?: CreateProjectImportAdmissionRecordOptions ): NativeProjectImportAdmission;