michangarrito/apps/backend/dist/modules/billing/billing.service.d.ts
rckrdmrd 48dea7a5d0 feat: Initial commit - michangarrito
Marketplace móvil para negocios locales mexicanos.

Estructura inicial:
- apps/backend (NestJS API)
- apps/frontend (React Web)
- apps/mobile (Expo/React Native)
- apps/mcp-server (Claude MCP Server)
- apps/whatsapp-service (WhatsApp Business API)
- database/ (PostgreSQL DDL)
- docs/ (Documentación)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:41:02 -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[];
}>;
}