package api

import (
	"encoding/json"
	"fmt"
	"time"
)

type RateLimitError struct {
	LimitType      string    `json:"type"`
	RetryAfter     float64   `json:"retryAfter"`
	LimitBurst     int       `json:"limitBurst"`
	LimitPerSecond int       `json:"limitPerSecond"`
	Remaining      int       `json:"remaining"`
	Reset          time.Time `json:"reset"`
}

func decode429(msg []byte) (e APIMessage[any, RateLimitError]) {
	if err := json.Unmarshal(msg, &e); err != nil {
		panic(fmt.Sprintf("Failed to decode419: %+v", err))
	}
	return e
}