export class Billing {
  constructor({ perRequestMilli = 0, perMillionInMilli = 15000, perMillionOutMilli = 45000 } = {}) {
    this.perRequestMilli = perRequestMilli;
    this.perMillionInMilli = perMillionInMilli;
    this.perMillionOutMilli = perMillionOutMilli;
  }

  // perRequestMilli — МИНИМУМ за запрос (до умножения на коэффициент уровня),
  // а не надбавка: короткий вопрос стоит как минимальная цена запроса, как у study24
  costFor({ promptTokens = 0, completionTokens = 0 }) {
    const input = Math.ceil((promptTokens / 1_000_000) * this.perMillionInMilli);
    const output = Math.ceil((completionTokens / 1_000_000) * this.perMillionOutMilli);
    return Math.max(this.perRequestMilli, input + output);
  }

  estimateUsageFromBody(messages) {
    const chars = JSON.stringify(messages ?? {}).length;
    return Math.ceil(chars / 4);
  }
}
