/** * Application Use Case: GetSponsorshipPricingUseCase * * Retrieves general sponsorship pricing tiers. */ import { Result } from '@core/shared/application/Result'; import type { UseCaseOutputPort } from '@core/shared/application'; import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode'; export type GetSponsorshipPricingInput = Record; export type GetSponsorshipPricingResult = { entityType: 'season'; entityId: string; pricing: { id: string; level: string; price: number; currency: string; }[]; }; export type GetSponsorshipPricingErrorCode = 'REPOSITORY_ERROR'; export class GetSponsorshipPricingUseCase { constructor(private readonly output: UseCaseOutputPort) {} async execute( _input: GetSponsorshipPricingInput, ): Promise< Result> > { void _input; try { const result: GetSponsorshipPricingResult = { entityType: 'season', entityId: '', pricing: [ { id: 'tier-bronze', level: 'Bronze', price: 100, currency: 'USD' }, { id: 'tier-silver', level: 'Silver', price: 250, currency: 'USD' }, { id: 'tier-gold', level: 'Gold', price: 500, currency: 'USD' }, ], }; this.output.present(result); return Result.ok(undefined); } catch (error) { return Result.err({ code: 'REPOSITORY_ERROR', details: { message: error instanceof Error ? error.message : 'Failed to load sponsorship pricing', }, }); } } }