export type PublicationCapability = "repository-create" | "repository-push"; export type PermissionObservationResult = "verified" | "denied" | "unknown"; export type GithubPublicationTargetKind = "user" | "org"; export interface CanonicalGithubPublicationTarget { kind: GithubPublicationTargetKind; owner: string; value: `github:${GithubPublicationTargetKind}/${string}`; } export type PermissionEvidence = { kind: "personal-self-target"; actorConfirmed: boolean; } | { kind: "organization-create"; effectiveMembership: "verified" | "unknown"; creationPolicy: "verified" | "unknown"; administrator: "verified" | "unknown"; } | { kind: "repository-push"; canPush: boolean; } | { kind: "confirmed-denial"; } | { kind: "unavailable"; reason: "404-or-invisible" | "offline" | "timeout" | "rate-limit"; } | { kind: "ambiguous"; }; export type PermissionEvidenceClass = "personal-self-target" | "organization-membership-and-create-policy" | "organization-administrator" | "repository-push" | "confirmed-denial" | "404-or-invisible" | "offline" | "timeout" | "rate-limit" | "ambiguous"; export interface PermissionObservation { capability: PublicationCapability; target: CanonicalGithubPublicationTarget["value"]; repository: string; actor: string | null; attempt_id: string; policy_epoch: number; result: PermissionObservationResult; observed_at: string; evidence_class: PermissionEvidenceClass; } export interface BuildPermissionObservationInput { capability: PublicationCapability; target: string; repository: string; actor: string | null | undefined; attemptId: string; policyEpoch: number; observedAt: string; evidence: PermissionEvidence; } export declare function parseGithubPublicationTarget(target: string): CanonicalGithubPublicationTarget | null; export declare function buildPermissionObservation(input: BuildPermissionObservationInput): PermissionObservation; export interface RequiredPermissionObservation { capability: PublicationCapability; target: string; repository: string; actor: string; attemptId: string; policyEpoch: number; observedAt: string; maxAgeMs?: number; } export declare function assertFreshVerifiedPermission(observation: PermissionObservation | null | undefined, required: RequiredPermissionObservation): void; export declare function classifyPermissionEvidence(input: { capability: PublicationCapability; target: CanonicalGithubPublicationTarget; actor: string | null; evidence: PermissionEvidence; }): { result: PermissionObservationResult; evidenceClass: PermissionEvidenceClass; }; export declare function formatLastObservedPermission(observation: PermissionObservation): string; //# sourceMappingURL=permission-observation.d.ts.map