import type { Hlc } from "../util/hlc.js"; export { comparePublicationCoordinates, type PublicationCoordinateComparison, } from "../util/publication-coordinate.js"; export declare const DESTINATION_POLICY_SCHEMA_MAJOR: 2; export declare const LEGACY_DESTINATION_POLICY_SCHEMA_MAJOR: 1; export declare const MINIMUM_DESTINATION_POLICY_WRITER_VERSION = "0.20.0"; export type DestinationSubjectKind = "mesh" | "vault"; export type DestinationKind = "local" | "github"; export type DestinationTargetKind = "user" | "org"; export type MeshDestinationSource = "explicit" | "authenticated-default" | "auto-fallback-local" | "legacy-derived"; export type VaultDestinationSource = "mesh-inherited" | "vault-override" | "legacy-derived"; export type DestinationSource = MeshDestinationSource | VaultDestinationSource; export type DestinationPolicyState = "active" | "tombstoned"; export interface DestinationPolicyValue { destinationKind: DestinationKind; targetOwner: string | null; targetKind: DestinationTargetKind | null; repositoryName?: string | null; source: DestinationSource; } export interface DestinationPolicyRecordV1 extends DestinationPolicyValue { schemaMajor: typeof LEGACY_DESTINATION_POLICY_SCHEMA_MAJOR | typeof DESTINATION_POLICY_SCHEMA_MAJOR; podRid: string; subjectKind: DestinationSubjectKind; subjectRid: string; state: DestinationPolicyState; policyEpoch?: number; writerVersion: string; writerId: string; hlc: Hlc; seq: number; recordedAt: string; } export interface ResolvedDestinationPolicy { value: DestinationPolicyValue | null; authority: "policy-ledger" | "legacy-projection" | null; } export type EffectiveOwnedDestination = { kind: "github"; owner: string; targetKind: DestinationTargetKind; repositoryName: string | null; source: MeshDestinationSource | VaultDestinationSource; } | { kind: "local"; source: MeshDestinationSource | VaultDestinationSource; } | { kind: "unconfigured"; reason: "foreign" | "missing-policy" | "quarantined-policy"; }; export interface OwnedDestinationVaultView { source: "own" | "shared" | "subscribed"; destinationKind: DestinationKind | null; destinationSource: VaultDestinationSource | null; destinationTarget: string | null; destinationTargetKind: DestinationTargetKind | null; destinationRepositoryName?: string | null; } export interface OwnedDestinationMeshView { ownCreated: boolean; destinationKind?: DestinationKind | null; destinationSource?: MeshDestinationSource | null; destinationTarget?: string | null; destinationTargetKind?: DestinationTargetKind | null; } export declare class DestinationPolicyValidationError extends Error { readonly errorCode = "invalid-destination-policy"; } export declare class UnsupportedDestinationPolicySchemaError extends Error { readonly errorCode = "unsupported-destination-policy-schema"; } export declare class DestinationPolicyWriterUpgradeRequiredError extends Error { readonly actualVersion: string; readonly errorCode = "destination-policy-writer-upgrade-required"; constructor(actualVersion: string); } export declare function destinationPolicyKey(subjectKind: DestinationSubjectKind, subjectRid: string): string; export declare function resolveDestinationPolicy(winner: DestinationPolicyRecordV1 | null, legacyProjection: DestinationPolicyValue | null): ResolvedDestinationPolicy; export declare function resolveEffectiveOwnedDestination(vault: OwnedDestinationVaultView, mesh: OwnedDestinationMeshView | null | undefined): EffectiveOwnedDestination; export declare function resolveEffectiveOwnedMeshDestination(mesh: OwnedDestinationMeshView | null | undefined): EffectiveOwnedDestination; export declare function assertSupportedDestinationPolicyWriter(version: string): void; export declare function validateDestinationPolicyValue(subjectKind: DestinationSubjectKind, value: DestinationPolicyValue): void; export declare function parseCanonicalDestinationTarget(raw: string): { destinationKind: "github"; targetKind: DestinationTargetKind; targetOwner: string; } | null; export declare function publicationCoordinateOwner(raw: string): string | null; //# sourceMappingURL=destination-policy.d.ts.map