"""OpenAI GPT-6.1 Sol token-only estimate, rates checked 2026-09-30.
Explicit exclusive buckets; no network, tools, taxes or billing reconciliation.
"""
import argparse
from decimal import Decimal as D

def estimate(ordinary, read, write, output, mode='standard', regional=False, region='unspecified'):
    counts = (ordinary, read, write, output)
    if any(type(n) is not int or n < 0 for n in counts):
        raise ValueError('Token counts must be nonnegative integers')
    factors = {'standard': D('1'), 'fast': D('2'), 'batch': D('.5'), 'flex': D('.5')}
    if mode not in factors:
        raise ValueError('Unknown mode')
    if region not in ('unspecified', 'us', 'eu'):
        raise ValueError('Unknown region')
    if region == 'eu' and mode == 'fast':
        raise ValueError('Fast is not available with EU data residency')
    long_context = ordinary + read + write > 272000
    rates = (D('4'), D('.2'), D('5'), D('15')) if long_context else (D('2'), D('.1'), D('2.5'), D('10'))
    total = sum(D(n) * rate for n, rate in zip(counts, rates)) / D('1000000')
    return total * factors[mode] * (D('1.1') if regional else D('1'))

if __name__ == '__main__':
    p = argparse.ArgumentParser(description=__doc__)
    for name in ('ordinary', 'read', 'write', 'output'):
        p.add_argument('--'+name, type=int, default=0)
    p.add_argument('--mode', choices=['standard','fast','batch','flex'], default='standard')
    p.add_argument('--regional', action='store_true', help='Apply premium only if eligible and actually used; not an eligibility check')
    p.add_argument('--region', choices=['unspecified','us','eu'], default='unspecified')
    try:
        print(f'{estimate(**vars(p.parse_args())):.6f} USD (tokens only; rates dated 2026-09-30)')
    except ValueError as e:
        p.error(str(e))
