import { HydratedDocument, Types } from 'mongoose';
import { PaymentGateway } from 'src/settings/schema/settings.schema';
export declare enum TransactionType {
    CREDIT = "CREDIT",
    DEBIT = "DEBIT"
}
export declare enum TransactionReason {
    REFERRAL_REWARD = "REFERRAL_REWARD",
    ORDER_PAYMENT = "ORDER_PAYMENT",
    WITHDRAWAL = "WITHDRAWAL",
    ADMIN_CREDIT = "ADMIN_CREDIT",
    ADMIN_DEBIT = "ADMIN_DEBIT",
    REFUND = "REFUND",
    COMMISSION = "COMMISSION",
    SUBSCRIPTION = "SUBSCRIPTION",
    MANUAL_ADJUSTMENT = "MANUAL_ADJUSTMENT",
    WALLET_TOPUP = "WALLET_TOPUP"
}
export declare class WalletTransaction {
    payment_gateway: PaymentGateway;
    transaction_id: string;
    user_id: Types.ObjectId;
    wallet_id: Types.ObjectId;
    payment_type: TransactionType;
    amount: number;
    balance_before: number;
    balance_after: number;
    reason: TransactionReason;
    description: string;
    reference_user_id: Types.ObjectId;
    reference_id: Types.ObjectId;
    currency: string;
    is_deleted: boolean;
}
export type WalletTransactionDocument = HydratedDocument<WalletTransaction>;
export declare const WalletTransactionSchema: import("mongoose").Schema<WalletTransaction, import("mongoose").Model<WalletTransaction, any, any, any, import("mongoose").Document<unknown, any, WalletTransaction, any> & WalletTransaction & {
    _id: Types.ObjectId;
} & {
    __v: number;
}, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, WalletTransaction, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<WalletTransaction>, {}> & import("mongoose").FlatRecord<WalletTransaction> & {
    _id: Types.ObjectId;
} & {
    __v: number;
}>;
