import { AuthMethod, Organization, Session, User, XID } from '../types';
export interface DecodedJWT {
    header: {
        alg: string;
        typ: string;
        kid?: string;
    };
    payload: {
        sub: XID;
        aud: string;
        iss: string;
        exp: number;
        iat: number;
        nbf?: number;
        jti?: XID;
        user_type?: string;
        organization_id?: XID;
        permissions?: string[];
        roles?: string[];
        mfa_verified?: boolean;
        device_id?: string;
        client_id?: string;
    };
    signature: string;
}
export declare const decodeJWT: (token: string) => DecodedJWT | null;
export declare const isTokenExpired: (token: string) => boolean;
export declare const getTokenExpiration: (token: string) => Date | null;
export declare const getTokenTimeToExpiry: (token: string) => number;
export declare const isSessionActive: (session: Session) => boolean;
export declare const getSessionTimeRemaining: (session: Session) => number;
export declare const formatSessionDuration: (session: Session) => string;
export declare const getUserDisplayName: (user: User) => string;
export declare const getUserInitials: (user: User) => string;
export declare const isUserVerified: (user: User) => boolean;
export declare const getUserVerificationStatus: (user: User) => {
    isVerified: boolean;
    emailVerified: boolean;
    phoneVerified: boolean;
    missingVerifications: string[];
};
export declare const canUserAccessOrganization: (user: User, organizationId: XID) => boolean;
export declare const getUserRoleInOrganization: (user: User, organizationId: XID) => string | null;
export declare const getUserPermissionsInOrganization: (user: User, organizationId: XID) => string[];
export declare const hasPermission: (user: User, permission: string, organizationId?: XID) => boolean;
export declare const hasRole: (user: User, role: string, organizationId?: XID) => boolean;
export declare const isUserOrganizationOwner: (user: User, organization: Organization) => boolean;
export declare const canUserManageOrganization: (user: User, organization: Organization) => boolean;
export declare const canUserInviteMembers: (user: User, organization: Organization) => boolean;
export declare const getRequiredAuthMethods: (methods: AuthMethod[]) => AuthMethod[];
export declare const isAuthMethodAvailable: (method: AuthMethod, enabledMethods: AuthMethod[]) => boolean;
export declare const getAuthMethodDisplayName: (method: AuthMethod) => string;
export declare const validatePasswordStrength: (password: string) => {
    score: number;
    feedback: string[];
    isValid: boolean;
};
export declare const getPasswordStrengthLabel: (score: number) => string;
export declare const isCommonPassword: (password: string) => boolean;
export declare const formatBackupCode: (code: string) => string;
export declare const validateTOTPCode: (code: string) => boolean;
export declare const validateSMSCode: (code: string) => boolean;
export declare const validateBackupCode: (code: string) => boolean;
export declare const getDeviceInfo: () => {
    deviceType: "desktop" | "mobile" | "tablet" | "unknown";
    browser?: string;
    operatingSystem?: string;
    userAgent: string;
};
export declare const isPasskeySupported: () => boolean;
export declare const getPasskeySupport: () => Promise<{
    supported: boolean;
    conditionalUI: boolean;
    platformAuthenticator: boolean;
}>;
export declare const buildRedirectUrl: (baseUrl: string, params: Record<string, string | undefined>) => string;
export declare const parseAuthCallback: (url: string) => {
    code?: string;
    state?: string;
    error?: string;
    error_description?: string;
};
export declare const generateRandomState: () => string;
export declare const isSecureContext: () => boolean;
export declare const requireSecureContext: () => void;
export declare const sanitizeRedirectUrl: (url: string, allowedDomains: string[]) => string | null;
export declare const createAuthEvent: (type: string, data?: Record<string, any>) => CustomEvent;
export declare const dispatchAuthEvent: (type: string, data?: Record<string, any>) => void;
//# sourceMappingURL=auth.d.ts.map