@sayren/store-sdk 0.17.0 → 0.19.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.
package/dist/index.d.mts CHANGED
@@ -33,8 +33,8 @@ export declare const auditLogSourceSchema: z.ZodEnum<{
33
33
  }>;
34
34
  export type AuditLogSource = z.infer<typeof auditLogSourceSchema>;
35
35
  export declare const auditLogOutcomeSchema: z.ZodEnum<{
36
- SUCCEEDED: "SUCCEEDED";
37
36
  FAILED: "FAILED";
37
+ SUCCEEDED: "SUCCEEDED";
38
38
  PENDING_APPROVAL: "PENDING_APPROVAL";
39
39
  DENIED: "DENIED";
40
40
  DRY_RUN: "DRY_RUN";
@@ -69,8 +69,8 @@ export declare const auditLogSchema: z.ZodObject<{
69
69
  path: z.ZodNullable<z.ZodString>;
70
70
  statusCode: z.ZodNullable<z.ZodNumber>;
71
71
  outcome: z.ZodNullable<z.ZodEnum<{
72
- SUCCEEDED: "SUCCEEDED";
73
72
  FAILED: "FAILED";
73
+ SUCCEEDED: "SUCCEEDED";
74
74
  PENDING_APPROVAL: "PENDING_APPROVAL";
75
75
  DENIED: "DENIED";
76
76
  DRY_RUN: "DRY_RUN";
@@ -102,8 +102,8 @@ export declare const auditLogListQuerySchema: z.ZodObject<{
102
102
  DOMAIN: "DOMAIN";
103
103
  }>>;
104
104
  outcome: z.ZodOptional<z.ZodEnum<{
105
- SUCCEEDED: "SUCCEEDED";
106
105
  FAILED: "FAILED";
106
+ SUCCEEDED: "SUCCEEDED";
107
107
  PENDING_APPROVAL: "PENDING_APPROVAL";
108
108
  DENIED: "DENIED";
109
109
  DRY_RUN: "DRY_RUN";
@@ -149,8 +149,8 @@ export declare const auditLogPageSchema: z.ZodObject<{
149
149
  path: z.ZodNullable<z.ZodString>;
150
150
  statusCode: z.ZodNullable<z.ZodNumber>;
151
151
  outcome: z.ZodNullable<z.ZodEnum<{
152
- SUCCEEDED: "SUCCEEDED";
153
152
  FAILED: "FAILED";
153
+ SUCCEEDED: "SUCCEEDED";
154
154
  PENDING_APPROVAL: "PENDING_APPROVAL";
155
155
  DENIED: "DENIED";
156
156
  DRY_RUN: "DRY_RUN";
@@ -166,8 +166,8 @@ export declare const auditLogPageSchema: z.ZodObject<{
166
166
  export type AuditLogPage = z.infer<typeof auditLogPageSchema>;
167
167
  export declare const agentPolicyDecisionSchema: z.ZodEnum<{
168
168
  DENIED: "DENIED";
169
- ALLOW: "ALLOW";
170
169
  APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
170
+ ALLOW: "ALLOW";
171
171
  }>;
172
172
  export type AgentPolicyDecision = z.infer<typeof agentPolicyDecisionSchema>;
173
173
  export declare const writePreviewSchema: z.ZodObject<{
@@ -191,8 +191,8 @@ export declare const writeDryRunResultSchema: z.ZodObject<{
191
191
  dryRun: z.ZodLiteral<true>;
192
192
  decision: z.ZodEnum<{
193
193
  DENIED: "DENIED";
194
- ALLOW: "ALLOW";
195
194
  APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
195
+ ALLOW: "ALLOW";
196
196
  }>;
197
197
  reason: z.ZodNullable<z.ZodString>;
198
198
  preview: z.ZodObject<{
@@ -213,25 +213,25 @@ export declare const writeDryRunResultSchema: z.ZodObject<{
213
213
  }, z.core.$strip>;
214
214
  export type WriteDryRunResult = z.infer<typeof writeDryRunResultSchema>;
215
215
  export declare const approvalStatusSchema: z.ZodEnum<{
216
- SUCCEEDED: "SUCCEEDED";
217
- FAILED: "FAILED";
216
+ EXPIRED: "EXPIRED";
218
217
  PENDING: "PENDING";
218
+ FAILED: "FAILED";
219
+ SUCCEEDED: "SUCCEEDED";
219
220
  EXECUTING: "EXECUTING";
220
221
  UNKNOWN: "UNKNOWN";
221
222
  REJECTED: "REJECTED";
222
- EXPIRED: "EXPIRED";
223
223
  }>;
224
224
  export type ApprovalStatus = z.infer<typeof approvalStatusSchema>;
225
225
  export declare const approvalRequestSchema: z.ZodObject<{
226
226
  approvalId: z.ZodString;
227
227
  status: z.ZodEnum<{
228
- SUCCEEDED: "SUCCEEDED";
229
- FAILED: "FAILED";
228
+ EXPIRED: "EXPIRED";
230
229
  PENDING: "PENDING";
230
+ FAILED: "FAILED";
231
+ SUCCEEDED: "SUCCEEDED";
231
232
  EXECUTING: "EXECUTING";
232
233
  UNKNOWN: "UNKNOWN";
233
234
  REJECTED: "REJECTED";
234
- EXPIRED: "EXPIRED";
235
235
  }>;
236
236
  operationId: z.ZodString;
237
237
  method: z.ZodString;
@@ -287,13 +287,13 @@ export declare const approvalRequestSchema: z.ZodObject<{
287
287
  export type ApprovalRequest = z.infer<typeof approvalRequestSchema>;
288
288
  export declare const approvalListQuerySchema: z.ZodObject<{
289
289
  status: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodTransform<string[], string | string[]>>, z.ZodArray<z.ZodEnum<{
290
- SUCCEEDED: "SUCCEEDED";
291
- FAILED: "FAILED";
290
+ EXPIRED: "EXPIRED";
292
291
  PENDING: "PENDING";
292
+ FAILED: "FAILED";
293
+ SUCCEEDED: "SUCCEEDED";
293
294
  EXECUTING: "EXECUTING";
294
295
  UNKNOWN: "UNKNOWN";
295
296
  REJECTED: "REJECTED";
296
- EXPIRED: "EXPIRED";
297
297
  }>>>>;
298
298
  cursor: z.ZodOptional<z.ZodString>;
299
299
  limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
@@ -306,13 +306,13 @@ export declare const approvalPageSchema: z.ZodObject<{
306
306
  items: z.ZodArray<z.ZodObject<{
307
307
  approvalId: z.ZodString;
308
308
  status: z.ZodEnum<{
309
- SUCCEEDED: "SUCCEEDED";
310
- FAILED: "FAILED";
309
+ EXPIRED: "EXPIRED";
311
310
  PENDING: "PENDING";
311
+ FAILED: "FAILED";
312
+ SUCCEEDED: "SUCCEEDED";
312
313
  EXECUTING: "EXECUTING";
313
314
  UNKNOWN: "UNKNOWN";
314
315
  REJECTED: "REJECTED";
315
- EXPIRED: "EXPIRED";
316
316
  }>;
317
317
  operationId: z.ZodString;
318
318
  method: z.ZodString;
@@ -581,10 +581,10 @@ export declare const analyticsProductsSchema: z.ZodObject<{
581
581
  }, z.core.$strip>;
582
582
  export type AnalyticsProducts = z.infer<typeof analyticsProductsSchema>;
583
583
  export declare const analyticsChannelSchema: z.ZodEnum<{
584
- UNKNOWN: "UNKNOWN";
585
584
  PAID: "PAID";
586
585
  DIRECT: "DIRECT";
587
586
  CAMPAIGN: "CAMPAIGN";
587
+ UNKNOWN: "UNKNOWN";
588
588
  ORGANIC_SEARCH: "ORGANIC_SEARCH";
589
589
  SOCIAL: "SOCIAL";
590
590
  EMAIL: "EMAIL";
@@ -615,10 +615,10 @@ export declare const analyticsSourcesQuerySchema: z.ZodObject<{
615
615
  export type AnalyticsSourcesParams = z.infer<typeof analyticsSourcesQuerySchema>;
616
616
  export declare const analyticsSourceRowSchema: z.ZodObject<{
617
617
  channel: z.ZodNullable<z.ZodEnum<{
618
- UNKNOWN: "UNKNOWN";
619
618
  PAID: "PAID";
620
619
  DIRECT: "DIRECT";
621
620
  CAMPAIGN: "CAMPAIGN";
621
+ UNKNOWN: "UNKNOWN";
622
622
  ORGANIC_SEARCH: "ORGANIC_SEARCH";
623
623
  SOCIAL: "SOCIAL";
624
624
  EMAIL: "EMAIL";
@@ -651,10 +651,10 @@ export declare const analyticsSourcesSchema: z.ZodObject<{
651
651
  }>;
652
652
  rows: z.ZodArray<z.ZodObject<{
653
653
  channel: z.ZodNullable<z.ZodEnum<{
654
- UNKNOWN: "UNKNOWN";
655
654
  PAID: "PAID";
656
655
  DIRECT: "DIRECT";
657
656
  CAMPAIGN: "CAMPAIGN";
657
+ UNKNOWN: "UNKNOWN";
658
658
  ORGANIC_SEARCH: "ORGANIC_SEARCH";
659
659
  SOCIAL: "SOCIAL";
660
660
  EMAIL: "EMAIL";
@@ -921,8 +921,8 @@ export declare const oauthClientRegistrationRequestSchema: z.ZodObject<{
921
921
  }>>;
922
922
  redirect_uris: z.ZodOptional<z.ZodArray<z.ZodString>>;
923
923
  grant_types: z.ZodOptional<z.ZodArray<z.ZodEnum<{
924
- refresh_token: "refresh_token";
925
924
  authorization_code: "authorization_code";
925
+ refresh_token: "refresh_token";
926
926
  client_credentials: "client_credentials";
927
927
  "urn:ietf:params:oauth:grant-type:token-exchange": "urn:ietf:params:oauth:grant-type:token-exchange";
928
928
  }>>>;
@@ -2379,10 +2379,10 @@ export type OrderItemDownload = z.infer<typeof orderItemDownloadSchema>;
2379
2379
  * - `VOID` 셀러가 폐기함
2380
2380
  */
2381
2381
  export declare const fulfillmentCodeStatusSchema: z.ZodEnum<{
2382
- EXPIRED: "EXPIRED";
2383
2382
  REVOKED: "REVOKED";
2384
2383
  AVAILABLE: "AVAILABLE";
2385
2384
  ASSIGNED: "ASSIGNED";
2385
+ EXPIRED: "EXPIRED";
2386
2386
  VOID: "VOID";
2387
2387
  }>;
2388
2388
  export type FulfillmentCodeStatus = z.infer<typeof fulfillmentCodeStatusSchema>;
@@ -2463,10 +2463,10 @@ export declare const fulfillmentCodeListQuerySchema: z.ZodObject<{
2463
2463
  page: z.ZodOptional<z.ZodString>;
2464
2464
  size: z.ZodOptional<z.ZodString>;
2465
2465
  status: z.ZodOptional<z.ZodEnum<{
2466
- EXPIRED: "EXPIRED";
2467
2466
  REVOKED: "REVOKED";
2468
2467
  AVAILABLE: "AVAILABLE";
2469
2468
  ASSIGNED: "ASSIGNED";
2469
+ EXPIRED: "EXPIRED";
2470
2470
  VOID: "VOID";
2471
2471
  }>>;
2472
2472
  variantId: z.ZodOptional<z.ZodString>;
@@ -2833,10 +2833,10 @@ export declare const webhookSecretRotatedSchema: z.ZodObject<{
2833
2833
  }, z.core.$strip>;
2834
2834
  export type WebhookSecretRotated = z.infer<typeof webhookSecretRotatedSchema>;
2835
2835
  export declare const webhookDeliveryStatusSchema: z.ZodEnum<{
2836
- FAILED: "FAILED";
2837
2836
  PENDING: "PENDING";
2838
2837
  PENDING_RETRY: "PENDING_RETRY";
2839
2838
  SUCCESS: "SUCCESS";
2839
+ FAILED: "FAILED";
2840
2840
  }>;
2841
2841
  export type WebhookDeliveryStatus = z.infer<typeof webhookDeliveryStatusSchema>;
2842
2842
  export declare const webhookDeliveryErrorCodeSchema: z.ZodEnum<{
@@ -2898,10 +2898,10 @@ export declare const webhookDeliverySchema: z.ZodObject<{
2898
2898
  }>;
2899
2899
  url: z.ZodString;
2900
2900
  status: z.ZodEnum<{
2901
- FAILED: "FAILED";
2902
2901
  PENDING: "PENDING";
2903
2902
  PENDING_RETRY: "PENDING_RETRY";
2904
2903
  SUCCESS: "SUCCESS";
2904
+ FAILED: "FAILED";
2905
2905
  }>;
2906
2906
  responseStatusCode: z.ZodNullable<z.ZodNumber>;
2907
2907
  responseTimeMs: z.ZodNullable<z.ZodNumber>;
@@ -2951,10 +2951,10 @@ export declare const webhookDeliveryDetailSchema: z.ZodObject<{
2951
2951
  }>;
2952
2952
  url: z.ZodString;
2953
2953
  status: z.ZodEnum<{
2954
- FAILED: "FAILED";
2955
2954
  PENDING: "PENDING";
2956
2955
  PENDING_RETRY: "PENDING_RETRY";
2957
2956
  SUCCESS: "SUCCESS";
2957
+ FAILED: "FAILED";
2958
2958
  }>;
2959
2959
  responseStatusCode: z.ZodNullable<z.ZodNumber>;
2960
2960
  responseTimeMs: z.ZodNullable<z.ZodNumber>;
@@ -2989,10 +2989,10 @@ export type WebhookDeliveryDetail = z.infer<typeof webhookDeliveryDetailSchema>;
2989
2989
  /** 전송 기록 조회 쿼리 — `GET /webhooks/{id}/deliveries` */
2990
2990
  export declare const webhookDeliveryListQuerySchema: z.ZodObject<{
2991
2991
  status: z.ZodOptional<z.ZodEnum<{
2992
- FAILED: "FAILED";
2993
2992
  PENDING: "PENDING";
2994
2993
  PENDING_RETRY: "PENDING_RETRY";
2995
2994
  SUCCESS: "SUCCESS";
2995
+ FAILED: "FAILED";
2996
2996
  }>>;
2997
2997
  eventType: z.ZodOptional<z.ZodEnum<{
2998
2998
  "ORDER.PAID": "ORDER.PAID";
@@ -3232,6 +3232,323 @@ export declare function resolveFulfillmentMode(type: FulfillmentType, mode: Fulf
3232
3232
  * 정책 지문 키(`b:…`)와 겹치지 않는다.
3233
3233
  */
3234
3234
  export declare const NO_SHIPPING_BUNDLE_KEY = "none";
3235
+ /** 배송비 유형 — 무료·유료·조건부 무료 */
3236
+ export declare const deliveryTypeSchema: z.ZodEnum<{
3237
+ FREE: "FREE";
3238
+ PAID: "PAID";
3239
+ CONDITIONAL_FREE: "CONDITIONAL_FREE";
3240
+ }>;
3241
+ export type DeliveryType = z.infer<typeof deliveryTypeSchema>;
3242
+ /** 파일 다운로드 기본값 — 횟수 5회·기간 30일(#48 결정 8) */
3243
+ export declare const DOWNLOAD_DEFAULTS: {
3244
+ readonly limit: 5;
3245
+ readonly days: 30;
3246
+ };
3247
+ /**
3248
+ * 상품 이행 — 등록(POST). 유형 키를 생략하면 그 유형의 기본값이다(`{ "type": "DOWNLOAD" }`만으로 등록할 수 있다).
3249
+ */
3250
+ export declare const productFulfillmentCreateSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3251
+ type: z.ZodLiteral<"SHIPPING">;
3252
+ shipping: z.ZodOptional<z.ZodObject<{
3253
+ deliveryType: z.ZodDefault<z.ZodEnum<{
3254
+ FREE: "FREE";
3255
+ PAID: "PAID";
3256
+ CONDITIONAL_FREE: "CONDITIONAL_FREE";
3257
+ }>>;
3258
+ deliveryFee: z.ZodOptional<z.ZodNumber>;
3259
+ conditionalFreeAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
3260
+ shippingAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3261
+ returnAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3262
+ }, z.core.$strict>>;
3263
+ }, z.core.$strict>, z.ZodObject<{
3264
+ type: z.ZodLiteral<"DOWNLOAD">;
3265
+ download: z.ZodDefault<z.ZodObject<{
3266
+ limit: z.ZodDefault<z.ZodNumber>;
3267
+ days: z.ZodDefault<z.ZodNumber>;
3268
+ stockTracking: z.ZodDefault<z.ZodBoolean>;
3269
+ withdrawalRestricted: z.ZodDefault<z.ZodBoolean>;
3270
+ }, z.core.$strict>>;
3271
+ }, z.core.$strict>, z.ZodObject<{
3272
+ type: z.ZodLiteral<"CODE">;
3273
+ code: z.ZodDefault<z.ZodObject<{
3274
+ mode: z.ZodDefault<z.ZodEnum<{
3275
+ AUTO: "AUTO";
3276
+ MANUAL: "MANUAL";
3277
+ }>>;
3278
+ withdrawalRestricted: z.ZodDefault<z.ZodBoolean>;
3279
+ }, z.core.$strict>>;
3280
+ }, z.core.$strict>, z.ZodObject<{
3281
+ type: z.ZodLiteral<"SERVICE">;
3282
+ service: z.ZodDefault<z.ZodObject<{
3283
+ mode: z.ZodDefault<z.ZodEnum<{
3284
+ AUTO: "AUTO";
3285
+ MANUAL: "MANUAL";
3286
+ }>>;
3287
+ }, z.core.$strict>>;
3288
+ }, z.core.$strict>, z.ZodObject<{
3289
+ type: z.ZodLiteral<"PICKUP">;
3290
+ pickup: z.ZodDefault<z.ZodObject<{
3291
+ addressId: z.ZodOptional<z.ZodString>;
3292
+ }, z.core.$strict>>;
3293
+ }, z.core.$strict>], "type">;
3294
+ export type ProductFulfillmentCreate = z.infer<typeof productFulfillmentCreateSchema>;
3295
+ /** 등록 요청의 입력 모양 — 기본값이 채워지기 전(생략 가능한 필드가 optional) */
3296
+ export type ProductFulfillmentCreateInput = z.input<typeof productFulfillmentCreateSchema>;
3297
+ /**
3298
+ * 상품 이행 — 수정(PUT·PATCH). 통째 교체이고 유형 키와 그 안의 필드가 **모두 필수**다. 서버는 현재 값과 병합하지 않는다.
3299
+ * `fulfillment` 자체를 생략하면 이행을 바꾸지 않는다.
3300
+ */
3301
+ export declare const productFulfillmentUpdateSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3302
+ type: z.ZodLiteral<"SHIPPING">;
3303
+ shipping: z.ZodObject<{
3304
+ deliveryType: z.ZodEnum<{
3305
+ FREE: "FREE";
3306
+ PAID: "PAID";
3307
+ CONDITIONAL_FREE: "CONDITIONAL_FREE";
3308
+ }>;
3309
+ deliveryFee: z.ZodNumber;
3310
+ conditionalFreeAmount: z.ZodNullable<z.ZodNumber>;
3311
+ shippingAddressId: z.ZodNullable<z.ZodString>;
3312
+ returnAddressId: z.ZodNullable<z.ZodString>;
3313
+ }, z.core.$strict>;
3314
+ }, z.core.$strict>, z.ZodObject<{
3315
+ type: z.ZodLiteral<"DOWNLOAD">;
3316
+ download: z.ZodObject<{
3317
+ limit: z.ZodNumber;
3318
+ days: z.ZodNumber;
3319
+ stockTracking: z.ZodBoolean;
3320
+ withdrawalRestricted: z.ZodBoolean;
3321
+ }, z.core.$strict>;
3322
+ }, z.core.$strict>, z.ZodObject<{
3323
+ type: z.ZodLiteral<"CODE">;
3324
+ code: z.ZodObject<{
3325
+ mode: z.ZodEnum<{
3326
+ AUTO: "AUTO";
3327
+ MANUAL: "MANUAL";
3328
+ }>;
3329
+ withdrawalRestricted: z.ZodBoolean;
3330
+ }, z.core.$strict>;
3331
+ }, z.core.$strict>, z.ZodObject<{
3332
+ type: z.ZodLiteral<"SERVICE">;
3333
+ service: z.ZodObject<{
3334
+ mode: z.ZodEnum<{
3335
+ AUTO: "AUTO";
3336
+ MANUAL: "MANUAL";
3337
+ }>;
3338
+ }, z.core.$strict>;
3339
+ }, z.core.$strict>, z.ZodObject<{
3340
+ type: z.ZodLiteral<"PICKUP">;
3341
+ pickup: z.ZodObject<{
3342
+ addressId: z.ZodString;
3343
+ }, z.core.$strict>;
3344
+ }, z.core.$strict>], "type">;
3345
+ export type ProductFulfillmentUpdate = z.infer<typeof productFulfillmentUpdateSchema>;
3346
+ /**
3347
+ * 저장된 상품 이행 — 알려진 유형의 닫힌 유니온. 서버의 상품 엔티티와 응답이 이 모양을 쓴다.
3348
+ * 응답 파싱은 `productFulfillmentResponseSchema`(열린 유니온)를 쓴다.
3349
+ */
3350
+ export declare const productFulfillmentSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3351
+ type: z.ZodLiteral<"SHIPPING">;
3352
+ shipping: z.ZodObject<{
3353
+ deliveryType: z.ZodEnum<{
3354
+ FREE: "FREE";
3355
+ PAID: "PAID";
3356
+ CONDITIONAL_FREE: "CONDITIONAL_FREE";
3357
+ }>;
3358
+ deliveryFee: z.ZodNumber;
3359
+ conditionalFreeAmount: z.ZodNullable<z.ZodNumber>;
3360
+ shippingAddressId: z.ZodNullable<z.ZodString>;
3361
+ returnAddressId: z.ZodNullable<z.ZodString>;
3362
+ }, z.core.$strip>;
3363
+ }, z.core.$strip>, z.ZodObject<{
3364
+ type: z.ZodLiteral<"DOWNLOAD">;
3365
+ download: z.ZodObject<{
3366
+ limit: z.ZodNumber;
3367
+ days: z.ZodNumber;
3368
+ stockTracking: z.ZodBoolean;
3369
+ withdrawalRestricted: z.ZodBoolean;
3370
+ }, z.core.$strip>;
3371
+ }, z.core.$strip>, z.ZodObject<{
3372
+ type: z.ZodLiteral<"CODE">;
3373
+ code: z.ZodObject<{
3374
+ mode: z.ZodEnum<{
3375
+ AUTO: "AUTO";
3376
+ MANUAL: "MANUAL";
3377
+ }>;
3378
+ withdrawalRestricted: z.ZodBoolean;
3379
+ }, z.core.$strip>;
3380
+ }, z.core.$strip>, z.ZodObject<{
3381
+ type: z.ZodLiteral<"SERVICE">;
3382
+ service: z.ZodObject<{
3383
+ mode: z.ZodEnum<{
3384
+ AUTO: "AUTO";
3385
+ MANUAL: "MANUAL";
3386
+ }>;
3387
+ }, z.core.$strip>;
3388
+ }, z.core.$strip>, z.ZodObject<{
3389
+ type: z.ZodLiteral<"PICKUP">;
3390
+ pickup: z.ZodObject<{
3391
+ addressId: z.ZodNullable<z.ZodString>;
3392
+ }, z.core.$strip>;
3393
+ }, z.core.$strip>], "type">;
3394
+ export type ProductFulfillment = z.infer<typeof productFulfillmentSchema>;
3395
+ /** 유형 이름 → 그 유형의 저장된 이행 */
3396
+ export type ProductFulfillmentOf<T extends FulfillmentType> = Extract<ProductFulfillment, {
3397
+ type: T;
3398
+ }>;
3399
+ /** 응답이 알려 주는 모르는 유형 — SDK가 아직 모르는 유형(서버가 나중에 더한 유형) */
3400
+ export interface UnknownFulfillment {
3401
+ type: "OTHER";
3402
+ /** 서버가 보낸 유형 이름 */
3403
+ rawType: string;
3404
+ }
3405
+ /**
3406
+ * 열린 응답 유니온 — 알려진 유형은 판별 유니온으로 검사하고, **모르는 유형만** `{ type: "OTHER", rawType }`로 읽는다.
3407
+ *
3408
+ * `type: z.string()` 가지를 그대로 두면 TS가 `type === "SHIPPING"`으로 좁혀도 문자열 가지가 남는다. `OTHER` 리터럴로 바꿔 좁히기를
3409
+ * 지킨다. 알려진 유형의 모양이 틀린 응답은 폴백으로 숨기지 않고 파싱 오류로 둔다.
3410
+ */
3411
+ export declare function openFulfillmentUnion<T extends z.ZodType>(known: T): z.ZodUnion<readonly [T, z.ZodPipe<z.ZodObject<{
3412
+ type: z.ZodString;
3413
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
3414
+ [x: string]: unknown;
3415
+ type: string;
3416
+ }>>]>;
3417
+ export declare const productFulfillmentResponseSchema: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
3418
+ type: z.ZodLiteral<"SHIPPING">;
3419
+ shipping: z.ZodObject<{
3420
+ deliveryType: z.ZodEnum<{
3421
+ FREE: "FREE";
3422
+ PAID: "PAID";
3423
+ CONDITIONAL_FREE: "CONDITIONAL_FREE";
3424
+ }>;
3425
+ deliveryFee: z.ZodNumber;
3426
+ conditionalFreeAmount: z.ZodNullable<z.ZodNumber>;
3427
+ shippingAddressId: z.ZodNullable<z.ZodString>;
3428
+ returnAddressId: z.ZodNullable<z.ZodString>;
3429
+ }, z.core.$strip>;
3430
+ }, z.core.$strip>, z.ZodObject<{
3431
+ type: z.ZodLiteral<"DOWNLOAD">;
3432
+ download: z.ZodObject<{
3433
+ limit: z.ZodNumber;
3434
+ days: z.ZodNumber;
3435
+ stockTracking: z.ZodBoolean;
3436
+ withdrawalRestricted: z.ZodBoolean;
3437
+ }, z.core.$strip>;
3438
+ }, z.core.$strip>, z.ZodObject<{
3439
+ type: z.ZodLiteral<"CODE">;
3440
+ code: z.ZodObject<{
3441
+ mode: z.ZodEnum<{
3442
+ AUTO: "AUTO";
3443
+ MANUAL: "MANUAL";
3444
+ }>;
3445
+ withdrawalRestricted: z.ZodBoolean;
3446
+ }, z.core.$strip>;
3447
+ }, z.core.$strip>, z.ZodObject<{
3448
+ type: z.ZodLiteral<"SERVICE">;
3449
+ service: z.ZodObject<{
3450
+ mode: z.ZodEnum<{
3451
+ AUTO: "AUTO";
3452
+ MANUAL: "MANUAL";
3453
+ }>;
3454
+ }, z.core.$strip>;
3455
+ }, z.core.$strip>, z.ZodObject<{
3456
+ type: z.ZodLiteral<"PICKUP">;
3457
+ pickup: z.ZodObject<{
3458
+ addressId: z.ZodNullable<z.ZodString>;
3459
+ }, z.core.$strip>;
3460
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
3461
+ type: z.ZodString;
3462
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
3463
+ [x: string]: unknown;
3464
+ type: string;
3465
+ }>>]>;
3466
+ export type ProductFulfillmentView = z.infer<typeof productFulfillmentResponseSchema>;
3467
+ /** 제공 방식 — CODE·SERVICE는 저장된 값, DOWNLOAD는 AUTO, PICKUP은 MANUAL, 배송 상품은 null */
3468
+ export declare function fulfillmentModeOf(fulfillment: ProductFulfillment): FulfillmentMode | null;
3469
+ /** 재고를 세는가 — 파일 다운로드만 끌 수 있다 */
3470
+ export declare function stockTrackingOf(fulfillment: ProductFulfillment): boolean;
3471
+ /** 청약철회 제한 대상인가 — 파일 다운로드·코드 발급만 켤 수 있다(전자상거래법 제17조 제2항 제5호, 디지털 콘텐츠) */
3472
+ export declare function withdrawalRestrictedOf(fulfillment: ProductFulfillment): boolean;
3473
+ /** 코드 풀을 쓰는가 — 코드 발급 + 자동 제공. 재고가 판매 가능 코드 수다 */
3474
+ export declare function usesCodePool(fulfillment: ProductFulfillment): boolean;
3475
+ /** 결제 확정과 함께 제공까지 끝내는가 — 비실물 + 자동 제공 */
3476
+ export declare function autoFulfillableOf(fulfillment: ProductFulfillment): boolean;
3477
+ /**
3478
+ * 주문상품의 주문 시점 이행 — 결제 확정이 주문서 줄에서 굳힌다. 상품의 현재 값이 아니다. 서버는 주문상품 컬럼
3479
+ * (`fulfillment_type`·`delivery_bundle_key`·`stock_tracked`·`withdrawal_restricted`)과 jsonb(`fulfillment_snapshot`)를 합쳐 이 모양을 만든다.
3480
+ *
3481
+ * `mode`는 **주문 시점 상품의 방식**이다. 실제 제공 방식은 제공 기록(`fulfillment.mode`)에 있고 다를 수 있다(자동 제공 상품의 수동 복구).
3482
+ */
3483
+ export declare const orderItemFulfillmentSnapshotSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3484
+ type: z.ZodLiteral<"SHIPPING">;
3485
+ shipping: z.ZodObject<{
3486
+ bundleKey: z.ZodNullable<z.ZodString>;
3487
+ returnAddressId: z.ZodNullable<z.ZodString>;
3488
+ }, z.core.$strip>;
3489
+ }, z.core.$strip>, z.ZodObject<{
3490
+ type: z.ZodLiteral<"DOWNLOAD">;
3491
+ download: z.ZodObject<{
3492
+ limit: z.ZodNumber;
3493
+ days: z.ZodNumber;
3494
+ stockTracked: z.ZodBoolean;
3495
+ withdrawalRestricted: z.ZodBoolean;
3496
+ }, z.core.$strip>;
3497
+ }, z.core.$strip>, z.ZodObject<{
3498
+ type: z.ZodLiteral<"CODE">;
3499
+ code: z.ZodObject<{
3500
+ mode: z.ZodString;
3501
+ withdrawalRestricted: z.ZodBoolean;
3502
+ }, z.core.$strip>;
3503
+ }, z.core.$strip>, z.ZodObject<{
3504
+ type: z.ZodLiteral<"SERVICE">;
3505
+ service: z.ZodObject<{
3506
+ mode: z.ZodString;
3507
+ }, z.core.$strip>;
3508
+ }, z.core.$strip>, z.ZodObject<{
3509
+ type: z.ZodLiteral<"PICKUP">;
3510
+ pickup: z.ZodObject<{
3511
+ addressId: z.ZodNullable<z.ZodString>;
3512
+ }, z.core.$strip>;
3513
+ }, z.core.$strip>], "type">;
3514
+ export type OrderItemFulfillmentSnapshot = z.infer<typeof orderItemFulfillmentSnapshotSchema>;
3515
+ export declare const orderItemFulfillmentSnapshotResponseSchema: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
3516
+ type: z.ZodLiteral<"SHIPPING">;
3517
+ shipping: z.ZodObject<{
3518
+ bundleKey: z.ZodNullable<z.ZodString>;
3519
+ returnAddressId: z.ZodNullable<z.ZodString>;
3520
+ }, z.core.$strip>;
3521
+ }, z.core.$strip>, z.ZodObject<{
3522
+ type: z.ZodLiteral<"DOWNLOAD">;
3523
+ download: z.ZodObject<{
3524
+ limit: z.ZodNumber;
3525
+ days: z.ZodNumber;
3526
+ stockTracked: z.ZodBoolean;
3527
+ withdrawalRestricted: z.ZodBoolean;
3528
+ }, z.core.$strip>;
3529
+ }, z.core.$strip>, z.ZodObject<{
3530
+ type: z.ZodLiteral<"CODE">;
3531
+ code: z.ZodObject<{
3532
+ mode: z.ZodString;
3533
+ withdrawalRestricted: z.ZodBoolean;
3534
+ }, z.core.$strip>;
3535
+ }, z.core.$strip>, z.ZodObject<{
3536
+ type: z.ZodLiteral<"SERVICE">;
3537
+ service: z.ZodObject<{
3538
+ mode: z.ZodString;
3539
+ }, z.core.$strip>;
3540
+ }, z.core.$strip>, z.ZodObject<{
3541
+ type: z.ZodLiteral<"PICKUP">;
3542
+ pickup: z.ZodObject<{
3543
+ addressId: z.ZodNullable<z.ZodString>;
3544
+ }, z.core.$strip>;
3545
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
3546
+ type: z.ZodString;
3547
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
3548
+ [x: string]: unknown;
3549
+ type: string;
3550
+ }>>]>;
3551
+ export type OrderItemFulfillmentSnapshotView = z.infer<typeof orderItemFulfillmentSnapshotResponseSchema>;
3235
3552
  //#endregion
3236
3553
  //#region src/schemas/order.d.ts
3237
3554
  export declare const orderSummarySchema: z.ZodObject<{
@@ -3321,7 +3638,42 @@ export declare const orderItemSchema: z.ZodObject<{
3321
3638
  optionId: z.ZodNullable<z.ZodString>;
3322
3639
  optionName: z.ZodNullable<z.ZodString>;
3323
3640
  sellerCode: z.ZodNullable<z.ZodString>;
3324
- fulfillmentType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
3641
+ fulfillmentSnapshot: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
3642
+ type: z.ZodLiteral<"SHIPPING">;
3643
+ shipping: z.ZodObject<{
3644
+ bundleKey: z.ZodNullable<z.ZodString>;
3645
+ returnAddressId: z.ZodNullable<z.ZodString>;
3646
+ }, z.core.$strip>;
3647
+ }, z.core.$strip>, z.ZodObject<{
3648
+ type: z.ZodLiteral<"DOWNLOAD">;
3649
+ download: z.ZodObject<{
3650
+ limit: z.ZodNumber;
3651
+ days: z.ZodNumber;
3652
+ stockTracked: z.ZodBoolean;
3653
+ withdrawalRestricted: z.ZodBoolean;
3654
+ }, z.core.$strip>;
3655
+ }, z.core.$strip>, z.ZodObject<{
3656
+ type: z.ZodLiteral<"CODE">;
3657
+ code: z.ZodObject<{
3658
+ mode: z.ZodString;
3659
+ withdrawalRestricted: z.ZodBoolean;
3660
+ }, z.core.$strip>;
3661
+ }, z.core.$strip>, z.ZodObject<{
3662
+ type: z.ZodLiteral<"SERVICE">;
3663
+ service: z.ZodObject<{
3664
+ mode: z.ZodString;
3665
+ }, z.core.$strip>;
3666
+ }, z.core.$strip>, z.ZodObject<{
3667
+ type: z.ZodLiteral<"PICKUP">;
3668
+ pickup: z.ZodObject<{
3669
+ addressId: z.ZodNullable<z.ZodString>;
3670
+ }, z.core.$strip>;
3671
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
3672
+ type: z.ZodString;
3673
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
3674
+ [x: string]: unknown;
3675
+ type: string;
3676
+ }>>]>;
3325
3677
  quantity: z.ZodNumber;
3326
3678
  canceledQuantity: z.ZodNumber;
3327
3679
  activeQuantity: z.ZodNumber;
@@ -3377,7 +3729,6 @@ export declare const orderItemSchema: z.ZodObject<{
3377
3729
  "CLAIM.EXCHANGE_REQUESTED": "CLAIM.EXCHANGE_REQUESTED";
3378
3730
  "CLAIM.COMPLETED": "CLAIM.COMPLETED";
3379
3731
  }>;
3380
- withdrawalRestricted: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
3381
3732
  testPayment: z.ZodBoolean;
3382
3733
  }, z.core.$strip>;
3383
3734
  export type OrderItem = z.infer<typeof orderItemSchema>;
@@ -3481,7 +3832,42 @@ export declare const orderSchema: z.ZodObject<{
3481
3832
  optionId: z.ZodNullable<z.ZodString>;
3482
3833
  optionName: z.ZodNullable<z.ZodString>;
3483
3834
  sellerCode: z.ZodNullable<z.ZodString>;
3484
- fulfillmentType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
3835
+ fulfillmentSnapshot: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
3836
+ type: z.ZodLiteral<"SHIPPING">;
3837
+ shipping: z.ZodObject<{
3838
+ bundleKey: z.ZodNullable<z.ZodString>;
3839
+ returnAddressId: z.ZodNullable<z.ZodString>;
3840
+ }, z.core.$strip>;
3841
+ }, z.core.$strip>, z.ZodObject<{
3842
+ type: z.ZodLiteral<"DOWNLOAD">;
3843
+ download: z.ZodObject<{
3844
+ limit: z.ZodNumber;
3845
+ days: z.ZodNumber;
3846
+ stockTracked: z.ZodBoolean;
3847
+ withdrawalRestricted: z.ZodBoolean;
3848
+ }, z.core.$strip>;
3849
+ }, z.core.$strip>, z.ZodObject<{
3850
+ type: z.ZodLiteral<"CODE">;
3851
+ code: z.ZodObject<{
3852
+ mode: z.ZodString;
3853
+ withdrawalRestricted: z.ZodBoolean;
3854
+ }, z.core.$strip>;
3855
+ }, z.core.$strip>, z.ZodObject<{
3856
+ type: z.ZodLiteral<"SERVICE">;
3857
+ service: z.ZodObject<{
3858
+ mode: z.ZodString;
3859
+ }, z.core.$strip>;
3860
+ }, z.core.$strip>, z.ZodObject<{
3861
+ type: z.ZodLiteral<"PICKUP">;
3862
+ pickup: z.ZodObject<{
3863
+ addressId: z.ZodNullable<z.ZodString>;
3864
+ }, z.core.$strip>;
3865
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
3866
+ type: z.ZodString;
3867
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
3868
+ [x: string]: unknown;
3869
+ type: string;
3870
+ }>>]>;
3485
3871
  quantity: z.ZodNumber;
3486
3872
  canceledQuantity: z.ZodNumber;
3487
3873
  activeQuantity: z.ZodNumber;
@@ -3537,7 +3923,6 @@ export declare const orderSchema: z.ZodObject<{
3537
3923
  "CLAIM.EXCHANGE_REQUESTED": "CLAIM.EXCHANGE_REQUESTED";
3538
3924
  "CLAIM.COMPLETED": "CLAIM.COMPLETED";
3539
3925
  }>;
3540
- withdrawalRestricted: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
3541
3926
  testPayment: z.ZodBoolean;
3542
3927
  }, z.core.$strip>>;
3543
3928
  }, z.core.$strip>;
@@ -3597,7 +3982,42 @@ export declare const orderItemPageSchema: z.ZodObject<{
3597
3982
  optionId: z.ZodNullable<z.ZodString>;
3598
3983
  optionName: z.ZodNullable<z.ZodString>;
3599
3984
  sellerCode: z.ZodNullable<z.ZodString>;
3600
- fulfillmentType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
3985
+ fulfillmentSnapshot: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
3986
+ type: z.ZodLiteral<"SHIPPING">;
3987
+ shipping: z.ZodObject<{
3988
+ bundleKey: z.ZodNullable<z.ZodString>;
3989
+ returnAddressId: z.ZodNullable<z.ZodString>;
3990
+ }, z.core.$strip>;
3991
+ }, z.core.$strip>, z.ZodObject<{
3992
+ type: z.ZodLiteral<"DOWNLOAD">;
3993
+ download: z.ZodObject<{
3994
+ limit: z.ZodNumber;
3995
+ days: z.ZodNumber;
3996
+ stockTracked: z.ZodBoolean;
3997
+ withdrawalRestricted: z.ZodBoolean;
3998
+ }, z.core.$strip>;
3999
+ }, z.core.$strip>, z.ZodObject<{
4000
+ type: z.ZodLiteral<"CODE">;
4001
+ code: z.ZodObject<{
4002
+ mode: z.ZodString;
4003
+ withdrawalRestricted: z.ZodBoolean;
4004
+ }, z.core.$strip>;
4005
+ }, z.core.$strip>, z.ZodObject<{
4006
+ type: z.ZodLiteral<"SERVICE">;
4007
+ service: z.ZodObject<{
4008
+ mode: z.ZodString;
4009
+ }, z.core.$strip>;
4010
+ }, z.core.$strip>, z.ZodObject<{
4011
+ type: z.ZodLiteral<"PICKUP">;
4012
+ pickup: z.ZodObject<{
4013
+ addressId: z.ZodNullable<z.ZodString>;
4014
+ }, z.core.$strip>;
4015
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
4016
+ type: z.ZodString;
4017
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
4018
+ [x: string]: unknown;
4019
+ type: string;
4020
+ }>>]>;
3601
4021
  quantity: z.ZodNumber;
3602
4022
  canceledQuantity: z.ZodNumber;
3603
4023
  activeQuantity: z.ZodNumber;
@@ -3653,7 +4073,6 @@ export declare const orderItemPageSchema: z.ZodObject<{
3653
4073
  "CLAIM.EXCHANGE_REQUESTED": "CLAIM.EXCHANGE_REQUESTED";
3654
4074
  "CLAIM.COMPLETED": "CLAIM.COMPLETED";
3655
4075
  }>;
3656
- withdrawalRestricted: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
3657
4076
  testPayment: z.ZodBoolean;
3658
4077
  }, z.core.$strip>>;
3659
4078
  }, z.core.$strip>;
@@ -3717,7 +4136,7 @@ export interface OrderListParams extends PageParams {
3717
4136
  status?: z.infer<typeof orderItemStatusSchema>;
3718
4137
  keyword?: string;
3719
4138
  /** 상품 유형 필터 — 이 유형의 주문상품이 하나라도 있는 주문(이슈 #48) */
3720
- fulfillmentType?: z.infer<typeof fulfillmentTypeResponseSchema>;
4139
+ fulfillmentType?: string;
3721
4140
  /** 테스트 결제 필터 — `"true"` 테스트 결제만, `"false"` 실결제만, 생략하면 전부 */
3722
4141
  testPayment?: "true" | "false";
3723
4142
  }
@@ -3939,8 +4358,8 @@ export declare const pgEnvironmentSchema: z.ZodEnum<{
3939
4358
  }>;
3940
4359
  export type PgEnvironment = z.infer<typeof pgEnvironmentSchema>;
3941
4360
  export declare const pgVerificationResultSchema: z.ZodEnum<{
3942
- FAILED: "FAILED";
3943
4361
  SUCCESS: "SUCCESS";
4362
+ FAILED: "FAILED";
3944
4363
  }>;
3945
4364
  export type PgVerificationResult = z.infer<typeof pgVerificationResultSchema>;
3946
4365
  /**
@@ -4089,8 +4508,8 @@ export declare const paymentCredentialSetSchema: z.ZodObject<{
4089
4508
  }, z.core.$strip>>;
4090
4509
  lastVerification: z.ZodNullable<z.ZodObject<{
4091
4510
  result: z.ZodEnum<{
4092
- FAILED: "FAILED";
4093
4511
  SUCCESS: "SUCCESS";
4512
+ FAILED: "FAILED";
4094
4513
  }>;
4095
4514
  message: z.ZodNullable<z.ZodString>;
4096
4515
  checkedAt: z.ZodString;
@@ -4191,8 +4610,8 @@ export declare const paymentProviderSchema: z.ZodObject<{
4191
4610
  }, z.core.$strip>>;
4192
4611
  lastVerification: z.ZodNullable<z.ZodObject<{
4193
4612
  result: z.ZodEnum<{
4194
- FAILED: "FAILED";
4195
4613
  SUCCESS: "SUCCESS";
4614
+ FAILED: "FAILED";
4196
4615
  }>;
4197
4616
  message: z.ZodNullable<z.ZodString>;
4198
4617
  checkedAt: z.ZodString;
@@ -4228,8 +4647,8 @@ export declare const paymentProviderSchema: z.ZodObject<{
4228
4647
  }, z.core.$strip>>;
4229
4648
  lastVerification: z.ZodNullable<z.ZodObject<{
4230
4649
  result: z.ZodEnum<{
4231
- FAILED: "FAILED";
4232
4650
  SUCCESS: "SUCCESS";
4651
+ FAILED: "FAILED";
4233
4652
  }>;
4234
4653
  message: z.ZodNullable<z.ZodString>;
4235
4654
  checkedAt: z.ZodString;
@@ -4264,8 +4683,8 @@ export declare const paymentProviderSchema: z.ZodObject<{
4264
4683
  }, z.core.$strip>>;
4265
4684
  lastVerification: z.ZodNullable<z.ZodObject<{
4266
4685
  result: z.ZodEnum<{
4267
- FAILED: "FAILED";
4268
4686
  SUCCESS: "SUCCESS";
4687
+ FAILED: "FAILED";
4269
4688
  }>;
4270
4689
  message: z.ZodNullable<z.ZodString>;
4271
4690
  checkedAt: z.ZodString;
@@ -4340,8 +4759,8 @@ export declare const paymentSettingsSchema: z.ZodObject<{
4340
4759
  }, z.core.$strip>>;
4341
4760
  lastVerification: z.ZodNullable<z.ZodObject<{
4342
4761
  result: z.ZodEnum<{
4343
- FAILED: "FAILED";
4344
4762
  SUCCESS: "SUCCESS";
4763
+ FAILED: "FAILED";
4345
4764
  }>;
4346
4765
  message: z.ZodNullable<z.ZodString>;
4347
4766
  checkedAt: z.ZodString;
@@ -4377,8 +4796,8 @@ export declare const paymentSettingsSchema: z.ZodObject<{
4377
4796
  }, z.core.$strip>>;
4378
4797
  lastVerification: z.ZodNullable<z.ZodObject<{
4379
4798
  result: z.ZodEnum<{
4380
- FAILED: "FAILED";
4381
4799
  SUCCESS: "SUCCESS";
4800
+ FAILED: "FAILED";
4382
4801
  }>;
4383
4802
  message: z.ZodNullable<z.ZodString>;
4384
4803
  checkedAt: z.ZodString;
@@ -4413,8 +4832,8 @@ export declare const paymentSettingsSchema: z.ZodObject<{
4413
4832
  }, z.core.$strip>>;
4414
4833
  lastVerification: z.ZodNullable<z.ZodObject<{
4415
4834
  result: z.ZodEnum<{
4416
- FAILED: "FAILED";
4417
4835
  SUCCESS: "SUCCESS";
4836
+ FAILED: "FAILED";
4418
4837
  }>;
4419
4838
  message: z.ZodNullable<z.ZodString>;
4420
4839
  checkedAt: z.ZodString;
@@ -4461,8 +4880,8 @@ export declare const paymentProviderVerificationSchema: z.ZodObject<{
4461
4880
  LIVE: "LIVE";
4462
4881
  }>;
4463
4882
  result: z.ZodEnum<{
4464
- FAILED: "FAILED";
4465
4883
  SUCCESS: "SUCCESS";
4884
+ FAILED: "FAILED";
4466
4885
  }>;
4467
4886
  message: z.ZodNullable<z.ZodString>;
4468
4887
  checkedAt: z.ZodString;
@@ -4592,8 +5011,8 @@ export type SalesReport = z.infer<typeof salesReportSchema>;
4592
5011
  * - `FAILED`: 승인되지 않고 끝났다(거절·준비 장애·구매자 취소·만료)
4593
5012
  */
4594
5013
  export declare const paymentRecordStatusSchema: z.ZodEnum<{
4595
- FAILED: "FAILED";
4596
5014
  PENDING: "PENDING";
5015
+ FAILED: "FAILED";
4597
5016
  APPROVED: "APPROVED";
4598
5017
  PARTIALLY_REFUNDED: "PARTIALLY_REFUNDED";
4599
5018
  REFUNDED: "REFUNDED";
@@ -4640,8 +5059,8 @@ export declare const paymentRecordSchema: z.ZodObject<{
4640
5059
  orderName: z.ZodString;
4641
5060
  customerName: z.ZodString;
4642
5061
  status: z.ZodEnum<{
4643
- FAILED: "FAILED";
4644
5062
  PENDING: "PENDING";
5063
+ FAILED: "FAILED";
4645
5064
  APPROVED: "APPROVED";
4646
5065
  PARTIALLY_REFUNDED: "PARTIALLY_REFUNDED";
4647
5066
  REFUNDED: "REFUNDED";
@@ -4686,8 +5105,8 @@ export declare const paymentRecordPageSchema: z.ZodObject<{
4686
5105
  orderName: z.ZodString;
4687
5106
  customerName: z.ZodString;
4688
5107
  status: z.ZodEnum<{
4689
- FAILED: "FAILED";
4690
5108
  PENDING: "PENDING";
5109
+ FAILED: "FAILED";
4691
5110
  APPROVED: "APPROVED";
4692
5111
  PARTIALLY_REFUNDED: "PARTIALLY_REFUNDED";
4693
5112
  REFUNDED: "REFUNDED";
@@ -4775,8 +5194,8 @@ export declare const paymentRecordDetailSchema: z.ZodObject<{
4775
5194
  orderName: z.ZodString;
4776
5195
  customerName: z.ZodString;
4777
5196
  status: z.ZodEnum<{
4778
- FAILED: "FAILED";
4779
5197
  PENDING: "PENDING";
5198
+ FAILED: "FAILED";
4780
5199
  APPROVED: "APPROVED";
4781
5200
  PARTIALLY_REFUNDED: "PARTIALLY_REFUNDED";
4782
5201
  REFUNDED: "REFUNDED";
@@ -4909,12 +5328,6 @@ export declare const productStatusSchema: z.ZodEnum<{
4909
5328
  CLOSED: "CLOSED";
4910
5329
  }>;
4911
5330
  export type ProductStatus = z.infer<typeof productStatusSchema>;
4912
- export declare const deliveryTypeSchema: z.ZodEnum<{
4913
- FREE: "FREE";
4914
- PAID: "PAID";
4915
- CONDITIONAL_FREE: "CONDITIONAL_FREE";
4916
- }>;
4917
- export type DeliveryType = z.infer<typeof deliveryTypeSchema>;
4918
5331
  export declare const productSummarySchema: z.ZodObject<{
4919
5332
  productId: z.ZodString;
4920
5333
  name: z.ZodString;
@@ -4930,7 +5343,9 @@ export declare const productSummarySchema: z.ZodObject<{
4930
5343
  categoryId: z.ZodNullable<z.ZodString>;
4931
5344
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
4932
5345
  hasOptions: z.ZodBoolean;
4933
- fulfillmentType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
5346
+ fulfillment: z.ZodObject<{
5347
+ type: z.ZodString;
5348
+ }, z.core.$strip>;
4934
5349
  updatedAt: z.ZodString;
4935
5350
  }, z.core.$strip>;
4936
5351
  export type ProductSummary = z.infer<typeof productSummarySchema>;
@@ -4999,25 +5414,6 @@ export declare const productSchema: z.ZodObject<{
4999
5414
  thumbnailUrl: z.ZodOptional<z.ZodURL>;
5000
5415
  hasOptions: z.ZodBoolean;
5001
5416
  updatedAt: z.ZodString;
5002
- discount: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5003
- productId: z.ZodString;
5004
- discountType: z.ZodEnum<{
5005
- RATE: "RATE";
5006
- AMOUNT: "AMOUNT";
5007
- }>;
5008
- discountValue: z.ZodNumber;
5009
- discountedPrice: z.ZodNumber;
5010
- startAt: z.ZodNullable<z.ZodString>;
5011
- endAt: z.ZodNullable<z.ZodString>;
5012
- }, z.core.$strip>>>;
5013
- createdAt: z.ZodOptional<z.ZodString>;
5014
- fulfillmentType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
5015
- fulfillmentMode: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
5016
- stockTracking: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
5017
- downloadLimit: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
5018
- downloadDays: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
5019
- withdrawalRestricted: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
5020
- pickupAddressId: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
5021
5417
  description: z.ZodOptional<z.ZodString>;
5022
5418
  descriptionJson: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5023
5419
  originalPrice: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -5049,31 +5445,82 @@ export declare const productSchema: z.ZodObject<{
5049
5445
  sellerCode: z.ZodNullable<z.ZodString>;
5050
5446
  usable: z.ZodBoolean;
5051
5447
  }, z.core.$strip>>;
5052
- deliveryType: z.ZodOptional<z.ZodEnum<{
5053
- FREE: "FREE";
5054
- PAID: "PAID";
5055
- CONDITIONAL_FREE: "CONDITIONAL_FREE";
5056
- }>>;
5057
- deliveryFee: z.ZodOptional<z.ZodNumber>;
5058
- conditionalFreeAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5059
- returnFee: z.ZodOptional<z.ZodNumber>;
5060
- exchangeFee: z.ZodOptional<z.ZodNumber>;
5061
- refundPolicy: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5448
+ fulfillment: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
5449
+ type: z.ZodLiteral<"SHIPPING">;
5450
+ shipping: z.ZodObject<{
5451
+ deliveryType: z.ZodEnum<{
5452
+ FREE: "FREE";
5453
+ PAID: "PAID";
5454
+ CONDITIONAL_FREE: "CONDITIONAL_FREE";
5455
+ }>;
5456
+ deliveryFee: z.ZodNumber;
5457
+ conditionalFreeAmount: z.ZodNullable<z.ZodNumber>;
5458
+ shippingAddressId: z.ZodNullable<z.ZodString>;
5459
+ returnAddressId: z.ZodNullable<z.ZodString>;
5460
+ }, z.core.$strip>;
5461
+ }, z.core.$strip>, z.ZodObject<{
5462
+ type: z.ZodLiteral<"DOWNLOAD">;
5463
+ download: z.ZodObject<{
5464
+ limit: z.ZodNumber;
5465
+ days: z.ZodNumber;
5466
+ stockTracking: z.ZodBoolean;
5467
+ withdrawalRestricted: z.ZodBoolean;
5468
+ }, z.core.$strip>;
5469
+ }, z.core.$strip>, z.ZodObject<{
5470
+ type: z.ZodLiteral<"CODE">;
5471
+ code: z.ZodObject<{
5472
+ mode: z.ZodEnum<{
5473
+ AUTO: "AUTO";
5474
+ MANUAL: "MANUAL";
5475
+ }>;
5476
+ withdrawalRestricted: z.ZodBoolean;
5477
+ }, z.core.$strip>;
5478
+ }, z.core.$strip>, z.ZodObject<{
5479
+ type: z.ZodLiteral<"SERVICE">;
5480
+ service: z.ZodObject<{
5481
+ mode: z.ZodEnum<{
5482
+ AUTO: "AUTO";
5483
+ MANUAL: "MANUAL";
5484
+ }>;
5485
+ }, z.core.$strip>;
5486
+ }, z.core.$strip>, z.ZodObject<{
5487
+ type: z.ZodLiteral<"PICKUP">;
5488
+ pickup: z.ZodObject<{
5489
+ addressId: z.ZodNullable<z.ZodString>;
5490
+ }, z.core.$strip>;
5491
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
5492
+ type: z.ZodString;
5493
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
5494
+ [x: string]: unknown;
5495
+ type: string;
5496
+ }>>]>;
5497
+ fulfillmentTypeLocked: z.ZodBoolean;
5498
+ refundPolicy: z.ZodNullable<z.ZodObject<{
5062
5499
  preShipmentDeliveryFeeRefund: z.ZodOptional<z.ZodBoolean>;
5063
5500
  returnDeliveryFee: z.ZodOptional<z.ZodNumber>;
5064
5501
  exchangeDeliveryFee: z.ZodOptional<z.ZodNumber>;
5065
5502
  sellerFaultFreeShipping: z.ZodOptional<z.ZodBoolean>;
5066
5503
  conditionalFreeShortfallCharge: z.ZodOptional<z.ZodBoolean>;
5067
- }, z.core.$strict>>>;
5068
- shippingAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5069
- returnAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5070
- }, z.core.$strip>;
5071
- export type Product = z.infer<typeof productSchema>;
5072
- /** 상품 하나에 등록할 수 있는 이미지 최대 장수 — 첫 장이 대표(썸네일)다 */
5073
- export declare const MAX_PRODUCT_IMAGES = 10;
5074
- /**
5075
- * 상품 이미지 주소의 와이어 형식 — URL이고 2048자 이하다.
5076
- *
5504
+ }, z.core.$strict>>;
5505
+ discount: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5506
+ productId: z.ZodString;
5507
+ discountType: z.ZodEnum<{
5508
+ RATE: "RATE";
5509
+ AMOUNT: "AMOUNT";
5510
+ }>;
5511
+ discountValue: z.ZodNumber;
5512
+ discountedPrice: z.ZodNumber;
5513
+ startAt: z.ZodNullable<z.ZodString>;
5514
+ endAt: z.ZodNullable<z.ZodString>;
5515
+ }, z.core.$strip>>>;
5516
+ createdAt: z.ZodOptional<z.ZodString>;
5517
+ }, z.core.$strip>;
5518
+ export type Product = z.infer<typeof productSchema>;
5519
+ /** 상품 하나에 등록할 수 있는 이미지 최대 장수 — 첫 장이 대표(썸네일)다 */
5520
+ export declare const MAX_PRODUCT_IMAGES = 10;
5521
+ /**
5522
+ * 상품 이미지 주소의 와이어 형식 — URL이고 2048자 이하다.
5523
+ *
5077
5524
  * https·확장자 규칙은 여기서 강제하지 않고 `productImageRejection`이 판정한다. 서버가
5078
5525
  * **새로 추가된 주소에만** 그 규칙을 적용해야 하기 때문이다(규칙이 생기기 전에 저장된
5079
5526
  * 주소 하나로 상품 수정 전체가 막히면 셀러가 빠져나갈 길이 없다).
@@ -5201,22 +5648,70 @@ export declare const variantStockSchema: z.ZodObject<{
5201
5648
  }, z.core.$strip>;
5202
5649
  export type VariantStock = z.infer<typeof variantStockSchema>;
5203
5650
  export declare const productCreateRequestSchema: z.ZodObject<{
5204
- fulfillmentType: z.ZodOptional<z.ZodEnum<{
5205
- SHIPPING: "SHIPPING";
5206
- DOWNLOAD: "DOWNLOAD";
5207
- CODE: "CODE";
5208
- SERVICE: "SERVICE";
5209
- PICKUP: "PICKUP";
5210
- }>>;
5211
- fulfillmentMode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
5212
- AUTO: "AUTO";
5213
- MANUAL: "MANUAL";
5214
- }>>>;
5215
- stockTracking: z.ZodOptional<z.ZodBoolean>;
5216
- downloadLimit: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5217
- downloadDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5218
- withdrawalRestricted: z.ZodOptional<z.ZodBoolean>;
5219
- pickupAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5651
+ fulfillment: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
5652
+ type: z.ZodLiteral<"SHIPPING">;
5653
+ shipping: z.ZodOptional<z.ZodObject<{
5654
+ deliveryType: z.ZodDefault<z.ZodEnum<{
5655
+ FREE: "FREE";
5656
+ PAID: "PAID";
5657
+ CONDITIONAL_FREE: "CONDITIONAL_FREE";
5658
+ }>>;
5659
+ deliveryFee: z.ZodOptional<z.ZodNumber>;
5660
+ conditionalFreeAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5661
+ shippingAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5662
+ returnAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5663
+ }, z.core.$strict>>;
5664
+ }, z.core.$strict>, z.ZodObject<{
5665
+ type: z.ZodLiteral<"DOWNLOAD">;
5666
+ download: z.ZodDefault<z.ZodObject<{
5667
+ limit: z.ZodDefault<z.ZodNumber>;
5668
+ days: z.ZodDefault<z.ZodNumber>;
5669
+ stockTracking: z.ZodDefault<z.ZodBoolean>;
5670
+ withdrawalRestricted: z.ZodDefault<z.ZodBoolean>;
5671
+ }, z.core.$strict>>;
5672
+ }, z.core.$strict>, z.ZodObject<{
5673
+ type: z.ZodLiteral<"CODE">;
5674
+ code: z.ZodDefault<z.ZodObject<{
5675
+ mode: z.ZodDefault<z.ZodEnum<{
5676
+ AUTO: "AUTO";
5677
+ MANUAL: "MANUAL";
5678
+ }>>;
5679
+ withdrawalRestricted: z.ZodDefault<z.ZodBoolean>;
5680
+ }, z.core.$strict>>;
5681
+ }, z.core.$strict>, z.ZodObject<{
5682
+ type: z.ZodLiteral<"SERVICE">;
5683
+ service: z.ZodDefault<z.ZodObject<{
5684
+ mode: z.ZodDefault<z.ZodEnum<{
5685
+ AUTO: "AUTO";
5686
+ MANUAL: "MANUAL";
5687
+ }>>;
5688
+ }, z.core.$strict>>;
5689
+ }, z.core.$strict>, z.ZodObject<{
5690
+ type: z.ZodLiteral<"PICKUP">;
5691
+ pickup: z.ZodDefault<z.ZodObject<{
5692
+ addressId: z.ZodOptional<z.ZodString>;
5693
+ }, z.core.$strict>>;
5694
+ }, z.core.$strict>], "type">>;
5695
+ optionGroups: z.ZodDefault<z.ZodArray<z.ZodObject<{
5696
+ groupId: z.ZodOptional<z.ZodString>;
5697
+ name: z.ZodString;
5698
+ values: z.ZodArray<z.ZodObject<{
5699
+ valueId: z.ZodOptional<z.ZodString>;
5700
+ name: z.ZodString;
5701
+ }, z.core.$strip>>;
5702
+ }, z.core.$strip>>>;
5703
+ variants: z.ZodArray<z.ZodObject<{
5704
+ variantId: z.ZodOptional<z.ZodString>;
5705
+ valueNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
5706
+ additionalPrice: z.ZodDefault<z.ZodNumber>;
5707
+ stockQuantity: z.ZodOptional<z.ZodNumber>;
5708
+ sku: z.ZodOptional<z.ZodString>;
5709
+ barcode: z.ZodOptional<z.ZodString>;
5710
+ costPrice: z.ZodOptional<z.ZodNumber>;
5711
+ weightGram: z.ZodOptional<z.ZodNumber>;
5712
+ sellerCode: z.ZodOptional<z.ZodString>;
5713
+ usable: z.ZodDefault<z.ZodBoolean>;
5714
+ }, z.core.$strip>>;
5220
5715
  name: z.ZodString;
5221
5716
  categoryId: z.ZodString;
5222
5717
  salePrice: z.ZodNumber;
@@ -5228,15 +5723,6 @@ export declare const productCreateRequestSchema: z.ZodObject<{
5228
5723
  attributeId: z.ZodString;
5229
5724
  value: z.ZodString;
5230
5725
  }, z.core.$strip>>>;
5231
- deliveryType: z.ZodDefault<z.ZodEnum<{
5232
- FREE: "FREE";
5233
- PAID: "PAID";
5234
- CONDITIONAL_FREE: "CONDITIONAL_FREE";
5235
- }>>;
5236
- deliveryFee: z.ZodOptional<z.ZodNumber>;
5237
- conditionalFreeAmount: z.ZodOptional<z.ZodNumber>;
5238
- returnFee: z.ZodDefault<z.ZodNumber>;
5239
- exchangeFee: z.ZodDefault<z.ZodNumber>;
5240
5726
  refundPolicy: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5241
5727
  preShipmentDeliveryFeeRefund: z.ZodOptional<z.ZodBoolean>;
5242
5728
  returnDeliveryFee: z.ZodOptional<z.ZodNumber>;
@@ -5244,8 +5730,55 @@ export declare const productCreateRequestSchema: z.ZodObject<{
5244
5730
  sellerFaultFreeShipping: z.ZodOptional<z.ZodBoolean>;
5245
5731
  conditionalFreeShortfallCharge: z.ZodOptional<z.ZodBoolean>;
5246
5732
  }, z.core.$strict>>>;
5247
- shippingAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5248
- returnAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5733
+ }, z.core.$strict>;
5734
+ export type ProductCreateRequest = z.infer<typeof productCreateRequestSchema>;
5735
+ export type ProductCreateRequestInput = z.input<typeof productCreateRequestSchema>;
5736
+ /** 전체 수정(PUT) — 공통 필드는 등록과 같고, 이행은 생략하면 현재 값 유지, 주면 필드가 모두 필수다 */
5737
+ export declare const productReplaceRequestSchema: z.ZodObject<{
5738
+ fulfillment: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
5739
+ type: z.ZodLiteral<"SHIPPING">;
5740
+ shipping: z.ZodObject<{
5741
+ deliveryType: z.ZodEnum<{
5742
+ FREE: "FREE";
5743
+ PAID: "PAID";
5744
+ CONDITIONAL_FREE: "CONDITIONAL_FREE";
5745
+ }>;
5746
+ deliveryFee: z.ZodNumber;
5747
+ conditionalFreeAmount: z.ZodNullable<z.ZodNumber>;
5748
+ shippingAddressId: z.ZodNullable<z.ZodString>;
5749
+ returnAddressId: z.ZodNullable<z.ZodString>;
5750
+ }, z.core.$strict>;
5751
+ }, z.core.$strict>, z.ZodObject<{
5752
+ type: z.ZodLiteral<"DOWNLOAD">;
5753
+ download: z.ZodObject<{
5754
+ limit: z.ZodNumber;
5755
+ days: z.ZodNumber;
5756
+ stockTracking: z.ZodBoolean;
5757
+ withdrawalRestricted: z.ZodBoolean;
5758
+ }, z.core.$strict>;
5759
+ }, z.core.$strict>, z.ZodObject<{
5760
+ type: z.ZodLiteral<"CODE">;
5761
+ code: z.ZodObject<{
5762
+ mode: z.ZodEnum<{
5763
+ AUTO: "AUTO";
5764
+ MANUAL: "MANUAL";
5765
+ }>;
5766
+ withdrawalRestricted: z.ZodBoolean;
5767
+ }, z.core.$strict>;
5768
+ }, z.core.$strict>, z.ZodObject<{
5769
+ type: z.ZodLiteral<"SERVICE">;
5770
+ service: z.ZodObject<{
5771
+ mode: z.ZodEnum<{
5772
+ AUTO: "AUTO";
5773
+ MANUAL: "MANUAL";
5774
+ }>;
5775
+ }, z.core.$strict>;
5776
+ }, z.core.$strict>, z.ZodObject<{
5777
+ type: z.ZodLiteral<"PICKUP">;
5778
+ pickup: z.ZodObject<{
5779
+ addressId: z.ZodString;
5780
+ }, z.core.$strict>;
5781
+ }, z.core.$strict>], "type">>;
5249
5782
  optionGroups: z.ZodDefault<z.ZodArray<z.ZodObject<{
5250
5783
  groupId: z.ZodOptional<z.ZodString>;
5251
5784
  name: z.ZodString;
@@ -5266,25 +5799,28 @@ export declare const productCreateRequestSchema: z.ZodObject<{
5266
5799
  sellerCode: z.ZodOptional<z.ZodString>;
5267
5800
  usable: z.ZodDefault<z.ZodBoolean>;
5268
5801
  }, z.core.$strip>>;
5269
- }, z.core.$strip>;
5270
- export type ProductCreateRequest = z.infer<typeof productCreateRequestSchema>;
5802
+ name: z.ZodString;
5803
+ categoryId: z.ZodString;
5804
+ salePrice: z.ZodNumber;
5805
+ originalPrice: z.ZodOptional<z.ZodNumber>;
5806
+ description: z.ZodOptional<z.ZodString>;
5807
+ descriptionJson: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5808
+ images: z.ZodOptional<z.ZodArray<z.ZodURL>>;
5809
+ attributes: z.ZodOptional<z.ZodArray<z.ZodObject<{
5810
+ attributeId: z.ZodString;
5811
+ value: z.ZodString;
5812
+ }, z.core.$strip>>>;
5813
+ refundPolicy: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5814
+ preShipmentDeliveryFeeRefund: z.ZodOptional<z.ZodBoolean>;
5815
+ returnDeliveryFee: z.ZodOptional<z.ZodNumber>;
5816
+ exchangeDeliveryFee: z.ZodOptional<z.ZodNumber>;
5817
+ sellerFaultFreeShipping: z.ZodOptional<z.ZodBoolean>;
5818
+ conditionalFreeShortfallCharge: z.ZodOptional<z.ZodBoolean>;
5819
+ }, z.core.$strict>>>;
5820
+ }, z.core.$strict>;
5821
+ export type ProductReplaceRequest = z.infer<typeof productReplaceRequestSchema>;
5822
+ export type ProductReplaceRequestInput = z.input<typeof productReplaceRequestSchema>;
5271
5823
  export declare const productPatchRequestSchema: z.ZodObject<{
5272
- fulfillmentType: z.ZodOptional<z.ZodEnum<{
5273
- SHIPPING: "SHIPPING";
5274
- DOWNLOAD: "DOWNLOAD";
5275
- CODE: "CODE";
5276
- SERVICE: "SERVICE";
5277
- PICKUP: "PICKUP";
5278
- }>>;
5279
- fulfillmentMode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
5280
- AUTO: "AUTO";
5281
- MANUAL: "MANUAL";
5282
- }>>>;
5283
- stockTracking: z.ZodOptional<z.ZodBoolean>;
5284
- downloadLimit: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5285
- downloadDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
5286
- withdrawalRestricted: z.ZodOptional<z.ZodBoolean>;
5287
- pickupAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5288
5824
  name: z.ZodOptional<z.ZodString>;
5289
5825
  salePrice: z.ZodOptional<z.ZodNumber>;
5290
5826
  status: z.ZodOptional<z.ZodEnum<{
@@ -5293,10 +5829,58 @@ export declare const productPatchRequestSchema: z.ZodObject<{
5293
5829
  OUT_OF_STOCK: "OUT_OF_STOCK";
5294
5830
  CLOSED: "CLOSED";
5295
5831
  }>>;
5296
- deliveryFee: z.ZodOptional<z.ZodNumber>;
5297
- shippingAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5298
- returnAddressId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5299
- }, z.core.$strip>;
5832
+ fulfillment: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
5833
+ type: z.ZodLiteral<"SHIPPING">;
5834
+ shipping: z.ZodObject<{
5835
+ deliveryType: z.ZodEnum<{
5836
+ FREE: "FREE";
5837
+ PAID: "PAID";
5838
+ CONDITIONAL_FREE: "CONDITIONAL_FREE";
5839
+ }>;
5840
+ deliveryFee: z.ZodNumber;
5841
+ conditionalFreeAmount: z.ZodNullable<z.ZodNumber>;
5842
+ shippingAddressId: z.ZodNullable<z.ZodString>;
5843
+ returnAddressId: z.ZodNullable<z.ZodString>;
5844
+ }, z.core.$strict>;
5845
+ }, z.core.$strict>, z.ZodObject<{
5846
+ type: z.ZodLiteral<"DOWNLOAD">;
5847
+ download: z.ZodObject<{
5848
+ limit: z.ZodNumber;
5849
+ days: z.ZodNumber;
5850
+ stockTracking: z.ZodBoolean;
5851
+ withdrawalRestricted: z.ZodBoolean;
5852
+ }, z.core.$strict>;
5853
+ }, z.core.$strict>, z.ZodObject<{
5854
+ type: z.ZodLiteral<"CODE">;
5855
+ code: z.ZodObject<{
5856
+ mode: z.ZodEnum<{
5857
+ AUTO: "AUTO";
5858
+ MANUAL: "MANUAL";
5859
+ }>;
5860
+ withdrawalRestricted: z.ZodBoolean;
5861
+ }, z.core.$strict>;
5862
+ }, z.core.$strict>, z.ZodObject<{
5863
+ type: z.ZodLiteral<"SERVICE">;
5864
+ service: z.ZodObject<{
5865
+ mode: z.ZodEnum<{
5866
+ AUTO: "AUTO";
5867
+ MANUAL: "MANUAL";
5868
+ }>;
5869
+ }, z.core.$strict>;
5870
+ }, z.core.$strict>, z.ZodObject<{
5871
+ type: z.ZodLiteral<"PICKUP">;
5872
+ pickup: z.ZodObject<{
5873
+ addressId: z.ZodString;
5874
+ }, z.core.$strict>;
5875
+ }, z.core.$strict>], "type">>;
5876
+ refundPolicy: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5877
+ preShipmentDeliveryFeeRefund: z.ZodOptional<z.ZodBoolean>;
5878
+ returnDeliveryFee: z.ZodOptional<z.ZodNumber>;
5879
+ exchangeDeliveryFee: z.ZodOptional<z.ZodNumber>;
5880
+ sellerFaultFreeShipping: z.ZodOptional<z.ZodBoolean>;
5881
+ conditionalFreeShortfallCharge: z.ZodOptional<z.ZodBoolean>;
5882
+ }, z.core.$strict>>>;
5883
+ }, z.core.$strict>;
5300
5884
  export type ProductPatchRequest = z.infer<typeof productPatchRequestSchema>;
5301
5885
  export declare const productSortSchema: z.ZodEnum<{
5302
5886
  "createdAt.desc": "createdAt.desc";
@@ -5485,8 +6069,8 @@ export declare const invitationSchema: z.ZodObject<{
5485
6069
  STAFF: "STAFF";
5486
6070
  }>;
5487
6071
  status: z.ZodEnum<{
5488
- PENDING: "PENDING";
5489
6072
  EXPIRED: "EXPIRED";
6073
+ PENDING: "PENDING";
5490
6074
  ACCEPTED: "ACCEPTED";
5491
6075
  CANCELED: "CANCELED";
5492
6076
  }>;
@@ -5525,8 +6109,8 @@ export type UpdateMemberRoleRequest = z.infer<typeof updateMemberRoleRequestSche
5525
6109
  /** `GET /v1/store/invitations` 쿼리 — OpenAPI 문서용 형태 */
5526
6110
  export declare const invitationListQuerySchema: z.ZodObject<{
5527
6111
  status: z.ZodOptional<z.ZodEnum<{
5528
- PENDING: "PENDING";
5529
6112
  EXPIRED: "EXPIRED";
6113
+ PENDING: "PENDING";
5530
6114
  ACCEPTED: "ACCEPTED";
5531
6115
  CANCELED: "CANCELED";
5532
6116
  }>>;
@@ -5590,6 +6174,331 @@ export declare const sellerAddressRequestSchema: z.ZodObject<{
5590
6174
  }, z.core.$strip>;
5591
6175
  export type SellerAddressRequest = z.infer<typeof sellerAddressRequestSchema>;
5592
6176
  //#endregion
6177
+ //#region src/schemas/storefront-hosting.d.ts
6178
+ /**
6179
+ * 스토어프론트 호스팅 (이슈 #53, M1: 템플릿 발행) — 관리 API `/v1/storefront/**`의 계약이다.
6180
+ *
6181
+ * 셀러는 템플릿을 골라 사이트를 만들고 `{slug}.{호스팅 도메인}` 주소를 받는다. 발행은 버전 단위이고,
6182
+ * 되돌리기는 이전 버전을 다시 발행하는 것이다(재빌드 없음). 상태의 원천은 api DB이고 Cloudflare 쪽 반영
6183
+ * (라우팅 표·사이트 Worker)은 커밋 뒤 비동기다 — 반영 상태는 `provisioning`으로 본다.
6184
+ *
6185
+ * 스코프는 조회 `storefront:r`, 쓰기 `storefront:rw`(역할 OWNER·ADMIN)다. 에이전트(MCP)의 발행·되돌리기·템플릿 변경·
6186
+ * 공개 전환·슬러그 변경·호스팅 끄기는 승인(`APPROVAL_REQUIRED`)이다 — 구매자가 보는 화면을 바꾸는 쓰기다.
6187
+ *
6188
+ * 오류 코드:
6189
+ * - 403 `STOREFRONT_HOSTING_DISABLED` — 플랫폼 스위치가 꺼져 새 사이트를 만들 수 없다
6190
+ * - 404 `STOREFRONT_SITE_NOT_FOUND` · `STOREFRONT_TEMPLATE_NOT_FOUND` · `STOREFRONT_VERSION_NOT_FOUND`
6191
+ * - 409 `STOREFRONT_SITE_EXISTS` — 이미 사이트가 있다(스토어당 1개)
6192
+ * - 409 `STOREFRONT_SLUG_TAKEN` — 다른 사이트가 쓰거나 보류 중인 슬러그다
6193
+ * - 409 `STOREFRONT_SLUG_CHANGE_LIMIT` — 슬러그는 스토어당 30일에 3번까지 바꾼다
6194
+ * - 409 `STOREFRONT_SITE_CREATE_LIMIT` — 사이트는 스토어당 30일에 3번까지 만든다
6195
+ * - 409 `STOREFRONT_SITE_CHANGED` — 읽은 상태(`expected*`)와 현재 상태가 다르다. 다시 읽고 시도한다
6196
+ * - 409 `STOREFRONT_SITE_NOT_ACTIVE` — 정지(`SUSPENDED`)된 사이트는 바꾸거나 끌 수 없다
6197
+ * - 409 `STOREFRONT_VERSION_NOT_READY` — 빌드가 끝나지 않았거나 실패한 버전은 발행할 수 없다
6198
+ * - 409 `STOREFRONT_NO_ROLLBACK_TARGET` — 되돌릴 이전 발행 버전이 없다
6199
+ * - 400 `STOREFRONT_SLUG_CONFIRM_MISMATCH` — 호스팅 끄기 확인 입력이 현재 슬러그와 다르다
6200
+ * - 503 `STOREFRONT_PREVIEW_NOT_CONFIGURED` — 미리보기 서명 키가 설정되지 않았다
6201
+ */
6202
+ /**
6203
+ * 슬러그 형식 — 스토어 코드와 같은 DNS 라벨 규칙(소문자·숫자·하이픈 3~30자, 하이픈으로 시작·끝 불가)에
6204
+ * 연속 하이픈 금지를 더한다. `--`는 버전 미리보기 주소(`v3--{slug}`)와 punycode(`xn--`)가 쓰는 구분자다.
6205
+ */
6206
+ export declare const STOREFRONT_SLUG_PATTERN: RegExp;
6207
+ /** 호스팅 도메인에서 플랫폼이 쓰거나 쓸 이름 — 스토어 코드 예약어에 호스팅 전용 이름을 더한다 */
6208
+ export declare const RESERVED_STOREFRONT_SLUGS: readonly string[];
6209
+ export declare function isReservedStorefrontSlug(slug: string): boolean;
6210
+ export declare const storefrontSlugSchema: z.ZodString;
6211
+ /** 바꾼 슬러그를 다른 사이트가 가져가지 못하게 막는 기간(일). 보류 동안 옛 주소는 새 주소로 301한다 */
6212
+ export declare const STOREFRONT_SLUG_HOLD_DAYS = 90;
6213
+ /** 슬러그 변경 한도 — 이 기간(일) 안에 */
6214
+ export declare const STOREFRONT_SLUG_CHANGE_WINDOW_DAYS = 30;
6215
+ /** 슬러그 변경 한도 — 횟수(스토어 단위. 끄고 다시 만들어도 이어서 센다) */
6216
+ export declare const STOREFRONT_SLUG_CHANGE_LIMIT = 3;
6217
+ /** 사이트 만들기 한도 — 같은 창(30일) 안의 횟수(스토어 단위). 끄고 만들기를 되풀이해 이름을 묶어 두지 못하게 한다 */
6218
+ export declare const STOREFRONT_SITE_CREATE_LIMIT = 3;
6219
+ export declare const storefrontTemplateSchema: z.ZodObject<{
6220
+ templateId: z.ZodString;
6221
+ name: z.ZodString;
6222
+ industry: z.ZodString;
6223
+ description: z.ZodString;
6224
+ thumbnailUrl: z.ZodNullable<z.ZodString>;
6225
+ version: z.ZodString;
6226
+ isDefault: z.ZodBoolean;
6227
+ }, z.core.$strip>;
6228
+ export type StorefrontTemplate = z.infer<typeof storefrontTemplateSchema>;
6229
+ /**
6230
+ * 버전 상태 — M1은 템플릿 빌드 산출물을 그대로 쓰므로 만들 때 곧바로 `READY`다. `BUILDING`·`FAILED`는
6231
+ * 셀러 편집 빌드(M2)가 쓴다. 발행 여부는 상태가 아니라 사이트의 발행 포인터가 원천이다(`published`).
6232
+ */
6233
+ export declare const storefrontVersionStatusSchema: z.ZodEnum<{
6234
+ FAILED: "FAILED";
6235
+ BUILDING: "BUILDING";
6236
+ READY: "READY";
6237
+ }>;
6238
+ export type StorefrontVersionStatus = z.infer<typeof storefrontVersionStatusSchema>;
6239
+ export declare const storefrontVersionSchema: z.ZodObject<{
6240
+ versionId: z.ZodString;
6241
+ number: z.ZodNumber;
6242
+ templateId: z.ZodString;
6243
+ templateVersion: z.ZodString;
6244
+ status: z.ZodEnum<{
6245
+ FAILED: "FAILED";
6246
+ BUILDING: "BUILDING";
6247
+ READY: "READY";
6248
+ }>;
6249
+ published: z.ZodBoolean;
6250
+ publishedAt: z.ZodNullable<z.ZodString>;
6251
+ message: z.ZodNullable<z.ZodString>;
6252
+ createdByType: z.ZodString;
6253
+ createdAt: z.ZodString;
6254
+ }, z.core.$strip>;
6255
+ export type StorefrontVersion = z.infer<typeof storefrontVersionSchema>;
6256
+ export declare const storefrontSiteStatusSchema: z.ZodEnum<{
6257
+ ACTIVE: "ACTIVE";
6258
+ SUSPENDED: "SUSPENDED";
6259
+ CLOSED: "CLOSED";
6260
+ }>;
6261
+ export type StorefrontSiteStatus = z.infer<typeof storefrontSiteStatusSchema>;
6262
+ export declare const storefrontVisibilitySchema: z.ZodEnum<{
6263
+ COMING_SOON: "COMING_SOON";
6264
+ PUBLIC: "PUBLIC";
6265
+ }>;
6266
+ export type StorefrontVisibility = z.infer<typeof storefrontVisibilitySchema>;
6267
+ export declare const storefrontSourceModeSchema: z.ZodEnum<{
6268
+ CUSTOM: "CUSTOM";
6269
+ MANAGED: "MANAGED";
6270
+ }>;
6271
+ export declare const storefrontDomainSchema: z.ZodObject<{
6272
+ hostname: z.ZodString;
6273
+ kind: z.ZodEnum<{
6274
+ PLATFORM: "PLATFORM";
6275
+ CUSTOM: "CUSTOM";
6276
+ }>;
6277
+ status: z.ZodEnum<{
6278
+ ACTIVE: "ACTIVE";
6279
+ HELD: "HELD";
6280
+ }>;
6281
+ isPrimary: z.ZodBoolean;
6282
+ holdUntil: z.ZodNullable<z.ZodString>;
6283
+ }, z.core.$strip>;
6284
+ export type StorefrontDomain = z.infer<typeof storefrontDomainSchema>;
6285
+ /**
6286
+ * 호스팅 반영 상태 — 발행·슬러그·공개 전환은 DB에 먼저 확정되고 Cloudflare 반영은 커밋 뒤에 한다.
6287
+ * `PENDING`이면 반영 중이거나 재시도 대기다(잡이 다시 한다). 반영 뒤에도 라우팅 전파에 최대 1분이 걸린다.
6288
+ */
6289
+ export declare const storefrontProvisioningSchema: z.ZodObject<{
6290
+ status: z.ZodEnum<{
6291
+ PENDING: "PENDING";
6292
+ FAILED: "FAILED";
6293
+ SYNCED: "SYNCED";
6294
+ }>;
6295
+ lastErrorCode: z.ZodNullable<z.ZodString>;
6296
+ syncedAt: z.ZodNullable<z.ZodString>;
6297
+ }, z.core.$strip>;
6298
+ export type StorefrontProvisioning = z.infer<typeof storefrontProvisioningSchema>;
6299
+ export declare const storefrontSiteSchema: z.ZodObject<{
6300
+ siteId: z.ZodString;
6301
+ slug: z.ZodString;
6302
+ hostname: z.ZodString;
6303
+ url: z.ZodString;
6304
+ domains: z.ZodArray<z.ZodObject<{
6305
+ hostname: z.ZodString;
6306
+ kind: z.ZodEnum<{
6307
+ PLATFORM: "PLATFORM";
6308
+ CUSTOM: "CUSTOM";
6309
+ }>;
6310
+ status: z.ZodEnum<{
6311
+ ACTIVE: "ACTIVE";
6312
+ HELD: "HELD";
6313
+ }>;
6314
+ isPrimary: z.ZodBoolean;
6315
+ holdUntil: z.ZodNullable<z.ZodString>;
6316
+ }, z.core.$strip>>;
6317
+ templateId: z.ZodString;
6318
+ sourceMode: z.ZodEnum<{
6319
+ CUSTOM: "CUSTOM";
6320
+ MANAGED: "MANAGED";
6321
+ }>;
6322
+ status: z.ZodEnum<{
6323
+ ACTIVE: "ACTIVE";
6324
+ SUSPENDED: "SUSPENDED";
6325
+ CLOSED: "CLOSED";
6326
+ }>;
6327
+ visibility: z.ZodEnum<{
6328
+ COMING_SOON: "COMING_SOON";
6329
+ PUBLIC: "PUBLIC";
6330
+ }>;
6331
+ publishedVersion: z.ZodNullable<z.ZodObject<{
6332
+ versionId: z.ZodString;
6333
+ number: z.ZodNumber;
6334
+ templateId: z.ZodString;
6335
+ templateVersion: z.ZodString;
6336
+ status: z.ZodEnum<{
6337
+ FAILED: "FAILED";
6338
+ BUILDING: "BUILDING";
6339
+ READY: "READY";
6340
+ }>;
6341
+ published: z.ZodBoolean;
6342
+ publishedAt: z.ZodNullable<z.ZodString>;
6343
+ message: z.ZodNullable<z.ZodString>;
6344
+ createdByType: z.ZodString;
6345
+ createdAt: z.ZodString;
6346
+ }, z.core.$strip>>;
6347
+ provisioning: z.ZodObject<{
6348
+ status: z.ZodEnum<{
6349
+ PENDING: "PENDING";
6350
+ FAILED: "FAILED";
6351
+ SYNCED: "SYNCED";
6352
+ }>;
6353
+ lastErrorCode: z.ZodNullable<z.ZodString>;
6354
+ syncedAt: z.ZodNullable<z.ZodString>;
6355
+ }, z.core.$strip>;
6356
+ slugChangesRemaining: z.ZodNumber;
6357
+ createdAt: z.ZodString;
6358
+ updatedAt: z.ZodString;
6359
+ }, z.core.$strip>;
6360
+ export type StorefrontSite = z.infer<typeof storefrontSiteSchema>;
6361
+ /** `GET /v1/storefront/site` — 스위치 상태와 현재 사이트(없으면 null. 끈 사이트는 싣지 않는다) */
6362
+ export declare const storefrontHostingSchema: z.ZodObject<{
6363
+ enabled: z.ZodBoolean;
6364
+ domain: z.ZodString;
6365
+ site: z.ZodNullable<z.ZodObject<{
6366
+ siteId: z.ZodString;
6367
+ slug: z.ZodString;
6368
+ hostname: z.ZodString;
6369
+ url: z.ZodString;
6370
+ domains: z.ZodArray<z.ZodObject<{
6371
+ hostname: z.ZodString;
6372
+ kind: z.ZodEnum<{
6373
+ PLATFORM: "PLATFORM";
6374
+ CUSTOM: "CUSTOM";
6375
+ }>;
6376
+ status: z.ZodEnum<{
6377
+ ACTIVE: "ACTIVE";
6378
+ HELD: "HELD";
6379
+ }>;
6380
+ isPrimary: z.ZodBoolean;
6381
+ holdUntil: z.ZodNullable<z.ZodString>;
6382
+ }, z.core.$strip>>;
6383
+ templateId: z.ZodString;
6384
+ sourceMode: z.ZodEnum<{
6385
+ CUSTOM: "CUSTOM";
6386
+ MANAGED: "MANAGED";
6387
+ }>;
6388
+ status: z.ZodEnum<{
6389
+ ACTIVE: "ACTIVE";
6390
+ SUSPENDED: "SUSPENDED";
6391
+ CLOSED: "CLOSED";
6392
+ }>;
6393
+ visibility: z.ZodEnum<{
6394
+ COMING_SOON: "COMING_SOON";
6395
+ PUBLIC: "PUBLIC";
6396
+ }>;
6397
+ publishedVersion: z.ZodNullable<z.ZodObject<{
6398
+ versionId: z.ZodString;
6399
+ number: z.ZodNumber;
6400
+ templateId: z.ZodString;
6401
+ templateVersion: z.ZodString;
6402
+ status: z.ZodEnum<{
6403
+ FAILED: "FAILED";
6404
+ BUILDING: "BUILDING";
6405
+ READY: "READY";
6406
+ }>;
6407
+ published: z.ZodBoolean;
6408
+ publishedAt: z.ZodNullable<z.ZodString>;
6409
+ message: z.ZodNullable<z.ZodString>;
6410
+ createdByType: z.ZodString;
6411
+ createdAt: z.ZodString;
6412
+ }, z.core.$strip>>;
6413
+ provisioning: z.ZodObject<{
6414
+ status: z.ZodEnum<{
6415
+ PENDING: "PENDING";
6416
+ FAILED: "FAILED";
6417
+ SYNCED: "SYNCED";
6418
+ }>;
6419
+ lastErrorCode: z.ZodNullable<z.ZodString>;
6420
+ syncedAt: z.ZodNullable<z.ZodString>;
6421
+ }, z.core.$strip>;
6422
+ slugChangesRemaining: z.ZodNumber;
6423
+ createdAt: z.ZodString;
6424
+ updatedAt: z.ZodString;
6425
+ }, z.core.$strip>>;
6426
+ }, z.core.$strip>;
6427
+ export type StorefrontHosting = z.infer<typeof storefrontHostingSchema>;
6428
+ export declare const storefrontSlugAvailabilitySchema: z.ZodObject<{
6429
+ slug: z.ZodString;
6430
+ available: z.ZodBoolean;
6431
+ reason: z.ZodNullable<z.ZodEnum<{
6432
+ RESERVED: "RESERVED";
6433
+ INVALID: "INVALID";
6434
+ TAKEN: "TAKEN";
6435
+ CURRENT: "CURRENT";
6436
+ }>>;
6437
+ }, z.core.$strip>;
6438
+ export type StorefrontSlugAvailability = z.infer<typeof storefrontSlugAvailabilitySchema>;
6439
+ export declare const createStorefrontSiteRequestSchema: z.ZodObject<{
6440
+ templateId: z.ZodString;
6441
+ slug: z.ZodOptional<z.ZodString>;
6442
+ }, z.core.$strip>;
6443
+ export type CreateStorefrontSiteRequest = z.infer<typeof createStorefrontSiteRequestSchema>;
6444
+ export declare const changeStorefrontTemplateRequestSchema: z.ZodObject<{
6445
+ templateId: z.ZodString;
6446
+ publish: z.ZodOptional<z.ZodBoolean>;
6447
+ message: z.ZodOptional<z.ZodString>;
6448
+ }, z.core.$strip>;
6449
+ export type ChangeStorefrontTemplateRequest = z.infer<typeof changeStorefrontTemplateRequestSchema>;
6450
+ /**
6451
+ * 발행·되돌리기 — 발행은 사이트의 발행 포인터를 바꾸는 조건부 쓰기다. `expectedPublishedVersionId`를 주면
6452
+ * 지금 발행 버전이 그 값일 때만 바꾼다(화면을 본 뒤 다른 사람이 바꿨으면 409 `STOREFRONT_SITE_CHANGED`).
6453
+ * 이미 그 버전이 발행돼 있으면 아무것도 바꾸지 않고 200이다(같은 요청의 재실행이 안전하다).
6454
+ */
6455
+ export declare const publishStorefrontVersionRequestSchema: z.ZodObject<{
6456
+ expectedPublishedVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
6457
+ }, z.core.$strip>;
6458
+ export type PublishStorefrontVersionRequest = z.infer<typeof publishStorefrontVersionRequestSchema>;
6459
+ export declare const rollbackStorefrontRequestSchema: z.ZodObject<{
6460
+ versionId: z.ZodOptional<z.ZodString>;
6461
+ expectedPublishedVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
6462
+ }, z.core.$strip>;
6463
+ export type RollbackStorefrontRequest = z.infer<typeof rollbackStorefrontRequestSchema>;
6464
+ export declare const changeStorefrontSlugRequestSchema: z.ZodObject<{
6465
+ slug: z.ZodString;
6466
+ }, z.core.$strip>;
6467
+ export type ChangeStorefrontSlugRequest = z.infer<typeof changeStorefrontSlugRequestSchema>;
6468
+ export declare const setStorefrontVisibilityRequestSchema: z.ZodObject<{
6469
+ visibility: z.ZodEnum<{
6470
+ COMING_SOON: "COMING_SOON";
6471
+ PUBLIC: "PUBLIC";
6472
+ }>;
6473
+ expectedVisibility: z.ZodOptional<z.ZodEnum<{
6474
+ COMING_SOON: "COMING_SOON";
6475
+ PUBLIC: "PUBLIC";
6476
+ }>>;
6477
+ }, z.core.$strip>;
6478
+ export type SetStorefrontVisibilityRequest = z.infer<typeof setStorefrontVisibilityRequestSchema>;
6479
+ /** 호스팅 끄기 — 사이트를 닫고(`CLOSED`) 슬러그를 보류한다. 확인 입력은 현재 슬러그다 */
6480
+ export declare const disableStorefrontHostingRequestSchema: z.ZodObject<{
6481
+ confirmSlug: z.ZodString;
6482
+ }, z.core.$strip>;
6483
+ export type DisableStorefrontHostingRequest = z.infer<typeof disableStorefrontHostingRequestSchema>;
6484
+ export declare const storefrontSlugAvailabilityQuerySchema: z.ZodObject<{
6485
+ slug: z.ZodString;
6486
+ }, z.core.$strip>;
6487
+ /**
6488
+ * 오픈 준비 중 미리보기 링크 — 콘솔에서 로그인한 OWNER·ADMIN만 받는다(PAT·에이전트 불가). 링크는 5분 안에 한 번 열면
6489
+ * 그 브라우저에 12시간짜리 미리보기 쿠키가 생기고 오픈 준비 중인 사이트의 실제 화면을 본다. 링크를 남에게 넘기면 그 사람도
6490
+ * 볼 수 있으므로 공유하지 않는다.
6491
+ */
6492
+ export declare const createStorefrontPreviewLinkRequestSchema: z.ZodObject<{
6493
+ path: z.ZodOptional<z.ZodString>;
6494
+ }, z.core.$strip>;
6495
+ export type CreateStorefrontPreviewLinkRequest = z.infer<typeof createStorefrontPreviewLinkRequestSchema>;
6496
+ export declare const storefrontPreviewLinkSchema: z.ZodObject<{
6497
+ url: z.ZodString;
6498
+ expiresAt: z.ZodString;
6499
+ }, z.core.$strip>;
6500
+ export type StorefrontPreviewLink = z.infer<typeof storefrontPreviewLinkSchema>;
6501
+ //#endregion
5593
6502
  //#region src/schemas/upload.d.ts
5594
6503
  /**
5595
6504
  * 업로드 용도. 허용 확장자와 크기 상한이 용도별로 다르다.
@@ -5964,7 +6873,9 @@ export declare function createStoreClient(options: StoreClientOptions): {
5964
6873
  stockQuantity: number;
5965
6874
  categoryId: string | null;
5966
6875
  hasOptions: boolean;
5967
- fulfillmentType: string;
6876
+ fulfillment: {
6877
+ type: string;
6878
+ };
5968
6879
  updatedAt: string;
5969
6880
  thumbnailUrl?: string | undefined;
5970
6881
  }[];
@@ -5979,13 +6890,6 @@ export declare function createStoreClient(options: StoreClientOptions): {
5979
6890
  categoryId: string | null;
5980
6891
  hasOptions: boolean;
5981
6892
  updatedAt: string;
5982
- fulfillmentType: string;
5983
- fulfillmentMode: string | null;
5984
- stockTracking: boolean;
5985
- downloadLimit: number | null;
5986
- downloadDays: number | null;
5987
- withdrawalRestricted: boolean;
5988
- pickupAddressId: string | null;
5989
6893
  optionGroups: {
5990
6894
  groupId: string;
5991
6895
  name: string;
@@ -6009,16 +6913,49 @@ export declare function createStoreClient(options: StoreClientOptions): {
6009
6913
  sellerCode: string | null;
6010
6914
  usable: boolean;
6011
6915
  }[];
6916
+ fulfillment: UnknownFulfillment | {
6917
+ type: "SHIPPING";
6918
+ shipping: {
6919
+ deliveryType: "FREE" | "PAID" | "CONDITIONAL_FREE";
6920
+ deliveryFee: number;
6921
+ conditionalFreeAmount: number | null;
6922
+ shippingAddressId: string | null;
6923
+ returnAddressId: string | null;
6924
+ };
6925
+ } | {
6926
+ type: "DOWNLOAD";
6927
+ download: {
6928
+ limit: number;
6929
+ days: number;
6930
+ stockTracking: boolean;
6931
+ withdrawalRestricted: boolean;
6932
+ };
6933
+ } | {
6934
+ type: "CODE";
6935
+ code: {
6936
+ mode: "AUTO" | "MANUAL";
6937
+ withdrawalRestricted: boolean;
6938
+ };
6939
+ } | {
6940
+ type: "SERVICE";
6941
+ service: {
6942
+ mode: "AUTO" | "MANUAL";
6943
+ };
6944
+ } | {
6945
+ type: "PICKUP";
6946
+ pickup: {
6947
+ addressId: string | null;
6948
+ };
6949
+ };
6950
+ fulfillmentTypeLocked: boolean;
6951
+ refundPolicy: {
6952
+ preShipmentDeliveryFeeRefund?: boolean | undefined;
6953
+ returnDeliveryFee?: number | undefined;
6954
+ exchangeDeliveryFee?: number | undefined;
6955
+ sellerFaultFreeShipping?: boolean | undefined;
6956
+ conditionalFreeShortfallCharge?: boolean | undefined;
6957
+ } | null;
6012
6958
  thumbnailUrl?: string | undefined;
6013
- discount?: {
6014
- productId: string;
6015
- discountType: "RATE" | "AMOUNT";
6016
- discountValue: number;
6017
- discountedPrice: number;
6018
- startAt: string | null;
6019
- endAt: string | null;
6020
- } | null | undefined;
6021
- createdAt?: string | undefined;
6022
6959
  description?: string | undefined;
6023
6960
  descriptionJson?: string | null | undefined;
6024
6961
  originalPrice?: number | null | undefined;
@@ -6027,22 +6964,17 @@ export declare function createStoreClient(options: StoreClientOptions): {
6027
6964
  attributeId: string;
6028
6965
  value: string;
6029
6966
  }[] | undefined;
6030
- deliveryType?: "FREE" | "PAID" | "CONDITIONAL_FREE" | undefined;
6031
- deliveryFee?: number | undefined;
6032
- conditionalFreeAmount?: number | null | undefined;
6033
- returnFee?: number | undefined;
6034
- exchangeFee?: number | undefined;
6035
- refundPolicy?: {
6036
- preShipmentDeliveryFeeRefund?: boolean | undefined;
6037
- returnDeliveryFee?: number | undefined;
6038
- exchangeDeliveryFee?: number | undefined;
6039
- sellerFaultFreeShipping?: boolean | undefined;
6040
- conditionalFreeShortfallCharge?: boolean | undefined;
6967
+ discount?: {
6968
+ productId: string;
6969
+ discountType: "RATE" | "AMOUNT";
6970
+ discountValue: number;
6971
+ discountedPrice: number;
6972
+ startAt: string | null;
6973
+ endAt: string | null;
6041
6974
  } | null | undefined;
6042
- shippingAddressId?: string | null | undefined;
6043
- returnAddressId?: string | null | undefined;
6975
+ createdAt?: string | undefined;
6044
6976
  }>;
6045
- create: (body: ProductCreateRequest, idempotencyKey?: string) => Promise<{
6977
+ create: (body: ProductCreateRequestInput, idempotencyKey?: string) => Promise<{
6046
6978
  productId: string;
6047
6979
  name: string;
6048
6980
  status: "SALE" | "SUSPENDED" | "OUT_OF_STOCK" | "CLOSED";
@@ -6052,13 +6984,6 @@ export declare function createStoreClient(options: StoreClientOptions): {
6052
6984
  categoryId: string | null;
6053
6985
  hasOptions: boolean;
6054
6986
  updatedAt: string;
6055
- fulfillmentType: string;
6056
- fulfillmentMode: string | null;
6057
- stockTracking: boolean;
6058
- downloadLimit: number | null;
6059
- downloadDays: number | null;
6060
- withdrawalRestricted: boolean;
6061
- pickupAddressId: string | null;
6062
6987
  optionGroups: {
6063
6988
  groupId: string;
6064
6989
  name: string;
@@ -6082,16 +7007,49 @@ export declare function createStoreClient(options: StoreClientOptions): {
6082
7007
  sellerCode: string | null;
6083
7008
  usable: boolean;
6084
7009
  }[];
7010
+ fulfillment: UnknownFulfillment | {
7011
+ type: "SHIPPING";
7012
+ shipping: {
7013
+ deliveryType: "FREE" | "PAID" | "CONDITIONAL_FREE";
7014
+ deliveryFee: number;
7015
+ conditionalFreeAmount: number | null;
7016
+ shippingAddressId: string | null;
7017
+ returnAddressId: string | null;
7018
+ };
7019
+ } | {
7020
+ type: "DOWNLOAD";
7021
+ download: {
7022
+ limit: number;
7023
+ days: number;
7024
+ stockTracking: boolean;
7025
+ withdrawalRestricted: boolean;
7026
+ };
7027
+ } | {
7028
+ type: "CODE";
7029
+ code: {
7030
+ mode: "AUTO" | "MANUAL";
7031
+ withdrawalRestricted: boolean;
7032
+ };
7033
+ } | {
7034
+ type: "SERVICE";
7035
+ service: {
7036
+ mode: "AUTO" | "MANUAL";
7037
+ };
7038
+ } | {
7039
+ type: "PICKUP";
7040
+ pickup: {
7041
+ addressId: string | null;
7042
+ };
7043
+ };
7044
+ fulfillmentTypeLocked: boolean;
7045
+ refundPolicy: {
7046
+ preShipmentDeliveryFeeRefund?: boolean | undefined;
7047
+ returnDeliveryFee?: number | undefined;
7048
+ exchangeDeliveryFee?: number | undefined;
7049
+ sellerFaultFreeShipping?: boolean | undefined;
7050
+ conditionalFreeShortfallCharge?: boolean | undefined;
7051
+ } | null;
6085
7052
  thumbnailUrl?: string | undefined;
6086
- discount?: {
6087
- productId: string;
6088
- discountType: "RATE" | "AMOUNT";
6089
- discountValue: number;
6090
- discountedPrice: number;
6091
- startAt: string | null;
6092
- endAt: string | null;
6093
- } | null | undefined;
6094
- createdAt?: string | undefined;
6095
7053
  description?: string | undefined;
6096
7054
  descriptionJson?: string | null | undefined;
6097
7055
  originalPrice?: number | null | undefined;
@@ -6100,22 +7058,17 @@ export declare function createStoreClient(options: StoreClientOptions): {
6100
7058
  attributeId: string;
6101
7059
  value: string;
6102
7060
  }[] | undefined;
6103
- deliveryType?: "FREE" | "PAID" | "CONDITIONAL_FREE" | undefined;
6104
- deliveryFee?: number | undefined;
6105
- conditionalFreeAmount?: number | null | undefined;
6106
- returnFee?: number | undefined;
6107
- exchangeFee?: number | undefined;
6108
- refundPolicy?: {
6109
- preShipmentDeliveryFeeRefund?: boolean | undefined;
6110
- returnDeliveryFee?: number | undefined;
6111
- exchangeDeliveryFee?: number | undefined;
6112
- sellerFaultFreeShipping?: boolean | undefined;
6113
- conditionalFreeShortfallCharge?: boolean | undefined;
7061
+ discount?: {
7062
+ productId: string;
7063
+ discountType: "RATE" | "AMOUNT";
7064
+ discountValue: number;
7065
+ discountedPrice: number;
7066
+ startAt: string | null;
7067
+ endAt: string | null;
6114
7068
  } | null | undefined;
6115
- shippingAddressId?: string | null | undefined;
6116
- returnAddressId?: string | null | undefined;
7069
+ createdAt?: string | undefined;
6117
7070
  }>;
6118
- update: (productId: string, body: ProductCreateRequest) => Promise<{
7071
+ update: (productId: string, body: ProductReplaceRequestInput) => Promise<{
6119
7072
  productId: string;
6120
7073
  name: string;
6121
7074
  status: "SALE" | "SUSPENDED" | "OUT_OF_STOCK" | "CLOSED";
@@ -6125,13 +7078,6 @@ export declare function createStoreClient(options: StoreClientOptions): {
6125
7078
  categoryId: string | null;
6126
7079
  hasOptions: boolean;
6127
7080
  updatedAt: string;
6128
- fulfillmentType: string;
6129
- fulfillmentMode: string | null;
6130
- stockTracking: boolean;
6131
- downloadLimit: number | null;
6132
- downloadDays: number | null;
6133
- withdrawalRestricted: boolean;
6134
- pickupAddressId: string | null;
6135
7081
  optionGroups: {
6136
7082
  groupId: string;
6137
7083
  name: string;
@@ -6155,16 +7101,49 @@ export declare function createStoreClient(options: StoreClientOptions): {
6155
7101
  sellerCode: string | null;
6156
7102
  usable: boolean;
6157
7103
  }[];
7104
+ fulfillment: UnknownFulfillment | {
7105
+ type: "SHIPPING";
7106
+ shipping: {
7107
+ deliveryType: "FREE" | "PAID" | "CONDITIONAL_FREE";
7108
+ deliveryFee: number;
7109
+ conditionalFreeAmount: number | null;
7110
+ shippingAddressId: string | null;
7111
+ returnAddressId: string | null;
7112
+ };
7113
+ } | {
7114
+ type: "DOWNLOAD";
7115
+ download: {
7116
+ limit: number;
7117
+ days: number;
7118
+ stockTracking: boolean;
7119
+ withdrawalRestricted: boolean;
7120
+ };
7121
+ } | {
7122
+ type: "CODE";
7123
+ code: {
7124
+ mode: "AUTO" | "MANUAL";
7125
+ withdrawalRestricted: boolean;
7126
+ };
7127
+ } | {
7128
+ type: "SERVICE";
7129
+ service: {
7130
+ mode: "AUTO" | "MANUAL";
7131
+ };
7132
+ } | {
7133
+ type: "PICKUP";
7134
+ pickup: {
7135
+ addressId: string | null;
7136
+ };
7137
+ };
7138
+ fulfillmentTypeLocked: boolean;
7139
+ refundPolicy: {
7140
+ preShipmentDeliveryFeeRefund?: boolean | undefined;
7141
+ returnDeliveryFee?: number | undefined;
7142
+ exchangeDeliveryFee?: number | undefined;
7143
+ sellerFaultFreeShipping?: boolean | undefined;
7144
+ conditionalFreeShortfallCharge?: boolean | undefined;
7145
+ } | null;
6158
7146
  thumbnailUrl?: string | undefined;
6159
- discount?: {
6160
- productId: string;
6161
- discountType: "RATE" | "AMOUNT";
6162
- discountValue: number;
6163
- discountedPrice: number;
6164
- startAt: string | null;
6165
- endAt: string | null;
6166
- } | null | undefined;
6167
- createdAt?: string | undefined;
6168
7147
  description?: string | undefined;
6169
7148
  descriptionJson?: string | null | undefined;
6170
7149
  originalPrice?: number | null | undefined;
@@ -6173,20 +7152,15 @@ export declare function createStoreClient(options: StoreClientOptions): {
6173
7152
  attributeId: string;
6174
7153
  value: string;
6175
7154
  }[] | undefined;
6176
- deliveryType?: "FREE" | "PAID" | "CONDITIONAL_FREE" | undefined;
6177
- deliveryFee?: number | undefined;
6178
- conditionalFreeAmount?: number | null | undefined;
6179
- returnFee?: number | undefined;
6180
- exchangeFee?: number | undefined;
6181
- refundPolicy?: {
6182
- preShipmentDeliveryFeeRefund?: boolean | undefined;
6183
- returnDeliveryFee?: number | undefined;
6184
- exchangeDeliveryFee?: number | undefined;
6185
- sellerFaultFreeShipping?: boolean | undefined;
6186
- conditionalFreeShortfallCharge?: boolean | undefined;
7155
+ discount?: {
7156
+ productId: string;
7157
+ discountType: "RATE" | "AMOUNT";
7158
+ discountValue: number;
7159
+ discountedPrice: number;
7160
+ startAt: string | null;
7161
+ endAt: string | null;
6187
7162
  } | null | undefined;
6188
- shippingAddressId?: string | null | undefined;
6189
- returnAddressId?: string | null | undefined;
7163
+ createdAt?: string | undefined;
6190
7164
  }>;
6191
7165
  patch: (productId: string, body: ProductPatchRequest) => Promise<void>;
6192
7166
  remove: (productId: string) => Promise<void>;
@@ -6623,7 +7597,37 @@ export declare function createStoreClient(options: StoreClientOptions): {
6623
7597
  optionId: string | null;
6624
7598
  optionName: string | null;
6625
7599
  sellerCode: string | null;
6626
- fulfillmentType: string;
7600
+ fulfillmentSnapshot: UnknownFulfillment | {
7601
+ type: "SHIPPING";
7602
+ shipping: {
7603
+ bundleKey: string | null;
7604
+ returnAddressId: string | null;
7605
+ };
7606
+ } | {
7607
+ type: "DOWNLOAD";
7608
+ download: {
7609
+ limit: number;
7610
+ days: number;
7611
+ stockTracked: boolean;
7612
+ withdrawalRestricted: boolean;
7613
+ };
7614
+ } | {
7615
+ type: "CODE";
7616
+ code: {
7617
+ mode: string;
7618
+ withdrawalRestricted: boolean;
7619
+ };
7620
+ } | {
7621
+ type: "SERVICE";
7622
+ service: {
7623
+ mode: string;
7624
+ };
7625
+ } | {
7626
+ type: "PICKUP";
7627
+ pickup: {
7628
+ addressId: string | null;
7629
+ };
7630
+ };
6627
7631
  quantity: number;
6628
7632
  canceledQuantity: number;
6629
7633
  activeQuantity: number;
@@ -6668,7 +7672,6 @@ export declare function createStoreClient(options: StoreClientOptions): {
6668
7672
  orderedAt: string;
6669
7673
  lastChangedAt: string;
6670
7674
  lastChangedType: "ORDER.PAID" | "ORDER.CONFIRMED" | "ORDER.DISPATCHED" | "ORDER.DELIVERED" | "ORDER.PURCHASE_DECIDED" | "ORDER.ADDRESS_CHANGE_REQUESTED" | "CLAIM.CANCEL_REQUESTED" | "CLAIM.RETURN_REQUESTED" | "CLAIM.EXCHANGE_REQUESTED" | "CLAIM.COMPLETED";
6671
- withdrawalRestricted: boolean;
6672
7675
  testPayment: boolean;
6673
7676
  }[];
6674
7677
  }>;
@@ -6713,7 +7716,37 @@ export declare function createStoreClient(options: StoreClientOptions): {
6713
7716
  optionId: string | null;
6714
7717
  optionName: string | null;
6715
7718
  sellerCode: string | null;
6716
- fulfillmentType: string;
7719
+ fulfillmentSnapshot: UnknownFulfillment | {
7720
+ type: "SHIPPING";
7721
+ shipping: {
7722
+ bundleKey: string | null;
7723
+ returnAddressId: string | null;
7724
+ };
7725
+ } | {
7726
+ type: "DOWNLOAD";
7727
+ download: {
7728
+ limit: number;
7729
+ days: number;
7730
+ stockTracked: boolean;
7731
+ withdrawalRestricted: boolean;
7732
+ };
7733
+ } | {
7734
+ type: "CODE";
7735
+ code: {
7736
+ mode: string;
7737
+ withdrawalRestricted: boolean;
7738
+ };
7739
+ } | {
7740
+ type: "SERVICE";
7741
+ service: {
7742
+ mode: string;
7743
+ };
7744
+ } | {
7745
+ type: "PICKUP";
7746
+ pickup: {
7747
+ addressId: string | null;
7748
+ };
7749
+ };
6717
7750
  quantity: number;
6718
7751
  canceledQuantity: number;
6719
7752
  activeQuantity: number;
@@ -6758,7 +7791,6 @@ export declare function createStoreClient(options: StoreClientOptions): {
6758
7791
  orderedAt: string;
6759
7792
  lastChangedAt: string;
6760
7793
  lastChangedType: "ORDER.PAID" | "ORDER.CONFIRMED" | "ORDER.DISPATCHED" | "ORDER.DELIVERED" | "ORDER.PURCHASE_DECIDED" | "ORDER.ADDRESS_CHANGE_REQUESTED" | "CLAIM.CANCEL_REQUESTED" | "CLAIM.RETURN_REQUESTED" | "CLAIM.EXCHANGE_REQUESTED" | "CLAIM.COMPLETED";
6761
- withdrawalRestricted: boolean;
6762
7794
  testPayment: boolean;
6763
7795
  }[];
6764
7796
  }>;
@@ -6831,7 +7863,37 @@ export declare function createStoreClient(options: StoreClientOptions): {
6831
7863
  optionId: string | null;
6832
7864
  optionName: string | null;
6833
7865
  sellerCode: string | null;
6834
- fulfillmentType: string;
7866
+ fulfillmentSnapshot: UnknownFulfillment | {
7867
+ type: "SHIPPING";
7868
+ shipping: {
7869
+ bundleKey: string | null;
7870
+ returnAddressId: string | null;
7871
+ };
7872
+ } | {
7873
+ type: "DOWNLOAD";
7874
+ download: {
7875
+ limit: number;
7876
+ days: number;
7877
+ stockTracked: boolean;
7878
+ withdrawalRestricted: boolean;
7879
+ };
7880
+ } | {
7881
+ type: "CODE";
7882
+ code: {
7883
+ mode: string;
7884
+ withdrawalRestricted: boolean;
7885
+ };
7886
+ } | {
7887
+ type: "SERVICE";
7888
+ service: {
7889
+ mode: string;
7890
+ };
7891
+ } | {
7892
+ type: "PICKUP";
7893
+ pickup: {
7894
+ addressId: string | null;
7895
+ };
7896
+ };
6835
7897
  quantity: number;
6836
7898
  canceledQuantity: number;
6837
7899
  activeQuantity: number;
@@ -6876,7 +7938,6 @@ export declare function createStoreClient(options: StoreClientOptions): {
6876
7938
  orderedAt: string;
6877
7939
  lastChangedAt: string;
6878
7940
  lastChangedType: "ORDER.PAID" | "ORDER.CONFIRMED" | "ORDER.DISPATCHED" | "ORDER.DELIVERED" | "ORDER.PURCHASE_DECIDED" | "ORDER.ADDRESS_CHANGE_REQUESTED" | "CLAIM.CANCEL_REQUESTED" | "CLAIM.RETURN_REQUESTED" | "CLAIM.EXCHANGE_REQUESTED" | "CLAIM.COMPLETED";
6879
- withdrawalRestricted: boolean;
6880
7941
  testPayment: boolean;
6881
7942
  }>;
6882
7943
  /** 배송완료 일괄 처리 — 항목별 부분 성공이다 */
@@ -6911,7 +7972,37 @@ export declare function createStoreClient(options: StoreClientOptions): {
6911
7972
  optionId: string | null;
6912
7973
  optionName: string | null;
6913
7974
  sellerCode: string | null;
6914
- fulfillmentType: string;
7975
+ fulfillmentSnapshot: UnknownFulfillment | {
7976
+ type: "SHIPPING";
7977
+ shipping: {
7978
+ bundleKey: string | null;
7979
+ returnAddressId: string | null;
7980
+ };
7981
+ } | {
7982
+ type: "DOWNLOAD";
7983
+ download: {
7984
+ limit: number;
7985
+ days: number;
7986
+ stockTracked: boolean;
7987
+ withdrawalRestricted: boolean;
7988
+ };
7989
+ } | {
7990
+ type: "CODE";
7991
+ code: {
7992
+ mode: string;
7993
+ withdrawalRestricted: boolean;
7994
+ };
7995
+ } | {
7996
+ type: "SERVICE";
7997
+ service: {
7998
+ mode: string;
7999
+ };
8000
+ } | {
8001
+ type: "PICKUP";
8002
+ pickup: {
8003
+ addressId: string | null;
8004
+ };
8005
+ };
6915
8006
  quantity: number;
6916
8007
  canceledQuantity: number;
6917
8008
  activeQuantity: number;
@@ -6956,7 +8047,6 @@ export declare function createStoreClient(options: StoreClientOptions): {
6956
8047
  orderedAt: string;
6957
8048
  lastChangedAt: string;
6958
8049
  lastChangedType: "ORDER.PAID" | "ORDER.CONFIRMED" | "ORDER.DISPATCHED" | "ORDER.DELIVERED" | "ORDER.PURCHASE_DECIDED" | "ORDER.ADDRESS_CHANGE_REQUESTED" | "CLAIM.CANCEL_REQUESTED" | "CLAIM.RETURN_REQUESTED" | "CLAIM.EXCHANGE_REQUESTED" | "CLAIM.COMPLETED";
6959
- withdrawalRestricted: boolean;
6960
8050
  testPayment: boolean;
6961
8051
  }>;
6962
8052
  /** 제공 처리 일괄 — 항목별 부분 성공이다 */
@@ -8017,7 +9107,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8017
9107
  sources: (params: AnalyticsSourcesParams) => Promise<{
8018
9108
  groupBy: "CHANNEL" | "SOURCE" | "CAMPAIGN" | "DEVICE";
8019
9109
  rows: {
8020
- channel: "UNKNOWN" | "PAID" | "DIRECT" | "CAMPAIGN" | "ORGANIC_SEARCH" | "SOCIAL" | "EMAIL" | "REFERRAL" | null;
9110
+ channel: "PAID" | "DIRECT" | "CAMPAIGN" | "UNKNOWN" | "ORGANIC_SEARCH" | "SOCIAL" | "EMAIL" | "REFERRAL" | null;
8021
9111
  source: string | null;
8022
9112
  medium: string | null;
8023
9113
  campaign: string | null;
@@ -8152,7 +9242,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8152
9242
  orderId: string | null;
8153
9243
  orderName: string;
8154
9244
  customerName: string;
8155
- status: "FAILED" | "PENDING" | "APPROVED" | "PARTIALLY_REFUNDED" | "REFUNDED";
9245
+ status: "PENDING" | "FAILED" | "APPROVED" | "PARTIALLY_REFUNDED" | "REFUNDED";
8156
9246
  amount: number;
8157
9247
  refundedAmount: number;
8158
9248
  provider: "tosspayments" | "portone" | null;
@@ -8176,7 +9266,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8176
9266
  orderId: string | null;
8177
9267
  orderName: string;
8178
9268
  customerName: string;
8179
- status: "FAILED" | "PENDING" | "APPROVED" | "PARTIALLY_REFUNDED" | "REFUNDED";
9269
+ status: "PENDING" | "FAILED" | "APPROVED" | "PARTIALLY_REFUNDED" | "REFUNDED";
8180
9270
  amount: number;
8181
9271
  refundedAmount: number;
8182
9272
  provider: "tosspayments" | "portone" | null;
@@ -8275,7 +9365,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8275
9365
  masked: string | null;
8276
9366
  }[];
8277
9367
  lastVerification: {
8278
- result: "FAILED" | "SUCCESS";
9368
+ result: "SUCCESS" | "FAILED";
8279
9369
  message: string | null;
8280
9370
  checkedAt: string;
8281
9371
  } | null;
@@ -8300,7 +9390,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8300
9390
  masked: string | null;
8301
9391
  }[];
8302
9392
  lastVerification: {
8303
- result: "FAILED" | "SUCCESS";
9393
+ result: "SUCCESS" | "FAILED";
8304
9394
  message: string | null;
8305
9395
  checkedAt: string;
8306
9396
  } | null;
@@ -8324,7 +9414,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8324
9414
  masked: string | null;
8325
9415
  }[];
8326
9416
  lastVerification: {
8327
- result: "FAILED" | "SUCCESS";
9417
+ result: "SUCCESS" | "FAILED";
8328
9418
  message: string | null;
8329
9419
  checkedAt: string;
8330
9420
  } | null;
@@ -8376,7 +9466,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8376
9466
  masked: string | null;
8377
9467
  }[];
8378
9468
  lastVerification: {
8379
- result: "FAILED" | "SUCCESS";
9469
+ result: "SUCCESS" | "FAILED";
8380
9470
  message: string | null;
8381
9471
  checkedAt: string;
8382
9472
  } | null;
@@ -8401,7 +9491,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8401
9491
  masked: string | null;
8402
9492
  }[];
8403
9493
  lastVerification: {
8404
- result: "FAILED" | "SUCCESS";
9494
+ result: "SUCCESS" | "FAILED";
8405
9495
  message: string | null;
8406
9496
  checkedAt: string;
8407
9497
  } | null;
@@ -8425,7 +9515,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8425
9515
  masked: string | null;
8426
9516
  }[];
8427
9517
  lastVerification: {
8428
- result: "FAILED" | "SUCCESS";
9518
+ result: "SUCCESS" | "FAILED";
8429
9519
  message: string | null;
8430
9520
  checkedAt: string;
8431
9521
  } | null;
@@ -8482,7 +9572,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8482
9572
  masked: string | null;
8483
9573
  }[];
8484
9574
  lastVerification: {
8485
- result: "FAILED" | "SUCCESS";
9575
+ result: "SUCCESS" | "FAILED";
8486
9576
  message: string | null;
8487
9577
  checkedAt: string;
8488
9578
  } | null;
@@ -8507,7 +9597,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8507
9597
  masked: string | null;
8508
9598
  }[];
8509
9599
  lastVerification: {
8510
- result: "FAILED" | "SUCCESS";
9600
+ result: "SUCCESS" | "FAILED";
8511
9601
  message: string | null;
8512
9602
  checkedAt: string;
8513
9603
  } | null;
@@ -8531,7 +9621,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8531
9621
  masked: string | null;
8532
9622
  }[];
8533
9623
  lastVerification: {
8534
- result: "FAILED" | "SUCCESS";
9624
+ result: "SUCCESS" | "FAILED";
8535
9625
  message: string | null;
8536
9626
  checkedAt: string;
8537
9627
  } | null;
@@ -8578,7 +9668,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8578
9668
  masked: string | null;
8579
9669
  }[];
8580
9670
  lastVerification: {
8581
- result: "FAILED" | "SUCCESS";
9671
+ result: "SUCCESS" | "FAILED";
8582
9672
  message: string | null;
8583
9673
  checkedAt: string;
8584
9674
  } | null;
@@ -8603,7 +9693,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8603
9693
  masked: string | null;
8604
9694
  }[];
8605
9695
  lastVerification: {
8606
- result: "FAILED" | "SUCCESS";
9696
+ result: "SUCCESS" | "FAILED";
8607
9697
  message: string | null;
8608
9698
  checkedAt: string;
8609
9699
  } | null;
@@ -8627,7 +9717,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8627
9717
  masked: string | null;
8628
9718
  }[];
8629
9719
  lastVerification: {
8630
- result: "FAILED" | "SUCCESS";
9720
+ result: "SUCCESS" | "FAILED";
8631
9721
  message: string | null;
8632
9722
  checkedAt: string;
8633
9723
  } | null;
@@ -8684,7 +9774,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8684
9774
  masked: string | null;
8685
9775
  }[];
8686
9776
  lastVerification: {
8687
- result: "FAILED" | "SUCCESS";
9777
+ result: "SUCCESS" | "FAILED";
8688
9778
  message: string | null;
8689
9779
  checkedAt: string;
8690
9780
  } | null;
@@ -8709,7 +9799,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8709
9799
  masked: string | null;
8710
9800
  }[];
8711
9801
  lastVerification: {
8712
- result: "FAILED" | "SUCCESS";
9802
+ result: "SUCCESS" | "FAILED";
8713
9803
  message: string | null;
8714
9804
  checkedAt: string;
8715
9805
  } | null;
@@ -8733,7 +9823,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8733
9823
  masked: string | null;
8734
9824
  }[];
8735
9825
  lastVerification: {
8736
- result: "FAILED" | "SUCCESS";
9826
+ result: "SUCCESS" | "FAILED";
8737
9827
  message: string | null;
8738
9828
  checkedAt: string;
8739
9829
  } | null;
@@ -8780,7 +9870,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8780
9870
  masked: string | null;
8781
9871
  }[];
8782
9872
  lastVerification: {
8783
- result: "FAILED" | "SUCCESS";
9873
+ result: "SUCCESS" | "FAILED";
8784
9874
  message: string | null;
8785
9875
  checkedAt: string;
8786
9876
  } | null;
@@ -8805,7 +9895,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8805
9895
  masked: string | null;
8806
9896
  }[];
8807
9897
  lastVerification: {
8808
- result: "FAILED" | "SUCCESS";
9898
+ result: "SUCCESS" | "FAILED";
8809
9899
  message: string | null;
8810
9900
  checkedAt: string;
8811
9901
  } | null;
@@ -8829,7 +9919,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8829
9919
  masked: string | null;
8830
9920
  }[];
8831
9921
  lastVerification: {
8832
- result: "FAILED" | "SUCCESS";
9922
+ result: "SUCCESS" | "FAILED";
8833
9923
  message: string | null;
8834
9924
  checkedAt: string;
8835
9925
  } | null;
@@ -8885,7 +9975,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8885
9975
  masked: string | null;
8886
9976
  }[];
8887
9977
  lastVerification: {
8888
- result: "FAILED" | "SUCCESS";
9978
+ result: "SUCCESS" | "FAILED";
8889
9979
  message: string | null;
8890
9980
  checkedAt: string;
8891
9981
  } | null;
@@ -8910,7 +10000,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8910
10000
  masked: string | null;
8911
10001
  }[];
8912
10002
  lastVerification: {
8913
- result: "FAILED" | "SUCCESS";
10003
+ result: "SUCCESS" | "FAILED";
8914
10004
  message: string | null;
8915
10005
  checkedAt: string;
8916
10006
  } | null;
@@ -8934,7 +10024,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8934
10024
  masked: string | null;
8935
10025
  }[];
8936
10026
  lastVerification: {
8937
- result: "FAILED" | "SUCCESS";
10027
+ result: "SUCCESS" | "FAILED";
8938
10028
  message: string | null;
8939
10029
  checkedAt: string;
8940
10030
  } | null;
@@ -8962,7 +10052,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
8962
10052
  verify: (provider: PgProvider, body?: VerifyPaymentProviderRequest) => Promise<{
8963
10053
  provider: "tosspayments" | "portone";
8964
10054
  environment: "TEST" | "LIVE";
8965
- result: "FAILED" | "SUCCESS";
10055
+ result: "SUCCESS" | "FAILED";
8966
10056
  message: string | null;
8967
10057
  checkedAt: string;
8968
10058
  }>;
@@ -9028,7 +10118,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9028
10118
  eventId: string;
9029
10119
  eventType: "ORDER.PAID" | "ORDER.CONFIRMED" | "ORDER.DISPATCHED" | "ORDER.DELIVERED" | "ORDER.PURCHASE_DECIDED" | "ORDER.ADDRESS_CHANGE_REQUESTED" | "ORDER.CANCELED" | "ORDER.FULFILLED" | "CLAIM.CANCEL_REQUESTED" | "CLAIM.RETURN_REQUESTED" | "CLAIM.EXCHANGE_REQUESTED" | "CLAIM.COMPLETED" | "INQUIRY.CREATED" | "REVIEW.CREATED" | "PRODUCT.OUT_OF_STOCK";
9030
10120
  url: string;
9031
- status: "FAILED" | "PENDING" | "PENDING_RETRY" | "SUCCESS";
10121
+ status: "PENDING" | "PENDING_RETRY" | "SUCCESS" | "FAILED";
9032
10122
  responseStatusCode: number | null;
9033
10123
  responseTimeMs: number | null;
9034
10124
  responseBodyExcerpt: string | null;
@@ -9055,7 +10145,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9055
10145
  eventId: string;
9056
10146
  eventType: "ORDER.PAID" | "ORDER.CONFIRMED" | "ORDER.DISPATCHED" | "ORDER.DELIVERED" | "ORDER.PURCHASE_DECIDED" | "ORDER.ADDRESS_CHANGE_REQUESTED" | "ORDER.CANCELED" | "ORDER.FULFILLED" | "CLAIM.CANCEL_REQUESTED" | "CLAIM.RETURN_REQUESTED" | "CLAIM.EXCHANGE_REQUESTED" | "CLAIM.COMPLETED" | "INQUIRY.CREATED" | "REVIEW.CREATED" | "PRODUCT.OUT_OF_STOCK";
9057
10147
  url: string;
9058
- status: "FAILED" | "PENDING" | "PENDING_RETRY" | "SUCCESS";
10148
+ status: "PENDING" | "PENDING_RETRY" | "SUCCESS" | "FAILED";
9059
10149
  responseStatusCode: number | null;
9060
10150
  responseTimeMs: number | null;
9061
10151
  responseBodyExcerpt: string | null;
@@ -9090,7 +10180,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9090
10180
  eventId: string;
9091
10181
  eventType: "ORDER.PAID" | "ORDER.CONFIRMED" | "ORDER.DISPATCHED" | "ORDER.DELIVERED" | "ORDER.PURCHASE_DECIDED" | "ORDER.ADDRESS_CHANGE_REQUESTED" | "ORDER.CANCELED" | "ORDER.FULFILLED" | "CLAIM.CANCEL_REQUESTED" | "CLAIM.RETURN_REQUESTED" | "CLAIM.EXCHANGE_REQUESTED" | "CLAIM.COMPLETED" | "INQUIRY.CREATED" | "REVIEW.CREATED" | "PRODUCT.OUT_OF_STOCK";
9092
10182
  url: string;
9093
- status: "FAILED" | "PENDING" | "PENDING_RETRY" | "SUCCESS";
10183
+ status: "PENDING" | "PENDING_RETRY" | "SUCCESS" | "FAILED";
9094
10184
  responseStatusCode: number | null;
9095
10185
  responseTimeMs: number | null;
9096
10186
  responseBodyExcerpt: string | null;
@@ -9186,7 +10276,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9186
10276
  method: string | null;
9187
10277
  path: string | null;
9188
10278
  statusCode: number | null;
9189
- outcome: "SUCCEEDED" | "FAILED" | "PENDING_APPROVAL" | "DENIED" | "DRY_RUN" | null;
10279
+ outcome: "FAILED" | "SUCCEEDED" | "PENDING_APPROVAL" | "DENIED" | "DRY_RUN" | null;
9190
10280
  errorCode: string | null;
9191
10281
  traceId: string | null;
9192
10282
  idempotencyKey: string | null;
@@ -9204,7 +10294,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9204
10294
  list: (params?: ApprovalListOptions) => Promise<{
9205
10295
  items: {
9206
10296
  approvalId: string;
9207
- status: "SUCCEEDED" | "FAILED" | "PENDING" | "EXECUTING" | "UNKNOWN" | "REJECTED" | "EXPIRED";
10297
+ status: "EXPIRED" | "PENDING" | "FAILED" | "SUCCEEDED" | "EXECUTING" | "UNKNOWN" | "REJECTED";
9208
10298
  operationId: string;
9209
10299
  method: string;
9210
10300
  path: string;
@@ -9254,7 +10344,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9254
10344
  }>;
9255
10345
  get: (approvalId: string) => Promise<{
9256
10346
  approvalId: string;
9257
- status: "SUCCEEDED" | "FAILED" | "PENDING" | "EXECUTING" | "UNKNOWN" | "REJECTED" | "EXPIRED";
10347
+ status: "EXPIRED" | "PENDING" | "FAILED" | "SUCCEEDED" | "EXECUTING" | "UNKNOWN" | "REJECTED";
9258
10348
  operationId: string;
9259
10349
  method: string;
9260
10350
  path: string;
@@ -9306,7 +10396,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9306
10396
  */
9307
10397
  approve: (approvalId: string, body?: ApprovalDecisionRequest) => Promise<{
9308
10398
  approvalId: string;
9309
- status: "SUCCEEDED" | "FAILED" | "PENDING" | "EXECUTING" | "UNKNOWN" | "REJECTED" | "EXPIRED";
10399
+ status: "EXPIRED" | "PENDING" | "FAILED" | "SUCCEEDED" | "EXECUTING" | "UNKNOWN" | "REJECTED";
9310
10400
  operationId: string;
9311
10401
  method: string;
9312
10402
  path: string;
@@ -9354,7 +10444,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9354
10444
  }>;
9355
10445
  reject: (approvalId: string, body?: ApprovalDecisionRequest) => Promise<{
9356
10446
  approvalId: string;
9357
- status: "SUCCEEDED" | "FAILED" | "PENDING" | "EXECUTING" | "UNKNOWN" | "REJECTED" | "EXPIRED";
10447
+ status: "EXPIRED" | "PENDING" | "FAILED" | "SUCCEEDED" | "EXECUTING" | "UNKNOWN" | "REJECTED";
9358
10448
  operationId: string;
9359
10449
  method: string;
9360
10450
  path: string;
@@ -9466,6 +10556,358 @@ export declare function createStoreClient(options: StoreClientOptions): {
9466
10556
  remove: (addressId: string) => Promise<void>;
9467
10557
  setDefault: (addressId: string) => Promise<void>;
9468
10558
  };
10559
+ /**
10560
+ * 스토어프론트 호스팅 (이슈 #53) — 조회 `storefront:r`, 쓰기 `storefront:rw`(OWNER·ADMIN).
10561
+ * 쓰기 응답은 바뀐 사이트다. Cloudflare 반영은 커밋 뒤라 `provisioning.status`가 잠시 `PENDING`일 수 있다.
10562
+ * 에이전트 토큰의 발행·되돌리기·템플릿 변경·공개 전환·슬러그 변경·끄기는 승인 대기(`ApprovalPendingError`)다.
10563
+ */
10564
+ storefront: {
10565
+ /** `GET /v1/storefront/templates` — 템플릿 카탈로그 */
10566
+ listTemplates: () => Promise<{
10567
+ templateId: string;
10568
+ name: string;
10569
+ industry: string;
10570
+ description: string;
10571
+ thumbnailUrl: string | null;
10572
+ version: string;
10573
+ isDefault: boolean;
10574
+ }[]>;
10575
+ /** `GET /v1/storefront/site` — 스위치 상태와 현재 사이트(없으면 `site: null`) */
10576
+ get: () => Promise<{
10577
+ enabled: boolean;
10578
+ domain: string;
10579
+ site: {
10580
+ siteId: string;
10581
+ slug: string;
10582
+ hostname: string;
10583
+ url: string;
10584
+ domains: {
10585
+ hostname: string;
10586
+ kind: "PLATFORM" | "CUSTOM";
10587
+ status: "ACTIVE" | "HELD";
10588
+ isPrimary: boolean;
10589
+ holdUntil: string | null;
10590
+ }[];
10591
+ templateId: string;
10592
+ sourceMode: "CUSTOM" | "MANAGED";
10593
+ status: "ACTIVE" | "SUSPENDED" | "CLOSED";
10594
+ visibility: "COMING_SOON" | "PUBLIC";
10595
+ publishedVersion: {
10596
+ versionId: string;
10597
+ number: number;
10598
+ templateId: string;
10599
+ templateVersion: string;
10600
+ status: "FAILED" | "BUILDING" | "READY";
10601
+ published: boolean;
10602
+ publishedAt: string | null;
10603
+ message: string | null;
10604
+ createdByType: string;
10605
+ createdAt: string;
10606
+ } | null;
10607
+ provisioning: {
10608
+ status: "PENDING" | "FAILED" | "SYNCED";
10609
+ lastErrorCode: string | null;
10610
+ syncedAt: string | null;
10611
+ };
10612
+ slugChangesRemaining: number;
10613
+ createdAt: string;
10614
+ updatedAt: string;
10615
+ } | null;
10616
+ }>;
10617
+ /** `GET /v1/storefront/slug-availability?slug=` — 슬러그를 쓸 수 있는가 */
10618
+ checkSlug: (slug: string) => Promise<{
10619
+ slug: string;
10620
+ available: boolean;
10621
+ reason: "RESERVED" | "INVALID" | "TAKEN" | "CURRENT" | null;
10622
+ }>;
10623
+ /** `POST /v1/storefront/site` (201) — 템플릿으로 사이트를 만들고 v1을 발행한다. 공개 상태는 오픈 준비 중이다 */
10624
+ create: (body: CreateStorefrontSiteRequest) => Promise<{
10625
+ siteId: string;
10626
+ slug: string;
10627
+ hostname: string;
10628
+ url: string;
10629
+ domains: {
10630
+ hostname: string;
10631
+ kind: "PLATFORM" | "CUSTOM";
10632
+ status: "ACTIVE" | "HELD";
10633
+ isPrimary: boolean;
10634
+ holdUntil: string | null;
10635
+ }[];
10636
+ templateId: string;
10637
+ sourceMode: "CUSTOM" | "MANAGED";
10638
+ status: "ACTIVE" | "SUSPENDED" | "CLOSED";
10639
+ visibility: "COMING_SOON" | "PUBLIC";
10640
+ publishedVersion: {
10641
+ versionId: string;
10642
+ number: number;
10643
+ templateId: string;
10644
+ templateVersion: string;
10645
+ status: "FAILED" | "BUILDING" | "READY";
10646
+ published: boolean;
10647
+ publishedAt: string | null;
10648
+ message: string | null;
10649
+ createdByType: string;
10650
+ createdAt: string;
10651
+ } | null;
10652
+ provisioning: {
10653
+ status: "PENDING" | "FAILED" | "SYNCED";
10654
+ lastErrorCode: string | null;
10655
+ syncedAt: string | null;
10656
+ };
10657
+ slugChangesRemaining: number;
10658
+ createdAt: string;
10659
+ updatedAt: string;
10660
+ }>;
10661
+ /** `POST /v1/storefront/site/template` — 템플릿을 바꾼다. 새 버전을 만들고 기본으로 곧바로 발행한다 */
10662
+ changeTemplate: (body: ChangeStorefrontTemplateRequest) => Promise<{
10663
+ siteId: string;
10664
+ slug: string;
10665
+ hostname: string;
10666
+ url: string;
10667
+ domains: {
10668
+ hostname: string;
10669
+ kind: "PLATFORM" | "CUSTOM";
10670
+ status: "ACTIVE" | "HELD";
10671
+ isPrimary: boolean;
10672
+ holdUntil: string | null;
10673
+ }[];
10674
+ templateId: string;
10675
+ sourceMode: "CUSTOM" | "MANAGED";
10676
+ status: "ACTIVE" | "SUSPENDED" | "CLOSED";
10677
+ visibility: "COMING_SOON" | "PUBLIC";
10678
+ publishedVersion: {
10679
+ versionId: string;
10680
+ number: number;
10681
+ templateId: string;
10682
+ templateVersion: string;
10683
+ status: "FAILED" | "BUILDING" | "READY";
10684
+ published: boolean;
10685
+ publishedAt: string | null;
10686
+ message: string | null;
10687
+ createdByType: string;
10688
+ createdAt: string;
10689
+ } | null;
10690
+ provisioning: {
10691
+ status: "PENDING" | "FAILED" | "SYNCED";
10692
+ lastErrorCode: string | null;
10693
+ syncedAt: string | null;
10694
+ };
10695
+ slugChangesRemaining: number;
10696
+ createdAt: string;
10697
+ updatedAt: string;
10698
+ }>;
10699
+ /** `GET /v1/storefront/site/versions` — 버전 목록(최신 먼저) */
10700
+ listVersions: () => Promise<{
10701
+ versionId: string;
10702
+ number: number;
10703
+ templateId: string;
10704
+ templateVersion: string;
10705
+ status: "FAILED" | "BUILDING" | "READY";
10706
+ published: boolean;
10707
+ publishedAt: string | null;
10708
+ message: string | null;
10709
+ createdByType: string;
10710
+ createdAt: string;
10711
+ }[]>;
10712
+ /** `POST /v1/storefront/site/versions/{versionId}/publish` — 그 버전을 발행한다(이미 발행돼 있으면 그대로 200) */
10713
+ publish: (versionId: string, body?: PublishStorefrontVersionRequest) => Promise<{
10714
+ siteId: string;
10715
+ slug: string;
10716
+ hostname: string;
10717
+ url: string;
10718
+ domains: {
10719
+ hostname: string;
10720
+ kind: "PLATFORM" | "CUSTOM";
10721
+ status: "ACTIVE" | "HELD";
10722
+ isPrimary: boolean;
10723
+ holdUntil: string | null;
10724
+ }[];
10725
+ templateId: string;
10726
+ sourceMode: "CUSTOM" | "MANAGED";
10727
+ status: "ACTIVE" | "SUSPENDED" | "CLOSED";
10728
+ visibility: "COMING_SOON" | "PUBLIC";
10729
+ publishedVersion: {
10730
+ versionId: string;
10731
+ number: number;
10732
+ templateId: string;
10733
+ templateVersion: string;
10734
+ status: "FAILED" | "BUILDING" | "READY";
10735
+ published: boolean;
10736
+ publishedAt: string | null;
10737
+ message: string | null;
10738
+ createdByType: string;
10739
+ createdAt: string;
10740
+ } | null;
10741
+ provisioning: {
10742
+ status: "PENDING" | "FAILED" | "SYNCED";
10743
+ lastErrorCode: string | null;
10744
+ syncedAt: string | null;
10745
+ };
10746
+ slugChangesRemaining: number;
10747
+ createdAt: string;
10748
+ updatedAt: string;
10749
+ }>;
10750
+ /** `POST /v1/storefront/site/rollback` — 이전 발행 버전으로 되돌린다(재빌드 없음) */
10751
+ rollback: (body?: RollbackStorefrontRequest) => Promise<{
10752
+ siteId: string;
10753
+ slug: string;
10754
+ hostname: string;
10755
+ url: string;
10756
+ domains: {
10757
+ hostname: string;
10758
+ kind: "PLATFORM" | "CUSTOM";
10759
+ status: "ACTIVE" | "HELD";
10760
+ isPrimary: boolean;
10761
+ holdUntil: string | null;
10762
+ }[];
10763
+ templateId: string;
10764
+ sourceMode: "CUSTOM" | "MANAGED";
10765
+ status: "ACTIVE" | "SUSPENDED" | "CLOSED";
10766
+ visibility: "COMING_SOON" | "PUBLIC";
10767
+ publishedVersion: {
10768
+ versionId: string;
10769
+ number: number;
10770
+ templateId: string;
10771
+ templateVersion: string;
10772
+ status: "FAILED" | "BUILDING" | "READY";
10773
+ published: boolean;
10774
+ publishedAt: string | null;
10775
+ message: string | null;
10776
+ createdByType: string;
10777
+ createdAt: string;
10778
+ } | null;
10779
+ provisioning: {
10780
+ status: "PENDING" | "FAILED" | "SYNCED";
10781
+ lastErrorCode: string | null;
10782
+ syncedAt: string | null;
10783
+ };
10784
+ slugChangesRemaining: number;
10785
+ createdAt: string;
10786
+ updatedAt: string;
10787
+ }>;
10788
+ /** `PUT /v1/storefront/site/slug` — 슬러그를 바꾼다. 옛 슬러그는 90일 보류되고 새 주소로 301한다 */
10789
+ changeSlug: (body: ChangeStorefrontSlugRequest) => Promise<{
10790
+ siteId: string;
10791
+ slug: string;
10792
+ hostname: string;
10793
+ url: string;
10794
+ domains: {
10795
+ hostname: string;
10796
+ kind: "PLATFORM" | "CUSTOM";
10797
+ status: "ACTIVE" | "HELD";
10798
+ isPrimary: boolean;
10799
+ holdUntil: string | null;
10800
+ }[];
10801
+ templateId: string;
10802
+ sourceMode: "CUSTOM" | "MANAGED";
10803
+ status: "ACTIVE" | "SUSPENDED" | "CLOSED";
10804
+ visibility: "COMING_SOON" | "PUBLIC";
10805
+ publishedVersion: {
10806
+ versionId: string;
10807
+ number: number;
10808
+ templateId: string;
10809
+ templateVersion: string;
10810
+ status: "FAILED" | "BUILDING" | "READY";
10811
+ published: boolean;
10812
+ publishedAt: string | null;
10813
+ message: string | null;
10814
+ createdByType: string;
10815
+ createdAt: string;
10816
+ } | null;
10817
+ provisioning: {
10818
+ status: "PENDING" | "FAILED" | "SYNCED";
10819
+ lastErrorCode: string | null;
10820
+ syncedAt: string | null;
10821
+ };
10822
+ slugChangesRemaining: number;
10823
+ createdAt: string;
10824
+ updatedAt: string;
10825
+ }>;
10826
+ /** `PUT /v1/storefront/site/visibility` — 오픈 준비 중 ↔ 공개 */
10827
+ setVisibility: (body: SetStorefrontVisibilityRequest) => Promise<{
10828
+ siteId: string;
10829
+ slug: string;
10830
+ hostname: string;
10831
+ url: string;
10832
+ domains: {
10833
+ hostname: string;
10834
+ kind: "PLATFORM" | "CUSTOM";
10835
+ status: "ACTIVE" | "HELD";
10836
+ isPrimary: boolean;
10837
+ holdUntil: string | null;
10838
+ }[];
10839
+ templateId: string;
10840
+ sourceMode: "CUSTOM" | "MANAGED";
10841
+ status: "ACTIVE" | "SUSPENDED" | "CLOSED";
10842
+ visibility: "COMING_SOON" | "PUBLIC";
10843
+ publishedVersion: {
10844
+ versionId: string;
10845
+ number: number;
10846
+ templateId: string;
10847
+ templateVersion: string;
10848
+ status: "FAILED" | "BUILDING" | "READY";
10849
+ published: boolean;
10850
+ publishedAt: string | null;
10851
+ message: string | null;
10852
+ createdByType: string;
10853
+ createdAt: string;
10854
+ } | null;
10855
+ provisioning: {
10856
+ status: "PENDING" | "FAILED" | "SYNCED";
10857
+ lastErrorCode: string | null;
10858
+ syncedAt: string | null;
10859
+ };
10860
+ slugChangesRemaining: number;
10861
+ createdAt: string;
10862
+ updatedAt: string;
10863
+ }>;
10864
+ /**
10865
+ * `POST /v1/storefront/site/preview-link` — 오픈 준비 중인 사이트를 구성원이 볼 수 있는 5분짜리 링크.
10866
+ * 콘솔에서 로그인한 OWNER·ADMIN만 받는다
10867
+ */
10868
+ createPreviewLink: (body?: CreateStorefrontPreviewLinkRequest) => Promise<{
10869
+ url: string;
10870
+ expiresAt: string;
10871
+ }>;
10872
+ /** `POST /v1/storefront/site/disable` — 호스팅을 끈다(사이트 `CLOSED`, 슬러그 90일 보류). 다시 만들 수 있다 */
10873
+ disable: (body: DisableStorefrontHostingRequest) => Promise<{
10874
+ siteId: string;
10875
+ slug: string;
10876
+ hostname: string;
10877
+ url: string;
10878
+ domains: {
10879
+ hostname: string;
10880
+ kind: "PLATFORM" | "CUSTOM";
10881
+ status: "ACTIVE" | "HELD";
10882
+ isPrimary: boolean;
10883
+ holdUntil: string | null;
10884
+ }[];
10885
+ templateId: string;
10886
+ sourceMode: "CUSTOM" | "MANAGED";
10887
+ status: "ACTIVE" | "SUSPENDED" | "CLOSED";
10888
+ visibility: "COMING_SOON" | "PUBLIC";
10889
+ publishedVersion: {
10890
+ versionId: string;
10891
+ number: number;
10892
+ templateId: string;
10893
+ templateVersion: string;
10894
+ status: "FAILED" | "BUILDING" | "READY";
10895
+ published: boolean;
10896
+ publishedAt: string | null;
10897
+ message: string | null;
10898
+ createdByType: string;
10899
+ createdAt: string;
10900
+ } | null;
10901
+ provisioning: {
10902
+ status: "PENDING" | "FAILED" | "SYNCED";
10903
+ lastErrorCode: string | null;
10904
+ syncedAt: string | null;
10905
+ };
10906
+ slugChangesRemaining: number;
10907
+ createdAt: string;
10908
+ updatedAt: string;
10909
+ }>;
10910
+ };
9469
10911
  store: {
9470
10912
  get: () => Promise<{
9471
10913
  storeId: string;
@@ -9570,7 +11012,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9570
11012
  invitationId: string;
9571
11013
  email: string;
9572
11014
  role: "ADMIN" | "STAFF";
9573
- status: "PENDING" | "EXPIRED" | "ACCEPTED" | "CANCELED";
11015
+ status: "EXPIRED" | "PENDING" | "ACCEPTED" | "CANCELED";
9574
11016
  invitedBy: string;
9575
11017
  expiresAt: string;
9576
11018
  createdAt: string;
@@ -9588,7 +11030,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9588
11030
  invitationId: string;
9589
11031
  email: string;
9590
11032
  role: "ADMIN" | "STAFF";
9591
- status: "PENDING" | "EXPIRED" | "ACCEPTED" | "CANCELED";
11033
+ status: "EXPIRED" | "PENDING" | "ACCEPTED" | "CANCELED";
9592
11034
  invitedBy: string;
9593
11035
  expiresAt: string;
9594
11036
  createdAt: string;
@@ -9603,7 +11045,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
9603
11045
  invitationId: string;
9604
11046
  email: string;
9605
11047
  role: "ADMIN" | "STAFF";
9606
- status: "PENDING" | "EXPIRED" | "ACCEPTED" | "CANCELED";
11048
+ status: "EXPIRED" | "PENDING" | "ACCEPTED" | "CANCELED";
9607
11049
  invitedBy: string;
9608
11050
  expiresAt: string;
9609
11051
  createdAt: string;
@@ -10049,32 +11491,28 @@ export declare const productRefundPolicyPatchSchema: z.ZodObject<{
10049
11491
  sellerFaultFreeShipping: z.ZodOptional<z.ZodBoolean>;
10050
11492
  conditionalFreeShortfallCharge: z.ZodOptional<z.ZodBoolean>;
10051
11493
  }, z.core.$strict>;
10052
- /** 정책 해석에 쓰는 상품 값 — 상품별 덮어쓰기와 레거시 배송비 필드 */
11494
+ /** 정책 해석에 쓰는 상품 값 — 상품별 덮어쓰기 */
10053
11495
  export interface RefundPolicyProductInput {
10054
11496
  /** 상품별 덮어쓰기. 없으면 스토어 기본을 그대로 쓴다 */
10055
11497
  refundPolicy?: RefundPolicyPatch | null;
10056
- /** @deprecated 레거시 상품 반품비 — `refundPolicy`가 없는 옛 상품의 값이다 */
10057
- returnFee?: number | null;
10058
- /** @deprecated 레거시 상품 교환비 — `refundPolicy`가 없는 옛 상품의 값이다 */
10059
- exchangeFee?: number | null;
10060
11498
  }
10061
11499
  /**
10062
11500
  * 유효 정책 해석 — 상품별 덮어쓰기 → 스토어 기본 → `REFUND_POLICY_DEFAULTS` 순이다.
10063
11501
  *
10064
- * 반품비·교환비는 레거시 필드(`products.returnFee`·`exchangeFee`)와 **연결**한다. 상품이
10065
- * `refundPolicy.returnDeliveryFee`를 정하면 그 값이 원천이고(서버가 `returnFee`도 같은 값으로 맞춘다),
10066
- * 정하지 않았으면 레거시 값이 0보다 클 때 그 값을 쓴다. 0이면 스토어 기본을 따른다 —
10067
- * 정책이 생기기 전에 만든 상품(반품비 0)이 스토어 기본을 물려받게 하는 규칙이다.
11502
+ * 반품·교환 배송비의 원천은 정책 하나다(이슈 #57 결정 3). 상품의 레거시 반품비·교환비 필드와의 연결은 없앴고,
11503
+ * 레거시 값은 마이그레이션이 상품별 정책으로 옮겼다.
10068
11504
  */
10069
11505
  export declare function resolveRefundPolicy(storePolicy?: RefundPolicyPatch | null, product?: RefundPolicyProductInput | null): RefundPolicy;
10070
11506
  /**
10071
- * 상품의 **덮어쓰기 자체** — 레거시 반품비·교환비를 같은 형태로 승격한 값이다. 덮어쓰기가 없으면 null.
11507
+ * 상품의 **덮어쓰기 자체** — 덮어쓰기가 없으면 null.
10072
11508
  *
10073
11509
  * `resolveRefundPolicy`가 합친 결과로는 "상품이 정한 값"과 "스토어 기본을 물려받은 값"을 가를 수 없다.
10074
11510
  * 관리 API 응답의 `refundPolicy`와 콘솔 폼의 덮어쓰기 스위치가 이 함수를 원천으로 쓴다 — 가르지 못하면
10075
- * 스토어 기본을 쓰는 상품을 저장할 때 그 순간의 기본값이 상품에 박히거나, 레거시 값이 조용히 사라진다.
11511
+ * 스토어 기본을 쓰는 상품을 저장할 때 그 순간의 기본값이 상품에 박힌다.
10076
11512
  */
10077
11513
  export declare function productRefundPolicyOverride(product?: RefundPolicyProductInput | null): RefundPolicyPatch | null;
11514
+ /** 반품·교환 배송비 키 — 배송이 없는 상품의 정책에는 두지 않는다 */
11515
+ export declare const REFUND_POLICY_DELIVERY_FEE_KEYS: readonly ["returnDeliveryFee", "exchangeDeliveryFee"];
10078
11516
  /**
10079
11517
  * 수량 단위 부분 취소의 환불 기준액 — **누적 내림의 차분**이다.
10080
11518
  *
@@ -10119,6 +11557,7 @@ export declare const STORE_SCOPE_RESOURCES: {
10119
11557
  readonly customer: readonly ["r", "rw"];
10120
11558
  readonly audit: readonly ["r"];
10121
11559
  readonly promotion: readonly ["r", "rw"];
11560
+ readonly storefront: readonly ["r", "rw"];
10122
11561
  };
10123
11562
  export type StoreScopeResource = keyof typeof STORE_SCOPE_RESOURCES;
10124
11563
  export declare const storeScopeResourceSchema: z.ZodEnum<{
@@ -10136,6 +11575,7 @@ export declare const storeScopeResourceSchema: z.ZodEnum<{
10136
11575
  customer: "customer";
10137
11576
  audit: "audit";
10138
11577
  promotion: "promotion";
11578
+ storefront: "storefront";
10139
11579
  }>;
10140
11580
  /** 카탈로그상 존재하는 스코프 문자열인가 (예: `settlement:rw`는 false) */
10141
11581
  export declare function isStoreScope(scope: string): boolean;
@@ -10145,8 +11585,8 @@ export declare function isStoreScope(scope: string): boolean;
10145
11585
  * 발급 시 지정한 스코프만 갖는다(발급자 보유 스코프 이내).
10146
11586
  */
10147
11587
  export declare const STORE_ROLE_SCOPES: {
10148
- readonly OWNER: readonly ["product:rw", "category:rw", "order:rw", "claim:rw", "inquiry:rw", "review:rw", "settlement:r", "analytics:r", "webhook:rw", "store:rw", "member:rw", "customer:rw", "audit:r", "promotion:rw"];
10149
- readonly ADMIN: readonly ["product:rw", "category:rw", "order:rw", "claim:rw", "inquiry:rw", "review:rw", "analytics:r", "webhook:rw", "store:rw", "member:rw", "customer:rw", "audit:r", "promotion:rw"];
11588
+ readonly OWNER: readonly ["product:rw", "category:rw", "order:rw", "claim:rw", "inquiry:rw", "review:rw", "settlement:r", "analytics:r", "webhook:rw", "store:rw", "member:rw", "customer:rw", "audit:r", "promotion:rw", "storefront:rw"];
11589
+ readonly ADMIN: readonly ["product:rw", "category:rw", "order:rw", "claim:rw", "inquiry:rw", "review:rw", "analytics:r", "webhook:rw", "store:rw", "member:rw", "customer:rw", "audit:r", "promotion:rw", "storefront:rw"];
10150
11590
  readonly STAFF: readonly ["product:rw", "category:rw", "order:rw", "claim:rw", "inquiry:rw", "review:rw", "customer:r", "promotion:r"];
10151
11591
  };
10152
11592
  //#endregion
@@ -10421,7 +11861,42 @@ export declare const orderWebhookEventDataSchema: z.ZodObject<{
10421
11861
  testPayment: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10422
11862
  couponDiscountAmount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
10423
11863
  orderItemId: z.ZodOptional<z.ZodString>;
10424
- fulfillmentType: z.ZodOptional<z.ZodString>;
11864
+ fulfillmentSnapshot: z.ZodOptional<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
11865
+ type: z.ZodLiteral<"SHIPPING">;
11866
+ shipping: z.ZodObject<{
11867
+ bundleKey: z.ZodNullable<z.ZodString>;
11868
+ returnAddressId: z.ZodNullable<z.ZodString>;
11869
+ }, z.core.$strip>;
11870
+ }, z.core.$strip>, z.ZodObject<{
11871
+ type: z.ZodLiteral<"DOWNLOAD">;
11872
+ download: z.ZodObject<{
11873
+ limit: z.ZodNumber;
11874
+ days: z.ZodNumber;
11875
+ stockTracked: z.ZodBoolean;
11876
+ withdrawalRestricted: z.ZodBoolean;
11877
+ }, z.core.$strip>;
11878
+ }, z.core.$strip>, z.ZodObject<{
11879
+ type: z.ZodLiteral<"CODE">;
11880
+ code: z.ZodObject<{
11881
+ mode: z.ZodString;
11882
+ withdrawalRestricted: z.ZodBoolean;
11883
+ }, z.core.$strip>;
11884
+ }, z.core.$strip>, z.ZodObject<{
11885
+ type: z.ZodLiteral<"SERVICE">;
11886
+ service: z.ZodObject<{
11887
+ mode: z.ZodString;
11888
+ }, z.core.$strip>;
11889
+ }, z.core.$strip>, z.ZodObject<{
11890
+ type: z.ZodLiteral<"PICKUP">;
11891
+ pickup: z.ZodObject<{
11892
+ addressId: z.ZodNullable<z.ZodString>;
11893
+ }, z.core.$strip>;
11894
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
11895
+ type: z.ZodString;
11896
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
11897
+ [x: string]: unknown;
11898
+ type: string;
11899
+ }>>]>>;
10425
11900
  }, z.core.$strip>;
10426
11901
  export type OrderWebhookEventData = z.infer<typeof orderWebhookEventDataSchema>;
10427
11902
  /**
@@ -10442,8 +11917,45 @@ export declare const orderFulfilledWebhookEventDataSchema: z.ZodObject<{
10442
11917
  DELIVERED: "DELIVERED";
10443
11918
  PURCHASE_DECIDED: "PURCHASE_DECIDED";
10444
11919
  }>;
10445
- fulfillmentType: z.ZodString;
10446
- fulfillmentMode: z.ZodNullable<z.ZodString>;
11920
+ fulfillmentSnapshot: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
11921
+ type: z.ZodLiteral<"SHIPPING">;
11922
+ shipping: z.ZodObject<{
11923
+ bundleKey: z.ZodNullable<z.ZodString>;
11924
+ returnAddressId: z.ZodNullable<z.ZodString>;
11925
+ }, z.core.$strip>;
11926
+ }, z.core.$strip>, z.ZodObject<{
11927
+ type: z.ZodLiteral<"DOWNLOAD">;
11928
+ download: z.ZodObject<{
11929
+ limit: z.ZodNumber;
11930
+ days: z.ZodNumber;
11931
+ stockTracked: z.ZodBoolean;
11932
+ withdrawalRestricted: z.ZodBoolean;
11933
+ }, z.core.$strip>;
11934
+ }, z.core.$strip>, z.ZodObject<{
11935
+ type: z.ZodLiteral<"CODE">;
11936
+ code: z.ZodObject<{
11937
+ mode: z.ZodString;
11938
+ withdrawalRestricted: z.ZodBoolean;
11939
+ }, z.core.$strip>;
11940
+ }, z.core.$strip>, z.ZodObject<{
11941
+ type: z.ZodLiteral<"SERVICE">;
11942
+ service: z.ZodObject<{
11943
+ mode: z.ZodString;
11944
+ }, z.core.$strip>;
11945
+ }, z.core.$strip>, z.ZodObject<{
11946
+ type: z.ZodLiteral<"PICKUP">;
11947
+ pickup: z.ZodObject<{
11948
+ addressId: z.ZodNullable<z.ZodString>;
11949
+ }, z.core.$strip>;
11950
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
11951
+ type: z.ZodString;
11952
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
11953
+ [x: string]: unknown;
11954
+ type: string;
11955
+ }>>]>;
11956
+ fulfillment: z.ZodObject<{
11957
+ mode: z.ZodString;
11958
+ }, z.core.$strip>;
10447
11959
  fulfilledAt: z.ZodString;
10448
11960
  testPayment: z.ZodBoolean;
10449
11961
  }, z.core.$strip>;
@@ -10557,7 +12069,42 @@ export declare const orderWebhookEventSchema: z.ZodObject<{
10557
12069
  testPayment: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10558
12070
  couponDiscountAmount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
10559
12071
  orderItemId: z.ZodOptional<z.ZodString>;
10560
- fulfillmentType: z.ZodOptional<z.ZodString>;
12072
+ fulfillmentSnapshot: z.ZodOptional<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
12073
+ type: z.ZodLiteral<"SHIPPING">;
12074
+ shipping: z.ZodObject<{
12075
+ bundleKey: z.ZodNullable<z.ZodString>;
12076
+ returnAddressId: z.ZodNullable<z.ZodString>;
12077
+ }, z.core.$strip>;
12078
+ }, z.core.$strip>, z.ZodObject<{
12079
+ type: z.ZodLiteral<"DOWNLOAD">;
12080
+ download: z.ZodObject<{
12081
+ limit: z.ZodNumber;
12082
+ days: z.ZodNumber;
12083
+ stockTracked: z.ZodBoolean;
12084
+ withdrawalRestricted: z.ZodBoolean;
12085
+ }, z.core.$strip>;
12086
+ }, z.core.$strip>, z.ZodObject<{
12087
+ type: z.ZodLiteral<"CODE">;
12088
+ code: z.ZodObject<{
12089
+ mode: z.ZodString;
12090
+ withdrawalRestricted: z.ZodBoolean;
12091
+ }, z.core.$strip>;
12092
+ }, z.core.$strip>, z.ZodObject<{
12093
+ type: z.ZodLiteral<"SERVICE">;
12094
+ service: z.ZodObject<{
12095
+ mode: z.ZodString;
12096
+ }, z.core.$strip>;
12097
+ }, z.core.$strip>, z.ZodObject<{
12098
+ type: z.ZodLiteral<"PICKUP">;
12099
+ pickup: z.ZodObject<{
12100
+ addressId: z.ZodNullable<z.ZodString>;
12101
+ }, z.core.$strip>;
12102
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
12103
+ type: z.ZodString;
12104
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
12105
+ [x: string]: unknown;
12106
+ type: string;
12107
+ }>>]>>;
10561
12108
  }, z.core.$strip>;
10562
12109
  id: z.ZodString;
10563
12110
  createdAt: z.ZodString;
@@ -10579,8 +12126,45 @@ export declare const orderFulfilledWebhookEventSchema: z.ZodObject<{
10579
12126
  DELIVERED: "DELIVERED";
10580
12127
  PURCHASE_DECIDED: "PURCHASE_DECIDED";
10581
12128
  }>;
10582
- fulfillmentType: z.ZodString;
10583
- fulfillmentMode: z.ZodNullable<z.ZodString>;
12129
+ fulfillmentSnapshot: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
12130
+ type: z.ZodLiteral<"SHIPPING">;
12131
+ shipping: z.ZodObject<{
12132
+ bundleKey: z.ZodNullable<z.ZodString>;
12133
+ returnAddressId: z.ZodNullable<z.ZodString>;
12134
+ }, z.core.$strip>;
12135
+ }, z.core.$strip>, z.ZodObject<{
12136
+ type: z.ZodLiteral<"DOWNLOAD">;
12137
+ download: z.ZodObject<{
12138
+ limit: z.ZodNumber;
12139
+ days: z.ZodNumber;
12140
+ stockTracked: z.ZodBoolean;
12141
+ withdrawalRestricted: z.ZodBoolean;
12142
+ }, z.core.$strip>;
12143
+ }, z.core.$strip>, z.ZodObject<{
12144
+ type: z.ZodLiteral<"CODE">;
12145
+ code: z.ZodObject<{
12146
+ mode: z.ZodString;
12147
+ withdrawalRestricted: z.ZodBoolean;
12148
+ }, z.core.$strip>;
12149
+ }, z.core.$strip>, z.ZodObject<{
12150
+ type: z.ZodLiteral<"SERVICE">;
12151
+ service: z.ZodObject<{
12152
+ mode: z.ZodString;
12153
+ }, z.core.$strip>;
12154
+ }, z.core.$strip>, z.ZodObject<{
12155
+ type: z.ZodLiteral<"PICKUP">;
12156
+ pickup: z.ZodObject<{
12157
+ addressId: z.ZodNullable<z.ZodString>;
12158
+ }, z.core.$strip>;
12159
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
12160
+ type: z.ZodString;
12161
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
12162
+ [x: string]: unknown;
12163
+ type: string;
12164
+ }>>]>;
12165
+ fulfillment: z.ZodObject<{
12166
+ mode: z.ZodString;
12167
+ }, z.core.$strip>;
10584
12168
  fulfilledAt: z.ZodString;
10585
12169
  testPayment: z.ZodBoolean;
10586
12170
  }, z.core.$strip>;
@@ -10729,7 +12313,42 @@ export declare const webhookEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
10729
12313
  testPayment: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10730
12314
  couponDiscountAmount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
10731
12315
  orderItemId: z.ZodOptional<z.ZodString>;
10732
- fulfillmentType: z.ZodOptional<z.ZodString>;
12316
+ fulfillmentSnapshot: z.ZodOptional<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
12317
+ type: z.ZodLiteral<"SHIPPING">;
12318
+ shipping: z.ZodObject<{
12319
+ bundleKey: z.ZodNullable<z.ZodString>;
12320
+ returnAddressId: z.ZodNullable<z.ZodString>;
12321
+ }, z.core.$strip>;
12322
+ }, z.core.$strip>, z.ZodObject<{
12323
+ type: z.ZodLiteral<"DOWNLOAD">;
12324
+ download: z.ZodObject<{
12325
+ limit: z.ZodNumber;
12326
+ days: z.ZodNumber;
12327
+ stockTracked: z.ZodBoolean;
12328
+ withdrawalRestricted: z.ZodBoolean;
12329
+ }, z.core.$strip>;
12330
+ }, z.core.$strip>, z.ZodObject<{
12331
+ type: z.ZodLiteral<"CODE">;
12332
+ code: z.ZodObject<{
12333
+ mode: z.ZodString;
12334
+ withdrawalRestricted: z.ZodBoolean;
12335
+ }, z.core.$strip>;
12336
+ }, z.core.$strip>, z.ZodObject<{
12337
+ type: z.ZodLiteral<"SERVICE">;
12338
+ service: z.ZodObject<{
12339
+ mode: z.ZodString;
12340
+ }, z.core.$strip>;
12341
+ }, z.core.$strip>, z.ZodObject<{
12342
+ type: z.ZodLiteral<"PICKUP">;
12343
+ pickup: z.ZodObject<{
12344
+ addressId: z.ZodNullable<z.ZodString>;
12345
+ }, z.core.$strip>;
12346
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
12347
+ type: z.ZodString;
12348
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
12349
+ [x: string]: unknown;
12350
+ type: string;
12351
+ }>>]>>;
10733
12352
  }, z.core.$strip>;
10734
12353
  id: z.ZodString;
10735
12354
  createdAt: z.ZodString;
@@ -10750,8 +12369,45 @@ export declare const webhookEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
10750
12369
  DELIVERED: "DELIVERED";
10751
12370
  PURCHASE_DECIDED: "PURCHASE_DECIDED";
10752
12371
  }>;
10753
- fulfillmentType: z.ZodString;
10754
- fulfillmentMode: z.ZodNullable<z.ZodString>;
12372
+ fulfillmentSnapshot: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
12373
+ type: z.ZodLiteral<"SHIPPING">;
12374
+ shipping: z.ZodObject<{
12375
+ bundleKey: z.ZodNullable<z.ZodString>;
12376
+ returnAddressId: z.ZodNullable<z.ZodString>;
12377
+ }, z.core.$strip>;
12378
+ }, z.core.$strip>, z.ZodObject<{
12379
+ type: z.ZodLiteral<"DOWNLOAD">;
12380
+ download: z.ZodObject<{
12381
+ limit: z.ZodNumber;
12382
+ days: z.ZodNumber;
12383
+ stockTracked: z.ZodBoolean;
12384
+ withdrawalRestricted: z.ZodBoolean;
12385
+ }, z.core.$strip>;
12386
+ }, z.core.$strip>, z.ZodObject<{
12387
+ type: z.ZodLiteral<"CODE">;
12388
+ code: z.ZodObject<{
12389
+ mode: z.ZodString;
12390
+ withdrawalRestricted: z.ZodBoolean;
12391
+ }, z.core.$strip>;
12392
+ }, z.core.$strip>, z.ZodObject<{
12393
+ type: z.ZodLiteral<"SERVICE">;
12394
+ service: z.ZodObject<{
12395
+ mode: z.ZodString;
12396
+ }, z.core.$strip>;
12397
+ }, z.core.$strip>, z.ZodObject<{
12398
+ type: z.ZodLiteral<"PICKUP">;
12399
+ pickup: z.ZodObject<{
12400
+ addressId: z.ZodNullable<z.ZodString>;
12401
+ }, z.core.$strip>;
12402
+ }, z.core.$strip>], "type">, z.ZodPipe<z.ZodObject<{
12403
+ type: z.ZodString;
12404
+ }, z.core.$loose>, z.ZodTransform<UnknownFulfillment, {
12405
+ [x: string]: unknown;
12406
+ type: string;
12407
+ }>>]>;
12408
+ fulfillment: z.ZodObject<{
12409
+ mode: z.ZodString;
12410
+ }, z.core.$strip>;
10755
12411
  fulfilledAt: z.ZodString;
10756
12412
  testPayment: z.ZodBoolean;
10757
12413
  }, z.core.$strip>;