export function normalizeEmail(value: unknown): string;
export function normalizeName(value: unknown): string;
export function getCurrentUserIdentity(editor: {
    options?: {
        user?: {
            id?: unknown;
            name?: unknown;
            email?: unknown;
        };
    };
} | null | undefined): UserIdentity;
export function getChangeAuthorIdentity(changeOrAttrs: any): UserIdentity;
export function classifyOwnership({ currentUser, change }: {
    currentUser?: UserIdentity;
    change?: UserIdentity;
}): OwnershipClassification;
export function isSameUserHighConfidence(classification: OwnershipClassification): boolean;
export function matchesSameUserRefinement({ currentUser, change }: {
    currentUser?: UserIdentity;
    change?: UserIdentity;
}): boolean;
export function shouldCollapseNoEmailInsertion({ currentUser, insertionAttrs }: {
    currentUser?: {
        id?: unknown;
        name?: unknown;
        email?: unknown;
    };
    insertionAttrs?: Record<string, unknown> | null | undefined;
}): boolean;
export type UserIdentity = {
    /**
     * normalized actor id, '' when unknown.
     */
    id: string;
    /**
     * normalized email, '' when unknown.
     */
    email: string;
    /**
     * display name (may be empty).
     */
    name: string;
    /**
     * true when normalized id is non-empty.
     */
    hasId: boolean;
    /**
     * true when normalized email is non-empty.
     */
    hasEmail: boolean;
    /**
     * imported author provenance, when present.
     */
    importedAuthor?: string | undefined;
};
export type OwnershipClassification = ("same-user" | "different-user" | "unknown-current-user" | "unknown-change-author" | "conflicting");
//# sourceMappingURL=identity.d.ts.map