import { LCNAuthedProfileValidator, LCNConnectionProfileValidator, LCNProfile, LCNPublicProfileValidator } from '@learncard/types';
import { ProfileType } from '../types/profile';
import { BoostInstance } from '.././models/index';
export declare const ProfileAccessTierEnum: {
    readonly self: "self";
    readonly connection: "connection";
    readonly authenticated: "authenticated";
    readonly unauthenticated: "unauthenticated";
};
export type ProfileAccessTier = (typeof ProfileAccessTierEnum)[keyof typeof ProfileAccessTierEnum];
export type AuthenticatedProfileAccessTier = Exclude<ProfileAccessTier, typeof ProfileAccessTierEnum.unauthenticated>;
export declare const resolveProfileTier: (viewer: ProfileType | null, target: ProfileType) => Promise<ProfileAccessTier>;
export declare const resolveAuthenticatedProfileTier: (viewer: ProfileType, target: ProfileType) => Promise<AuthenticatedProfileAccessTier>;
type PublicProfileType = ReturnType<typeof LCNPublicProfileValidator.parse>;
type AuthedProfileType = ReturnType<typeof LCNAuthedProfileValidator.parse>;
type ConnectionProfileType = ReturnType<typeof LCNConnectionProfileValidator.parse>;
export declare function sanitizeProfileForTier(profile: ProfileType, tier: typeof ProfileAccessTierEnum.self): LCNProfile;
export declare function sanitizeProfileForTier(profile: ProfileType, tier: typeof ProfileAccessTierEnum.connection): ConnectionProfileType;
export declare function sanitizeProfileForTier(profile: ProfileType, tier: typeof ProfileAccessTierEnum.authenticated): AuthedProfileType;
export declare function sanitizeProfileForTier(profile: ProfileType, tier: typeof ProfileAccessTierEnum.unauthenticated): PublicProfileType;
export declare function sanitizeProfileForTier(profile: ProfileType, tier: ProfileAccessTier): LCNProfile | ConnectionProfileType | AuthedProfileType | PublicProfileType;
export declare const sanitizeProfileForViewer: (viewer: ProfileType | null, target: ProfileType) => Promise<ReturnType<typeof sanitizeProfileForTier>>;
export declare const stripSensitiveProfileListFields: <T extends Record<string, unknown>>(profile: T) => T;
export declare const isPrivateToUnauthenticated: (target: ProfileType) => boolean;
export declare const canViewerSeeFullBoostRecipientList: (viewerProfileId: string, boost: BoostInstance, domain: string) => Promise<boolean>;
export declare const sanitizeBoostRecipientRecords: <T extends {
    to: any;
}>(viewerProfile: ProfileType, records: T[], forcePublicTier?: boolean) => Promise<T[]>;
export {};
//# sourceMappingURL=profile-privacy.helpers.d.ts.map