tcgpriser 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.d.cts +4105 -170
  2. package/dist/index.d.ts +4105 -170
  3. package/package.json +2 -2
package/dist/index.d.cts CHANGED
@@ -27,7 +27,6 @@ declare class HttpClient {
27
27
  patch<T>(path: string, body: unknown, requestOptions?: PremiumOptions): Promise<T>;
28
28
  private request;
29
29
  }
30
-
31
30
  interface components {
32
31
  schemas: {
33
32
  ApiError: {
@@ -2746,7 +2745,6 @@ interface components {
2746
2745
  headers: never;
2747
2746
  pathItems: never;
2748
2747
  }
2749
-
2750
2748
  /**
2751
2749
  * Shared primitives reused across every resource. Pulled from `src/generated/openapi.d.ts` via
2752
2750
  * indexed access instead of retyped by hand, so a field rename in the API is a compile error here,
@@ -2758,9 +2756,250 @@ interface components {
2758
2756
  * byte-identical across `ProductWithPricing`, `PackRate` and the shop-match schemas too, so picking
2759
2757
  * one as the source of truth works fine.
2760
2758
  */
2761
-
2762
- type CardSchema = components['schemas']['CardWithPricing'];
2763
- type LowestShopOfferSchema = NonNullable<CardSchema['lowestShopOffer']>;
2759
+ type CardSchema = {
2760
+ /**
2761
+ * @description Resource identifier
2762
+ * @example 6a577711abc1ce71383d3e10
2763
+ */
2764
+ id: string;
2765
+ name: string;
2766
+ shortName: string | undefined;
2767
+ technicalName: string;
2768
+ brand: {
2769
+ /**
2770
+ * @description Resource identifier
2771
+ * @example 6a577711abc1ce71383d3e10
2772
+ */
2773
+ id: string;
2774
+ /** @example Pokémon */
2775
+ name: string;
2776
+ /** @example pokemon */
2777
+ technicalName: string;
2778
+ /**
2779
+ * Format: date-time
2780
+ * @example 2026-07-15T12:03:29.322Z
2781
+ */
2782
+ createdAt: string;
2783
+ /**
2784
+ * Format: date-time
2785
+ * @example 2026-07-15T12:03:29.322Z
2786
+ */
2787
+ updatedAt: string;
2788
+ };
2789
+ manufacturer: string;
2790
+ modelNumber: string | undefined;
2791
+ category: {
2792
+ /**
2793
+ * @description Resource identifier
2794
+ * @example 6a577711abc1ce71383d3e10
2795
+ */
2796
+ id: string;
2797
+ /** @example Booster Box */
2798
+ name: string;
2799
+ /** @example booster-box */
2800
+ technicalName: string;
2801
+ } | undefined;
2802
+ expansion: {
2803
+ /**
2804
+ * @description Resource identifier
2805
+ * @example 6a577711abc1ce71383d3e10
2806
+ */
2807
+ id: string;
2808
+ /** @example Mega Evolution 30th Celebration */
2809
+ name: string;
2810
+ /** @example 30th Celebration */
2811
+ shortName: string;
2812
+ /** @example jpn-mega-evolution-30th-celebration */
2813
+ technicalName: string;
2814
+ /**
2815
+ * @description Printing language of the item
2816
+ * @example JPN
2817
+ * @enum {string}
2818
+ */
2819
+ language: "ENG" | "JPN" | "CHI";
2820
+ /** @example m6a */
2821
+ code: string | undefined;
2822
+ /** @example m6a */
2823
+ cardCode: string | undefined;
2824
+ /** @example Mega Evolution */
2825
+ seriesName: string | undefined;
2826
+ /**
2827
+ * Format: date-time
2828
+ * @example 2026-07-15T12:03:29.322Z
2829
+ */
2830
+ releaseDate: string | undefined;
2831
+ /**
2832
+ * @description Absolute asset URL, or null when absent
2833
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2834
+ */
2835
+ logoUrl: string | undefined;
2836
+ /**
2837
+ * @description Absolute asset URL, or null when absent
2838
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2839
+ */
2840
+ symbolUrl: string | undefined;
2841
+ /**
2842
+ * @description Absolute asset URL, or null when absent
2843
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2844
+ */
2845
+ imageUrl: string | undefined;
2846
+ } | undefined;
2847
+ /**
2848
+ * @description Printing language of the item
2849
+ * @example JPN
2850
+ * @enum {string|null}
2851
+ */
2852
+ language: "ENG" | "JPN" | "CHI" | undefined;
2853
+ alternativeNames: {
2854
+ name: string;
2855
+ shortName: string | undefined;
2856
+ }[];
2857
+ supportsMultipackPricing: boolean;
2858
+ /**
2859
+ * @description Absolute asset URL, or null when absent
2860
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
2861
+ */
2862
+ imageUrl: string | undefined;
2863
+ /**
2864
+ * @description Cheapest current shop price, in SEK
2865
+ * @example 149.5
2866
+ */
2867
+ retailPrice: number | undefined;
2868
+ /**
2869
+ * @description Estimated market value, in SEK
2870
+ * @example 149.5
2871
+ */
2872
+ estimatedValue: number | undefined;
2873
+ /** @description Active shops currently tracking this item */
2874
+ shopCount: number;
2875
+ /** @description Observations the estimate rests on */
2876
+ pricingDataPoints: number;
2877
+ /**
2878
+ * Format: date-time
2879
+ * @example 2026-07-15T12:03:29.322Z
2880
+ */
2881
+ pricingUpdatedAt: string | undefined;
2882
+ /**
2883
+ * Format: date-time
2884
+ * @example 2026-07-15T12:03:29.322Z
2885
+ */
2886
+ createdAt: string;
2887
+ /**
2888
+ * Format: date-time
2889
+ * @example 2026-07-15T12:03:29.322Z
2890
+ */
2891
+ updatedAt: string;
2892
+ /** @enum {string} */
2893
+ kind: "card";
2894
+ /** @example 4/102 */
2895
+ cardNumber: string;
2896
+ /** @example Rare Holo */
2897
+ rarity: string | undefined;
2898
+ artist: string | undefined;
2899
+ cardmarketId: string | undefined;
2900
+ tcgplayerId: string | undefined;
2901
+ variants: {
2902
+ normal: boolean;
2903
+ holo: boolean;
2904
+ reverse: boolean;
2905
+ firstEdition: boolean;
2906
+ wPromo: boolean;
2907
+ } | undefined;
2908
+ prisjaktId: string | undefined;
2909
+ lowestShopOffer: {
2910
+ shop: {
2911
+ /** @example cardlevels */
2912
+ technicalName: string;
2913
+ /** @example Cardlevels */
2914
+ name: string;
2915
+ };
2916
+ url: string;
2917
+ /** @example 149.5 */
2918
+ price: number;
2919
+ /**
2920
+ * @description ISO-4217 currency code
2921
+ * @example SEK
2922
+ */
2923
+ currency: string;
2924
+ inStock: boolean;
2925
+ inPreorder: boolean;
2926
+ inMonitor: boolean;
2927
+ isFullyBooked: boolean;
2928
+ /**
2929
+ * Format: date-time
2930
+ * @example 2026-07-15T12:03:29.322Z
2931
+ */
2932
+ matchedAt: string;
2933
+ /**
2934
+ * Format: date-time
2935
+ * @example 2026-07-15T12:03:29.322Z
2936
+ */
2937
+ updatedAt: string;
2938
+ bargain: {
2939
+ discountPercent: number;
2940
+ /** @enum {string} */
2941
+ referenceSource: "retail" | "tradera" | "cardmarket";
2942
+ } | undefined;
2943
+ } | undefined;
2944
+ referencePriceSnapshotsByProvider: {
2945
+ [key: string]: {
2946
+ /** @enum {string} */
2947
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
2948
+ /** @example 149.5 */
2949
+ price: number;
2950
+ /**
2951
+ * @description ISO-4217 currency code
2952
+ * @example SEK
2953
+ */
2954
+ currency: string;
2955
+ /**
2956
+ * @description price converted to SEK at the rate stored on the row
2957
+ * @example 149.5
2958
+ */
2959
+ priceSek: number;
2960
+ /**
2961
+ * Format: date-time
2962
+ * @example 2026-07-15T12:03:29.322Z
2963
+ */
2964
+ snapshotDate: string;
2965
+ };
2966
+ };
2967
+ };
2968
+ type LowestShopOfferSchema = {
2969
+ shop: {
2970
+ /** @example cardlevels */
2971
+ technicalName: string;
2972
+ /** @example Cardlevels */
2973
+ name: string;
2974
+ };
2975
+ url: string;
2976
+ /** @example 149.5 */
2977
+ price: number;
2978
+ /**
2979
+ * @description ISO-4217 currency code
2980
+ * @example SEK
2981
+ */
2982
+ currency: string;
2983
+ inStock: boolean;
2984
+ inPreorder: boolean;
2985
+ inMonitor: boolean;
2986
+ isFullyBooked: boolean;
2987
+ /**
2988
+ * Format: date-time
2989
+ * @example 2026-07-15T12:03:29.322Z
2990
+ */
2991
+ matchedAt: string;
2992
+ /**
2993
+ * Format: date-time
2994
+ * @example 2026-07-15T12:03:29.322Z
2995
+ */
2996
+ updatedAt: string;
2997
+ bargain: {
2998
+ discountPercent: number;
2999
+ /** @enum {string} */
3000
+ referenceSource: "retail" | "tradera" | "cardmarket";
3001
+ } | undefined;
3002
+ };
2764
3003
  /** A Mongo ObjectId, always a 24-char lowercase hex string. Just `string`, not a branded type;
2765
3004
  * nothing here needs to tell it apart from any other id at compile time. */
2766
3005
  type ResourceId = string;
@@ -2768,8 +3007,14 @@ type ResourceId = string;
2768
3007
  type CurrencyCode = string;
2769
3008
  /** ISO 8601 timestamp, as returned by the API (always UTC, `Z`-suffixed). */
2770
3009
  type Timestamp = string;
2771
- type PrintingLanguage = NonNullable<CardSchema['language']>;
2772
- type PageMeta = components['schemas']['PageMeta'];
3010
+ type PrintingLanguage = "ENG" | "JPN" | "CHI";
3011
+ type PageMeta = {
3012
+ /** @description Total matching records, ignoring pagination */
3013
+ total: number;
3014
+ limit: number;
3015
+ skip: number;
3016
+ hasMore: boolean;
3017
+ };
2773
3018
  /** The standard paginated list envelope every `list`/`search` method returns. Hand-declared, not
2774
3019
  * generated: the API repeats a fresh anonymous `{ data, pagination }` object per endpoint rather
2775
3020
  * than naming it once. */
@@ -2782,177 +3027,3880 @@ interface PaginationParams {
2782
3027
  limit?: number;
2783
3028
  skip?: number;
2784
3029
  }
2785
- type AlternativeName = CardSchema['alternativeNames'][number];
2786
- type BrandRef = CardSchema['brand'];
2787
- type CategoryRef = NonNullable<CardSchema['category']>;
3030
+ type AlternativeName = {
3031
+ name: string;
3032
+ shortName: string | undefined;
3033
+ };
3034
+ type BrandRef = {
3035
+ /**
3036
+ * @description Resource identifier
3037
+ * @example 6a577711abc1ce71383d3e10
3038
+ */
3039
+ id: string;
3040
+ /** @example Pokémon */
3041
+ name: string;
3042
+ /** @example pokemon */
3043
+ technicalName: string;
3044
+ /**
3045
+ * Format: date-time
3046
+ * @example 2026-07-15T12:03:29.322Z
3047
+ */
3048
+ createdAt: string;
3049
+ /**
3050
+ * Format: date-time
3051
+ * @example 2026-07-15T12:03:29.322Z
3052
+ */
3053
+ updatedAt: string;
3054
+ };
3055
+ type CategoryRef = {
3056
+ /**
3057
+ * @description Resource identifier
3058
+ * @example 6a577711abc1ce71383d3e10
3059
+ */
3060
+ id: string;
3061
+ /** @example Booster Box */
3062
+ name: string;
3063
+ /** @example booster-box */
3064
+ technicalName: string;
3065
+ };
2788
3066
  /** The expansion shape embedded on cards, products and pack rates. Not the full `Expansion`
2789
3067
  * returned by `client.expansions.list()`, which additionally carries counts and a `brand`. */
2790
- type ExpansionRef = NonNullable<CardSchema['expansion']>;
3068
+ type ExpansionRef = {
3069
+ /**
3070
+ * @description Resource identifier
3071
+ * @example 6a577711abc1ce71383d3e10
3072
+ */
3073
+ id: string;
3074
+ /** @example Mega Evolution 30th Celebration */
3075
+ name: string;
3076
+ /** @example 30th Celebration */
3077
+ shortName: string;
3078
+ /** @example jpn-mega-evolution-30th-celebration */
3079
+ technicalName: string;
3080
+ /**
3081
+ * @description Printing language of the item
3082
+ * @example JPN
3083
+ * @enum {string}
3084
+ */
3085
+ language: "ENG" | "JPN" | "CHI";
3086
+ /** @example m6a */
3087
+ code: string | undefined;
3088
+ /** @example m6a */
3089
+ cardCode: string | undefined;
3090
+ /** @example Mega Evolution */
3091
+ seriesName: string | undefined;
3092
+ /**
3093
+ * Format: date-time
3094
+ * @example 2026-07-15T12:03:29.322Z
3095
+ */
3096
+ releaseDate: string | undefined;
3097
+ /**
3098
+ * @description Absolute asset URL, or null when absent
3099
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3100
+ */
3101
+ logoUrl: string | undefined;
3102
+ /**
3103
+ * @description Absolute asset URL, or null when absent
3104
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3105
+ */
3106
+ symbolUrl: string | undefined;
3107
+ /**
3108
+ * @description Absolute asset URL, or null when absent
3109
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3110
+ */
3111
+ imageUrl: string | undefined;
3112
+ };
2791
3113
  /** The minimal shop identity embedded on offers and matches. */
2792
- type ShopRef = LowestShopOfferSchema['shop'];
2793
- type BargainReferenceSource = NonNullable<LowestShopOfferSchema['bargain']>['referenceSource'];
3114
+ type ShopRef = {
3115
+ /** @example cardlevels */
3116
+ technicalName: string;
3117
+ /** @example Cardlevels */
3118
+ name: string;
3119
+ };
3120
+ type BargainReferenceSource = "retail" | "tradera" | "cardmarket";
2794
3121
  /** Present on an offer/match when its price is a known-good discount off a reference price. */
2795
- type BargainInfo = NonNullable<LowestShopOfferSchema['bargain']>;
3122
+ type BargainInfo = {
3123
+ discountPercent: number;
3124
+ /** @enum {string} */
3125
+ referenceSource: "retail" | "tradera" | "cardmarket";
3126
+ };
2796
3127
  /** The cheapest current shop offer for a card or product. */
2797
3128
  type LowestShopOffer = LowestShopOfferSchema;
2798
- type ReferencePriceProvider = CardSchema['referencePriceSnapshotsByProvider'][string]['provider'];
2799
- type ReferencePriceSnapshot = CardSchema['referencePriceSnapshotsByProvider'][string];
3129
+ type ReferencePriceProvider = "tradera" | "cardmarket" | "tcgplayer" | "ebay";
3130
+ type ReferencePriceSnapshot = {
3131
+ /** @enum {string} */
3132
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
3133
+ /** @example 149.5 */
3134
+ price: number;
3135
+ /**
3136
+ * @description ISO-4217 currency code
3137
+ * @example SEK
3138
+ */
3139
+ currency: string;
3140
+ /**
3141
+ * @description price converted to SEK at the rate stored on the row
3142
+ * @example 149.5
3143
+ */
3144
+ priceSek: number;
3145
+ /**
3146
+ * Format: date-time
3147
+ * @example 2026-07-15T12:03:29.322Z
3148
+ */
3149
+ snapshotDate: string;
3150
+ };
2800
3151
  /** Keyed by provider, at most one snapshot per provider. */
2801
3152
  type ReferencePriceSnapshotsByProvider = Partial<Record<ReferencePriceProvider, ReferencePriceSnapshot>>;
2802
-
2803
3153
  /** A card, as returned by `client.cards.get()` / `client.cards.list()`, and as embedded in
2804
3154
  * `client.expansions.products()`. `kind: 'card'` is a literal on the generated type, which is what
2805
3155
  * makes `CatalogItem` (below) discriminate cleanly. */
2806
- type Card = components['schemas']['CardWithPricing'];
3156
+ type Card = {
3157
+ /**
3158
+ * @description Resource identifier
3159
+ * @example 6a577711abc1ce71383d3e10
3160
+ */
3161
+ id: string;
3162
+ name: string;
3163
+ shortName: string | undefined;
3164
+ technicalName: string;
3165
+ brand: {
3166
+ /**
3167
+ * @description Resource identifier
3168
+ * @example 6a577711abc1ce71383d3e10
3169
+ */
3170
+ id: string;
3171
+ /** @example Pokémon */
3172
+ name: string;
3173
+ /** @example pokemon */
3174
+ technicalName: string;
3175
+ /**
3176
+ * Format: date-time
3177
+ * @example 2026-07-15T12:03:29.322Z
3178
+ */
3179
+ createdAt: string;
3180
+ /**
3181
+ * Format: date-time
3182
+ * @example 2026-07-15T12:03:29.322Z
3183
+ */
3184
+ updatedAt: string;
3185
+ };
3186
+ manufacturer: string;
3187
+ modelNumber: string | undefined;
3188
+ category: {
3189
+ /**
3190
+ * @description Resource identifier
3191
+ * @example 6a577711abc1ce71383d3e10
3192
+ */
3193
+ id: string;
3194
+ /** @example Booster Box */
3195
+ name: string;
3196
+ /** @example booster-box */
3197
+ technicalName: string;
3198
+ } | undefined;
3199
+ expansion: {
3200
+ /**
3201
+ * @description Resource identifier
3202
+ * @example 6a577711abc1ce71383d3e10
3203
+ */
3204
+ id: string;
3205
+ /** @example Mega Evolution 30th Celebration */
3206
+ name: string;
3207
+ /** @example 30th Celebration */
3208
+ shortName: string;
3209
+ /** @example jpn-mega-evolution-30th-celebration */
3210
+ technicalName: string;
3211
+ /**
3212
+ * @description Printing language of the item
3213
+ * @example JPN
3214
+ * @enum {string}
3215
+ */
3216
+ language: "ENG" | "JPN" | "CHI";
3217
+ /** @example m6a */
3218
+ code: string | undefined;
3219
+ /** @example m6a */
3220
+ cardCode: string | undefined;
3221
+ /** @example Mega Evolution */
3222
+ seriesName: string | undefined;
3223
+ /**
3224
+ * Format: date-time
3225
+ * @example 2026-07-15T12:03:29.322Z
3226
+ */
3227
+ releaseDate: string | undefined;
3228
+ /**
3229
+ * @description Absolute asset URL, or null when absent
3230
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3231
+ */
3232
+ logoUrl: string | undefined;
3233
+ /**
3234
+ * @description Absolute asset URL, or null when absent
3235
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3236
+ */
3237
+ symbolUrl: string | undefined;
3238
+ /**
3239
+ * @description Absolute asset URL, or null when absent
3240
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3241
+ */
3242
+ imageUrl: string | undefined;
3243
+ } | undefined;
3244
+ /**
3245
+ * @description Printing language of the item
3246
+ * @example JPN
3247
+ * @enum {string|null}
3248
+ */
3249
+ language: "ENG" | "JPN" | "CHI" | undefined;
3250
+ alternativeNames: {
3251
+ name: string;
3252
+ shortName: string | undefined;
3253
+ }[];
3254
+ supportsMultipackPricing: boolean;
3255
+ /**
3256
+ * @description Absolute asset URL, or null when absent
3257
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3258
+ */
3259
+ imageUrl: string | undefined;
3260
+ /**
3261
+ * @description Cheapest current shop price, in SEK
3262
+ * @example 149.5
3263
+ */
3264
+ retailPrice: number | undefined;
3265
+ /**
3266
+ * @description Estimated market value, in SEK
3267
+ * @example 149.5
3268
+ */
3269
+ estimatedValue: number | undefined;
3270
+ /** @description Active shops currently tracking this item */
3271
+ shopCount: number;
3272
+ /** @description Observations the estimate rests on */
3273
+ pricingDataPoints: number;
3274
+ /**
3275
+ * Format: date-time
3276
+ * @example 2026-07-15T12:03:29.322Z
3277
+ */
3278
+ pricingUpdatedAt: string | undefined;
3279
+ /**
3280
+ * Format: date-time
3281
+ * @example 2026-07-15T12:03:29.322Z
3282
+ */
3283
+ createdAt: string;
3284
+ /**
3285
+ * Format: date-time
3286
+ * @example 2026-07-15T12:03:29.322Z
3287
+ */
3288
+ updatedAt: string;
3289
+ /** @enum {string} */
3290
+ kind: "card";
3291
+ /** @example 4/102 */
3292
+ cardNumber: string;
3293
+ /** @example Rare Holo */
3294
+ rarity: string | undefined;
3295
+ artist: string | undefined;
3296
+ cardmarketId: string | undefined;
3297
+ tcgplayerId: string | undefined;
3298
+ variants: {
3299
+ normal: boolean;
3300
+ holo: boolean;
3301
+ reverse: boolean;
3302
+ firstEdition: boolean;
3303
+ wPromo: boolean;
3304
+ } | undefined;
3305
+ prisjaktId: string | undefined;
3306
+ lowestShopOffer: {
3307
+ shop: {
3308
+ /** @example cardlevels */
3309
+ technicalName: string;
3310
+ /** @example Cardlevels */
3311
+ name: string;
3312
+ };
3313
+ url: string;
3314
+ /** @example 149.5 */
3315
+ price: number;
3316
+ /**
3317
+ * @description ISO-4217 currency code
3318
+ * @example SEK
3319
+ */
3320
+ currency: string;
3321
+ inStock: boolean;
3322
+ inPreorder: boolean;
3323
+ inMonitor: boolean;
3324
+ isFullyBooked: boolean;
3325
+ /**
3326
+ * Format: date-time
3327
+ * @example 2026-07-15T12:03:29.322Z
3328
+ */
3329
+ matchedAt: string;
3330
+ /**
3331
+ * Format: date-time
3332
+ * @example 2026-07-15T12:03:29.322Z
3333
+ */
3334
+ updatedAt: string;
3335
+ bargain: {
3336
+ discountPercent: number;
3337
+ /** @enum {string} */
3338
+ referenceSource: "retail" | "tradera" | "cardmarket";
3339
+ } | undefined;
3340
+ } | undefined;
3341
+ referencePriceSnapshotsByProvider: {
3342
+ [key: string]: {
3343
+ /** @enum {string} */
3344
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
3345
+ /** @example 149.5 */
3346
+ price: number;
3347
+ /**
3348
+ * @description ISO-4217 currency code
3349
+ * @example SEK
3350
+ */
3351
+ currency: string;
3352
+ /**
3353
+ * @description price converted to SEK at the rate stored on the row
3354
+ * @example 149.5
3355
+ */
3356
+ priceSek: number;
3357
+ /**
3358
+ * Format: date-time
3359
+ * @example 2026-07-15T12:03:29.322Z
3360
+ */
3361
+ snapshotDate: string;
3362
+ };
3363
+ };
3364
+ };
2807
3365
  /** A sealed product (booster box, ETB, tin, ...), as returned by `client.products.get()` /
2808
3366
  * `client.products.list()`. `kind: 'sealed'` is a literal on the generated type. */
2809
- type SealedProduct = components['schemas']['ProductWithPricing'];
3367
+ type SealedProduct = {
3368
+ /**
3369
+ * @description Resource identifier
3370
+ * @example 6a577711abc1ce71383d3e10
3371
+ */
3372
+ id: string;
3373
+ name: string;
3374
+ shortName: string | undefined;
3375
+ technicalName: string;
3376
+ brand: {
3377
+ /**
3378
+ * @description Resource identifier
3379
+ * @example 6a577711abc1ce71383d3e10
3380
+ */
3381
+ id: string;
3382
+ /** @example Pokémon */
3383
+ name: string;
3384
+ /** @example pokemon */
3385
+ technicalName: string;
3386
+ /**
3387
+ * Format: date-time
3388
+ * @example 2026-07-15T12:03:29.322Z
3389
+ */
3390
+ createdAt: string;
3391
+ /**
3392
+ * Format: date-time
3393
+ * @example 2026-07-15T12:03:29.322Z
3394
+ */
3395
+ updatedAt: string;
3396
+ };
3397
+ manufacturer: string;
3398
+ modelNumber: string | undefined;
3399
+ category: {
3400
+ /**
3401
+ * @description Resource identifier
3402
+ * @example 6a577711abc1ce71383d3e10
3403
+ */
3404
+ id: string;
3405
+ /** @example Booster Box */
3406
+ name: string;
3407
+ /** @example booster-box */
3408
+ technicalName: string;
3409
+ } | undefined;
3410
+ expansion: {
3411
+ /**
3412
+ * @description Resource identifier
3413
+ * @example 6a577711abc1ce71383d3e10
3414
+ */
3415
+ id: string;
3416
+ /** @example Mega Evolution 30th Celebration */
3417
+ name: string;
3418
+ /** @example 30th Celebration */
3419
+ shortName: string;
3420
+ /** @example jpn-mega-evolution-30th-celebration */
3421
+ technicalName: string;
3422
+ /**
3423
+ * @description Printing language of the item
3424
+ * @example JPN
3425
+ * @enum {string}
3426
+ */
3427
+ language: "ENG" | "JPN" | "CHI";
3428
+ /** @example m6a */
3429
+ code: string | undefined;
3430
+ /** @example m6a */
3431
+ cardCode: string | undefined;
3432
+ /** @example Mega Evolution */
3433
+ seriesName: string | undefined;
3434
+ /**
3435
+ * Format: date-time
3436
+ * @example 2026-07-15T12:03:29.322Z
3437
+ */
3438
+ releaseDate: string | undefined;
3439
+ /**
3440
+ * @description Absolute asset URL, or null when absent
3441
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3442
+ */
3443
+ logoUrl: string | undefined;
3444
+ /**
3445
+ * @description Absolute asset URL, or null when absent
3446
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3447
+ */
3448
+ symbolUrl: string | undefined;
3449
+ /**
3450
+ * @description Absolute asset URL, or null when absent
3451
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3452
+ */
3453
+ imageUrl: string | undefined;
3454
+ } | undefined;
3455
+ /**
3456
+ * @description Printing language of the item
3457
+ * @example JPN
3458
+ * @enum {string|null}
3459
+ */
3460
+ language: "ENG" | "JPN" | "CHI" | undefined;
3461
+ alternativeNames: {
3462
+ name: string;
3463
+ shortName: string | undefined;
3464
+ }[];
3465
+ supportsMultipackPricing: boolean;
3466
+ /**
3467
+ * @description Absolute asset URL, or null when absent
3468
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3469
+ */
3470
+ imageUrl: string | undefined;
3471
+ /**
3472
+ * @description Cheapest current shop price, in SEK
3473
+ * @example 149.5
3474
+ */
3475
+ retailPrice: number | undefined;
3476
+ /**
3477
+ * @description Estimated market value, in SEK
3478
+ * @example 149.5
3479
+ */
3480
+ estimatedValue: number | undefined;
3481
+ /** @description Active shops currently tracking this item */
3482
+ shopCount: number;
3483
+ /** @description Observations the estimate rests on */
3484
+ pricingDataPoints: number;
3485
+ /**
3486
+ * Format: date-time
3487
+ * @example 2026-07-15T12:03:29.322Z
3488
+ */
3489
+ pricingUpdatedAt: string | undefined;
3490
+ /**
3491
+ * Format: date-time
3492
+ * @example 2026-07-15T12:03:29.322Z
3493
+ */
3494
+ createdAt: string;
3495
+ /**
3496
+ * Format: date-time
3497
+ * @example 2026-07-15T12:03:29.322Z
3498
+ */
3499
+ updatedAt: string;
3500
+ /** @enum {string} */
3501
+ kind: "sealed";
3502
+ upc: string | undefined;
3503
+ asin: string | undefined;
3504
+ epid: string | undefined;
3505
+ priceChartingId: string | undefined;
3506
+ prisjaktId: string | undefined;
3507
+ lowestShopOffer: {
3508
+ shop: {
3509
+ /** @example cardlevels */
3510
+ technicalName: string;
3511
+ /** @example Cardlevels */
3512
+ name: string;
3513
+ };
3514
+ url: string;
3515
+ /** @example 149.5 */
3516
+ price: number;
3517
+ /**
3518
+ * @description ISO-4217 currency code
3519
+ * @example SEK
3520
+ */
3521
+ currency: string;
3522
+ inStock: boolean;
3523
+ inPreorder: boolean;
3524
+ inMonitor: boolean;
3525
+ isFullyBooked: boolean;
3526
+ /**
3527
+ * Format: date-time
3528
+ * @example 2026-07-15T12:03:29.322Z
3529
+ */
3530
+ matchedAt: string;
3531
+ /**
3532
+ * Format: date-time
3533
+ * @example 2026-07-15T12:03:29.322Z
3534
+ */
3535
+ updatedAt: string;
3536
+ bargain: {
3537
+ discountPercent: number;
3538
+ /** @enum {string} */
3539
+ referenceSource: "retail" | "tradera" | "cardmarket";
3540
+ } | undefined;
3541
+ } | undefined;
3542
+ referencePriceSnapshotsByProvider: {
3543
+ [key: string]: {
3544
+ /** @enum {string} */
3545
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
3546
+ /** @example 149.5 */
3547
+ price: number;
3548
+ /**
3549
+ * @description ISO-4217 currency code
3550
+ * @example SEK
3551
+ */
3552
+ currency: string;
3553
+ /**
3554
+ * @description price converted to SEK at the rate stored on the row
3555
+ * @example 149.5
3556
+ */
3557
+ priceSek: number;
3558
+ /**
3559
+ * Format: date-time
3560
+ * @example 2026-07-15T12:03:29.322Z
3561
+ */
3562
+ snapshotDate: string;
3563
+ };
3564
+ };
3565
+ };
2810
3566
  /** A card or sealed product, discriminated on `kind`. */
2811
3567
  type CatalogItem = Card | SealedProduct;
2812
- type CardVariants = NonNullable<Card['variants']>;
3568
+ type CardVariants = {
3569
+ normal: boolean;
3570
+ holo: boolean;
3571
+ reverse: boolean;
3572
+ firstEdition: boolean;
3573
+ wPromo: boolean;
3574
+ };
2813
3575
  /** The compact item reference used inside flat shop-match rows (`client.shopMatches.list()` /
2814
3576
  * `.forShop()`), enough to render a result list, not the full `CatalogItem`. */
2815
- type MatchedItemRef = NonNullable<components['schemas']['ShopMatchWithItem']['item']>;
3577
+ type MatchedItemRef = {
3578
+ /**
3579
+ * @description Resource identifier
3580
+ * @example 6a577711abc1ce71383d3e10
3581
+ */
3582
+ id: string;
3583
+ /** @enum {string} */
3584
+ kind: "card" | "sealed";
3585
+ name: string;
3586
+ shortName: string | undefined;
3587
+ technicalName: string;
3588
+ cardNumber: string | undefined;
3589
+ imageUrl: string | undefined;
3590
+ language: string | undefined;
3591
+ priceChartingId: string | undefined;
3592
+ };
2816
3593
  /** One shop listing currently discounted relative to a reference price (retail, Tradera, or
2817
3594
  * Cardmarket). Returned by `client.bargains.list()` / `client.bargains.search()`. */
2818
- type Bargain = components['schemas']['BargainListResponse']['data'][number];
2819
- type BargainProductRef = Bargain['product'];
2820
-
3595
+ type Bargain = {
3596
+ url: string;
3597
+ /** @example 149.5 */
3598
+ price: number | undefined;
3599
+ /**
3600
+ * @description ISO-4217 currency code
3601
+ * @example SEK
3602
+ */
3603
+ currency: string | undefined;
3604
+ shop: {
3605
+ /** @example cardlevels */
3606
+ technicalName: string;
3607
+ /** @example Cardlevels */
3608
+ name: string;
3609
+ };
3610
+ inStock: boolean;
3611
+ /**
3612
+ * Format: date-time
3613
+ * @example 2026-07-15T12:03:29.322Z
3614
+ */
3615
+ matchedAt: string;
3616
+ product: {
3617
+ /**
3618
+ * @description Resource identifier
3619
+ * @example 6a577711abc1ce71383d3e10
3620
+ */
3621
+ id: string;
3622
+ /** @enum {string} */
3623
+ kind: "sealed" | "card";
3624
+ name: string;
3625
+ technicalName: string;
3626
+ imageUrl: string | undefined;
3627
+ };
3628
+ bargain: {
3629
+ discountPercent: number;
3630
+ /** @enum {string} */
3631
+ referenceSource: "retail" | "tradera" | "cardmarket";
3632
+ };
3633
+ };
3634
+ type BargainProductRef = {
3635
+ /**
3636
+ * @description Resource identifier
3637
+ * @example 6a577711abc1ce71383d3e10
3638
+ */
3639
+ id: string;
3640
+ /** @enum {string} */
3641
+ kind: "sealed" | "card";
3642
+ name: string;
3643
+ technicalName: string;
3644
+ imageUrl: string | undefined;
3645
+ };
2821
3646
  /** A set/expansion, as returned by `client.expansions.list()`. This is the full record. The
2822
3647
  * `expansion` field embedded on a card or product is the smaller `ExpansionRef` from
2823
3648
  * `types/common.ts`. */
2824
- type Expansion = components['schemas']['Expansion'];
3649
+ type Expansion = {
3650
+ /**
3651
+ * @description Resource identifier
3652
+ * @example 6a577711abc1ce71383d3e10
3653
+ */
3654
+ id: string;
3655
+ /** @example Mega Evolution 30th Celebration */
3656
+ name: string;
3657
+ /** @example 30th Celebration */
3658
+ shortName: string;
3659
+ /** @example jpn-mega-evolution-30th-celebration */
3660
+ technicalName: string;
3661
+ /**
3662
+ * @description Printing language of the item
3663
+ * @example JPN
3664
+ * @enum {string}
3665
+ */
3666
+ language: "ENG" | "JPN" | "CHI";
3667
+ /** @example m6a */
3668
+ code: string | undefined;
3669
+ /** @example m6a */
3670
+ cardCode: string | undefined;
3671
+ /** @example Mega Evolution */
3672
+ seriesName: string | undefined;
3673
+ /**
3674
+ * Format: date-time
3675
+ * @example 2026-07-15T12:03:29.322Z
3676
+ */
3677
+ releaseDate: string | undefined;
3678
+ /**
3679
+ * @description Absolute asset URL, or null when absent
3680
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3681
+ */
3682
+ logoUrl: string | undefined;
3683
+ /**
3684
+ * @description Absolute asset URL, or null when absent
3685
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3686
+ */
3687
+ symbolUrl: string | undefined;
3688
+ /**
3689
+ * @description Absolute asset URL, or null when absent
3690
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3691
+ */
3692
+ imageUrl: string | undefined;
3693
+ year: number | undefined;
3694
+ brand: {
3695
+ /**
3696
+ * @description Resource identifier
3697
+ * @example 6a577711abc1ce71383d3e10
3698
+ */
3699
+ id: string;
3700
+ /** @example Pokémon */
3701
+ name: string;
3702
+ /** @example pokemon */
3703
+ technicalName: string;
3704
+ /**
3705
+ * Format: date-time
3706
+ * @example 2026-07-15T12:03:29.322Z
3707
+ */
3708
+ createdAt: string;
3709
+ /**
3710
+ * Format: date-time
3711
+ * @example 2026-07-15T12:03:29.322Z
3712
+ */
3713
+ updatedAt: string;
3714
+ };
3715
+ alternativeNames: {
3716
+ name: string;
3717
+ shortName: string | undefined;
3718
+ }[];
3719
+ /** @description Sealed products in this expansion */
3720
+ sealedCount: number;
3721
+ /** @description Cards in this expansion */
3722
+ cardCount: number;
3723
+ /** @description Sealed products plus cards */
3724
+ productCount: number;
3725
+ /**
3726
+ * Format: date-time
3727
+ * @example 2026-07-15T12:03:29.322Z
3728
+ */
3729
+ createdAt: string;
3730
+ /**
3731
+ * Format: date-time
3732
+ * @example 2026-07-15T12:03:29.322Z
3733
+ */
3734
+ updatedAt: string;
3735
+ };
2825
3736
  /** Response of `client.expansions.products()`: everything in one expansion, cards and sealed
2826
3737
  * products kept as separate `cards`/`sealed` groups rather than merged into one mixed list. */
2827
- type ExpansionContents = components['schemas']['ExpansionContents'];
2828
-
2829
- type ShopMatchWithItemSchema = components['schemas']['ShopMatchWithItem'];
2830
- type ItemShopMatchSchema = components['schemas']['ItemShopMatches']['data'][number];
2831
- /** A shop tracked by tcgpriser, as returned by `client.shops.list()` / `client.shops.get()`. The
2832
- * `*Count` fields are `undefined` when the shop has never had a match computed (rather than `0`, which
2833
- * would mean "matched, currently empty"). */
2834
- type Shop = components['schemas']['Shop'];
2835
- /** The lighter shop shape embedded in shop-match responses: a subset of `Shop`, no id or delivery
2836
- * cost breakdown. */
2837
- type ShopSummary = components['schemas']['ShopMatchStats']['shop'];
2838
- type CardType = NonNullable<ShopMatchWithItemSchema['cardType']>;
2839
- type ItemCondition = NonNullable<ShopMatchWithItemSchema['itemCondition']>;
2840
- type GradingCompany = NonNullable<ShopMatchWithItemSchema['gradingCompany']>;
2841
- /** A shop's listing matched (or not yet matched) to a catalog item. Returned by
2842
- * `client.shopMatches.list()` and as the rows inside `client.shopMatches.forShop()`. */
2843
- type ShopMatch = ShopMatchWithItemSchema;
2844
- type ShopMatchDelivery = ItemShopMatchSchema['shop']['delivery'];
2845
- /** A shop-match row scoped to one already-known item. `client.cards.matches()` and
2846
- * `client.products.matches()` drop `item`/`expansion`/`category` since the caller already has
2847
- * them, but add delivery terms since you're looking at one listing's total cost here. */
2848
- type ItemShopMatch = ItemShopMatchSchema;
2849
- /** Response of `client.cards.matches()` / `client.products.matches()`. */
2850
- type ItemShopMatches = components['schemas']['ItemShopMatches'];
2851
- /** Response of `client.shopMatches.forShop()`: every match, of any item, currently live at one shop. */
2852
- type ShopMatchesForShop = components['schemas']['ShopMatchesForShop'];
2853
- /** One row of `client.shopMatches.shopStats()`: match counts per shop, not the matches themselves. */
2854
- type ShopMatchStats = components['schemas']['ShopMatchStats'];
2855
-
2856
- /** A named `{ id, name }` reference to a card or product: the compact identity used by every
2857
- * `price-stats` response, which is keyed by item rather than embedding the full catalog record. */
2858
- type ItemRef = components['schemas']['ItemDailyStats']['item'];
2859
- /** One day's average price for one item. */
2860
- type DailyPricePoint = components['schemas']['ItemDailyStats']['dailyStats'][number];
2861
- /** Response row of `client.priceStats.daily()`. */
2862
- type ItemDailyStats = components['schemas']['ItemDailyStats'];
2863
- type EstimatedValue = components['schemas']['ItemEstimatedValue']['estimate'];
2864
- /** Response row of `client.priceStats.estimatedValues()`. */
2865
- type ItemEstimatedValue = components['schemas']['ItemEstimatedValue'];
2866
- /** Response row of `client.priceStats.topProducts()`: items ranked by shop availability, not price. */
2867
- type TopItem = components['schemas']['TopItem'];
2868
-
2869
- /** One rarity's share of a booster pack's pulls. `weight` is relative to the other buckets in the
2870
- * same pack rate, not a percentage. Normalise across `buckets` yourself if you need one. */
2871
- type PackRateBucket = components['schemas']['PackRate']['buckets'][number];
2872
- /** Pull-rate odds for one expansion's booster packs, as returned by `client.packRates.list()` /
2873
- * `client.packRates.get()`. */
2874
- type PackRate = components['schemas']['PackRate'];
2875
-
2876
- /** Platform-wide overview counts, returned by `client.stats.platform()`. */
2877
- type PlatformStats = components['schemas']['PlatformStats'];
2878
-
2879
- /**
2880
- * Types for the premium tier: endpoints that need a signed-in subscriber's JWT (see
2881
- * `TcgPriserOptions.authToken`, or the `authToken` field on each premium method's params). Split
2882
- * out from the public-tier types because none of these mean anything without a token: without one,
2883
- * the API just answers `403 premiumRequired`.
2884
- *
2885
- * Derived from `src/generated/openapi.d.ts`, same as everything else in this directory.
2886
- */
2887
-
2888
- type ReferencePriceSeries = components['schemas']['ItemReferencePrices']['series'][number];
2889
- type ReferencePriceSeriesPoint = ReferencePriceSeries['points'][number];
2890
- type ReferencePriceSource = ReferencePriceSeries['source'];
2891
- type ReferencePriceCardVariant = NonNullable<ReferencePriceSeries['variant']>;
2892
- type ReferencePriceMetric = components['schemas']['ItemReferencePrices']['metric'];
2893
- type ReferencePriceCurrencyMode = components['schemas']['ItemReferencePrices']['currencyMode'];
2894
- /** Response of `client.cards.referencePrices()` / `client.products.referencePrices()`.
2895
- *
2896
- * Non-graded card prices come from TCGdex and are variant-aware (normal / holo / reverse). Graded
2897
- * prices and eBay medians come from cmapi. Tradera is tcgpriser's own data: realised Swedish
2898
- * auction sales rather than asking prices, always SEK, no variant. In native mode each series
2899
- * keeps its own `currency`; in `sek` mode everything is `SEK`, converted at the rate stored on
2900
- * each point. */
2901
- type ItemReferencePrices = components['schemas']['ItemReferencePrices'];
2902
- type SoldPrice = components['schemas']['ItemSoldPrices']['data'][number];
2903
- /** Response of `client.cards.prices()` / `client.products.prices()`. `premiumRequired` is always
2904
- * `true` here. That field only exists because this envelope shape is shared with a free preview
2905
- * elsewhere in the API; this response is never the preview. */
2906
- type ItemSoldPrices = components['schemas']['ItemSoldPrices'];
2907
- type LivePricingDetail = components['schemas']['LivePricingForItem']['pricing'];
2908
- /** Response of `client.cards.livePricing()` / `client.products.livePricing()`. */
2909
- type LivePricingForItem = components['schemas']['LivePricingForItem'];
2910
- /** Response of `client.expansions.livePricing()`: live pricing for every item in one expansion. */
2911
- type ExpansionLivePricing = components['schemas']['ExpansionLivePricing'];
2912
- /** The catalog item as embedded in stats responses: a `Card`/`SealedProduct` minus
2913
- * `lowestShopOffer` and `referencePriceSnapshotsByProvider`, which these endpoints already answer
2914
- * more precisely on their own. */
2915
- type StatsItemRef = components['schemas']['ItemStats']['item'];
2916
- type VariantStatsSummary = components['schemas']['ItemStats']['variantStats'];
2917
- /** Response of `client.priceStats.product()`. */
2918
- type ItemStats = components['schemas']['ItemStats'];
2919
- /** Response of `client.priceStats.productFull()`: everything `product()` has, plus the item's
2920
- * current shop matches. */
2921
- type ItemFullStats = components['schemas']['ItemFullStats'];
2922
- type VariantPriceStat = components['schemas']['ItemVariantStats']['variants']['loose'][string];
2923
- /** Response of `client.priceStats.productByVariant()`. The generated shape keys `loose`/`graded`
2924
- * by a bare `string` (JSON Schema `additionalProperties` doesn't carry an enum), re-keyed here by
2925
- * `ItemCondition`/`GradingCompany` for real autocomplete. Only hand-written wrapper in this file.
2926
- * `graded` has a second string-keyed level for grade (`10`, `9.5` etc, straight from a JSON key). */
2927
- interface ItemVariantStats {
2928
- item: components['schemas']['ItemVariantStats']['item'];
2929
- variants: {
2930
- loose: Partial<Record<ItemCondition, VariantPriceStat>>;
2931
- graded: Partial<Record<GradingCompany, Record<string, VariantPriceStat>>>;
3738
+ type ExpansionContents = {
3739
+ expansion: {
3740
+ /**
3741
+ * @description Resource identifier
3742
+ * @example 6a577711abc1ce71383d3e10
3743
+ */
3744
+ id: string;
3745
+ /** @example Mega Evolution 30th Celebration */
3746
+ name: string;
3747
+ /** @example 30th Celebration */
3748
+ shortName: string;
3749
+ /** @example jpn-mega-evolution-30th-celebration */
3750
+ technicalName: string;
3751
+ /**
3752
+ * @description Printing language of the item
3753
+ * @example JPN
3754
+ * @enum {string}
3755
+ */
3756
+ language: "ENG" | "JPN" | "CHI";
3757
+ /** @example m6a */
3758
+ code: string | undefined;
3759
+ /** @example m6a */
3760
+ cardCode: string | undefined;
3761
+ /** @example Mega Evolution */
3762
+ seriesName: string | undefined;
3763
+ /**
3764
+ * Format: date-time
3765
+ * @example 2026-07-15T12:03:29.322Z
3766
+ */
3767
+ releaseDate: string | undefined;
3768
+ /**
3769
+ * @description Absolute asset URL, or null when absent
3770
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3771
+ */
3772
+ logoUrl: string | undefined;
3773
+ /**
3774
+ * @description Absolute asset URL, or null when absent
3775
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3776
+ */
3777
+ symbolUrl: string | undefined;
3778
+ /**
3779
+ * @description Absolute asset URL, or null when absent
3780
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3781
+ */
3782
+ imageUrl: string | undefined;
2932
3783
  };
2933
- }
2934
- type VariantSelector = components['schemas']['ItemVariantDailyStats']['variant'];
2935
- /** Response of `client.priceStats.productDailyByVariant()`. */
2936
- type ItemVariantDailyStats = components['schemas']['ItemVariantDailyStats'];
2937
- type ShopPricePoint = components['schemas']['ItemShopPriceHistory']['shops'][number]['history'][number];
2938
- /** Response of `client.shopMatchStats.forProduct()`: one product's price history, broken out per
2939
- * shop. */
2940
- type ItemShopPriceHistory = components['schemas']['ItemShopPriceHistory'];
2941
- /** Response of `client.shopMatchStats.forShop()`: one shop's price history, broken out per
2942
- * product. */
2943
- type ShopPriceHistoryList = components['schemas']['ShopPriceHistoryList'];
2944
- type ShopPriceComparisonRow = components['schemas']['ItemPriceComparison']['items'][number];
2945
- type ShopPriceComparisonStats = NonNullable<components['schemas']['ItemPriceComparison']['stats']>;
2946
- /** Response of `client.shopMatchStats.compare()`: one product's price at every shop that carries
2947
- * it, as of one date. `stats` is `undefined` when no shop had a price on that date. */
2948
- type ItemPriceComparison = components['schemas']['ItemPriceComparison'];
2949
- type ShopUrlStatus = components['schemas']['ShopUrlMutationResult']['shopUrl']['status'];
2950
- type ShopUrlDiscoveredBy = components['schemas']['ShopUrlMutationResult']['shopUrl']['discoveredBy'];
2951
- /** A URL at a shop that tcgpriser scrapes, and what it has been matched to. */
2952
- type ShopUrl = components['schemas']['ShopUrlMutationResult']['shopUrl'];
2953
- /** Response of `client.shopUrls.submit()` / `client.shopUrls.assignProduct()`. */
2954
- type ShopUrlMutationResult = components['schemas']['ShopUrlMutationResult'];
2955
-
3784
+ cards: {
3785
+ count: number;
3786
+ items: {
3787
+ /**
3788
+ * @description Resource identifier
3789
+ * @example 6a577711abc1ce71383d3e10
3790
+ */
3791
+ id: string;
3792
+ name: string;
3793
+ shortName: string | undefined;
3794
+ technicalName: string;
3795
+ brand: {
3796
+ /**
3797
+ * @description Resource identifier
3798
+ * @example 6a577711abc1ce71383d3e10
3799
+ */
3800
+ id: string;
3801
+ /** @example Pokémon */
3802
+ name: string;
3803
+ /** @example pokemon */
3804
+ technicalName: string;
3805
+ /**
3806
+ * Format: date-time
3807
+ * @example 2026-07-15T12:03:29.322Z
3808
+ */
3809
+ createdAt: string;
3810
+ /**
3811
+ * Format: date-time
3812
+ * @example 2026-07-15T12:03:29.322Z
3813
+ */
3814
+ updatedAt: string;
3815
+ };
3816
+ manufacturer: string;
3817
+ modelNumber: string | undefined;
3818
+ category: {
3819
+ /**
3820
+ * @description Resource identifier
3821
+ * @example 6a577711abc1ce71383d3e10
3822
+ */
3823
+ id: string;
3824
+ /** @example Booster Box */
3825
+ name: string;
3826
+ /** @example booster-box */
3827
+ technicalName: string;
3828
+ } | undefined;
3829
+ expansion: {
3830
+ /**
3831
+ * @description Resource identifier
3832
+ * @example 6a577711abc1ce71383d3e10
3833
+ */
3834
+ id: string;
3835
+ /** @example Mega Evolution 30th Celebration */
3836
+ name: string;
3837
+ /** @example 30th Celebration */
3838
+ shortName: string;
3839
+ /** @example jpn-mega-evolution-30th-celebration */
3840
+ technicalName: string;
3841
+ /**
3842
+ * @description Printing language of the item
3843
+ * @example JPN
3844
+ * @enum {string}
3845
+ */
3846
+ language: "ENG" | "JPN" | "CHI";
3847
+ /** @example m6a */
3848
+ code: string | undefined;
3849
+ /** @example m6a */
3850
+ cardCode: string | undefined;
3851
+ /** @example Mega Evolution */
3852
+ seriesName: string | undefined;
3853
+ /**
3854
+ * Format: date-time
3855
+ * @example 2026-07-15T12:03:29.322Z
3856
+ */
3857
+ releaseDate: string | undefined;
3858
+ /**
3859
+ * @description Absolute asset URL, or null when absent
3860
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3861
+ */
3862
+ logoUrl: string | undefined;
3863
+ /**
3864
+ * @description Absolute asset URL, or null when absent
3865
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3866
+ */
3867
+ symbolUrl: string | undefined;
3868
+ /**
3869
+ * @description Absolute asset URL, or null when absent
3870
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3871
+ */
3872
+ imageUrl: string | undefined;
3873
+ } | undefined;
3874
+ /**
3875
+ * @description Printing language of the item
3876
+ * @example JPN
3877
+ * @enum {string|null}
3878
+ */
3879
+ language: "ENG" | "JPN" | "CHI" | undefined;
3880
+ alternativeNames: {
3881
+ name: string;
3882
+ shortName: string | undefined;
3883
+ }[];
3884
+ supportsMultipackPricing: boolean;
3885
+ /**
3886
+ * @description Absolute asset URL, or null when absent
3887
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
3888
+ */
3889
+ imageUrl: string | undefined;
3890
+ /**
3891
+ * @description Cheapest current shop price, in SEK
3892
+ * @example 149.5
3893
+ */
3894
+ retailPrice: number | undefined;
3895
+ /**
3896
+ * @description Estimated market value, in SEK
3897
+ * @example 149.5
3898
+ */
3899
+ estimatedValue: number | undefined;
3900
+ /** @description Active shops currently tracking this item */
3901
+ shopCount: number;
3902
+ /** @description Observations the estimate rests on */
3903
+ pricingDataPoints: number;
3904
+ /**
3905
+ * Format: date-time
3906
+ * @example 2026-07-15T12:03:29.322Z
3907
+ */
3908
+ pricingUpdatedAt: string | undefined;
3909
+ /**
3910
+ * Format: date-time
3911
+ * @example 2026-07-15T12:03:29.322Z
3912
+ */
3913
+ createdAt: string;
3914
+ /**
3915
+ * Format: date-time
3916
+ * @example 2026-07-15T12:03:29.322Z
3917
+ */
3918
+ updatedAt: string;
3919
+ /** @enum {string} */
3920
+ kind: "card";
3921
+ /** @example 4/102 */
3922
+ cardNumber: string;
3923
+ /** @example Rare Holo */
3924
+ rarity: string | undefined;
3925
+ artist: string | undefined;
3926
+ cardmarketId: string | undefined;
3927
+ tcgplayerId: string | undefined;
3928
+ variants: {
3929
+ normal: boolean;
3930
+ holo: boolean;
3931
+ reverse: boolean;
3932
+ firstEdition: boolean;
3933
+ wPromo: boolean;
3934
+ } | undefined;
3935
+ prisjaktId: string | undefined;
3936
+ lowestShopOffer: {
3937
+ shop: {
3938
+ /** @example cardlevels */
3939
+ technicalName: string;
3940
+ /** @example Cardlevels */
3941
+ name: string;
3942
+ };
3943
+ url: string;
3944
+ /** @example 149.5 */
3945
+ price: number;
3946
+ /**
3947
+ * @description ISO-4217 currency code
3948
+ * @example SEK
3949
+ */
3950
+ currency: string;
3951
+ inStock: boolean;
3952
+ inPreorder: boolean;
3953
+ inMonitor: boolean;
3954
+ isFullyBooked: boolean;
3955
+ /**
3956
+ * Format: date-time
3957
+ * @example 2026-07-15T12:03:29.322Z
3958
+ */
3959
+ matchedAt: string;
3960
+ /**
3961
+ * Format: date-time
3962
+ * @example 2026-07-15T12:03:29.322Z
3963
+ */
3964
+ updatedAt: string;
3965
+ bargain: {
3966
+ discountPercent: number;
3967
+ /** @enum {string} */
3968
+ referenceSource: "retail" | "tradera" | "cardmarket";
3969
+ } | undefined;
3970
+ } | undefined;
3971
+ referencePriceSnapshotsByProvider: {
3972
+ [key: string]: {
3973
+ /** @enum {string} */
3974
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
3975
+ /** @example 149.5 */
3976
+ price: number;
3977
+ /**
3978
+ * @description ISO-4217 currency code
3979
+ * @example SEK
3980
+ */
3981
+ currency: string;
3982
+ /**
3983
+ * @description price converted to SEK at the rate stored on the row
3984
+ * @example 149.5
3985
+ */
3986
+ priceSek: number;
3987
+ /**
3988
+ * Format: date-time
3989
+ * @example 2026-07-15T12:03:29.322Z
3990
+ */
3991
+ snapshotDate: string;
3992
+ };
3993
+ };
3994
+ }[];
3995
+ };
3996
+ sealed: {
3997
+ count: number;
3998
+ items: {
3999
+ /**
4000
+ * @description Resource identifier
4001
+ * @example 6a577711abc1ce71383d3e10
4002
+ */
4003
+ id: string;
4004
+ name: string;
4005
+ shortName: string | undefined;
4006
+ technicalName: string;
4007
+ brand: {
4008
+ /**
4009
+ * @description Resource identifier
4010
+ * @example 6a577711abc1ce71383d3e10
4011
+ */
4012
+ id: string;
4013
+ /** @example Pokémon */
4014
+ name: string;
4015
+ /** @example pokemon */
4016
+ technicalName: string;
4017
+ /**
4018
+ * Format: date-time
4019
+ * @example 2026-07-15T12:03:29.322Z
4020
+ */
4021
+ createdAt: string;
4022
+ /**
4023
+ * Format: date-time
4024
+ * @example 2026-07-15T12:03:29.322Z
4025
+ */
4026
+ updatedAt: string;
4027
+ };
4028
+ manufacturer: string;
4029
+ modelNumber: string | undefined;
4030
+ category: {
4031
+ /**
4032
+ * @description Resource identifier
4033
+ * @example 6a577711abc1ce71383d3e10
4034
+ */
4035
+ id: string;
4036
+ /** @example Booster Box */
4037
+ name: string;
4038
+ /** @example booster-box */
4039
+ technicalName: string;
4040
+ } | undefined;
4041
+ expansion: {
4042
+ /**
4043
+ * @description Resource identifier
4044
+ * @example 6a577711abc1ce71383d3e10
4045
+ */
4046
+ id: string;
4047
+ /** @example Mega Evolution 30th Celebration */
4048
+ name: string;
4049
+ /** @example 30th Celebration */
4050
+ shortName: string;
4051
+ /** @example jpn-mega-evolution-30th-celebration */
4052
+ technicalName: string;
4053
+ /**
4054
+ * @description Printing language of the item
4055
+ * @example JPN
4056
+ * @enum {string}
4057
+ */
4058
+ language: "ENG" | "JPN" | "CHI";
4059
+ /** @example m6a */
4060
+ code: string | undefined;
4061
+ /** @example m6a */
4062
+ cardCode: string | undefined;
4063
+ /** @example Mega Evolution */
4064
+ seriesName: string | undefined;
4065
+ /**
4066
+ * Format: date-time
4067
+ * @example 2026-07-15T12:03:29.322Z
4068
+ */
4069
+ releaseDate: string | undefined;
4070
+ /**
4071
+ * @description Absolute asset URL, or null when absent
4072
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4073
+ */
4074
+ logoUrl: string | undefined;
4075
+ /**
4076
+ * @description Absolute asset URL, or null when absent
4077
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4078
+ */
4079
+ symbolUrl: string | undefined;
4080
+ /**
4081
+ * @description Absolute asset URL, or null when absent
4082
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4083
+ */
4084
+ imageUrl: string | undefined;
4085
+ } | undefined;
4086
+ /**
4087
+ * @description Printing language of the item
4088
+ * @example JPN
4089
+ * @enum {string|null}
4090
+ */
4091
+ language: "ENG" | "JPN" | "CHI" | undefined;
4092
+ alternativeNames: {
4093
+ name: string;
4094
+ shortName: string | undefined;
4095
+ }[];
4096
+ supportsMultipackPricing: boolean;
4097
+ /**
4098
+ * @description Absolute asset URL, or null when absent
4099
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4100
+ */
4101
+ imageUrl: string | undefined;
4102
+ /**
4103
+ * @description Cheapest current shop price, in SEK
4104
+ * @example 149.5
4105
+ */
4106
+ retailPrice: number | undefined;
4107
+ /**
4108
+ * @description Estimated market value, in SEK
4109
+ * @example 149.5
4110
+ */
4111
+ estimatedValue: number | undefined;
4112
+ /** @description Active shops currently tracking this item */
4113
+ shopCount: number;
4114
+ /** @description Observations the estimate rests on */
4115
+ pricingDataPoints: number;
4116
+ /**
4117
+ * Format: date-time
4118
+ * @example 2026-07-15T12:03:29.322Z
4119
+ */
4120
+ pricingUpdatedAt: string | undefined;
4121
+ /**
4122
+ * Format: date-time
4123
+ * @example 2026-07-15T12:03:29.322Z
4124
+ */
4125
+ createdAt: string;
4126
+ /**
4127
+ * Format: date-time
4128
+ * @example 2026-07-15T12:03:29.322Z
4129
+ */
4130
+ updatedAt: string;
4131
+ /** @enum {string} */
4132
+ kind: "sealed";
4133
+ upc: string | undefined;
4134
+ asin: string | undefined;
4135
+ epid: string | undefined;
4136
+ priceChartingId: string | undefined;
4137
+ prisjaktId: string | undefined;
4138
+ lowestShopOffer: {
4139
+ shop: {
4140
+ /** @example cardlevels */
4141
+ technicalName: string;
4142
+ /** @example Cardlevels */
4143
+ name: string;
4144
+ };
4145
+ url: string;
4146
+ /** @example 149.5 */
4147
+ price: number;
4148
+ /**
4149
+ * @description ISO-4217 currency code
4150
+ * @example SEK
4151
+ */
4152
+ currency: string;
4153
+ inStock: boolean;
4154
+ inPreorder: boolean;
4155
+ inMonitor: boolean;
4156
+ isFullyBooked: boolean;
4157
+ /**
4158
+ * Format: date-time
4159
+ * @example 2026-07-15T12:03:29.322Z
4160
+ */
4161
+ matchedAt: string;
4162
+ /**
4163
+ * Format: date-time
4164
+ * @example 2026-07-15T12:03:29.322Z
4165
+ */
4166
+ updatedAt: string;
4167
+ bargain: {
4168
+ discountPercent: number;
4169
+ /** @enum {string} */
4170
+ referenceSource: "retail" | "tradera" | "cardmarket";
4171
+ } | undefined;
4172
+ } | undefined;
4173
+ referencePriceSnapshotsByProvider: {
4174
+ [key: string]: {
4175
+ /** @enum {string} */
4176
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
4177
+ /** @example 149.5 */
4178
+ price: number;
4179
+ /**
4180
+ * @description ISO-4217 currency code
4181
+ * @example SEK
4182
+ */
4183
+ currency: string;
4184
+ /**
4185
+ * @description price converted to SEK at the rate stored on the row
4186
+ * @example 149.5
4187
+ */
4188
+ priceSek: number;
4189
+ /**
4190
+ * Format: date-time
4191
+ * @example 2026-07-15T12:03:29.322Z
4192
+ */
4193
+ snapshotDate: string;
4194
+ };
4195
+ };
4196
+ }[];
4197
+ };
4198
+ };
4199
+ /** One card as embedded in `client.expansions.products()`'s `cards` group. The API inlines this
4200
+ * rather than `$ref`-ing `CardWithPricing`, so it's a separately-named (if structurally identical)
4201
+ * shape rather than literally `Card`. */
4202
+ type ExpansionCard = {
4203
+ /**
4204
+ * @description Resource identifier
4205
+ * @example 6a577711abc1ce71383d3e10
4206
+ */
4207
+ id: string;
4208
+ name: string;
4209
+ shortName: string | undefined;
4210
+ technicalName: string;
4211
+ brand: {
4212
+ /**
4213
+ * @description Resource identifier
4214
+ * @example 6a577711abc1ce71383d3e10
4215
+ */
4216
+ id: string;
4217
+ /** @example Pokémon */
4218
+ name: string;
4219
+ /** @example pokemon */
4220
+ technicalName: string;
4221
+ /**
4222
+ * Format: date-time
4223
+ * @example 2026-07-15T12:03:29.322Z
4224
+ */
4225
+ createdAt: string;
4226
+ /**
4227
+ * Format: date-time
4228
+ * @example 2026-07-15T12:03:29.322Z
4229
+ */
4230
+ updatedAt: string;
4231
+ };
4232
+ manufacturer: string;
4233
+ modelNumber: string | undefined;
4234
+ category: {
4235
+ /**
4236
+ * @description Resource identifier
4237
+ * @example 6a577711abc1ce71383d3e10
4238
+ */
4239
+ id: string;
4240
+ /** @example Booster Box */
4241
+ name: string;
4242
+ /** @example booster-box */
4243
+ technicalName: string;
4244
+ } | undefined;
4245
+ expansion: {
4246
+ /**
4247
+ * @description Resource identifier
4248
+ * @example 6a577711abc1ce71383d3e10
4249
+ */
4250
+ id: string;
4251
+ /** @example Mega Evolution 30th Celebration */
4252
+ name: string;
4253
+ /** @example 30th Celebration */
4254
+ shortName: string;
4255
+ /** @example jpn-mega-evolution-30th-celebration */
4256
+ technicalName: string;
4257
+ /**
4258
+ * @description Printing language of the item
4259
+ * @example JPN
4260
+ * @enum {string}
4261
+ */
4262
+ language: "ENG" | "JPN" | "CHI";
4263
+ /** @example m6a */
4264
+ code: string | undefined;
4265
+ /** @example m6a */
4266
+ cardCode: string | undefined;
4267
+ /** @example Mega Evolution */
4268
+ seriesName: string | undefined;
4269
+ /**
4270
+ * Format: date-time
4271
+ * @example 2026-07-15T12:03:29.322Z
4272
+ */
4273
+ releaseDate: string | undefined;
4274
+ /**
4275
+ * @description Absolute asset URL, or null when absent
4276
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4277
+ */
4278
+ logoUrl: string | undefined;
4279
+ /**
4280
+ * @description Absolute asset URL, or null when absent
4281
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4282
+ */
4283
+ symbolUrl: string | undefined;
4284
+ /**
4285
+ * @description Absolute asset URL, or null when absent
4286
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4287
+ */
4288
+ imageUrl: string | undefined;
4289
+ } | undefined;
4290
+ /**
4291
+ * @description Printing language of the item
4292
+ * @example JPN
4293
+ * @enum {string|null}
4294
+ */
4295
+ language: "ENG" | "JPN" | "CHI" | undefined;
4296
+ alternativeNames: {
4297
+ name: string;
4298
+ shortName: string | undefined;
4299
+ }[];
4300
+ supportsMultipackPricing: boolean;
4301
+ /**
4302
+ * @description Absolute asset URL, or null when absent
4303
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4304
+ */
4305
+ imageUrl: string | undefined;
4306
+ /**
4307
+ * @description Cheapest current shop price, in SEK
4308
+ * @example 149.5
4309
+ */
4310
+ retailPrice: number | undefined;
4311
+ /**
4312
+ * @description Estimated market value, in SEK
4313
+ * @example 149.5
4314
+ */
4315
+ estimatedValue: number | undefined;
4316
+ /** @description Active shops currently tracking this item */
4317
+ shopCount: number;
4318
+ /** @description Observations the estimate rests on */
4319
+ pricingDataPoints: number;
4320
+ /**
4321
+ * Format: date-time
4322
+ * @example 2026-07-15T12:03:29.322Z
4323
+ */
4324
+ pricingUpdatedAt: string | undefined;
4325
+ /**
4326
+ * Format: date-time
4327
+ * @example 2026-07-15T12:03:29.322Z
4328
+ */
4329
+ createdAt: string;
4330
+ /**
4331
+ * Format: date-time
4332
+ * @example 2026-07-15T12:03:29.322Z
4333
+ */
4334
+ updatedAt: string;
4335
+ /** @enum {string} */
4336
+ kind: "card";
4337
+ /** @example 4/102 */
4338
+ cardNumber: string;
4339
+ /** @example Rare Holo */
4340
+ rarity: string | undefined;
4341
+ artist: string | undefined;
4342
+ cardmarketId: string | undefined;
4343
+ tcgplayerId: string | undefined;
4344
+ variants: {
4345
+ normal: boolean;
4346
+ holo: boolean;
4347
+ reverse: boolean;
4348
+ firstEdition: boolean;
4349
+ wPromo: boolean;
4350
+ } | undefined;
4351
+ prisjaktId: string | undefined;
4352
+ lowestShopOffer: {
4353
+ shop: {
4354
+ /** @example cardlevels */
4355
+ technicalName: string;
4356
+ /** @example Cardlevels */
4357
+ name: string;
4358
+ };
4359
+ url: string;
4360
+ /** @example 149.5 */
4361
+ price: number;
4362
+ /**
4363
+ * @description ISO-4217 currency code
4364
+ * @example SEK
4365
+ */
4366
+ currency: string;
4367
+ inStock: boolean;
4368
+ inPreorder: boolean;
4369
+ inMonitor: boolean;
4370
+ isFullyBooked: boolean;
4371
+ /**
4372
+ * Format: date-time
4373
+ * @example 2026-07-15T12:03:29.322Z
4374
+ */
4375
+ matchedAt: string;
4376
+ /**
4377
+ * Format: date-time
4378
+ * @example 2026-07-15T12:03:29.322Z
4379
+ */
4380
+ updatedAt: string;
4381
+ bargain: {
4382
+ discountPercent: number;
4383
+ /** @enum {string} */
4384
+ referenceSource: "retail" | "tradera" | "cardmarket";
4385
+ } | undefined;
4386
+ } | undefined;
4387
+ referencePriceSnapshotsByProvider: {
4388
+ [key: string]: {
4389
+ /** @enum {string} */
4390
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
4391
+ /** @example 149.5 */
4392
+ price: number;
4393
+ /**
4394
+ * @description ISO-4217 currency code
4395
+ * @example SEK
4396
+ */
4397
+ currency: string;
4398
+ /**
4399
+ * @description price converted to SEK at the rate stored on the row
4400
+ * @example 149.5
4401
+ */
4402
+ priceSek: number;
4403
+ /**
4404
+ * Format: date-time
4405
+ * @example 2026-07-15T12:03:29.322Z
4406
+ */
4407
+ snapshotDate: string;
4408
+ };
4409
+ };
4410
+ };
4411
+ /** One sealed product as embedded in `client.expansions.products()`'s `sealed` group. Same caveat
4412
+ * as `ExpansionCard`: inlined by the API, not `$ref`-ing `ProductWithPricing`. */
4413
+ type ExpansionSealedProduct = {
4414
+ /**
4415
+ * @description Resource identifier
4416
+ * @example 6a577711abc1ce71383d3e10
4417
+ */
4418
+ id: string;
4419
+ name: string;
4420
+ shortName: string | undefined;
4421
+ technicalName: string;
4422
+ brand: {
4423
+ /**
4424
+ * @description Resource identifier
4425
+ * @example 6a577711abc1ce71383d3e10
4426
+ */
4427
+ id: string;
4428
+ /** @example Pokémon */
4429
+ name: string;
4430
+ /** @example pokemon */
4431
+ technicalName: string;
4432
+ /**
4433
+ * Format: date-time
4434
+ * @example 2026-07-15T12:03:29.322Z
4435
+ */
4436
+ createdAt: string;
4437
+ /**
4438
+ * Format: date-time
4439
+ * @example 2026-07-15T12:03:29.322Z
4440
+ */
4441
+ updatedAt: string;
4442
+ };
4443
+ manufacturer: string;
4444
+ modelNumber: string | undefined;
4445
+ category: {
4446
+ /**
4447
+ * @description Resource identifier
4448
+ * @example 6a577711abc1ce71383d3e10
4449
+ */
4450
+ id: string;
4451
+ /** @example Booster Box */
4452
+ name: string;
4453
+ /** @example booster-box */
4454
+ technicalName: string;
4455
+ } | undefined;
4456
+ expansion: {
4457
+ /**
4458
+ * @description Resource identifier
4459
+ * @example 6a577711abc1ce71383d3e10
4460
+ */
4461
+ id: string;
4462
+ /** @example Mega Evolution 30th Celebration */
4463
+ name: string;
4464
+ /** @example 30th Celebration */
4465
+ shortName: string;
4466
+ /** @example jpn-mega-evolution-30th-celebration */
4467
+ technicalName: string;
4468
+ /**
4469
+ * @description Printing language of the item
4470
+ * @example JPN
4471
+ * @enum {string}
4472
+ */
4473
+ language: "ENG" | "JPN" | "CHI";
4474
+ /** @example m6a */
4475
+ code: string | undefined;
4476
+ /** @example m6a */
4477
+ cardCode: string | undefined;
4478
+ /** @example Mega Evolution */
4479
+ seriesName: string | undefined;
4480
+ /**
4481
+ * Format: date-time
4482
+ * @example 2026-07-15T12:03:29.322Z
4483
+ */
4484
+ releaseDate: string | undefined;
4485
+ /**
4486
+ * @description Absolute asset URL, or null when absent
4487
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4488
+ */
4489
+ logoUrl: string | undefined;
4490
+ /**
4491
+ * @description Absolute asset URL, or null when absent
4492
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4493
+ */
4494
+ symbolUrl: string | undefined;
4495
+ /**
4496
+ * @description Absolute asset URL, or null when absent
4497
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4498
+ */
4499
+ imageUrl: string | undefined;
4500
+ } | undefined;
4501
+ /**
4502
+ * @description Printing language of the item
4503
+ * @example JPN
4504
+ * @enum {string|null}
4505
+ */
4506
+ language: "ENG" | "JPN" | "CHI" | undefined;
4507
+ alternativeNames: {
4508
+ name: string;
4509
+ shortName: string | undefined;
4510
+ }[];
4511
+ supportsMultipackPricing: boolean;
4512
+ /**
4513
+ * @description Absolute asset URL, or null when absent
4514
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4515
+ */
4516
+ imageUrl: string | undefined;
4517
+ /**
4518
+ * @description Cheapest current shop price, in SEK
4519
+ * @example 149.5
4520
+ */
4521
+ retailPrice: number | undefined;
4522
+ /**
4523
+ * @description Estimated market value, in SEK
4524
+ * @example 149.5
4525
+ */
4526
+ estimatedValue: number | undefined;
4527
+ /** @description Active shops currently tracking this item */
4528
+ shopCount: number;
4529
+ /** @description Observations the estimate rests on */
4530
+ pricingDataPoints: number;
4531
+ /**
4532
+ * Format: date-time
4533
+ * @example 2026-07-15T12:03:29.322Z
4534
+ */
4535
+ pricingUpdatedAt: string | undefined;
4536
+ /**
4537
+ * Format: date-time
4538
+ * @example 2026-07-15T12:03:29.322Z
4539
+ */
4540
+ createdAt: string;
4541
+ /**
4542
+ * Format: date-time
4543
+ * @example 2026-07-15T12:03:29.322Z
4544
+ */
4545
+ updatedAt: string;
4546
+ /** @enum {string} */
4547
+ kind: "sealed";
4548
+ upc: string | undefined;
4549
+ asin: string | undefined;
4550
+ epid: string | undefined;
4551
+ priceChartingId: string | undefined;
4552
+ prisjaktId: string | undefined;
4553
+ lowestShopOffer: {
4554
+ shop: {
4555
+ /** @example cardlevels */
4556
+ technicalName: string;
4557
+ /** @example Cardlevels */
4558
+ name: string;
4559
+ };
4560
+ url: string;
4561
+ /** @example 149.5 */
4562
+ price: number;
4563
+ /**
4564
+ * @description ISO-4217 currency code
4565
+ * @example SEK
4566
+ */
4567
+ currency: string;
4568
+ inStock: boolean;
4569
+ inPreorder: boolean;
4570
+ inMonitor: boolean;
4571
+ isFullyBooked: boolean;
4572
+ /**
4573
+ * Format: date-time
4574
+ * @example 2026-07-15T12:03:29.322Z
4575
+ */
4576
+ matchedAt: string;
4577
+ /**
4578
+ * Format: date-time
4579
+ * @example 2026-07-15T12:03:29.322Z
4580
+ */
4581
+ updatedAt: string;
4582
+ bargain: {
4583
+ discountPercent: number;
4584
+ /** @enum {string} */
4585
+ referenceSource: "retail" | "tradera" | "cardmarket";
4586
+ } | undefined;
4587
+ } | undefined;
4588
+ referencePriceSnapshotsByProvider: {
4589
+ [key: string]: {
4590
+ /** @enum {string} */
4591
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
4592
+ /** @example 149.5 */
4593
+ price: number;
4594
+ /**
4595
+ * @description ISO-4217 currency code
4596
+ * @example SEK
4597
+ */
4598
+ currency: string;
4599
+ /**
4600
+ * @description price converted to SEK at the rate stored on the row
4601
+ * @example 149.5
4602
+ */
4603
+ priceSek: number;
4604
+ /**
4605
+ * Format: date-time
4606
+ * @example 2026-07-15T12:03:29.322Z
4607
+ */
4608
+ snapshotDate: string;
4609
+ };
4610
+ };
4611
+ };
4612
+ type ShopMatchWithItemSchema = {
4613
+ /**
4614
+ * @description Resource identifier
4615
+ * @example 6a577711abc1ce71383d3e10
4616
+ */
4617
+ id: string;
4618
+ shop: {
4619
+ /** @example cardlevels */
4620
+ technicalName: string;
4621
+ /** @example Cardlevels */
4622
+ name: string;
4623
+ };
4624
+ url: string;
4625
+ /**
4626
+ * @description Resource identifier
4627
+ * @example 6a577711abc1ce71383d3e10
4628
+ */
4629
+ shopUrlId: string | undefined;
4630
+ /** @example 149.5 */
4631
+ price: number | undefined;
4632
+ /**
4633
+ * @description ISO-4217 currency code
4634
+ * @example SEK
4635
+ */
4636
+ currency: string | undefined;
4637
+ inStock: boolean;
4638
+ inPreorder: boolean;
4639
+ inMonitor: boolean;
4640
+ isFullyBooked: boolean;
4641
+ scrapedName: string | undefined;
4642
+ scrapedType: string | undefined;
4643
+ matchScore: number | undefined;
4644
+ hasCategoryMismatch: boolean;
4645
+ /** @enum {string|null} */
4646
+ cardType: "loose" | "graded" | undefined;
4647
+ /** @enum {string|null} */
4648
+ itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
4649
+ /** @enum {string|null} */
4650
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
4651
+ grade: number | undefined;
4652
+ item: {
4653
+ /**
4654
+ * @description Resource identifier
4655
+ * @example 6a577711abc1ce71383d3e10
4656
+ */
4657
+ id: string;
4658
+ /** @enum {string} */
4659
+ kind: "card" | "sealed";
4660
+ name: string;
4661
+ shortName: string | undefined;
4662
+ technicalName: string;
4663
+ cardNumber: string | undefined;
4664
+ imageUrl: string | undefined;
4665
+ language: string | undefined;
4666
+ priceChartingId: string | undefined;
4667
+ } | undefined;
4668
+ expansion: {
4669
+ /**
4670
+ * @description Resource identifier
4671
+ * @example 6a577711abc1ce71383d3e10
4672
+ */
4673
+ id: string;
4674
+ /** @example Mega Evolution 30th Celebration */
4675
+ name: string;
4676
+ /** @example 30th Celebration */
4677
+ shortName: string;
4678
+ /** @example jpn-mega-evolution-30th-celebration */
4679
+ technicalName: string;
4680
+ /**
4681
+ * @description Printing language of the item
4682
+ * @example JPN
4683
+ * @enum {string}
4684
+ */
4685
+ language: "ENG" | "JPN" | "CHI";
4686
+ /** @example m6a */
4687
+ code: string | undefined;
4688
+ /** @example m6a */
4689
+ cardCode: string | undefined;
4690
+ /** @example Mega Evolution */
4691
+ seriesName: string | undefined;
4692
+ /**
4693
+ * Format: date-time
4694
+ * @example 2026-07-15T12:03:29.322Z
4695
+ */
4696
+ releaseDate: string | undefined;
4697
+ /**
4698
+ * @description Absolute asset URL, or null when absent
4699
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4700
+ */
4701
+ logoUrl: string | undefined;
4702
+ /**
4703
+ * @description Absolute asset URL, or null when absent
4704
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4705
+ */
4706
+ symbolUrl: string | undefined;
4707
+ /**
4708
+ * @description Absolute asset URL, or null when absent
4709
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4710
+ */
4711
+ imageUrl: string | undefined;
4712
+ } | undefined;
4713
+ category: {
4714
+ /**
4715
+ * @description Resource identifier
4716
+ * @example 6a577711abc1ce71383d3e10
4717
+ */
4718
+ id: string;
4719
+ /** @example Booster Box */
4720
+ name: string;
4721
+ /** @example booster-box */
4722
+ technicalName: string;
4723
+ } | undefined;
4724
+ /**
4725
+ * Format: date-time
4726
+ * @example 2026-07-15T12:03:29.322Z
4727
+ */
4728
+ matchedAt: string;
4729
+ /**
4730
+ * Format: date-time
4731
+ * @example 2026-07-15T12:03:29.322Z
4732
+ */
4733
+ updatedAt: string;
4734
+ bargain: {
4735
+ discountPercent: number;
4736
+ /** @enum {string} */
4737
+ referenceSource: "retail" | "tradera" | "cardmarket";
4738
+ } | undefined;
4739
+ };
4740
+ type ItemShopMatchSchema = {
4741
+ /**
4742
+ * @description Resource identifier
4743
+ * @example 6a577711abc1ce71383d3e10
4744
+ */
4745
+ id: string;
4746
+ shop: {
4747
+ /** @example cardlevels */
4748
+ technicalName: string;
4749
+ /** @example Cardlevels */
4750
+ name: string;
4751
+ delivery: {
4752
+ /** @example 149.5 */
4753
+ cost: number | undefined;
4754
+ currency: string | undefined;
4755
+ daysMin: number | undefined;
4756
+ daysMax: number | undefined;
4757
+ /** @example 149.5 */
4758
+ freeShippingThreshold: number | undefined;
4759
+ supportsLocalPickup: boolean | undefined;
4760
+ note: string | undefined;
4761
+ };
4762
+ };
4763
+ url: string;
4764
+ /**
4765
+ * @description Resource identifier
4766
+ * @example 6a577711abc1ce71383d3e10
4767
+ */
4768
+ shopUrlId: string | undefined;
4769
+ /** @example 149.5 */
4770
+ price: number | undefined;
4771
+ /**
4772
+ * @description ISO-4217 currency code
4773
+ * @example SEK
4774
+ */
4775
+ currency: string | undefined;
4776
+ inStock: boolean;
4777
+ inPreorder: boolean;
4778
+ inMonitor: boolean;
4779
+ isFullyBooked: boolean;
4780
+ scrapedName: string | undefined;
4781
+ scrapedType: string | undefined;
4782
+ matchScore: number | undefined;
4783
+ hasCategoryMismatch: boolean;
4784
+ /** @enum {string|null} */
4785
+ cardType: "loose" | "graded" | undefined;
4786
+ /** @enum {string|null} */
4787
+ itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
4788
+ /** @enum {string|null} */
4789
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
4790
+ grade: number | undefined;
4791
+ /**
4792
+ * Format: date-time
4793
+ * @example 2026-07-15T12:03:29.322Z
4794
+ */
4795
+ matchedAt: string;
4796
+ /**
4797
+ * Format: date-time
4798
+ * @example 2026-07-15T12:03:29.322Z
4799
+ */
4800
+ updatedAt: string;
4801
+ bargain: {
4802
+ discountPercent: number;
4803
+ /** @enum {string} */
4804
+ referenceSource: "retail" | "tradera" | "cardmarket";
4805
+ } | undefined;
4806
+ };
4807
+ /** A shop tracked by tcgpriser, as returned by `client.shops.list()` / `client.shops.get()`. The
4808
+ * `*Count` fields are `undefined` when the shop has never had a match computed (rather than `0`, which
4809
+ * would mean "matched, currently empty"). */
4810
+ type Shop = {
4811
+ /**
4812
+ * @description Resource identifier
4813
+ * @example 6a577711abc1ce71383d3e10
4814
+ */
4815
+ id: string;
4816
+ /** @example Cardlevels */
4817
+ name: string;
4818
+ /** @example cardlevels */
4819
+ technicalName: string;
4820
+ websiteUrl: string | undefined;
4821
+ /**
4822
+ * @description Absolute asset URL, or null when absent
4823
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
4824
+ */
4825
+ logoUrl: string | undefined;
4826
+ description: string | undefined;
4827
+ /** @example 149.5 */
4828
+ defaultDeliveryCost: number | undefined;
4829
+ /**
4830
+ * @description ISO-4217, or null
4831
+ * @example SEK
4832
+ */
4833
+ deliveryCurrency: string | undefined;
4834
+ deliveryDaysMin: number | undefined;
4835
+ deliveryDaysMax: number | undefined;
4836
+ /** @example 149.5 */
4837
+ freeShippingThreshold: number | undefined;
4838
+ supportsLocalPickup: boolean;
4839
+ deliveryNote: string | undefined;
4840
+ isActive: boolean;
4841
+ isTemporarilyClosed: boolean;
4842
+ isOptedOut: boolean;
4843
+ matchCount: number | undefined;
4844
+ /** @description Matches resolved to a catalog item */
4845
+ linkedMatchCount: number | undefined;
4846
+ inStockCount: number | undefined;
4847
+ preorderCount: number | undefined;
4848
+ monitorCount: number | undefined;
4849
+ fullyBookedCount: number | undefined;
4850
+ /**
4851
+ * Format: date-time
4852
+ * @example 2026-07-15T12:03:29.322Z
4853
+ */
4854
+ lastMatchedAt: string | undefined;
4855
+ /**
4856
+ * Format: date-time
4857
+ * @example 2026-07-15T12:03:29.322Z
4858
+ */
4859
+ createdAt: string;
4860
+ /**
4861
+ * Format: date-time
4862
+ * @example 2026-07-15T12:03:29.322Z
4863
+ */
4864
+ updatedAt: string;
4865
+ };
4866
+ /** The lighter shop shape embedded in shop-match responses: a subset of `Shop`, no id or delivery
4867
+ * cost breakdown. */
4868
+ type ShopSummary = {
4869
+ technicalName: string;
4870
+ name: string;
4871
+ logoUrl: string | undefined;
4872
+ websiteUrl: string | undefined;
4873
+ description: string | undefined;
4874
+ isActive: boolean;
4875
+ isTemporarilyClosed: boolean;
4876
+ isOptedOut: boolean;
4877
+ deliveryNote: string | undefined;
4878
+ };
4879
+ type CardType = "loose" | "graded";
4880
+ type ItemCondition = "NM" | "LP" | "MP" | "HP" | "DMG";
4881
+ type GradingCompany = "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA";
4882
+ /** A shop's listing matched (or not yet matched) to a catalog item. Returned by
4883
+ * `client.shopMatches.list()` and as the rows inside `client.shopMatches.forShop()`. */
4884
+ type ShopMatch = ShopMatchWithItemSchema;
4885
+ type ShopMatchDelivery = {
4886
+ /** @example 149.5 */
4887
+ cost: number | undefined;
4888
+ currency: string | undefined;
4889
+ daysMin: number | undefined;
4890
+ daysMax: number | undefined;
4891
+ /** @example 149.5 */
4892
+ freeShippingThreshold: number | undefined;
4893
+ supportsLocalPickup: boolean | undefined;
4894
+ note: string | undefined;
4895
+ };
4896
+ /** A shop-match row scoped to one already-known item. `client.cards.matches()` and
4897
+ * `client.products.matches()` drop `item`/`expansion`/`category` since the caller already has
4898
+ * them, but add delivery terms since you're looking at one listing's total cost here. */
4899
+ type ItemShopMatch = ItemShopMatchSchema;
4900
+ /** Response of `client.cards.matches()` / `client.products.matches()`. */
4901
+ type ItemShopMatches = {
4902
+ item: {
4903
+ /**
4904
+ * @description Resource identifier
4905
+ * @example 6a577711abc1ce71383d3e10
4906
+ */
4907
+ id: string;
4908
+ name: string;
4909
+ };
4910
+ data: {
4911
+ /**
4912
+ * @description Resource identifier
4913
+ * @example 6a577711abc1ce71383d3e10
4914
+ */
4915
+ id: string;
4916
+ shop: {
4917
+ /** @example cardlevels */
4918
+ technicalName: string;
4919
+ /** @example Cardlevels */
4920
+ name: string;
4921
+ delivery: {
4922
+ /** @example 149.5 */
4923
+ cost: number | undefined;
4924
+ currency: string | undefined;
4925
+ daysMin: number | undefined;
4926
+ daysMax: number | undefined;
4927
+ /** @example 149.5 */
4928
+ freeShippingThreshold: number | undefined;
4929
+ supportsLocalPickup: boolean | undefined;
4930
+ note: string | undefined;
4931
+ };
4932
+ };
4933
+ url: string;
4934
+ /**
4935
+ * @description Resource identifier
4936
+ * @example 6a577711abc1ce71383d3e10
4937
+ */
4938
+ shopUrlId: string | undefined;
4939
+ /** @example 149.5 */
4940
+ price: number | undefined;
4941
+ /**
4942
+ * @description ISO-4217 currency code
4943
+ * @example SEK
4944
+ */
4945
+ currency: string | undefined;
4946
+ inStock: boolean;
4947
+ inPreorder: boolean;
4948
+ inMonitor: boolean;
4949
+ isFullyBooked: boolean;
4950
+ scrapedName: string | undefined;
4951
+ scrapedType: string | undefined;
4952
+ matchScore: number | undefined;
4953
+ hasCategoryMismatch: boolean;
4954
+ /** @enum {string|null} */
4955
+ cardType: "loose" | "graded" | undefined;
4956
+ /** @enum {string|null} */
4957
+ itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
4958
+ /** @enum {string|null} */
4959
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
4960
+ grade: number | undefined;
4961
+ /**
4962
+ * Format: date-time
4963
+ * @example 2026-07-15T12:03:29.322Z
4964
+ */
4965
+ matchedAt: string;
4966
+ /**
4967
+ * Format: date-time
4968
+ * @example 2026-07-15T12:03:29.322Z
4969
+ */
4970
+ updatedAt: string;
4971
+ bargain: {
4972
+ discountPercent: number;
4973
+ /** @enum {string} */
4974
+ referenceSource: "retail" | "tradera" | "cardmarket";
4975
+ } | undefined;
4976
+ }[];
4977
+ pagination: {
4978
+ /** @description Total matching records, ignoring pagination */
4979
+ total: number;
4980
+ limit: number;
4981
+ skip: number;
4982
+ hasMore: boolean;
4983
+ };
4984
+ };
4985
+ /** Response of `client.shopMatches.forShop()`: every match, of any item, currently live at one shop. */
4986
+ type ShopMatchesForShop = {
4987
+ shop: {
4988
+ technicalName: string;
4989
+ name: string;
4990
+ logoUrl: string | undefined;
4991
+ websiteUrl: string | undefined;
4992
+ description: string | undefined;
4993
+ isActive: boolean;
4994
+ isTemporarilyClosed: boolean;
4995
+ isOptedOut: boolean;
4996
+ deliveryNote: string | undefined;
4997
+ } | undefined;
4998
+ data: {
4999
+ /**
5000
+ * @description Resource identifier
5001
+ * @example 6a577711abc1ce71383d3e10
5002
+ */
5003
+ id: string;
5004
+ shop: {
5005
+ /** @example cardlevels */
5006
+ technicalName: string;
5007
+ /** @example Cardlevels */
5008
+ name: string;
5009
+ };
5010
+ url: string;
5011
+ /**
5012
+ * @description Resource identifier
5013
+ * @example 6a577711abc1ce71383d3e10
5014
+ */
5015
+ shopUrlId: string | undefined;
5016
+ /** @example 149.5 */
5017
+ price: number | undefined;
5018
+ /**
5019
+ * @description ISO-4217 currency code
5020
+ * @example SEK
5021
+ */
5022
+ currency: string | undefined;
5023
+ inStock: boolean;
5024
+ inPreorder: boolean;
5025
+ inMonitor: boolean;
5026
+ isFullyBooked: boolean;
5027
+ scrapedName: string | undefined;
5028
+ scrapedType: string | undefined;
5029
+ matchScore: number | undefined;
5030
+ hasCategoryMismatch: boolean;
5031
+ /** @enum {string|null} */
5032
+ cardType: "loose" | "graded" | undefined;
5033
+ /** @enum {string|null} */
5034
+ itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
5035
+ /** @enum {string|null} */
5036
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
5037
+ grade: number | undefined;
5038
+ item: {
5039
+ /**
5040
+ * @description Resource identifier
5041
+ * @example 6a577711abc1ce71383d3e10
5042
+ */
5043
+ id: string;
5044
+ /** @enum {string} */
5045
+ kind: "card" | "sealed";
5046
+ name: string;
5047
+ shortName: string | undefined;
5048
+ technicalName: string;
5049
+ cardNumber: string | undefined;
5050
+ imageUrl: string | undefined;
5051
+ language: string | undefined;
5052
+ priceChartingId: string | undefined;
5053
+ } | undefined;
5054
+ expansion: {
5055
+ /**
5056
+ * @description Resource identifier
5057
+ * @example 6a577711abc1ce71383d3e10
5058
+ */
5059
+ id: string;
5060
+ /** @example Mega Evolution 30th Celebration */
5061
+ name: string;
5062
+ /** @example 30th Celebration */
5063
+ shortName: string;
5064
+ /** @example jpn-mega-evolution-30th-celebration */
5065
+ technicalName: string;
5066
+ /**
5067
+ * @description Printing language of the item
5068
+ * @example JPN
5069
+ * @enum {string}
5070
+ */
5071
+ language: "ENG" | "JPN" | "CHI";
5072
+ /** @example m6a */
5073
+ code: string | undefined;
5074
+ /** @example m6a */
5075
+ cardCode: string | undefined;
5076
+ /** @example Mega Evolution */
5077
+ seriesName: string | undefined;
5078
+ /**
5079
+ * Format: date-time
5080
+ * @example 2026-07-15T12:03:29.322Z
5081
+ */
5082
+ releaseDate: string | undefined;
5083
+ /**
5084
+ * @description Absolute asset URL, or null when absent
5085
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5086
+ */
5087
+ logoUrl: string | undefined;
5088
+ /**
5089
+ * @description Absolute asset URL, or null when absent
5090
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5091
+ */
5092
+ symbolUrl: string | undefined;
5093
+ /**
5094
+ * @description Absolute asset URL, or null when absent
5095
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5096
+ */
5097
+ imageUrl: string | undefined;
5098
+ } | undefined;
5099
+ category: {
5100
+ /**
5101
+ * @description Resource identifier
5102
+ * @example 6a577711abc1ce71383d3e10
5103
+ */
5104
+ id: string;
5105
+ /** @example Booster Box */
5106
+ name: string;
5107
+ /** @example booster-box */
5108
+ technicalName: string;
5109
+ } | undefined;
5110
+ /**
5111
+ * Format: date-time
5112
+ * @example 2026-07-15T12:03:29.322Z
5113
+ */
5114
+ matchedAt: string;
5115
+ /**
5116
+ * Format: date-time
5117
+ * @example 2026-07-15T12:03:29.322Z
5118
+ */
5119
+ updatedAt: string;
5120
+ bargain: {
5121
+ discountPercent: number;
5122
+ /** @enum {string} */
5123
+ referenceSource: "retail" | "tradera" | "cardmarket";
5124
+ } | undefined;
5125
+ }[];
5126
+ pagination: {
5127
+ /** @description Total matching records, ignoring pagination */
5128
+ total: number;
5129
+ limit: number;
5130
+ skip: number;
5131
+ hasMore: boolean;
5132
+ };
5133
+ };
5134
+ /** One row of `client.shopMatches.shopStats()`: match counts per shop, not the matches themselves. */
5135
+ type ShopMatchStats = {
5136
+ shop: {
5137
+ technicalName: string;
5138
+ name: string;
5139
+ logoUrl: string | undefined;
5140
+ websiteUrl: string | undefined;
5141
+ description: string | undefined;
5142
+ isActive: boolean;
5143
+ isTemporarilyClosed: boolean;
5144
+ isOptedOut: boolean;
5145
+ deliveryNote: string | undefined;
5146
+ };
5147
+ matchCount: number;
5148
+ /** @description Matches resolved to a catalog item */
5149
+ linkedMatchCount: number;
5150
+ inStockCount: number;
5151
+ preorderCount: number;
5152
+ monitorCount: number;
5153
+ fullyBookedCount: number;
5154
+ /**
5155
+ * Format: date-time
5156
+ * @example 2026-07-15T12:03:29.322Z
5157
+ */
5158
+ lastMatchedAt: string | undefined;
5159
+ };
5160
+ /** A named `{ id, name }` reference to a card or product: the compact identity used by every
5161
+ * `price-stats` response, which is keyed by item rather than embedding the full catalog record. */
5162
+ type ItemRef = {
5163
+ /**
5164
+ * @description Resource identifier
5165
+ * @example 6a577711abc1ce71383d3e10
5166
+ */
5167
+ id: string;
5168
+ name: string;
5169
+ };
5170
+ /** One day's average price for one item. */
5171
+ type DailyPricePoint = {
5172
+ /**
5173
+ * Format: date-time
5174
+ * @example 2026-07-15T12:03:29.322Z
5175
+ */
5176
+ statDate: string;
5177
+ /** @example 149.5 */
5178
+ averagePrice: number;
5179
+ };
5180
+ /** Response row of `client.priceStats.daily()`. */
5181
+ type ItemDailyStats = {
5182
+ item: {
5183
+ /**
5184
+ * @description Resource identifier
5185
+ * @example 6a577711abc1ce71383d3e10
5186
+ */
5187
+ id: string;
5188
+ name: string;
5189
+ };
5190
+ dailyStats: {
5191
+ /**
5192
+ * Format: date-time
5193
+ * @example 2026-07-15T12:03:29.322Z
5194
+ */
5195
+ statDate: string;
5196
+ /** @example 149.5 */
5197
+ averagePrice: number;
5198
+ }[];
5199
+ };
5200
+ type EstimatedValue = {
5201
+ /** @example 149.5 */
5202
+ estimatedValue: number | undefined;
5203
+ /**
5204
+ * Format: date-time
5205
+ * @example 2026-07-15T12:03:29.322Z
5206
+ */
5207
+ estimateUpdatedAt: string | undefined;
5208
+ dataPointCount: number;
5209
+ };
5210
+ /** Response row of `client.priceStats.estimatedValues()`. */
5211
+ type ItemEstimatedValue = {
5212
+ item: {
5213
+ /**
5214
+ * @description Resource identifier
5215
+ * @example 6a577711abc1ce71383d3e10
5216
+ */
5217
+ id: string;
5218
+ name: string;
5219
+ };
5220
+ estimate: {
5221
+ /** @example 149.5 */
5222
+ estimatedValue: number | undefined;
5223
+ /**
5224
+ * Format: date-time
5225
+ * @example 2026-07-15T12:03:29.322Z
5226
+ */
5227
+ estimateUpdatedAt: string | undefined;
5228
+ dataPointCount: number;
5229
+ };
5230
+ };
5231
+ /** Response row of `client.priceStats.topProducts()`: items ranked by shop availability, not price. */
5232
+ type TopItem = {
5233
+ /**
5234
+ * @description Resource identifier
5235
+ * @example 6a577711abc1ce71383d3e10
5236
+ */
5237
+ id: string;
5238
+ slug: string | undefined;
5239
+ shopMatchCount: number;
5240
+ };
5241
+ /** One rarity's share of a booster pack's pulls. `weight` is relative to the other buckets in the
5242
+ * same pack rate, not a percentage. Normalise across `buckets` yourself if you need one. */
5243
+ type PackRateBucket = {
5244
+ /** @example Double rare */
5245
+ rarity: string;
5246
+ /**
5247
+ * @description Relative draw weight (normalised across buckets)
5248
+ * @example 24
5249
+ */
5250
+ weight: number;
5251
+ };
5252
+ /** Pull-rate odds for one expansion's booster packs, as returned by `client.packRates.list()` /
5253
+ * `client.packRates.get()`. */
5254
+ type PackRate = {
5255
+ /**
5256
+ * @description Resource identifier
5257
+ * @example 6a577711abc1ce71383d3e10
5258
+ */
5259
+ id: string;
5260
+ expansion: {
5261
+ /**
5262
+ * @description Resource identifier
5263
+ * @example 6a577711abc1ce71383d3e10
5264
+ */
5265
+ id: string;
5266
+ /** @example Mega Evolution 30th Celebration */
5267
+ name: string;
5268
+ /** @example 30th Celebration */
5269
+ shortName: string;
5270
+ /** @example jpn-mega-evolution-30th-celebration */
5271
+ technicalName: string;
5272
+ /**
5273
+ * @description Printing language of the item
5274
+ * @example JPN
5275
+ * @enum {string}
5276
+ */
5277
+ language: "ENG" | "JPN" | "CHI";
5278
+ /** @example m6a */
5279
+ code: string | undefined;
5280
+ /** @example m6a */
5281
+ cardCode: string | undefined;
5282
+ /** @example Mega Evolution */
5283
+ seriesName: string | undefined;
5284
+ /**
5285
+ * Format: date-time
5286
+ * @example 2026-07-15T12:03:29.322Z
5287
+ */
5288
+ releaseDate: string | undefined;
5289
+ /**
5290
+ * @description Absolute asset URL, or null when absent
5291
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5292
+ */
5293
+ logoUrl: string | undefined;
5294
+ /**
5295
+ * @description Absolute asset URL, or null when absent
5296
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5297
+ */
5298
+ symbolUrl: string | undefined;
5299
+ /**
5300
+ * @description Absolute asset URL, or null when absent
5301
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5302
+ */
5303
+ imageUrl: string | undefined;
5304
+ };
5305
+ buckets: {
5306
+ /** @example Double rare */
5307
+ rarity: string;
5308
+ /**
5309
+ * @description Relative draw weight (normalised across buckets)
5310
+ * @example 24
5311
+ */
5312
+ weight: number;
5313
+ }[];
5314
+ /**
5315
+ * Format: date-time
5316
+ * @example 2026-07-15T12:03:29.322Z
5317
+ */
5318
+ createdAt: string;
5319
+ /**
5320
+ * Format: date-time
5321
+ * @example 2026-07-15T12:03:29.322Z
5322
+ */
5323
+ updatedAt: string;
5324
+ };
5325
+ /** Platform-wide overview counts, returned by `client.stats.platform()`. */
5326
+ type PlatformStats = {
5327
+ shopCount: number;
5328
+ categoryCount: number;
5329
+ expansionCount: number;
5330
+ productCount: number;
5331
+ priceCount: number;
5332
+ };
5333
+ /**
5334
+ * Types for the premium tier: endpoints that need a signed-in subscriber's JWT (see
5335
+ * `TcgPriserOptions.authToken`, or the `authToken` field on each premium method's params). Split
5336
+ * out from the public-tier types because none of these mean anything without a token: without one,
5337
+ * the API just answers `403 premiumRequired`.
5338
+ *
5339
+ * Derived from `src/generated/openapi.d.ts`, same as everything else in this directory.
5340
+ */
5341
+ type ReferencePriceSeries = {
5342
+ /** @enum {string} */
5343
+ source: "tcgdex" | "cmapi" | "tradera";
5344
+ /** @enum {string} */
5345
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
5346
+ /** @enum {string|null} */
5347
+ variant: "normal" | "holo" | "reverse" | undefined;
5348
+ /** @enum {string|null} */
5349
+ cardType: "loose" | "graded" | undefined;
5350
+ /** @enum {string|null} */
5351
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
5352
+ grade: number | undefined;
5353
+ currency: string;
5354
+ sampleSize: number | undefined;
5355
+ points: {
5356
+ /**
5357
+ * Format: date-time
5358
+ * @example 2026-07-15T12:03:29.322Z
5359
+ */
5360
+ snapshotDate: string;
5361
+ price: number;
5362
+ }[];
5363
+ };
5364
+ type ReferencePriceSeriesPoint = {
5365
+ /**
5366
+ * Format: date-time
5367
+ * @example 2026-07-15T12:03:29.322Z
5368
+ */
5369
+ snapshotDate: string;
5370
+ price: number;
5371
+ };
5372
+ type ReferencePriceSource = "tradera" | "tcgdex" | "cmapi";
5373
+ type ReferencePriceCardVariant = "normal" | "holo" | "reverse";
5374
+ type ReferencePriceMetric = "price" | "low" | "mid" | "high" | "avg" | "avg1" | "avg7" | "avg30" | "directLow";
5375
+ type ReferencePriceCurrencyMode = "native" | "sek";
5376
+ /** Response of `client.cards.referencePrices()` / `client.products.referencePrices()`.
5377
+ *
5378
+ * Non-graded card prices come from TCGdex and are variant-aware (normal / holo / reverse). Graded
5379
+ * prices and eBay medians come from cmapi. Tradera is tcgpriser's own data: realised Swedish
5380
+ * auction sales rather than asking prices, always SEK, no variant. In native mode each series
5381
+ * keeps its own `currency`; in `sek` mode everything is `SEK`, converted at the rate stored on
5382
+ * each point. */
5383
+ type ItemReferencePrices = {
5384
+ item: {
5385
+ /**
5386
+ * @description Resource identifier
5387
+ * @example 6a577711abc1ce71383d3e10
5388
+ */
5389
+ id: string;
5390
+ name: string;
5391
+ };
5392
+ /**
5393
+ * Format: date-time
5394
+ * @example 2026-07-15T12:03:29.322Z
5395
+ */
5396
+ fromDate: string;
5397
+ /**
5398
+ * Format: date-time
5399
+ * @example 2026-07-15T12:03:29.322Z
5400
+ */
5401
+ toDate: string;
5402
+ /** @enum {string} */
5403
+ metric: "price" | "low" | "mid" | "high" | "avg" | "avg1" | "avg7" | "avg30" | "directLow";
5404
+ /** @enum {string} */
5405
+ currencyMode: "native" | "sek";
5406
+ series: {
5407
+ /** @enum {string} */
5408
+ source: "tcgdex" | "cmapi" | "tradera";
5409
+ /** @enum {string} */
5410
+ provider: "cardmarket" | "tcgplayer" | "ebay" | "tradera";
5411
+ /** @enum {string|null} */
5412
+ variant: "normal" | "holo" | "reverse" | undefined;
5413
+ /** @enum {string|null} */
5414
+ cardType: "loose" | "graded" | undefined;
5415
+ /** @enum {string|null} */
5416
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
5417
+ grade: number | undefined;
5418
+ currency: string;
5419
+ sampleSize: number | undefined;
5420
+ points: {
5421
+ /**
5422
+ * Format: date-time
5423
+ * @example 2026-07-15T12:03:29.322Z
5424
+ */
5425
+ snapshotDate: string;
5426
+ price: number;
5427
+ }[];
5428
+ }[];
5429
+ };
5430
+ type SoldPrice = {
5431
+ /**
5432
+ * @description Resource identifier
5433
+ * @example 6a577711abc1ce71383d3e10
5434
+ */
5435
+ id: string;
5436
+ url: string;
5437
+ /** @example 149.5 */
5438
+ price: number;
5439
+ /**
5440
+ * @description ISO-4217 currency code
5441
+ * @example SEK
5442
+ */
5443
+ currency: string;
5444
+ /**
5445
+ * Format: date-time
5446
+ * @example 2026-07-15T12:03:29.322Z
5447
+ */
5448
+ soldAt: string | undefined;
5449
+ itemId: string | undefined;
5450
+ /** @example tradera */
5451
+ source: string | undefined;
5452
+ };
5453
+ /** Response of `client.cards.prices()` / `client.products.prices()`. `premiumRequired` is always
5454
+ * `true` here. That field only exists because this envelope shape is shared with a free preview
5455
+ * elsewhere in the API; this response is never the preview. */
5456
+ type ItemSoldPrices = {
5457
+ item: {
5458
+ /**
5459
+ * @description Resource identifier
5460
+ * @example 6a577711abc1ce71383d3e10
5461
+ */
5462
+ id: string;
5463
+ name: string;
5464
+ };
5465
+ data: {
5466
+ /**
5467
+ * @description Resource identifier
5468
+ * @example 6a577711abc1ce71383d3e10
5469
+ */
5470
+ id: string;
5471
+ url: string;
5472
+ /** @example 149.5 */
5473
+ price: number;
5474
+ /**
5475
+ * @description ISO-4217 currency code
5476
+ * @example SEK
5477
+ */
5478
+ currency: string;
5479
+ /**
5480
+ * Format: date-time
5481
+ * @example 2026-07-15T12:03:29.322Z
5482
+ */
5483
+ soldAt: string | undefined;
5484
+ itemId: string | undefined;
5485
+ /** @example tradera */
5486
+ source: string | undefined;
5487
+ }[];
5488
+ pagination: {
5489
+ /** @description Total matching records, ignoring pagination */
5490
+ total: number;
5491
+ limit: number;
5492
+ skip: number;
5493
+ hasMore: boolean;
5494
+ };
5495
+ /** @enum {boolean} */
5496
+ premiumRequired: true;
5497
+ };
5498
+ type LivePricingDetail = {
5499
+ /** @example 149.5 */
5500
+ retailPrice: number | undefined;
5501
+ /** @example 149.5 */
5502
+ estimatedValue: number | undefined;
5503
+ shopCount: number;
5504
+ pricingDataPoints: number;
5505
+ /**
5506
+ * Format: date-time
5507
+ * @example 2026-07-15T12:03:29.322Z
5508
+ */
5509
+ calculatedAt: string;
5510
+ };
5511
+ /** Response of `client.cards.livePricing()` / `client.products.livePricing()`. */
5512
+ type LivePricingForItem = {
5513
+ /**
5514
+ * @description Resource identifier
5515
+ * @example 6a577711abc1ce71383d3e10
5516
+ */
5517
+ id: string;
5518
+ name: string;
5519
+ technicalName: string;
5520
+ pricing: {
5521
+ /** @example 149.5 */
5522
+ retailPrice: number | undefined;
5523
+ /** @example 149.5 */
5524
+ estimatedValue: number | undefined;
5525
+ shopCount: number;
5526
+ pricingDataPoints: number;
5527
+ /**
5528
+ * Format: date-time
5529
+ * @example 2026-07-15T12:03:29.322Z
5530
+ */
5531
+ calculatedAt: string;
5532
+ };
5533
+ };
5534
+ /** Response of `client.expansions.livePricing()`: live pricing for every item in one expansion. */
5535
+ type ExpansionLivePricing = {
5536
+ expansion: {
5537
+ technicalName: string;
5538
+ };
5539
+ items: {
5540
+ /**
5541
+ * @description Resource identifier
5542
+ * @example 6a577711abc1ce71383d3e10
5543
+ */
5544
+ id: string;
5545
+ name: string;
5546
+ technicalName: string;
5547
+ pricing: {
5548
+ /** @example 149.5 */
5549
+ retailPrice: number | undefined;
5550
+ /** @example 149.5 */
5551
+ estimatedValue: number | undefined;
5552
+ shopCount: number;
5553
+ pricingDataPoints: number;
5554
+ /**
5555
+ * Format: date-time
5556
+ * @example 2026-07-15T12:03:29.322Z
5557
+ */
5558
+ calculatedAt: string;
5559
+ };
5560
+ }[];
5561
+ };
5562
+ /** The catalog item as embedded in stats responses: a `Card`/`SealedProduct` minus
5563
+ * `lowestShopOffer` and `referencePriceSnapshotsByProvider`, which these endpoints already answer
5564
+ * more precisely on their own. */
5565
+ type StatsItemRef = {
5566
+ /**
5567
+ * @description Resource identifier
5568
+ * @example 6a577711abc1ce71383d3e10
5569
+ */
5570
+ id: string;
5571
+ name: string;
5572
+ shortName: string | undefined;
5573
+ technicalName: string;
5574
+ brand: {
5575
+ /**
5576
+ * @description Resource identifier
5577
+ * @example 6a577711abc1ce71383d3e10
5578
+ */
5579
+ id: string;
5580
+ /** @example Pokémon */
5581
+ name: string;
5582
+ /** @example pokemon */
5583
+ technicalName: string;
5584
+ /**
5585
+ * Format: date-time
5586
+ * @example 2026-07-15T12:03:29.322Z
5587
+ */
5588
+ createdAt: string;
5589
+ /**
5590
+ * Format: date-time
5591
+ * @example 2026-07-15T12:03:29.322Z
5592
+ */
5593
+ updatedAt: string;
5594
+ };
5595
+ manufacturer: string;
5596
+ modelNumber: string | undefined;
5597
+ category: {
5598
+ /**
5599
+ * @description Resource identifier
5600
+ * @example 6a577711abc1ce71383d3e10
5601
+ */
5602
+ id: string;
5603
+ /** @example Booster Box */
5604
+ name: string;
5605
+ /** @example booster-box */
5606
+ technicalName: string;
5607
+ } | undefined;
5608
+ expansion: {
5609
+ /**
5610
+ * @description Resource identifier
5611
+ * @example 6a577711abc1ce71383d3e10
5612
+ */
5613
+ id: string;
5614
+ /** @example Mega Evolution 30th Celebration */
5615
+ name: string;
5616
+ /** @example 30th Celebration */
5617
+ shortName: string;
5618
+ /** @example jpn-mega-evolution-30th-celebration */
5619
+ technicalName: string;
5620
+ /**
5621
+ * @description Printing language of the item
5622
+ * @example JPN
5623
+ * @enum {string}
5624
+ */
5625
+ language: "ENG" | "JPN" | "CHI";
5626
+ /** @example m6a */
5627
+ code: string | undefined;
5628
+ /** @example m6a */
5629
+ cardCode: string | undefined;
5630
+ /** @example Mega Evolution */
5631
+ seriesName: string | undefined;
5632
+ /**
5633
+ * Format: date-time
5634
+ * @example 2026-07-15T12:03:29.322Z
5635
+ */
5636
+ releaseDate: string | undefined;
5637
+ /**
5638
+ * @description Absolute asset URL, or null when absent
5639
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5640
+ */
5641
+ logoUrl: string | undefined;
5642
+ /**
5643
+ * @description Absolute asset URL, or null when absent
5644
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5645
+ */
5646
+ symbolUrl: string | undefined;
5647
+ /**
5648
+ * @description Absolute asset URL, or null when absent
5649
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5650
+ */
5651
+ imageUrl: string | undefined;
5652
+ } | undefined;
5653
+ /**
5654
+ * @description Printing language of the item
5655
+ * @example JPN
5656
+ * @enum {string|null}
5657
+ */
5658
+ language: "ENG" | "JPN" | "CHI" | undefined;
5659
+ alternativeNames: {
5660
+ name: string;
5661
+ shortName: string | undefined;
5662
+ }[];
5663
+ supportsMultipackPricing: boolean;
5664
+ /**
5665
+ * @description Absolute asset URL, or null when absent
5666
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5667
+ */
5668
+ imageUrl: string | undefined;
5669
+ /**
5670
+ * @description Cheapest current shop price, in SEK
5671
+ * @example 149.5
5672
+ */
5673
+ retailPrice: number | undefined;
5674
+ /**
5675
+ * @description Estimated market value, in SEK
5676
+ * @example 149.5
5677
+ */
5678
+ estimatedValue: number | undefined;
5679
+ /** @description Active shops currently tracking this item */
5680
+ shopCount: number;
5681
+ /** @description Observations the estimate rests on */
5682
+ pricingDataPoints: number;
5683
+ /**
5684
+ * Format: date-time
5685
+ * @example 2026-07-15T12:03:29.322Z
5686
+ */
5687
+ pricingUpdatedAt: string | undefined;
5688
+ /**
5689
+ * Format: date-time
5690
+ * @example 2026-07-15T12:03:29.322Z
5691
+ */
5692
+ createdAt: string;
5693
+ /**
5694
+ * Format: date-time
5695
+ * @example 2026-07-15T12:03:29.322Z
5696
+ */
5697
+ updatedAt: string;
5698
+ /** @enum {string} */
5699
+ kind: "card";
5700
+ /** @example 4/102 */
5701
+ cardNumber: string;
5702
+ /** @example Rare Holo */
5703
+ rarity: string | undefined;
5704
+ artist: string | undefined;
5705
+ cardmarketId: string | undefined;
5706
+ tcgplayerId: string | undefined;
5707
+ variants: {
5708
+ normal: boolean;
5709
+ holo: boolean;
5710
+ reverse: boolean;
5711
+ firstEdition: boolean;
5712
+ wPromo: boolean;
5713
+ } | undefined;
5714
+ prisjaktId: string | undefined;
5715
+ } | {
5716
+ /**
5717
+ * @description Resource identifier
5718
+ * @example 6a577711abc1ce71383d3e10
5719
+ */
5720
+ id: string;
5721
+ name: string;
5722
+ shortName: string | undefined;
5723
+ technicalName: string;
5724
+ brand: {
5725
+ /**
5726
+ * @description Resource identifier
5727
+ * @example 6a577711abc1ce71383d3e10
5728
+ */
5729
+ id: string;
5730
+ /** @example Pokémon */
5731
+ name: string;
5732
+ /** @example pokemon */
5733
+ technicalName: string;
5734
+ /**
5735
+ * Format: date-time
5736
+ * @example 2026-07-15T12:03:29.322Z
5737
+ */
5738
+ createdAt: string;
5739
+ /**
5740
+ * Format: date-time
5741
+ * @example 2026-07-15T12:03:29.322Z
5742
+ */
5743
+ updatedAt: string;
5744
+ };
5745
+ manufacturer: string;
5746
+ modelNumber: string | undefined;
5747
+ category: {
5748
+ /**
5749
+ * @description Resource identifier
5750
+ * @example 6a577711abc1ce71383d3e10
5751
+ */
5752
+ id: string;
5753
+ /** @example Booster Box */
5754
+ name: string;
5755
+ /** @example booster-box */
5756
+ technicalName: string;
5757
+ } | undefined;
5758
+ expansion: {
5759
+ /**
5760
+ * @description Resource identifier
5761
+ * @example 6a577711abc1ce71383d3e10
5762
+ */
5763
+ id: string;
5764
+ /** @example Mega Evolution 30th Celebration */
5765
+ name: string;
5766
+ /** @example 30th Celebration */
5767
+ shortName: string;
5768
+ /** @example jpn-mega-evolution-30th-celebration */
5769
+ technicalName: string;
5770
+ /**
5771
+ * @description Printing language of the item
5772
+ * @example JPN
5773
+ * @enum {string}
5774
+ */
5775
+ language: "ENG" | "JPN" | "CHI";
5776
+ /** @example m6a */
5777
+ code: string | undefined;
5778
+ /** @example m6a */
5779
+ cardCode: string | undefined;
5780
+ /** @example Mega Evolution */
5781
+ seriesName: string | undefined;
5782
+ /**
5783
+ * Format: date-time
5784
+ * @example 2026-07-15T12:03:29.322Z
5785
+ */
5786
+ releaseDate: string | undefined;
5787
+ /**
5788
+ * @description Absolute asset URL, or null when absent
5789
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5790
+ */
5791
+ logoUrl: string | undefined;
5792
+ /**
5793
+ * @description Absolute asset URL, or null when absent
5794
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5795
+ */
5796
+ symbolUrl: string | undefined;
5797
+ /**
5798
+ * @description Absolute asset URL, or null when absent
5799
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5800
+ */
5801
+ imageUrl: string | undefined;
5802
+ } | undefined;
5803
+ /**
5804
+ * @description Printing language of the item
5805
+ * @example JPN
5806
+ * @enum {string|null}
5807
+ */
5808
+ language: "ENG" | "JPN" | "CHI" | undefined;
5809
+ alternativeNames: {
5810
+ name: string;
5811
+ shortName: string | undefined;
5812
+ }[];
5813
+ supportsMultipackPricing: boolean;
5814
+ /**
5815
+ * @description Absolute asset URL, or null when absent
5816
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5817
+ */
5818
+ imageUrl: string | undefined;
5819
+ /**
5820
+ * @description Cheapest current shop price, in SEK
5821
+ * @example 149.5
5822
+ */
5823
+ retailPrice: number | undefined;
5824
+ /**
5825
+ * @description Estimated market value, in SEK
5826
+ * @example 149.5
5827
+ */
5828
+ estimatedValue: number | undefined;
5829
+ /** @description Active shops currently tracking this item */
5830
+ shopCount: number;
5831
+ /** @description Observations the estimate rests on */
5832
+ pricingDataPoints: number;
5833
+ /**
5834
+ * Format: date-time
5835
+ * @example 2026-07-15T12:03:29.322Z
5836
+ */
5837
+ pricingUpdatedAt: string | undefined;
5838
+ /**
5839
+ * Format: date-time
5840
+ * @example 2026-07-15T12:03:29.322Z
5841
+ */
5842
+ createdAt: string;
5843
+ /**
5844
+ * Format: date-time
5845
+ * @example 2026-07-15T12:03:29.322Z
5846
+ */
5847
+ updatedAt: string;
5848
+ /** @enum {string} */
5849
+ kind: "sealed";
5850
+ upc: string | undefined;
5851
+ asin: string | undefined;
5852
+ epid: string | undefined;
5853
+ priceChartingId: string | undefined;
5854
+ prisjaktId: string | undefined;
5855
+ };
5856
+ type VariantStatsSummary = {
5857
+ /** @description Distinct cardType/condition/company/grade combinations */
5858
+ variantCount: number;
5859
+ looseCount: number;
5860
+ gradedCount: number;
5861
+ };
5862
+ /** Response of `client.priceStats.product()`. */
5863
+ type ItemStats = {
5864
+ item: {
5865
+ /**
5866
+ * @description Resource identifier
5867
+ * @example 6a577711abc1ce71383d3e10
5868
+ */
5869
+ id: string;
5870
+ name: string;
5871
+ shortName: string | undefined;
5872
+ technicalName: string;
5873
+ brand: {
5874
+ /**
5875
+ * @description Resource identifier
5876
+ * @example 6a577711abc1ce71383d3e10
5877
+ */
5878
+ id: string;
5879
+ /** @example Pokémon */
5880
+ name: string;
5881
+ /** @example pokemon */
5882
+ technicalName: string;
5883
+ /**
5884
+ * Format: date-time
5885
+ * @example 2026-07-15T12:03:29.322Z
5886
+ */
5887
+ createdAt: string;
5888
+ /**
5889
+ * Format: date-time
5890
+ * @example 2026-07-15T12:03:29.322Z
5891
+ */
5892
+ updatedAt: string;
5893
+ };
5894
+ manufacturer: string;
5895
+ modelNumber: string | undefined;
5896
+ category: {
5897
+ /**
5898
+ * @description Resource identifier
5899
+ * @example 6a577711abc1ce71383d3e10
5900
+ */
5901
+ id: string;
5902
+ /** @example Booster Box */
5903
+ name: string;
5904
+ /** @example booster-box */
5905
+ technicalName: string;
5906
+ } | undefined;
5907
+ expansion: {
5908
+ /**
5909
+ * @description Resource identifier
5910
+ * @example 6a577711abc1ce71383d3e10
5911
+ */
5912
+ id: string;
5913
+ /** @example Mega Evolution 30th Celebration */
5914
+ name: string;
5915
+ /** @example 30th Celebration */
5916
+ shortName: string;
5917
+ /** @example jpn-mega-evolution-30th-celebration */
5918
+ technicalName: string;
5919
+ /**
5920
+ * @description Printing language of the item
5921
+ * @example JPN
5922
+ * @enum {string}
5923
+ */
5924
+ language: "ENG" | "JPN" | "CHI";
5925
+ /** @example m6a */
5926
+ code: string | undefined;
5927
+ /** @example m6a */
5928
+ cardCode: string | undefined;
5929
+ /** @example Mega Evolution */
5930
+ seriesName: string | undefined;
5931
+ /**
5932
+ * Format: date-time
5933
+ * @example 2026-07-15T12:03:29.322Z
5934
+ */
5935
+ releaseDate: string | undefined;
5936
+ /**
5937
+ * @description Absolute asset URL, or null when absent
5938
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5939
+ */
5940
+ logoUrl: string | undefined;
5941
+ /**
5942
+ * @description Absolute asset URL, or null when absent
5943
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5944
+ */
5945
+ symbolUrl: string | undefined;
5946
+ /**
5947
+ * @description Absolute asset URL, or null when absent
5948
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5949
+ */
5950
+ imageUrl: string | undefined;
5951
+ } | undefined;
5952
+ /**
5953
+ * @description Printing language of the item
5954
+ * @example JPN
5955
+ * @enum {string|null}
5956
+ */
5957
+ language: "ENG" | "JPN" | "CHI" | undefined;
5958
+ alternativeNames: {
5959
+ name: string;
5960
+ shortName: string | undefined;
5961
+ }[];
5962
+ supportsMultipackPricing: boolean;
5963
+ /**
5964
+ * @description Absolute asset URL, or null when absent
5965
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
5966
+ */
5967
+ imageUrl: string | undefined;
5968
+ /**
5969
+ * @description Cheapest current shop price, in SEK
5970
+ * @example 149.5
5971
+ */
5972
+ retailPrice: number | undefined;
5973
+ /**
5974
+ * @description Estimated market value, in SEK
5975
+ * @example 149.5
5976
+ */
5977
+ estimatedValue: number | undefined;
5978
+ /** @description Active shops currently tracking this item */
5979
+ shopCount: number;
5980
+ /** @description Observations the estimate rests on */
5981
+ pricingDataPoints: number;
5982
+ /**
5983
+ * Format: date-time
5984
+ * @example 2026-07-15T12:03:29.322Z
5985
+ */
5986
+ pricingUpdatedAt: string | undefined;
5987
+ /**
5988
+ * Format: date-time
5989
+ * @example 2026-07-15T12:03:29.322Z
5990
+ */
5991
+ createdAt: string;
5992
+ /**
5993
+ * Format: date-time
5994
+ * @example 2026-07-15T12:03:29.322Z
5995
+ */
5996
+ updatedAt: string;
5997
+ /** @enum {string} */
5998
+ kind: "card";
5999
+ /** @example 4/102 */
6000
+ cardNumber: string;
6001
+ /** @example Rare Holo */
6002
+ rarity: string | undefined;
6003
+ artist: string | undefined;
6004
+ cardmarketId: string | undefined;
6005
+ tcgplayerId: string | undefined;
6006
+ variants: {
6007
+ normal: boolean;
6008
+ holo: boolean;
6009
+ reverse: boolean;
6010
+ firstEdition: boolean;
6011
+ wPromo: boolean;
6012
+ } | undefined;
6013
+ prisjaktId: string | undefined;
6014
+ } | {
6015
+ /**
6016
+ * @description Resource identifier
6017
+ * @example 6a577711abc1ce71383d3e10
6018
+ */
6019
+ id: string;
6020
+ name: string;
6021
+ shortName: string | undefined;
6022
+ technicalName: string;
6023
+ brand: {
6024
+ /**
6025
+ * @description Resource identifier
6026
+ * @example 6a577711abc1ce71383d3e10
6027
+ */
6028
+ id: string;
6029
+ /** @example Pokémon */
6030
+ name: string;
6031
+ /** @example pokemon */
6032
+ technicalName: string;
6033
+ /**
6034
+ * Format: date-time
6035
+ * @example 2026-07-15T12:03:29.322Z
6036
+ */
6037
+ createdAt: string;
6038
+ /**
6039
+ * Format: date-time
6040
+ * @example 2026-07-15T12:03:29.322Z
6041
+ */
6042
+ updatedAt: string;
6043
+ };
6044
+ manufacturer: string;
6045
+ modelNumber: string | undefined;
6046
+ category: {
6047
+ /**
6048
+ * @description Resource identifier
6049
+ * @example 6a577711abc1ce71383d3e10
6050
+ */
6051
+ id: string;
6052
+ /** @example Booster Box */
6053
+ name: string;
6054
+ /** @example booster-box */
6055
+ technicalName: string;
6056
+ } | undefined;
6057
+ expansion: {
6058
+ /**
6059
+ * @description Resource identifier
6060
+ * @example 6a577711abc1ce71383d3e10
6061
+ */
6062
+ id: string;
6063
+ /** @example Mega Evolution 30th Celebration */
6064
+ name: string;
6065
+ /** @example 30th Celebration */
6066
+ shortName: string;
6067
+ /** @example jpn-mega-evolution-30th-celebration */
6068
+ technicalName: string;
6069
+ /**
6070
+ * @description Printing language of the item
6071
+ * @example JPN
6072
+ * @enum {string}
6073
+ */
6074
+ language: "ENG" | "JPN" | "CHI";
6075
+ /** @example m6a */
6076
+ code: string | undefined;
6077
+ /** @example m6a */
6078
+ cardCode: string | undefined;
6079
+ /** @example Mega Evolution */
6080
+ seriesName: string | undefined;
6081
+ /**
6082
+ * Format: date-time
6083
+ * @example 2026-07-15T12:03:29.322Z
6084
+ */
6085
+ releaseDate: string | undefined;
6086
+ /**
6087
+ * @description Absolute asset URL, or null when absent
6088
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6089
+ */
6090
+ logoUrl: string | undefined;
6091
+ /**
6092
+ * @description Absolute asset URL, or null when absent
6093
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6094
+ */
6095
+ symbolUrl: string | undefined;
6096
+ /**
6097
+ * @description Absolute asset URL, or null when absent
6098
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6099
+ */
6100
+ imageUrl: string | undefined;
6101
+ } | undefined;
6102
+ /**
6103
+ * @description Printing language of the item
6104
+ * @example JPN
6105
+ * @enum {string|null}
6106
+ */
6107
+ language: "ENG" | "JPN" | "CHI" | undefined;
6108
+ alternativeNames: {
6109
+ name: string;
6110
+ shortName: string | undefined;
6111
+ }[];
6112
+ supportsMultipackPricing: boolean;
6113
+ /**
6114
+ * @description Absolute asset URL, or null when absent
6115
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6116
+ */
6117
+ imageUrl: string | undefined;
6118
+ /**
6119
+ * @description Cheapest current shop price, in SEK
6120
+ * @example 149.5
6121
+ */
6122
+ retailPrice: number | undefined;
6123
+ /**
6124
+ * @description Estimated market value, in SEK
6125
+ * @example 149.5
6126
+ */
6127
+ estimatedValue: number | undefined;
6128
+ /** @description Active shops currently tracking this item */
6129
+ shopCount: number;
6130
+ /** @description Observations the estimate rests on */
6131
+ pricingDataPoints: number;
6132
+ /**
6133
+ * Format: date-time
6134
+ * @example 2026-07-15T12:03:29.322Z
6135
+ */
6136
+ pricingUpdatedAt: string | undefined;
6137
+ /**
6138
+ * Format: date-time
6139
+ * @example 2026-07-15T12:03:29.322Z
6140
+ */
6141
+ createdAt: string;
6142
+ /**
6143
+ * Format: date-time
6144
+ * @example 2026-07-15T12:03:29.322Z
6145
+ */
6146
+ updatedAt: string;
6147
+ /** @enum {string} */
6148
+ kind: "sealed";
6149
+ upc: string | undefined;
6150
+ asin: string | undefined;
6151
+ epid: string | undefined;
6152
+ priceChartingId: string | undefined;
6153
+ prisjaktId: string | undefined;
6154
+ };
6155
+ dailyStats: {
6156
+ /**
6157
+ * Format: date-time
6158
+ * @example 2026-07-15T12:03:29.322Z
6159
+ */
6160
+ statDate: string;
6161
+ /** @example 149.5 */
6162
+ averagePrice: number;
6163
+ }[];
6164
+ estimate: {
6165
+ /** @example 149.5 */
6166
+ estimatedValue: number | undefined;
6167
+ /**
6168
+ * Format: date-time
6169
+ * @example 2026-07-15T12:03:29.322Z
6170
+ */
6171
+ estimateUpdatedAt: string | undefined;
6172
+ dataPointCount: number;
6173
+ };
6174
+ variantStats: {
6175
+ /** @description Distinct cardType/condition/company/grade combinations */
6176
+ variantCount: number;
6177
+ looseCount: number;
6178
+ gradedCount: number;
6179
+ };
6180
+ };
6181
+ /** Response of `client.priceStats.productFull()`: everything `product()` has, plus the item's
6182
+ * current shop matches. */
6183
+ type ItemFullStats = {
6184
+ item: {
6185
+ /**
6186
+ * @description Resource identifier
6187
+ * @example 6a577711abc1ce71383d3e10
6188
+ */
6189
+ id: string;
6190
+ name: string;
6191
+ shortName: string | undefined;
6192
+ technicalName: string;
6193
+ brand: {
6194
+ /**
6195
+ * @description Resource identifier
6196
+ * @example 6a577711abc1ce71383d3e10
6197
+ */
6198
+ id: string;
6199
+ /** @example Pokémon */
6200
+ name: string;
6201
+ /** @example pokemon */
6202
+ technicalName: string;
6203
+ /**
6204
+ * Format: date-time
6205
+ * @example 2026-07-15T12:03:29.322Z
6206
+ */
6207
+ createdAt: string;
6208
+ /**
6209
+ * Format: date-time
6210
+ * @example 2026-07-15T12:03:29.322Z
6211
+ */
6212
+ updatedAt: string;
6213
+ };
6214
+ manufacturer: string;
6215
+ modelNumber: string | undefined;
6216
+ category: {
6217
+ /**
6218
+ * @description Resource identifier
6219
+ * @example 6a577711abc1ce71383d3e10
6220
+ */
6221
+ id: string;
6222
+ /** @example Booster Box */
6223
+ name: string;
6224
+ /** @example booster-box */
6225
+ technicalName: string;
6226
+ } | undefined;
6227
+ expansion: {
6228
+ /**
6229
+ * @description Resource identifier
6230
+ * @example 6a577711abc1ce71383d3e10
6231
+ */
6232
+ id: string;
6233
+ /** @example Mega Evolution 30th Celebration */
6234
+ name: string;
6235
+ /** @example 30th Celebration */
6236
+ shortName: string;
6237
+ /** @example jpn-mega-evolution-30th-celebration */
6238
+ technicalName: string;
6239
+ /**
6240
+ * @description Printing language of the item
6241
+ * @example JPN
6242
+ * @enum {string}
6243
+ */
6244
+ language: "ENG" | "JPN" | "CHI";
6245
+ /** @example m6a */
6246
+ code: string | undefined;
6247
+ /** @example m6a */
6248
+ cardCode: string | undefined;
6249
+ /** @example Mega Evolution */
6250
+ seriesName: string | undefined;
6251
+ /**
6252
+ * Format: date-time
6253
+ * @example 2026-07-15T12:03:29.322Z
6254
+ */
6255
+ releaseDate: string | undefined;
6256
+ /**
6257
+ * @description Absolute asset URL, or null when absent
6258
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6259
+ */
6260
+ logoUrl: string | undefined;
6261
+ /**
6262
+ * @description Absolute asset URL, or null when absent
6263
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6264
+ */
6265
+ symbolUrl: string | undefined;
6266
+ /**
6267
+ * @description Absolute asset URL, or null when absent
6268
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6269
+ */
6270
+ imageUrl: string | undefined;
6271
+ } | undefined;
6272
+ /**
6273
+ * @description Printing language of the item
6274
+ * @example JPN
6275
+ * @enum {string|null}
6276
+ */
6277
+ language: "ENG" | "JPN" | "CHI" | undefined;
6278
+ alternativeNames: {
6279
+ name: string;
6280
+ shortName: string | undefined;
6281
+ }[];
6282
+ supportsMultipackPricing: boolean;
6283
+ /**
6284
+ * @description Absolute asset URL, or null when absent
6285
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6286
+ */
6287
+ imageUrl: string | undefined;
6288
+ /**
6289
+ * @description Cheapest current shop price, in SEK
6290
+ * @example 149.5
6291
+ */
6292
+ retailPrice: number | undefined;
6293
+ /**
6294
+ * @description Estimated market value, in SEK
6295
+ * @example 149.5
6296
+ */
6297
+ estimatedValue: number | undefined;
6298
+ /** @description Active shops currently tracking this item */
6299
+ shopCount: number;
6300
+ /** @description Observations the estimate rests on */
6301
+ pricingDataPoints: number;
6302
+ /**
6303
+ * Format: date-time
6304
+ * @example 2026-07-15T12:03:29.322Z
6305
+ */
6306
+ pricingUpdatedAt: string | undefined;
6307
+ /**
6308
+ * Format: date-time
6309
+ * @example 2026-07-15T12:03:29.322Z
6310
+ */
6311
+ createdAt: string;
6312
+ /**
6313
+ * Format: date-time
6314
+ * @example 2026-07-15T12:03:29.322Z
6315
+ */
6316
+ updatedAt: string;
6317
+ /** @enum {string} */
6318
+ kind: "card";
6319
+ /** @example 4/102 */
6320
+ cardNumber: string;
6321
+ /** @example Rare Holo */
6322
+ rarity: string | undefined;
6323
+ artist: string | undefined;
6324
+ cardmarketId: string | undefined;
6325
+ tcgplayerId: string | undefined;
6326
+ variants: {
6327
+ normal: boolean;
6328
+ holo: boolean;
6329
+ reverse: boolean;
6330
+ firstEdition: boolean;
6331
+ wPromo: boolean;
6332
+ } | undefined;
6333
+ prisjaktId: string | undefined;
6334
+ } | {
6335
+ /**
6336
+ * @description Resource identifier
6337
+ * @example 6a577711abc1ce71383d3e10
6338
+ */
6339
+ id: string;
6340
+ name: string;
6341
+ shortName: string | undefined;
6342
+ technicalName: string;
6343
+ brand: {
6344
+ /**
6345
+ * @description Resource identifier
6346
+ * @example 6a577711abc1ce71383d3e10
6347
+ */
6348
+ id: string;
6349
+ /** @example Pokémon */
6350
+ name: string;
6351
+ /** @example pokemon */
6352
+ technicalName: string;
6353
+ /**
6354
+ * Format: date-time
6355
+ * @example 2026-07-15T12:03:29.322Z
6356
+ */
6357
+ createdAt: string;
6358
+ /**
6359
+ * Format: date-time
6360
+ * @example 2026-07-15T12:03:29.322Z
6361
+ */
6362
+ updatedAt: string;
6363
+ };
6364
+ manufacturer: string;
6365
+ modelNumber: string | undefined;
6366
+ category: {
6367
+ /**
6368
+ * @description Resource identifier
6369
+ * @example 6a577711abc1ce71383d3e10
6370
+ */
6371
+ id: string;
6372
+ /** @example Booster Box */
6373
+ name: string;
6374
+ /** @example booster-box */
6375
+ technicalName: string;
6376
+ } | undefined;
6377
+ expansion: {
6378
+ /**
6379
+ * @description Resource identifier
6380
+ * @example 6a577711abc1ce71383d3e10
6381
+ */
6382
+ id: string;
6383
+ /** @example Mega Evolution 30th Celebration */
6384
+ name: string;
6385
+ /** @example 30th Celebration */
6386
+ shortName: string;
6387
+ /** @example jpn-mega-evolution-30th-celebration */
6388
+ technicalName: string;
6389
+ /**
6390
+ * @description Printing language of the item
6391
+ * @example JPN
6392
+ * @enum {string}
6393
+ */
6394
+ language: "ENG" | "JPN" | "CHI";
6395
+ /** @example m6a */
6396
+ code: string | undefined;
6397
+ /** @example m6a */
6398
+ cardCode: string | undefined;
6399
+ /** @example Mega Evolution */
6400
+ seriesName: string | undefined;
6401
+ /**
6402
+ * Format: date-time
6403
+ * @example 2026-07-15T12:03:29.322Z
6404
+ */
6405
+ releaseDate: string | undefined;
6406
+ /**
6407
+ * @description Absolute asset URL, or null when absent
6408
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6409
+ */
6410
+ logoUrl: string | undefined;
6411
+ /**
6412
+ * @description Absolute asset URL, or null when absent
6413
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6414
+ */
6415
+ symbolUrl: string | undefined;
6416
+ /**
6417
+ * @description Absolute asset URL, or null when absent
6418
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6419
+ */
6420
+ imageUrl: string | undefined;
6421
+ } | undefined;
6422
+ /**
6423
+ * @description Printing language of the item
6424
+ * @example JPN
6425
+ * @enum {string|null}
6426
+ */
6427
+ language: "ENG" | "JPN" | "CHI" | undefined;
6428
+ alternativeNames: {
6429
+ name: string;
6430
+ shortName: string | undefined;
6431
+ }[];
6432
+ supportsMultipackPricing: boolean;
6433
+ /**
6434
+ * @description Absolute asset URL, or null when absent
6435
+ * @example https://ik.imagekit.io/xgtytqdnv/expansions/example-image.webp
6436
+ */
6437
+ imageUrl: string | undefined;
6438
+ /**
6439
+ * @description Cheapest current shop price, in SEK
6440
+ * @example 149.5
6441
+ */
6442
+ retailPrice: number | undefined;
6443
+ /**
6444
+ * @description Estimated market value, in SEK
6445
+ * @example 149.5
6446
+ */
6447
+ estimatedValue: number | undefined;
6448
+ /** @description Active shops currently tracking this item */
6449
+ shopCount: number;
6450
+ /** @description Observations the estimate rests on */
6451
+ pricingDataPoints: number;
6452
+ /**
6453
+ * Format: date-time
6454
+ * @example 2026-07-15T12:03:29.322Z
6455
+ */
6456
+ pricingUpdatedAt: string | undefined;
6457
+ /**
6458
+ * Format: date-time
6459
+ * @example 2026-07-15T12:03:29.322Z
6460
+ */
6461
+ createdAt: string;
6462
+ /**
6463
+ * Format: date-time
6464
+ * @example 2026-07-15T12:03:29.322Z
6465
+ */
6466
+ updatedAt: string;
6467
+ /** @enum {string} */
6468
+ kind: "sealed";
6469
+ upc: string | undefined;
6470
+ asin: string | undefined;
6471
+ epid: string | undefined;
6472
+ priceChartingId: string | undefined;
6473
+ prisjaktId: string | undefined;
6474
+ };
6475
+ stats: {
6476
+ dailyStats: {
6477
+ /**
6478
+ * Format: date-time
6479
+ * @example 2026-07-15T12:03:29.322Z
6480
+ */
6481
+ statDate: string;
6482
+ /** @example 149.5 */
6483
+ averagePrice: number;
6484
+ }[];
6485
+ variantStats: {
6486
+ /** @description Distinct cardType/condition/company/grade combinations */
6487
+ variantCount: number;
6488
+ looseCount: number;
6489
+ gradedCount: number;
6490
+ };
6491
+ };
6492
+ estimate: {
6493
+ /** @example 149.5 */
6494
+ estimatedValue: number | undefined;
6495
+ /**
6496
+ * Format: date-time
6497
+ * @example 2026-07-15T12:03:29.322Z
6498
+ */
6499
+ estimateUpdatedAt: string | undefined;
6500
+ dataPointCount: number;
6501
+ };
6502
+ shopMatches: {
6503
+ data: {
6504
+ /**
6505
+ * @description Resource identifier
6506
+ * @example 6a577711abc1ce71383d3e10
6507
+ */
6508
+ id: string;
6509
+ shop: {
6510
+ /** @example cardlevels */
6511
+ technicalName: string;
6512
+ /** @example Cardlevels */
6513
+ name: string;
6514
+ delivery: {
6515
+ /** @example 149.5 */
6516
+ cost: number | undefined;
6517
+ currency: string | undefined;
6518
+ daysMin: number | undefined;
6519
+ daysMax: number | undefined;
6520
+ /** @example 149.5 */
6521
+ freeShippingThreshold: number | undefined;
6522
+ supportsLocalPickup: boolean | undefined;
6523
+ note: string | undefined;
6524
+ };
6525
+ };
6526
+ url: string;
6527
+ /**
6528
+ * @description Resource identifier
6529
+ * @example 6a577711abc1ce71383d3e10
6530
+ */
6531
+ shopUrlId: string | undefined;
6532
+ /** @example 149.5 */
6533
+ price: number | undefined;
6534
+ /**
6535
+ * @description ISO-4217 currency code
6536
+ * @example SEK
6537
+ */
6538
+ currency: string | undefined;
6539
+ inStock: boolean;
6540
+ inPreorder: boolean;
6541
+ inMonitor: boolean;
6542
+ isFullyBooked: boolean;
6543
+ scrapedName: string | undefined;
6544
+ scrapedType: string | undefined;
6545
+ matchScore: number | undefined;
6546
+ hasCategoryMismatch: boolean;
6547
+ /** @enum {string|null} */
6548
+ cardType: "loose" | "graded" | undefined;
6549
+ /** @enum {string|null} */
6550
+ itemCondition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
6551
+ /** @enum {string|null} */
6552
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
6553
+ grade: number | undefined;
6554
+ /**
6555
+ * Format: date-time
6556
+ * @example 2026-07-15T12:03:29.322Z
6557
+ */
6558
+ matchedAt: string;
6559
+ /**
6560
+ * Format: date-time
6561
+ * @example 2026-07-15T12:03:29.322Z
6562
+ */
6563
+ updatedAt: string;
6564
+ bargain: {
6565
+ discountPercent: number;
6566
+ /** @enum {string} */
6567
+ referenceSource: "retail" | "tradera" | "cardmarket";
6568
+ } | undefined;
6569
+ }[];
6570
+ pagination: {
6571
+ /** @description Total matching records, ignoring pagination */
6572
+ total: number;
6573
+ limit: number;
6574
+ skip: number;
6575
+ hasMore: boolean;
6576
+ };
6577
+ };
6578
+ };
6579
+ type VariantPriceStat = {
6580
+ /** @example 149.5 */
6581
+ averagePrice: number;
6582
+ dataPointCount: number;
6583
+ /**
6584
+ * Format: date-time
6585
+ * @example 2026-07-15T12:03:29.322Z
6586
+ */
6587
+ lastSaleDate: string;
6588
+ };
6589
+ /** Response of `client.priceStats.productByVariant()`. The generated shape keys `loose`/`graded`
6590
+ * by a bare `string` (JSON Schema `additionalProperties` doesn't carry an enum), re-keyed here by
6591
+ * `ItemCondition`/`GradingCompany` for real autocomplete. Only hand-written wrapper in this file.
6592
+ * `graded` has a second string-keyed level for grade (`10`, `9.5` etc, straight from a JSON key). */
6593
+ interface ItemVariantStats {
6594
+ item: {
6595
+ /**
6596
+ * @description Resource identifier
6597
+ * @example 6a577711abc1ce71383d3e10
6598
+ */
6599
+ id: string;
6600
+ name: string;
6601
+ };
6602
+ variants: {
6603
+ loose: Partial<Record<ItemCondition, VariantPriceStat>>;
6604
+ graded: Partial<Record<GradingCompany, Record<string, VariantPriceStat>>>;
6605
+ };
6606
+ }
6607
+ type VariantSelector = {
6608
+ /** @enum {string|null} */
6609
+ cardType: "loose" | "graded" | undefined;
6610
+ /** @enum {string|null} */
6611
+ condition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
6612
+ /** @enum {string|null} */
6613
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
6614
+ grade: number | undefined;
6615
+ };
6616
+ /** Response of `client.priceStats.productDailyByVariant()`. */
6617
+ type ItemVariantDailyStats = {
6618
+ item: {
6619
+ /**
6620
+ * @description Resource identifier
6621
+ * @example 6a577711abc1ce71383d3e10
6622
+ */
6623
+ id: string;
6624
+ name: string;
6625
+ };
6626
+ variant: {
6627
+ /** @enum {string|null} */
6628
+ cardType: "loose" | "graded" | undefined;
6629
+ /** @enum {string|null} */
6630
+ condition: "NM" | "LP" | "MP" | "HP" | "DMG" | undefined;
6631
+ /** @enum {string|null} */
6632
+ gradingCompany: "PSA" | "BGS" | "CGC" | "SGC" | "ACE" | "RAUKCARD" | "TAG" | "GMA" | undefined;
6633
+ grade: number | undefined;
6634
+ };
6635
+ dailyStats: {
6636
+ /**
6637
+ * Format: date-time
6638
+ * @example 2026-07-15T12:03:29.322Z
6639
+ */
6640
+ statDate: string;
6641
+ /** @example 149.5 */
6642
+ averagePrice: number;
6643
+ }[];
6644
+ };
6645
+ type ShopPricePoint = {
6646
+ /**
6647
+ * Format: date-time
6648
+ * @example 2026-07-15T12:03:29.322Z
6649
+ */
6650
+ snapshotDate: string;
6651
+ /** @example 149.5 */
6652
+ price: number;
6653
+ /**
6654
+ * @description ISO-4217 currency code
6655
+ * @example SEK
6656
+ */
6657
+ currency: string;
6658
+ inStock: boolean;
6659
+ url: string;
6660
+ };
6661
+ /** Response of `client.shopMatchStats.forProduct()`: one product's price history, broken out per
6662
+ * shop. */
6663
+ type ItemShopPriceHistory = {
6664
+ item: {
6665
+ /**
6666
+ * @description Resource identifier
6667
+ * @example 6a577711abc1ce71383d3e10
6668
+ */
6669
+ id: string;
6670
+ name: string;
6671
+ };
6672
+ shops: {
6673
+ /** @description The shop's technicalName */
6674
+ shop: string;
6675
+ history: {
6676
+ /**
6677
+ * Format: date-time
6678
+ * @example 2026-07-15T12:03:29.322Z
6679
+ */
6680
+ snapshotDate: string;
6681
+ /** @example 149.5 */
6682
+ price: number;
6683
+ /**
6684
+ * @description ISO-4217 currency code
6685
+ * @example SEK
6686
+ */
6687
+ currency: string;
6688
+ inStock: boolean;
6689
+ url: string;
6690
+ }[];
6691
+ }[];
6692
+ recordCount: number;
6693
+ };
6694
+ /** Response of `client.shopMatchStats.forShop()`: one shop's price history, broken out per
6695
+ * product. */
6696
+ type ShopPriceHistoryList = {
6697
+ shop: string;
6698
+ items: {
6699
+ item: {
6700
+ /**
6701
+ * @description Resource identifier
6702
+ * @example 6a577711abc1ce71383d3e10
6703
+ */
6704
+ id: string;
6705
+ name: string;
6706
+ };
6707
+ history: {
6708
+ /**
6709
+ * Format: date-time
6710
+ * @example 2026-07-15T12:03:29.322Z
6711
+ */
6712
+ snapshotDate: string;
6713
+ /** @example 149.5 */
6714
+ price: number;
6715
+ /**
6716
+ * @description ISO-4217 currency code
6717
+ * @example SEK
6718
+ */
6719
+ currency: string;
6720
+ inStock: boolean;
6721
+ url: string;
6722
+ }[];
6723
+ /** @example 149.5 */
6724
+ latestPrice: number | undefined;
6725
+ /**
6726
+ * Format: date-time
6727
+ * @example 2026-07-15T12:03:29.322Z
6728
+ */
6729
+ latestDate: string | undefined;
6730
+ }[];
6731
+ itemCount: number;
6732
+ };
6733
+ type ShopPriceComparisonRow = {
6734
+ shop: string;
6735
+ /** @example 149.5 */
6736
+ price: number;
6737
+ /**
6738
+ * @description ISO-4217 currency code
6739
+ * @example SEK
6740
+ */
6741
+ currency: string;
6742
+ inStock: boolean;
6743
+ url: string;
6744
+ /**
6745
+ * Format: date-time
6746
+ * @example 2026-07-15T12:03:29.322Z
6747
+ */
6748
+ snapshotDate: string;
6749
+ };
6750
+ type ShopPriceComparisonStats = {
6751
+ /** @example 149.5 */
6752
+ lowestPrice: number;
6753
+ /** @example 149.5 */
6754
+ highestPrice: number;
6755
+ /** @example 149.5 */
6756
+ averagePrice: number;
6757
+ inStockCount: number;
6758
+ };
6759
+ /** Response of `client.shopMatchStats.compare()`: one product's price at every shop that carries
6760
+ * it, as of one date. `stats` is `undefined` when no shop had a price on that date. */
6761
+ type ItemPriceComparison = {
6762
+ item: {
6763
+ /**
6764
+ * @description Resource identifier
6765
+ * @example 6a577711abc1ce71383d3e10
6766
+ */
6767
+ id: string;
6768
+ name: string;
6769
+ };
6770
+ items: {
6771
+ shop: string;
6772
+ /** @example 149.5 */
6773
+ price: number;
6774
+ /**
6775
+ * @description ISO-4217 currency code
6776
+ * @example SEK
6777
+ */
6778
+ currency: string;
6779
+ inStock: boolean;
6780
+ url: string;
6781
+ /**
6782
+ * Format: date-time
6783
+ * @example 2026-07-15T12:03:29.322Z
6784
+ */
6785
+ snapshotDate: string;
6786
+ }[];
6787
+ stats: {
6788
+ /** @example 149.5 */
6789
+ lowestPrice: number;
6790
+ /** @example 149.5 */
6791
+ highestPrice: number;
6792
+ /** @example 149.5 */
6793
+ averagePrice: number;
6794
+ inStockCount: number;
6795
+ } | undefined;
6796
+ };
6797
+ type ShopUrlStatus = "pending" | "active" | "invalid" | "rejected" | "sanityRejected";
6798
+ type ShopUrlDiscoveredBy = "scraper" | "user";
6799
+ /** A URL at a shop that tcgpriser scrapes, and what it has been matched to. */
6800
+ type ShopUrl = {
6801
+ /**
6802
+ * @description Resource identifier
6803
+ * @example 6a577711abc1ce71383d3e10
6804
+ */
6805
+ id: string;
6806
+ url: string;
6807
+ shop: string | undefined;
6808
+ /** @enum {string} */
6809
+ status: "pending" | "active" | "invalid" | "rejected" | "sanityRejected";
6810
+ /** @enum {string} */
6811
+ discoveredBy: "scraper" | "user";
6812
+ /**
6813
+ * @description Resource identifier
6814
+ * @example 6a577711abc1ce71383d3e10
6815
+ */
6816
+ itemId: string | undefined;
6817
+ /** @enum {string|null} */
6818
+ itemKind: "card" | "sealed" | undefined;
6819
+ lockedItem: boolean;
6820
+ priceChartingId: string | undefined;
6821
+ scrapedName: string | undefined;
6822
+ matchScore: number | undefined;
6823
+ /**
6824
+ * Format: date-time
6825
+ * @example 2026-07-15T12:03:29.322Z
6826
+ */
6827
+ lastMatchedAt: string | undefined;
6828
+ /**
6829
+ * @description Resource identifier
6830
+ * @example 6a577711abc1ce71383d3e10
6831
+ */
6832
+ expansionId: string | undefined;
6833
+ /**
6834
+ * @description Resource identifier
6835
+ * @example 6a577711abc1ce71383d3e10
6836
+ */
6837
+ categoryId: string | undefined;
6838
+ submittedByUserId: string | undefined;
6839
+ /**
6840
+ * Format: date-time
6841
+ * @example 2026-07-15T12:03:29.322Z
6842
+ */
6843
+ createdAt: string;
6844
+ /**
6845
+ * Format: date-time
6846
+ * @example 2026-07-15T12:03:29.322Z
6847
+ */
6848
+ updatedAt: string;
6849
+ };
6850
+ /** Response of `client.shopUrls.submit()` / `client.shopUrls.assignProduct()`. */
6851
+ type ShopUrlMutationResult = {
6852
+ message: string;
6853
+ shopUrl: {
6854
+ /**
6855
+ * @description Resource identifier
6856
+ * @example 6a577711abc1ce71383d3e10
6857
+ */
6858
+ id: string;
6859
+ url: string;
6860
+ shop: string | undefined;
6861
+ /** @enum {string} */
6862
+ status: "pending" | "active" | "invalid" | "rejected" | "sanityRejected";
6863
+ /** @enum {string} */
6864
+ discoveredBy: "scraper" | "user";
6865
+ /**
6866
+ * @description Resource identifier
6867
+ * @example 6a577711abc1ce71383d3e10
6868
+ */
6869
+ itemId: string | undefined;
6870
+ /** @enum {string|null} */
6871
+ itemKind: "card" | "sealed" | undefined;
6872
+ lockedItem: boolean;
6873
+ priceChartingId: string | undefined;
6874
+ scrapedName: string | undefined;
6875
+ matchScore: number | undefined;
6876
+ /**
6877
+ * Format: date-time
6878
+ * @example 2026-07-15T12:03:29.322Z
6879
+ */
6880
+ lastMatchedAt: string | undefined;
6881
+ /**
6882
+ * @description Resource identifier
6883
+ * @example 6a577711abc1ce71383d3e10
6884
+ */
6885
+ expansionId: string | undefined;
6886
+ /**
6887
+ * @description Resource identifier
6888
+ * @example 6a577711abc1ce71383d3e10
6889
+ */
6890
+ categoryId: string | undefined;
6891
+ submittedByUserId: string | undefined;
6892
+ /**
6893
+ * Format: date-time
6894
+ * @example 2026-07-15T12:03:29.322Z
6895
+ */
6896
+ createdAt: string;
6897
+ /**
6898
+ * Format: date-time
6899
+ * @example 2026-07-15T12:03:29.322Z
6900
+ */
6901
+ updatedAt: string;
6902
+ };
6903
+ };
2956
6904
  interface ListBargainsParams {
2957
6905
  type?: 'sealed' | 'card' | 'all';
2958
6906
  }
@@ -2985,7 +6933,6 @@ declare class BargainsResource {
2985
6933
  * threshold, card condition/grade, free-text search). Premium. */
2986
6934
  search(params?: SearchBargainsParams): Promise<ListResponse<Bargain>>;
2987
6935
  }
2988
-
2989
6936
  interface ListCardsParams extends PaginationParams {
2990
6937
  /** Free-text search over card and set names. */
2991
6938
  search?: string;
@@ -3027,7 +6974,6 @@ declare class CardsResource {
3027
6974
  * stats job. Premium. */
3028
6975
  livePricing(idOrTechnicalName: string, options?: PremiumOptions): Promise<LivePricingForItem>;
3029
6976
  }
3030
-
3031
6977
  declare class ExpansionsResource {
3032
6978
  private readonly http;
3033
6979
  constructor(http: HttpClient);
@@ -3040,7 +6986,6 @@ declare class ExpansionsResource {
3040
6986
  * this expansion, not read from the last stats job. Premium. */
3041
6987
  livePricing(technicalName: string, options?: PremiumOptions): Promise<ExpansionLivePricing>;
3042
6988
  }
3043
-
3044
6989
  declare class PackRatesResource {
3045
6990
  private readonly http;
3046
6991
  constructor(http: HttpClient);
@@ -3050,7 +6995,6 @@ declare class PackRatesResource {
3050
6995
  /** `GET /pack-rates/{expansionId}`: pull-rate odds for one expansion. */
3051
6996
  get(expansionId: string): Promise<PackRate>;
3052
6997
  }
3053
-
3054
6998
  /** Filters shared by `daily()` and `estimatedValues()`: all narrow which product(s) the stats
3055
6999
  * cover; combine as many as you like. */
3056
7000
  interface ProductFilterParams {
@@ -3135,7 +7079,6 @@ declare class PriceStatsResource {
3135
7079
  * are required for `cardType: 'graded'`. Premium. */
3136
7080
  productDailyByVariant(idOrTechnicalName: string, params: ProductDailyByVariantParams): Promise<ItemVariantDailyStats>;
3137
7081
  }
3138
-
3139
7082
  interface ListProductsParams extends PaginationParams {
3140
7083
  /** Whitespace-separated tokens, each matched against the start of a word. */
3141
7084
  search?: string;
@@ -3180,7 +7123,6 @@ declare class ProductsResource {
3180
7123
  * stats job. Premium. */
3181
7124
  livePricing(idOrTechnicalName: string, options?: PremiumOptions): Promise<LivePricingForItem>;
3182
7125
  }
3183
-
3184
7126
  interface ShopMatchStatsForProductParams {
3185
7127
  authToken?: string;
3186
7128
  /** `YYYY-MM-DD` */
@@ -3219,7 +7161,6 @@ declare class ShopMatchStatsResource {
3219
7161
  * one date (defaults to the latest). */
3220
7162
  compare(params: CompareShopPricesParams): Promise<ItemPriceComparison>;
3221
7163
  }
3222
-
3223
7164
  interface ListShopMatchesParams extends PaginationParams {
3224
7165
  /** Filter to one shop's technicalName. */
3225
7166
  shop?: string;
@@ -3244,7 +7185,6 @@ declare class ShopMatchesResource {
3244
7185
  /** `GET /shop-matches/shops`: match counts per shop (based on latest records only). */
3245
7186
  shopStats(params?: PaginationParams): Promise<ListResponse<ShopMatchStats>>;
3246
7187
  }
3247
-
3248
7188
  interface SubmitShopUrlParams extends PremiumOptions {
3249
7189
  url: string;
3250
7190
  /** Shop technicalName. Auto-created if it doesn't exist yet. */
@@ -3264,7 +7204,6 @@ declare class ShopUrlsResource {
3264
7204
  /** `PATCH /shop-urls/{id}/product`: manually assign (or clear) the product a shop URL resolves to. */
3265
7205
  assignProduct(shopUrlId: string, params: AssignShopUrlProductParams): Promise<ShopUrlMutationResult>;
3266
7206
  }
3267
-
3268
7207
  interface ListShopsParams {
3269
7208
  active?: boolean;
3270
7209
  }
@@ -3276,14 +7215,12 @@ declare class ShopsResource {
3276
7215
  /** `GET /shops/{id}`: fetch one shop by its id or technicalName. */
3277
7216
  get(idOrTechnicalName: string): Promise<Shop>;
3278
7217
  }
3279
-
3280
7218
  declare class StatsResource {
3281
7219
  private readonly http;
3282
7220
  constructor(http: HttpClient);
3283
7221
  /** `GET /stats`: platform-wide overview counts (shops, expansions, products, prices tracked). */
3284
7222
  platform(): Promise<PlatformStats>;
3285
7223
  }
3286
-
3287
7224
  declare const DEFAULT_BASE_URL = "https://api.tcgpriser.se";
3288
7225
  /** Local dev, self-hosting and testing overrides. Most integrations never touch these. */
3289
7226
  interface TcgPriserAdvancedOptions {
@@ -3346,12 +7283,11 @@ declare class TcgPriser {
3346
7283
  */
3347
7284
  constructor(optionsOrAuthToken?: string | TcgPriserOptions);
3348
7285
  }
3349
-
3350
7286
  /** The stable error codes the API's `error.code` field can hold. */
3351
7287
  type TcgPriserErrorCode = 'validationFailed' | 'unauthorized' | 'forbidden' | 'notFound' | 'conflict' | 'readOnlyField' | 'rateLimited' | 'premiumRequired' | 'internalError'
3352
- /** Response body wasn't the `{ error: { code, message } }` shape. Probably a proxy or gateway
3353
- * error in front of the API. */
3354
- | 'unknown';
7288
+ /** Response body wasn't the `{ error: { code, message } }` shape. Probably a proxy or gateway
7289
+ * error in front of the API. */
7290
+ | 'unknown';
3355
7291
  /** Thrown for any non-2xx response. Carries the parsed `{ code, message }` when the body matched
3356
7292
  * the API's error envelope, plus the raw status/body regardless so nothing gets lost. */
3357
7293
  declare class TcgPriserError extends Error {
@@ -3372,5 +7308,4 @@ declare class TcgPriserError extends Error {
3372
7308
  body: string;
3373
7309
  });
3374
7310
  }
3375
-
3376
- export { type AlternativeName, type AssignShopUrlProductParams, type Bargain, type BargainInfo, type BargainProductRef, type BargainReferenceSource, type BrandRef, type Card, type CardMatchesParams, type CardPricesParams, type CardReferencePricesParams, type CardType, type CardVariants, type CatalogItem, type CategoryRef, type CompareShopPricesParams, type CurrencyCode, DEFAULT_BASE_URL, type DailyPricePoint, type DailyPriceStatsParams, type EstimatedValue, type EstimatedValuesParams, type Expansion, type ExpansionContents, type ExpansionLivePricing, type ExpansionRef, type GradingCompany, type ItemCondition, type ItemDailyStats, type ItemEstimatedValue, type ItemFullStats, type ItemPriceComparison, type ItemRef, type ItemReferencePrices, type ItemShopMatch, type ItemShopMatches, type ItemShopPriceHistory, type ItemSoldPrices, type ItemStats, type ItemVariantDailyStats, type ItemVariantStats, type ListBargainsParams, type ListCardsParams, type ListProductsParams, type ListResponse, type ListShopMatchesParams, type ListShopsParams, type LivePricingDetail, type LivePricingForItem, type LowestShopOffer, type MatchedItemRef, type PackRate, type PackRateBucket, type PageMeta, type PaginationParams, type PlatformStats, type PremiumOptions, type PrintingLanguage, type ProductByVariantParams, type ProductDailyByVariantParams, type ProductDailyStatsParams, type ProductFilterParams, type ProductMatchesParams, type ProductPricesParams, type ProductReferencePricesParams, type ReferencePriceCardVariant, type ReferencePriceCurrencyMode, type ReferencePriceMetric, type ReferencePriceProvider, type ReferencePriceSeries, type ReferencePriceSeriesPoint, type ReferencePriceSnapshot, type ReferencePriceSnapshotsByProvider, type ReferencePriceSource, type ResourceId, type SealedProduct, type SearchBargainsParams, type Shop, type ShopMatch, type ShopMatchDelivery, type ShopMatchStats, type ShopMatchStatsForProductParams, type ShopMatchStatsForShopParams, type ShopMatchesForShop, type ShopMatchesForShopParams, type ShopPriceComparisonRow, type ShopPriceComparisonStats, type ShopPriceHistoryList, type ShopPricePoint, type ShopRef, type ShopSummary, type ShopUrl, type ShopUrlDiscoveredBy, type ShopUrlMutationResult, type ShopUrlStatus, type SoldPrice, type StatsItemRef, type SubmitShopUrlParams, TcgPriser, TcgPriserError, type TcgPriserErrorCode, type TcgPriserOptions, type Timestamp, type TopItem, type TopProductsParams, type VariantPriceStat, type VariantSelector, type VariantStatsSummary, type components };
7311
+ export { type AlternativeName, type AssignShopUrlProductParams, type Bargain, type BargainInfo, type BargainProductRef, type BargainReferenceSource, type BrandRef, type Card, type CardMatchesParams, type CardPricesParams, type CardReferencePricesParams, type CardType, type CardVariants, type CatalogItem, type CategoryRef, type CompareShopPricesParams, type CurrencyCode, DEFAULT_BASE_URL, type DailyPricePoint, type DailyPriceStatsParams, type EstimatedValue, type EstimatedValuesParams, type Expansion, type ExpansionCard, type ExpansionContents, type ExpansionLivePricing, type ExpansionRef, type ExpansionSealedProduct, type GradingCompany, type ItemCondition, type ItemDailyStats, type ItemEstimatedValue, type ItemFullStats, type ItemPriceComparison, type ItemRef, type ItemReferencePrices, type ItemShopMatch, type ItemShopMatches, type ItemShopPriceHistory, type ItemSoldPrices, type ItemStats, type ItemVariantDailyStats, type ItemVariantStats, type ListBargainsParams, type ListCardsParams, type ListProductsParams, type ListResponse, type ListShopMatchesParams, type ListShopsParams, type LivePricingDetail, type LivePricingForItem, type LowestShopOffer, type MatchedItemRef, type PackRate, type PackRateBucket, type PageMeta, type PaginationParams, type PlatformStats, type PremiumOptions, type PrintingLanguage, type ProductByVariantParams, type ProductDailyByVariantParams, type ProductDailyStatsParams, type ProductFilterParams, type ProductMatchesParams, type ProductPricesParams, type ProductReferencePricesParams, type ReferencePriceCardVariant, type ReferencePriceCurrencyMode, type ReferencePriceMetric, type ReferencePriceProvider, type ReferencePriceSeries, type ReferencePriceSeriesPoint, type ReferencePriceSnapshot, type ReferencePriceSnapshotsByProvider, type ReferencePriceSource, type ResourceId, type SealedProduct, type SearchBargainsParams, type Shop, type ShopMatch, type ShopMatchDelivery, type ShopMatchStats, type ShopMatchStatsForProductParams, type ShopMatchStatsForShopParams, type ShopMatchesForShop, type ShopMatchesForShopParams, type ShopPriceComparisonRow, type ShopPriceComparisonStats, type ShopPriceHistoryList, type ShopPricePoint, type ShopRef, type ShopSummary, type ShopUrl, type ShopUrlDiscoveredBy, type ShopUrlMutationResult, type ShopUrlStatus, type SoldPrice, type StatsItemRef, type SubmitShopUrlParams, TcgPriser, TcgPriserError, type TcgPriserErrorCode, type TcgPriserOptions, type Timestamp, type TopItem, type TopProductsParams, type VariantPriceStat, type VariantSelector, type VariantStatsSummary, type components };