import type { ConnectionId, CredentialMutationAuthority, CredentialReferenceId, PrincipalId } from "@awp/contracts";
export type CredentialAuthorityStatus = "active" | "handoff" | "fenced";
export interface CredentialAuthority {
    readonly connectionId: ConnectionId;
    readonly credentialReferenceId: CredentialReferenceId;
    readonly ownerId: PrincipalId;
    readonly pendingOwnerId?: PrincipalId;
    readonly generation: number;
    readonly status: CredentialAuthorityStatus;
    readonly revision: number;
}
export type CredentialAuthorityConflictCode = "CREDENTIAL_AUTHORITY_ALREADY_CLAIMED" | "STALE_CREDENTIAL_AUTHORITY" | "INVALID_CREDENTIAL_AUTHORITY_HANDOFF";
export declare class CredentialAuthorityConflictError extends Error {
    readonly code: CredentialAuthorityConflictCode;
    constructor(code: CredentialAuthorityConflictCode, message: string);
}
export declare function credentialMutationAuthority(authority: CredentialAuthority): CredentialMutationAuthority;
export declare function assertCredentialMutationAuthority(authority: CredentialAuthority, expected: CredentialMutationAuthority): void;
//# sourceMappingURL=credential-authority.d.ts.map