import { UsersService } from './users.service';
export declare class UsersController {
    private readonly usersService;
    constructor(usersService: UsersService);
    getProfile(req: any): Promise<{
        id: string;
        email: string;
        phone: string | null;
        status: import(".prisma/client").$Enums.UserStatus;
        fullName: string;
        avatarUrl: string | null;
        role: import(".prisma/client").$Enums.UserRole;
        profile: {
            bio: string | null;
        } | null;
        tenantMemberships: ({
            tenant: {
                id: string;
                name: string;
                slug: string;
                description: string | null;
                logoUrl: string | null;
                coverImageUrl: string | null;
                aktaPendirian: string | null;
                npwp: string | null;
                skKemenkumham: string | null;
                email: string;
                phone: string | null;
                whatsapp: string | null;
                website: string | null;
                address: string | null;
                city: string | null;
                province: string | null;
                postalCode: string | null;
                bankName: string | null;
                bankAccountNumber: string | null;
                bankAccountName: string | null;
                status: import(".prisma/client").$Enums.TenantStatus;
                verifiedAt: Date | null;
                verifiedBy: string | null;
                rejectionReason: string | null;
                commissionRate: import("@prisma/client/runtime/library").Decimal;
                autoWithdraw: boolean;
                createdAt: Date;
                updatedAt: Date;
                deletedAt: Date | null;
            };
        } & {
            id: string;
            createdAt: Date;
            role: import(".prisma/client").$Enums.TenantMemberRole;
            tenantId: string;
            userId: string;
            invitedBy: string | null;
            joinedAt: Date;
        })[];
    } | null>;
    updateProfile(req: any, data: any): Promise<{
        user: {
            id: string;
            email: string;
            phone: string | null;
            status: import(".prisma/client").$Enums.UserStatus;
            createdAt: Date;
            updatedAt: Date;
            deletedAt: Date | null;
            passwordHash: string | null;
            fullName: string;
            avatarUrl: string | null;
            role: import(".prisma/client").$Enums.UserRole;
            emailVerified: boolean;
            phoneVerified: boolean;
            twoFactorEnabled: boolean;
            twoFactorSecret: string | null;
            googleId: string | null;
            lastLoginAt: Date | null;
            lastLoginIp: string | null;
        };
        tenantId: string;
    }>;
    getVerification(req: any): Promise<{
        id: string;
        status: import(".prisma/client").$Enums.VerificationStatus;
        verifiedAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        idCardNumber: string;
        idCardPhoto: string;
        selfiePhoto: string;
        notes: string | null;
    } | {
        status: "UNREGISTERED";
    }>;
    submitVerification(req: any, data: any): Promise<{
        id: string;
        status: import(".prisma/client").$Enums.VerificationStatus;
        verifiedAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        idCardNumber: string;
        idCardPhoto: string;
        selfiePhoto: string;
        notes: string | null;
    }>;
    getBankAccounts(req: any): Promise<{
        id: string;
        bankName: string;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        accountNumber: string;
        accountName: string;
        isPrimary: boolean;
    }[]>;
    addBankAccount(req: any, data: any): Promise<{
        id: string;
        bankName: string;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        accountNumber: string;
        accountName: string;
        isPrimary: boolean;
    }>;
    getWithdrawals(req: any): Promise<{
        id: string;
        bankName: string;
        status: import(".prisma/client").$Enums.WithdrawalStatus;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        notes: string | null;
        amount: import("@prisma/client/runtime/library").Decimal;
        proofImageUrl: string | null;
        accountNumber: string;
        accountName: string;
        processedAt: Date | null;
    }[]>;
    requestWithdrawal(req: any, data: any): Promise<{
        id: string;
        bankName: string;
        status: import(".prisma/client").$Enums.WithdrawalStatus;
        createdAt: Date;
        updatedAt: Date;
        userId: string;
        notes: string | null;
        amount: import("@prisma/client/runtime/library").Decimal;
        proofImageUrl: string | null;
        accountNumber: string;
        accountName: string;
        processedAt: Date | null;
    }>;
    getMyCampaigns(req: any): Promise<({
        tenant: {
            id: string;
            name: string;
            slug: string;
            description: string | null;
            logoUrl: string | null;
            coverImageUrl: string | null;
            aktaPendirian: string | null;
            npwp: string | null;
            skKemenkumham: string | null;
            email: string;
            phone: string | null;
            whatsapp: string | null;
            website: string | null;
            address: string | null;
            city: string | null;
            province: string | null;
            postalCode: string | null;
            bankName: string | null;
            bankAccountNumber: string | null;
            bankAccountName: string | null;
            status: import(".prisma/client").$Enums.TenantStatus;
            verifiedAt: Date | null;
            verifiedBy: string | null;
            rejectionReason: string | null;
            commissionRate: import("@prisma/client/runtime/library").Decimal;
            autoWithdraw: boolean;
            createdAt: Date;
            updatedAt: Date;
            deletedAt: Date | null;
        };
        category: {
            id: string;
            name: string;
            slug: string;
            description: string | null;
            createdAt: Date;
            updatedAt: Date;
            icon: string | null;
            color: string | null;
            parentId: string | null;
            sortOrder: number;
            isActive: boolean;
        };
    } & {
        id: string;
        slug: string;
        description: string;
        coverImageUrl: string | null;
        status: import(".prisma/client").$Enums.CampaignStatus;
        rejectionReason: string | null;
        createdAt: Date;
        updatedAt: Date;
        deletedAt: Date | null;
        tenantId: string;
        createdBy: string;
        categoryId: string;
        title: string;
        shortDescription: string | null;
        type: import(".prisma/client").$Enums.CampaignType;
        targetAmount: import("@prisma/client/runtime/library").Decimal;
        collectedAmount: import("@prisma/client/runtime/library").Decimal;
        donorCount: number;
        startDate: Date;
        endDate: Date | null;
        isFeatured: boolean;
        isUrgent: boolean;
        priority: number;
        beneficiaryName: string | null;
        beneficiaryRelation: string | null;
        beneficiaryDescription: string | null;
        approvedAt: Date | null;
        approvedBy: string | null;
        rejectedAt: Date | null;
        metaTitle: string | null;
        metaDescription: string | null;
        metaKeywords: string | null;
        ogImageUrl: string | null;
        viewCount: number;
        shareCount: number;
        allowAnonymous: boolean;
        showDonorList: boolean;
        showCollectedAmount: boolean;
        minDonation: import("@prisma/client/runtime/library").Decimal;
    })[]>;
    getNotifications(req: any): Promise<{
        data: import("@prisma/client/runtime/library").JsonValue | null;
        id: string;
        createdAt: Date;
        title: string;
        type: string;
        userId: string;
        message: string;
        channel: string;
        readAt: Date | null;
        sentAt: Date | null;
    }[]>;
    markNotificationRead(req: any, id: string): Promise<import(".prisma/client").Prisma.BatchPayload>;
}
