// Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: // protoc-gen-ts_proto v2.11.4 // protoc v7.34.0 // source: referral.proto /* eslint-disable */ import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices"; import { Observable } from "rxjs"; export const protobufPackage = "referral.v1"; export enum ReferralProfileStatus { REFERRAL_PROFILE_STATUS_ACTIVE = 0, REFERRAL_PROFILE_STATUS_BLOCKED = 1, UNRECOGNIZED = -1, } export enum ReferralBonusType { REFERRAL_BONUS_TYPE_PROFIT = 0, REFERRAL_BONUS_TYPE_VOLUME = 1, UNRECOGNIZED = -1, } export enum ReferralCommissionStatus { REFERRAL_COMMISSION_STATUS_CONFIRMED = 0, REFERRAL_COMMISSION_STATUS_CANCELLED = 1, UNRECOGNIZED = -1, } export enum ReferralPayoutStatus { REFERRAL_PAYOUT_STATUS_CREATED = 0, REFERRAL_PAYOUT_STATUS_CONFIRMED = 1, REFERRAL_PAYOUT_STATUS_CANCELLED = 2, UNRECOGNIZED = -1, } export interface EnsureReferralProfileRequest { walletUserId: string; legacyCustomerId?: number | undefined; telegramId?: string | undefined; refCode?: string | undefined; referrerCode?: string | undefined; source?: string | undefined; utmJson?: string | undefined; } export interface ReferralProfileResponse { id: number; walletUserId: string; legacyCustomerId?: number | undefined; telegramId?: string | undefined; refCode: string; referrerProfileId?: number | undefined; bonusType: ReferralBonusType; refPercent: string; status: ReferralProfileStatus; createdAt: string; updatedAt: string; isMultilevel: boolean; } export interface GetReferralLinkRequest { walletUserId: string; baseUrl?: string | undefined; } export interface GetReferralLinkResponse { refCode: string; link: string; } export interface BindReferralByCodeRequest { walletUserId: string; refCode: string; source?: string | undefined; utmJson?: string | undefined; } export interface BindReferralByCodeResponse { success: boolean; profile: ReferralProfileResponse | undefined; referrer?: ReferralProfileResponse | undefined; } export interface GetReferralSummaryRequest { walletUserId: string; } export interface ReferralBalanceItem { currency: string; total: string; available: string; heldCurrentWeek: string; } export interface GetReferralSummaryResponse { profile: ReferralProfileResponse | undefined; balances: ReferralBalanceItem[]; referralsCount: number; totalUsdVolume: string; totalUsdtBalance: string; availableUsdtBalance: string; } export interface AdminGetReferralProfileByUserIdRequest { userId: number; } export interface AdminFindReferralProfileByRefCodeRequest { refCode: string; } export interface AdminFindReferralProfileByRefCodeResponse { profileId: string; userId: number; refCode: string; status: ReferralProfileStatus; createdAt: string; updatedAt: string; } export interface AdminReferralProfileByUserIdResponse { profileId: string; userId: number; refCode: string; referrerUserId?: | number | undefined; /** * Строковый тип для admin-flow, чтобы избежать тихого enum-default в gRPC loader. * Нормализуется сервисом в ReferralBonusType (PROFIT/VOLUME). */ bonusType: string; refPercent: string; status: ReferralProfileStatus; createdAt: string; updatedAt: string; /** true, если в рамках AdminUpdateReferralProfileByUserId был установлен referrer_user_id. */ referrerChanged: boolean; } export interface AdminUpdateReferralProfileByUserIdRequest { userId: number; /** * Разрешено только если у профиля еще нет реферера. * Если текущий реферер уже задан, сервис возвращает ошибку REFERRER_ALREADY_SET. */ referrerUserId?: | number | undefined; /** * Строковый тип для admin-flow, чтобы избежать тихого enum-default в gRPC loader. * Допустимые значения: PROFIT | VOLUME | REFERRAL_BONUS_TYPE_PROFIT | REFERRAL_BONUS_TYPE_VOLUME. */ bonusType?: string | undefined; refPercent?: string | undefined; refCode?: string | undefined; changedBy?: | string | undefined; /** * true — в этом запросе нужно выполнить изменение referrer_user_id; * false/отсутствует — referrer_user_id игнорируется. */ referrerChanged?: boolean | undefined; } export interface GetUserReferralMetricsRequest { walletUserId: string; dateFrom?: string | undefined; dateTo?: string | undefined; } export interface GetUserReferralMetricsResponse { referralsCount: number; referralsToday: number; } export interface ListReferralsRequest { walletUserId: string; page?: number | undefined; limit?: number | undefined; } export interface ReferralListItem { profileId: number; walletUserId: string; legacyCustomerId?: number | undefined; telegramId?: string | undefined; refCode: string; createdAt: string; } export interface ListReferralsResponse { items: ReferralListItem[]; total: number; page: number; limit: number; } export interface GetReferredUserIdsRequest { userId: number; } export interface GetReferredUserIdsResponse { referredUserIds: number[]; } export interface BatchGetDirectReferrersByUserIdsRequest { userIds: number[]; } export interface BatchGetDirectReferrersByUserIdsResponse { directReferrerIds: number[]; } export interface BatchGetExchangeReferralSummariesRequest { exchangeIds: string[]; } export interface ExchangeReferralSummary { exchangeId: string; amount: string; percent: string; } export interface BatchGetExchangeReferralSummariesResponse { summaries: ExchangeReferralSummary[]; } export interface BatchGetCommissionsByExchangeIdsRequest { walletUserId: string; exchangeIds: string[]; } export interface BatchGetCommissionsByExchangeIdsResponse { items: ReferralCommissionItem[]; } export interface ApplyExchangeCompletedRequest { exchangeId: string; walletUserId: string; legacyCustomerId?: number | undefined; outputAmount: string; factOutputAmount?: string | undefined; outputCurrency: string; profitAmount: string; profitCurrency: string; courierExpenses?: string | undefined; usdtRate?: string | undefined; completedAt?: string | undefined; calculationSnapshotJson?: string | undefined; } export interface ApplyExchangeCompletedResponse { created: boolean; commission?: ReferralCommissionItem | undefined; balances: ReferralBalanceItem[]; } export interface ApplyExchangeCancelledRequest { exchangeId: string; reason?: string | undefined; } export interface ApplyExchangeCancelledResponse { cancelledCount: number; balances: ReferralBalanceItem[]; } export interface ListCommissionsRequest { walletUserId: string; page?: number | undefined; limit?: number | undefined; } export interface ReferralCommissionItem { id: number; exchangeId: string; referrerProfileId: number; referredProfileId: number; level: number; bonusType: ReferralBonusType; percent: string; baseAmount: string; amount: string; currency: string; status: ReferralCommissionStatus; createdAt: string; cancelledAt?: string | undefined; } export interface ListCommissionsResponse { items: ReferralCommissionItem[]; total: number; page: number; limit: number; } export interface CreatePersonalBonusRequest { walletUserId: string; amount: string; currency: string; reason?: string | undefined; comment?: string | undefined; createdBy?: string | undefined; } export interface PersonalBonusItem { id: number; profileId: number; amount: string; currency: string; reason?: string | undefined; comment?: string | undefined; createdBy?: string | undefined; createdAt: string; updatedAt: string; } export interface ListPersonalBonusesRequest { walletUserId: string; page?: number | undefined; limit?: number | undefined; } export interface ListPersonalBonusesResponse { items: PersonalBonusItem[]; total: number; page: number; limit: number; } export interface GetFinModelBonusAggregatesRequest { dateFrom: string; dateTo: string; } export interface FinModelBonusAggregateItem { currency: string; amount: string; } export interface GetFinModelBonusAggregatesResponse { personalBonuses: FinModelBonusAggregateItem[]; referralBonuses: FinModelBonusAggregateItem[]; } export interface CreatePayoutRequest { walletUserId: string; amount: string; currency: string; paymentMethod: string; outputCurrency?: string | undefined; comment?: string | undefined; createdByManagerId?: string | undefined; } export interface ConfirmPayoutRequest { payoutId: number; confirmedByManagerId?: string | undefined; } export interface UpdatePayoutRequest { payoutId: number; amount?: string | undefined; currency?: string | undefined; paymentMethod?: string | undefined; outputCurrency?: string | undefined; comment?: string | undefined; walletUserId?: string | undefined; } export interface CancelPayoutRequest { payoutId: number; reason?: string | undefined; } export interface DeletePayoutRequest { payoutId: number; } export interface DeletePayoutResponse { deleted: boolean; } export interface ReferralPayoutResponse { id: number; profileId: number; amount: string; currency: string; paymentMethod: string; outputCurrency?: string | undefined; status: ReferralPayoutStatus; comment?: string | undefined; createdAt: string; updatedAt: string; walletUserId?: string | undefined; } export interface ListPayoutsRequest { walletUserId: string; page?: number | undefined; limit?: number | undefined; } export interface ListPayoutsResponse { items: ReferralPayoutResponse[]; total: number; page: number; limit: number; } export interface RecreateBonusesRequest { walletUserId: string; } export interface RecreateBonusesBalanceItem { currency: string; amount: string; } export interface RecreateBonusesResponse { success: boolean; commissionsCount: number; payoutsCount: number; balances: RecreateBonusesBalanceItem[]; } export interface CheckReferralIncomeInfoRequest { walletUserId: string; protectPayoutCoveredIncome?: boolean | undefined; } export interface RecreateReferralIncomeRequest { walletUserId: string; requestedBy?: string | undefined; } export interface ReferralIncomeCurrencyAmount { currency: string; amount: string; count: number; } export interface ReferralIncomeExchangeItem { exchangeId: string; referralCommissionId?: number | undefined; referralVolumeLedgerId?: number | undefined; referralUserId: string; createdAt: string; inputCurrency: string; inputAmount: string; outputCurrency: string; outputAmount: string; profitAmount: string; profitCurrency: string; isInCurrentReferralChain: boolean; isInReferrerBonusExchangesList: boolean; referralUserText: string; referralAmount: string; referralAmountCurrency: string; isProtectedByPayouts: boolean; referralLevel: number; referralProfileId?: number | undefined; isExchangeCompleted: boolean; referralVolumeAmountUsd: string; willBeDeleted: boolean; willBeRecreated: boolean; newCalculatedReferralAmount: string; newCalculatedReferralAmountCurrency: string; newCalculatedReferralVolumeAmountUsd: string; newCalculatedReferralBonusType: string; newCalculatedReferralPercent: string; newCalculatedReferralBaseAmount: string; newCalculatedReferralProfitAmount: string; newCalculatedReferralCourierExpenses: string; newCalculatedReferralUsdtRate: string; newCalculatedReferralOutputAmount: string; } export interface ReferralIncomeInfoResponse { referrerUserId: string; referrerReferralProfile: ReferralProfileResponse | undefined; referrerReferralBalance: ReferralBalanceItem[]; referrerReferralUserIds: string[]; referralPayouts: ReferralPayoutResponse[]; groupedPayouts: ReferralIncomeCurrencyAmount[]; exchangesReferralIncomingsList: ReferralIncomeExchangeItem[]; groupedExchangeReferralIncomings: ReferralIncomeCurrencyAmount[]; groupedReferralIncomingsCurrent: ReferralIncomeCurrencyAmount[]; groupedReferralIncomingsToDelete: ReferralIncomeCurrencyAmount[]; groupedReferralIncomingsToCreate: ReferralIncomeCurrencyAmount[]; groupedReferralIncomingsProjected: ReferralIncomeCurrencyAmount[]; groupedReferralIncomingsDifference: ReferralIncomeCurrencyAmount[]; groupedReferralVolumeCurrent: ReferralIncomeCurrencyAmount[]; groupedReferralVolumeToDelete: ReferralIncomeCurrencyAmount[]; groupedReferralVolumeToCreate: ReferralIncomeCurrencyAmount[]; groupedReferralVolumeProjected: ReferralIncomeCurrencyAmount[]; groupedReferralVolumeDifference: ReferralIncomeCurrencyAmount[]; } export interface RecreateReferralIncomeResponse { success: boolean; historyId: number; referralIncomingsBefore: ReferralIncomeInfoResponse | undefined; referralIncomingsAfter: ReferralIncomeInfoResponse | undefined; } export interface GetRecreateReferralIncomeHistoryListRequest { walletUserId?: string | undefined; page?: number | undefined; limit?: number | undefined; } export interface ReferralIncomeRecreateHistoryListItem { id: number; walletUserId: string; safe: boolean; createdAt: string; requestedBy?: string | undefined; } export interface GetRecreateReferralIncomeHistoryListResponse { items: ReferralIncomeRecreateHistoryListItem[]; total: number; page: number; limit: number; } export interface GetRecreateReferralIncomeHistoryDetailsRequest { id: number; } export interface ReferralIncomeRecreateHistoryDetails { id: number; walletUserId: string; safe: boolean; createdAt: string; requestedBy?: string | undefined; referralIncomingsBeforeJson: string; referralIncomingsAfterJson: string; } export interface AdminRecalculateExchangeRequest { exchangeId: string; dryRun: boolean; } export interface AdminRecalculateExchangeResponse { changed: boolean; commission?: ReferralCommissionItem | undefined; } export const REFERRAL_V1_PACKAGE_NAME = "referral.v1"; /** * ReferralService owns referral attribution, referral commissions, bonus balances, * weekly payout holds, and payout lifecycle for ArbiExchange/ArbiWallet. */ export interface ReferralServiceClient { ensureReferralProfile(request: EnsureReferralProfileRequest): Observable; getReferralLink(request: GetReferralLinkRequest): Observable; bindReferralByCode(request: BindReferralByCodeRequest): Observable; getReferralSummary(request: GetReferralSummaryRequest): Observable; /** CRM admin: получить реферальный профиль для формы редактирования пользователя. */ adminGetReferralProfileByUserId( request: AdminGetReferralProfileByUserIdRequest, ): Observable; /** CRM admin: найти реферальный профиль по персональному ref code. */ adminFindReferralProfileByRefCode( request: AdminFindReferralProfileByRefCodeRequest, ): Observable; /** CRM admin: обновить реферальный профиль (реферер, тип начисления, процент, ref code). */ adminUpdateReferralProfileByUserId( request: AdminUpdateReferralProfileByUserIdRequest, ): Observable; getUserReferralMetrics(request: GetUserReferralMetricsRequest): Observable; listReferrals(request: ListReferralsRequest): Observable; getReferredUserIds(request: GetReferredUserIdsRequest): Observable; batchGetDirectReferrersByUserIds( request: BatchGetDirectReferrersByUserIdsRequest, ): Observable; batchGetExchangeReferralSummaries( request: BatchGetExchangeReferralSummariesRequest, ): Observable; batchGetCommissionsByExchangeIds( request: BatchGetCommissionsByExchangeIdsRequest, ): Observable; applyExchangeCompleted(request: ApplyExchangeCompletedRequest): Observable; applyExchangeCancelled(request: ApplyExchangeCancelledRequest): Observable; listCommissions(request: ListCommissionsRequest): Observable; createPersonalBonus(request: CreatePersonalBonusRequest): Observable; listPersonalBonuses(request: ListPersonalBonusesRequest): Observable; getFinModelBonusAggregates( request: GetFinModelBonusAggregatesRequest, ): Observable; createPayout(request: CreatePayoutRequest): Observable; confirmPayout(request: ConfirmPayoutRequest): Observable; updatePayout(request: UpdatePayoutRequest): Observable; cancelPayout(request: CancelPayoutRequest): Observable; deletePayout(request: DeletePayoutRequest): Observable; recreateBonuses(request: RecreateBonusesRequest): Observable; checkReferralIncomeInfo(request: CheckReferralIncomeInfoRequest): Observable; recreateReferralIncome(request: RecreateReferralIncomeRequest): Observable; recreateReferralIncomeWithPayoutProtection( request: RecreateReferralIncomeRequest, ): Observable; getRecreateReferralIncomeHistoryList( request: GetRecreateReferralIncomeHistoryListRequest, ): Observable; getRecreateReferralIncomeHistoryDetails( request: GetRecreateReferralIncomeHistoryDetailsRequest, ): Observable; listPayouts(request: ListPayoutsRequest): Observable; adminRecalculateExchange(request: AdminRecalculateExchangeRequest): Observable; } /** * ReferralService owns referral attribution, referral commissions, bonus balances, * weekly payout holds, and payout lifecycle for ArbiExchange/ArbiWallet. */ export interface ReferralServiceController { ensureReferralProfile( request: EnsureReferralProfileRequest, ): Promise | Observable | ReferralProfileResponse; getReferralLink( request: GetReferralLinkRequest, ): Promise | Observable | GetReferralLinkResponse; bindReferralByCode( request: BindReferralByCodeRequest, ): Promise | Observable | BindReferralByCodeResponse; getReferralSummary( request: GetReferralSummaryRequest, ): Promise | Observable | GetReferralSummaryResponse; /** CRM admin: получить реферальный профиль для формы редактирования пользователя. */ adminGetReferralProfileByUserId( request: AdminGetReferralProfileByUserIdRequest, ): | Promise | Observable | AdminReferralProfileByUserIdResponse; /** CRM admin: найти реферальный профиль по персональному ref code. */ adminFindReferralProfileByRefCode( request: AdminFindReferralProfileByRefCodeRequest, ): | Promise | Observable | AdminFindReferralProfileByRefCodeResponse; /** CRM admin: обновить реферальный профиль (реферер, тип начисления, процент, ref code). */ adminUpdateReferralProfileByUserId( request: AdminUpdateReferralProfileByUserIdRequest, ): | Promise | Observable | AdminReferralProfileByUserIdResponse; getUserReferralMetrics( request: GetUserReferralMetricsRequest, ): | Promise | Observable | GetUserReferralMetricsResponse; listReferrals( request: ListReferralsRequest, ): Promise | Observable | ListReferralsResponse; getReferredUserIds( request: GetReferredUserIdsRequest, ): Promise | Observable | GetReferredUserIdsResponse; batchGetDirectReferrersByUserIds( request: BatchGetDirectReferrersByUserIdsRequest, ): | Promise | Observable | BatchGetDirectReferrersByUserIdsResponse; batchGetExchangeReferralSummaries( request: BatchGetExchangeReferralSummariesRequest, ): | Promise | Observable | BatchGetExchangeReferralSummariesResponse; batchGetCommissionsByExchangeIds( request: BatchGetCommissionsByExchangeIdsRequest, ): | Promise | Observable | BatchGetCommissionsByExchangeIdsResponse; applyExchangeCompleted( request: ApplyExchangeCompletedRequest, ): | Promise | Observable | ApplyExchangeCompletedResponse; applyExchangeCancelled( request: ApplyExchangeCancelledRequest, ): | Promise | Observable | ApplyExchangeCancelledResponse; listCommissions( request: ListCommissionsRequest, ): Promise | Observable | ListCommissionsResponse; createPersonalBonus( request: CreatePersonalBonusRequest, ): Promise | Observable | PersonalBonusItem; listPersonalBonuses( request: ListPersonalBonusesRequest, ): Promise | Observable | ListPersonalBonusesResponse; getFinModelBonusAggregates( request: GetFinModelBonusAggregatesRequest, ): | Promise | Observable | GetFinModelBonusAggregatesResponse; createPayout( request: CreatePayoutRequest, ): Promise | Observable | ReferralPayoutResponse; confirmPayout( request: ConfirmPayoutRequest, ): Promise | Observable | ReferralPayoutResponse; updatePayout( request: UpdatePayoutRequest, ): Promise | Observable | ReferralPayoutResponse; cancelPayout( request: CancelPayoutRequest, ): Promise | Observable | ReferralPayoutResponse; deletePayout( request: DeletePayoutRequest, ): Promise | Observable | DeletePayoutResponse; recreateBonuses( request: RecreateBonusesRequest, ): Promise | Observable | RecreateBonusesResponse; checkReferralIncomeInfo( request: CheckReferralIncomeInfoRequest, ): Promise | Observable | ReferralIncomeInfoResponse; recreateReferralIncome( request: RecreateReferralIncomeRequest, ): | Promise | Observable | RecreateReferralIncomeResponse; recreateReferralIncomeWithPayoutProtection( request: RecreateReferralIncomeRequest, ): | Promise | Observable | RecreateReferralIncomeResponse; getRecreateReferralIncomeHistoryList( request: GetRecreateReferralIncomeHistoryListRequest, ): | Promise | Observable | GetRecreateReferralIncomeHistoryListResponse; getRecreateReferralIncomeHistoryDetails( request: GetRecreateReferralIncomeHistoryDetailsRequest, ): | Promise | Observable | ReferralIncomeRecreateHistoryDetails; listPayouts( request: ListPayoutsRequest, ): Promise | Observable | ListPayoutsResponse; adminRecalculateExchange( request: AdminRecalculateExchangeRequest, ): | Promise | Observable | AdminRecalculateExchangeResponse; } export function ReferralServiceControllerMethods() { return function (constructor: Function) { const grpcMethods: string[] = [ "ensureReferralProfile", "getReferralLink", "bindReferralByCode", "getReferralSummary", "adminGetReferralProfileByUserId", "adminFindReferralProfileByRefCode", "adminUpdateReferralProfileByUserId", "getUserReferralMetrics", "listReferrals", "getReferredUserIds", "batchGetDirectReferrersByUserIds", "batchGetExchangeReferralSummaries", "batchGetCommissionsByExchangeIds", "applyExchangeCompleted", "applyExchangeCancelled", "listCommissions", "createPersonalBonus", "listPersonalBonuses", "getFinModelBonusAggregates", "createPayout", "confirmPayout", "updatePayout", "cancelPayout", "deletePayout", "recreateBonuses", "checkReferralIncomeInfo", "recreateReferralIncome", "recreateReferralIncomeWithPayoutProtection", "getRecreateReferralIncomeHistoryList", "getRecreateReferralIncomeHistoryDetails", "listPayouts", "adminRecalculateExchange", ]; for (const method of grpcMethods) { const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method); GrpcMethod("ReferralService", method)(constructor.prototype[method], method, descriptor); } const grpcStreamMethods: string[] = []; for (const method of grpcStreamMethods) { const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method); GrpcStreamMethod("ReferralService", method)(constructor.prototype[method], method, descriptor); } }; } export const REFERRAL_SERVICE_NAME = "ReferralService";