managarten/packages/shared-errors/src/errors/credit-error.ts
Wuesteon d36b321d9d style: auto-format codebase with Prettier
Applied formatting to 1487+ files using pnpm format:write
  - TypeScript/JavaScript files
  - Svelte components
  - Astro pages
  - JSON configs
  - Markdown docs

  13 files still need manual review (Astro JSX comments)
2025-11-27 18:33:16 +01:00

31 lines
963 B
TypeScript

import { ErrorCode } from '../types/error-codes';
import { AppError } from './app-error';
/**
* Error for insufficient credits/mana.
* HTTP Status: 402 Payment Required
*
* @example
* ```typescript
* return err(new CreditError(100, 50, 'story_generation'));
* // Message: "Insufficient credits. Required: 100, Available: 50"
* ```
*/
export class CreditError extends AppError {
/** Credits required for the operation */
readonly requiredCredits: number;
/** Credits currently available */
readonly availableCredits: number;
constructor(requiredCredits: number, availableCredits: number, operation?: string) {
super({
code: ErrorCode.INSUFFICIENT_CREDITS,
message: `Insufficient credits. Required: ${requiredCredits}, Available: ${availableCredits}`,
context: { requiredCredits, availableCredits, operation },
});
this.name = 'CreditError';
this.requiredCredits = requiredCredits;
this.availableCredits = availableCredits;
}
}