michangarrito/apps/backend/dist/modules/billing/billing.service.d.ts
rckrdmrd 97f407c661 [MIGRATION-V2] feat: Migrar michangarrito a estructura v2
- Prefijo v2: MCH
- TRACEABILITY-MASTER.yml creado
- Listo para integracion como submodulo

Workspace: v2.0.0 | SIMCO: v4.0.0
2026-01-10 11:28:54 -06:00

48 lines
2.3 KiB
TypeScript

import { Repository } from 'typeorm';
import { StripeService } from './stripe.service';
import { Subscription } from '../subscriptions/entities/subscription.entity';
import { Plan } from '../subscriptions/entities/plan.entity';
import { TokenBalance } from '../subscriptions/entities/token-balance.entity';
import { TokenUsage } from '../subscriptions/entities/token-usage.entity';
export interface TokenPackage {
code: string;
name: string;
tokens: number;
priceMxn: number;
stripePriceId?: string;
}
export declare class BillingService {
private stripeService;
private subscriptionRepo;
private planRepo;
private tokenBalanceRepo;
private tokenUsageRepo;
private readonly logger;
private readonly tokenPackages;
constructor(stripeService: StripeService, subscriptionRepo: Repository<Subscription>, planRepo: Repository<Plan>, tokenBalanceRepo: Repository<TokenBalance>, tokenUsageRepo: Repository<TokenUsage>);
getPlans(): Promise<Plan[]>;
getTokenPackages(): TokenPackage[];
createSubscriptionCheckout(tenantId: string, planCode: string, successUrl: string, cancelUrl: string): Promise<{
checkoutUrl: string;
}>;
createTokenPurchaseCheckout(tenantId: string, packageCode: string, successUrl: string, cancelUrl: string): Promise<{
checkoutUrl: string;
}>;
createPortalSession(tenantId: string, returnUrl: string): Promise<{
portalUrl: string;
}>;
handleSubscriptionCreated(stripeSubscriptionId: string, stripeCustomerId: string, stripePriceId: string): Promise<void>;
handleSubscriptionCancelled(stripeSubscriptionId: string): Promise<void>;
handleTokenPurchase(tenantId: string, packageCode: string, tokens: number): Promise<void>;
getTokenBalance(tenantId: string): Promise<TokenBalance | null>;
addTokensToBalance(tenantId: string, tokens: number, source: 'subscription' | 'purchase' | 'bonus'): Promise<TokenBalance>;
consumeTokens(tenantId: string, tokens: number, action: string, description?: string): Promise<boolean>;
getTokenUsageHistory(tenantId: string, limit?: number): Promise<TokenUsage[]>;
getBillingSummary(tenantId: string): Promise<{
subscription: Subscription | null;
plan: Plan | null;
tokenBalance: TokenBalance | null;
invoices: any[];
}>;
}