export interface OxyConfig {
    baseURL: string;
    cloudURL?: string;
    enableCache?: boolean;
    cacheTTL?: number;
    enableRequestDeduplication?: boolean;
    enableRetry?: boolean;
    maxRetries?: number;
    retryDelay?: number;
    requestTimeout?: number;
    maxConcurrentRequests?: number;
    requestQueueSize?: number;
    enableLogging?: boolean;
    logLevel?: 'none' | 'error' | 'warn' | 'info' | 'debug';
    onRequestStart?: (url: string, method: string) => void;
    onRequestEnd?: (url: string, method: string, duration: number, success: boolean) => void;
    onRequestError?: (url: string, method: string, error: Error) => void;
}
export interface User {
    id: string;
    publicKey: string;
    username: string;
    email?: string;
    avatar?: string;
    privacySettings?: {
        [key: string]: unknown;
    };
    name?: {
        first?: string;
        last?: string;
        full?: string;
        [key: string]: unknown;
    };
    bio?: string;
    karma?: number;
    location?: string;
    website?: string;
    createdAt?: string;
    updatedAt?: string;
    links?: Array<{
        title?: string;
        description?: string;
        image?: string;
        link: string;
    }>;
    _count?: {
        followers?: number;
        following?: number;
    };
    accountExpiresAfterInactivityDays?: number | null;
    [key: string]: unknown;
}
export interface LoginResponse {
    accessToken?: string;
    refreshToken?: string;
    token?: string;
    user: User;
    message?: string;
}
export interface Notification {
    id: string;
    message: string;
}
export interface Wallet {
    id: string;
    balance: number;
}
export interface Transaction {
    id: string;
    amount: number;
    type: string;
    timestamp: string;
}
export interface BlockedUser {
    _id?: string;
    blockedId: string | {
        _id: string;
        username: string;
        avatar?: string;
    };
    userId: string;
    createdAt?: string;
    blockedAt?: string;
    username?: string;
    avatar?: string;
}
export interface RestrictedUser {
    _id?: string;
    restrictedId: string | {
        _id: string;
        username: string;
        avatar?: string;
    };
    userId: string;
    createdAt?: string;
    restrictedAt?: string;
    username?: string;
    avatar?: string;
}
export interface TransferFundsRequest {
    fromUserId: string;
    toUserId: string;
    amount: number;
}
export interface PurchaseRequest {
    userId: string;
    itemId: string;
    amount: number;
}
export interface WithdrawalRequest {
    userId: string;
    amount: number;
    address: string;
}
export interface TransactionResponse {
    success: boolean;
    transaction: Transaction;
}
export interface PaginationInfo {
    total: number;
    limit: number;
    offset: number;
    hasMore: boolean;
}
export interface SearchProfilesResponse {
    data: User[];
    pagination: PaginationInfo;
}
export interface KarmaRule {
    id: string;
    description: string;
}
export interface KarmaHistory {
    id: string;
    userId: string;
    points: number;
}
export interface KarmaLeaderboardEntry {
    userId: string;
    total: number;
}
export interface KarmaAwardRequest {
    userId: string;
    points: number;
    reason?: string;
}
export interface ApiError {
    message: string;
    code: string;
    status: number;
    details?: Record<string, unknown>;
}
export interface PaymentMethod {
    id: string;
    type: string;
}
export interface PaymentRequest {
    userId: string;
    planId: string;
    paymentMethodId: string;
}
export interface PaymentResponse {
    transactionId: string;
    status: string;
}
export interface AnalyticsData {
    userId: string;
}
export interface FollowerDetails {
    userId: string;
    followers: number;
}
export interface ContentViewer {
    userId: string;
    viewedAt: string;
}
/**
 * File management interfaces
 */
export interface FileMetadata {
    id: string;
    filename: string;
    contentType: string;
    length: number;
    chunkSize: number;
    uploadDate: string;
    metadata?: {
        userId?: string;
        description?: string;
        title?: string;
        tags?: string[];
        [key: string]: unknown;
    };
    variants?: Array<{
        type: string;
        key: string;
        width?: number;
        height?: number;
        readyAt?: string;
        metadata?: Record<string, unknown>;
    }>;
}
export interface FileUploadResponse {
    files: FileMetadata[];
}
export interface FileListResponse {
    files: FileMetadata[];
    total: number;
    hasMore: boolean;
}
export interface FileUpdateRequest {
    filename?: string;
    metadata?: {
        description?: string;
        title?: string;
        tags?: string[];
        [key: string]: unknown;
    };
}
export interface FileDeleteResponse {
    success: boolean;
    message: string;
    fileId: string;
}
/**
 * Central Asset Service interfaces
 */
/**
 * File visibility levels
 * - private: Only accessible by owner (default)
 * - public: Accessible by anyone without authentication (e.g., avatars, public profile content)
 * - unlisted: Accessible with direct link but not listed publicly
 */
export type FileVisibility = 'private' | 'public' | 'unlisted';
export interface AssetLink {
    app: string;
    entityType: string;
    entityId: string;
    createdBy: string;
    createdAt: string;
}
export type AssetMetadata = Record<string, string | number | boolean | null | undefined>;
export interface AssetVariant {
    type: string;
    key: string;
    width?: number;
    height?: number;
    readyAt?: string;
    size?: number;
    metadata?: AssetMetadata;
}
export interface Asset {
    id: string;
    sha256: string;
    size: number;
    mime: string;
    ext: string;
    originalName?: string;
    ownerUserId: string;
    status: 'active' | 'trash' | 'deleted';
    visibility: FileVisibility;
    usageCount: number;
    createdAt: string;
    updatedAt: string;
    links: AssetLink[];
    variants: AssetVariant[];
    metadata?: AssetMetadata;
}
export interface AssetInitRequest {
    sha256: string;
    size: number;
    mime: string;
}
export interface AssetInitResponse {
    uploadUrl: string;
    fileId: string;
    sha256: string;
}
export interface AssetCompleteRequest {
    fileId: string;
    originalName: string;
    size: number;
    mime: string;
    visibility?: FileVisibility;
    metadata?: AssetMetadata;
}
export interface AssetLinkRequest {
    app: string;
    entityType: string;
    entityId: string;
    visibility?: FileVisibility;
}
export interface AssetUnlinkRequest {
    app: string;
    entityType: string;
    entityId: string;
}
export interface AssetUrlResponse {
    success: boolean;
    url: string;
    variant?: string;
    expiresIn: number;
}
export interface AssetDeleteSummary {
    fileId: string;
    wouldDelete: boolean;
    affectedApps: string[];
    remainingLinks: number;
    variants: string[];
}
export interface AssetUpdateVisibilityRequest {
    visibility: FileVisibility;
}
export interface AssetUpdateVisibilityResponse {
    success: boolean;
    file: {
        id: string;
        visibility: FileVisibility;
        updatedAt: string;
    };
}
/**
 * Account storage usage (server-side usage, not local AsyncStorage)
 */
export interface AccountStorageCategoryUsage {
    bytes: number;
    count: number;
}
export interface AccountStorageUsageResponse {
    plan: 'basic' | 'pro' | 'business';
    totalUsedBytes: number;
    totalLimitBytes: number;
    categories: {
        documents: AccountStorageCategoryUsage;
        mail: AccountStorageCategoryUsage;
        photosVideos: AccountStorageCategoryUsage;
        recordings: AccountStorageCategoryUsage;
        family: AccountStorageCategoryUsage;
        other: AccountStorageCategoryUsage;
    };
    updatedAt: string;
}
/**
 * Security activity event types
 */
export type SecurityEventType = 'sign_in' | 'sign_out' | 'email_changed' | 'profile_updated' | 'device_added' | 'device_removed' | 'account_recovery' | 'security_settings_changed' | 'suspicious_activity';
/**
 * Security event severity levels
 */
export type SecurityEventSeverity = 'low' | 'medium' | 'high' | 'critical';
/**
 * Security event severity mapping (single source of truth)
 * Maps each event type to its default severity level
 */
export declare const SECURITY_EVENT_SEVERITY_MAP: Record<SecurityEventType, SecurityEventSeverity>;
/**
 * Security activity event
 */
export interface SecurityActivity {
    id: string;
    userId: string;
    eventType: SecurityEventType;
    eventDescription: string;
    metadata?: Record<string, any>;
    ipAddress?: string;
    userAgent?: string;
    deviceId?: string;
    timestamp: string;
    severity: SecurityEventSeverity;
    createdAt: string;
}
/**
 * Security activity response with pagination
 */
export interface SecurityActivityResponse {
    data: SecurityActivity[];
    total: number;
    limit: number;
    offset: number;
    hasMore: boolean;
}
export interface AssetUploadProgress {
    fileId: string;
    uploaded: number;
    total: number;
    percentage: number;
    status: 'uploading' | 'processing' | 'complete' | 'error';
    error?: string;
}
export interface DeviceSession {
    sessionId: string;
    deviceId: string;
    deviceName: string;
    isActive: boolean;
    lastActive: string;
    expiresAt: string;
    isCurrent: boolean;
    user?: User;
    createdAt?: string;
}
export interface DeviceSessionsResponse {
    deviceId: string;
    sessions: DeviceSession[];
}
export interface DeviceSessionLogoutResponse {
    message: string;
    deviceId: string;
    sessionsTerminated: number;
}
export interface UpdateDeviceNameResponse {
    message: string;
    deviceName: string;
}
//# sourceMappingURL=interfaces.d.ts.map