import { HttpStatus } from '@nestjs/common';
import { Kysely } from 'kysely';
import { DB } from "../../database/database.type";
import { Logger } from 'pino-nestjs';
import { ReportContentDto, type GrantCreditsPurchaseInput } from './users.dto';
import { WalletService } from '../wallet/wallet.service';
import { ErrorsService } from '../errors/errors.service';
export declare class UsersService {
    private readonly db;
    private readonly logger;
    private readonly walletService;
    private readonly errorsService;
    constructor(db: Kysely<DB>, logger: Logger, walletService: WalletService, errorsService: ErrorsService);
    updatePushToken(user_id: string, token: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
        };
    }>;
    getBlockedUsers(user_id: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            id: string;
            display_name: string;
            email: string;
            blockedAt: Date;
        }[];
    }>;
    blockUser(user_id: string, blockedUserId: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
        };
    }>;
    unblockUser(user_id: string, blockedUserId: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
        };
    }>;
    reportContent(user_id: string, data: ReportContentDto): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
        };
    }>;
    getUserCreditBalance(user_id: string, client?: Kysely<DB>): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            basic_credits: number;
            additional_credits: number;
            total_credits: number;
        };
    }>;
    private resolvePayloadEnvironment;
    grantAdditionalCreditsForPurchase(input: GrantCreditsPurchaseInput): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            duplicate: boolean;
            credits_added: number;
            balance: {
                basic_credits: number;
                additional_credits: number;
                total_credits: number;
            } | null;
        };
    }>;
    deductUserCredits(userId: string, creditsToUse?: number, client?: Kysely<DB>): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            credits_used: number;
            deducted_from_basic: number;
            deducted_from_additional: number;
            basic_credits: number;
            additional_credits: number;
            total_credits: number;
        };
    }>;
    deleteAccount(userId: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            message: string;
        };
    }>;
    getCreditActivity(userId: string, page?: number, limit?: number): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            activities: {
                reason: string;
                created_at: Date;
                id: string;
                delta: number;
                metadata: string | number | boolean | import("@/database/database.type").JsonArray | import("@/database/database.type").JsonObject | null;
                balance_after: number;
                reference_id: string | null;
                reference_type: string;
            }[];
            total: number;
            page: number;
            hasMore: boolean;
        };
    }>;
    grantRewardAdCredits(userId: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            credits_added: number;
            balance: {
                basic_credits: number;
                additional_credits: number;
                total_credits: number;
            };
        };
    }>;
    getReferralStats(userId: string): Promise<{
        status: boolean;
        statusCode: HttpStatus;
        data: {
            referralCode: string;
            referralCount: number;
            premiumUntil: string | null;
            rewards: {
                type: string;
                daysAwarded: number;
                reason: string;
                created_at: string;
            }[];
            sharesThisMonth: number;
            shares: {
                platform: string;
                date: string;
            }[];
        };
    }>;
}
