import { BuymaOrderEntity, BuymaOrderStatus, BuymaProcurementWorkStatus } from '@yolo-croket-dev/entity-v2'; export declare class BuymaMoneyPayload { amount: number; currency: string; } export declare class BuymaRecipientPayload { name?: string | null; phone?: string | null; countryCode?: string | null; postalCode?: string | null; address1?: string | null; address2?: string | null; address3?: string | null; address4?: string | null; } export declare class BuymaProductMetadataPayload { storeName?: string | null; sourceCountry?: string | null; croketName?: string | null; buymaName?: string | null; brandName?: string | null; optionName?: string | null; weightGrams?: number | null; croketItemUrl?: string | null; buymaItemUrl?: string | null; } export declare class BuymaLocalShipmentPayload { invoiceRegisteredAt?: string | null; carrierName?: string | null; trackingNumber?: string | null; } export declare class BuymaProcurementDetailsPayload { croketProductPrice?: BuymaMoneyPayload | null; croketShippingCost?: BuymaMoneyPayload | null; purchaseCost?: BuymaMoneyPayload | null; sellerSettlementCost?: BuymaMoneyPayload | null; localShipment?: BuymaLocalShipmentPayload | null; } export declare class BuymaInternationalShipmentPayload { carrierName: string; trackingNumber: string; trackingUrl?: string | null; shippingCost?: BuymaMoneyPayload | null; } export declare class BuymaManualFieldsPayload { buyerName?: string | null; recipient?: BuymaRecipientPayload; productMetadata?: BuymaProductMetadataPayload; productRevenue?: BuymaMoneyPayload | null; shippingRevenue?: BuymaMoneyPayload | null; reportedTotalRevenue?: BuymaMoneyPayload | null; procurementWorkStatus?: BuymaProcurementWorkStatus; procurementDetails?: BuymaProcurementDetailsPayload; internationalShipment?: BuymaInternationalShipmentPayload | null; stockSecuredNotified?: boolean | null; memo?: string | null; slackThreadUrls?: string[]; } export declare class BuymaOrderCommandPayload { orderId: string; expectedRevision: number; /** Gateway가 인증된 관리자에서 채운다. HTTP body의 값은 사용하지 않는다. */ actorId: string; /** 생략하면 서버가 변경 내용을 자동 기록한다. */ reason?: string; } export declare class UpdateBuymaOrderPayload extends BuymaOrderCommandPayload { fields: BuymaManualFieldsPayload; } export declare class ConfirmBuymaPaymentPayload extends BuymaOrderCommandPayload { operation?: 'CONFIRM' | 'REVOKE'; confirmationEventId?: string; paidAt?: string | null; } export declare class ConnectBuymaProcurementPayload extends BuymaOrderCommandPayload { operation?: 'LINK' | 'REPLACE' | 'RELEASE'; croketOptionName?: string; /** 이전 클라이언트 호환용. 재사용 확인 절차는 요구하지 않는다. */ stockReusableConfirmed?: boolean; /** 이전 클라이언트 호환용. 기존 옵션 입력은 요구하지 않는다. */ previousCroketOptionName?: string; source: 'CROKET' | 'MANUAL'; orderUrl: string; purchasedInfoId?: string; alternative?: boolean; /** 이전 클라이언트 호환용. 상품·수량 확인 체크는 요구하지 않는다. */ productAndOptionConfirmed?: boolean; purchaseCost?: BuymaMoneyPayload | null; } export declare class ChangeBuymaOrderStatusPayload extends BuymaOrderCommandPayload { orderStatus: BuymaOrderStatus; /** 이전 클라이언트 호환용. 상태 선택은 별도 수량 확인 없이 기록한다. */ fullQuantityDelivered?: boolean; deliveredAt?: string | null; } export declare class RecordBuymaRefundPayload extends BuymaOrderCommandPayload { amount: BuymaMoneyPayload; refundedAt: string; /** 이전 클라이언트 호환용. 별도 전체 환불 확인 체크는 요구하지 않는다. */ fullRefundConfirmed?: boolean; } export declare class ReceiveBuymaWebhookPayload { buymaAccountId: string; eventType: 'order/create' | 'order/update'; rawJson: string; rawSha256: string; } export interface UpdateBuymaOrderResult { item: BuymaOrderEntity; } export interface ReceiveBuymaWebhookResult { orderId: string; duplicate: boolean; result: 'APPLIED' | 'EXCLUDED'; }