UNPKG

medusa-plugin-sendgrid-typescript

Version:
785 lines (784 loc) 32.2 kB
import SendGrid from "@sendgrid/mail"; import { AttachmentsArray, NewLineItem, SendGridData } from "../types/generic"; import { PluginOptions } from "../types"; import { AbstractNotificationService, CartService, ClaimService, FulfillmentProviderService, GiftCardService, LineItem, LineItemService, Logger, Order, OrderService, ProductVariantService, Return, ReturnItem, ReturnService, StoreService, SwapService, TotalsService } from "@medusajs/medusa"; export declare class SendGridService extends AbstractNotificationService { static identifier: string; options_: PluginOptions; storeService_: StoreService; lineItemService_: LineItemService; orderService_: OrderService; cartService_: CartService; claimService_: ClaimService; returnService_: ReturnService; swapService_: SwapService; fulfillmentService_: any; fulfillmentProviderService_: FulfillmentProviderService; totalsService_: TotalsService; productVariantService_: ProductVariantService; giftCardService_: GiftCardService; logger_: Logger; constructor({ storeService, orderService, returnService, swapService, cartService, lineItemService, claimService, fulfillmentService, fulfillmentProviderService, totalsService, productVariantService, giftCardService, logger, }: { storeService: StoreService; orderService: OrderService; returnService: ReturnService; swapService: SwapService; cartService: CartService; lineItemService: LineItemService; claimService: ClaimService; fulfillmentService: any; fulfillmentProviderService: FulfillmentProviderService; totalsService: TotalsService; productVariantService: ProductVariantService; giftCardService: GiftCardService; logger: Logger; }, options: PluginOptions); fetchAttachments(event: string, data?: Record<any, any>, attachmentGenerator?: any): Promise<AttachmentsArray[]>; fetchData(event: string, eventData: Record<string, unknown>, attachmentGenerator: any): Promise<Record<any, any>>; getLocalizedTemplateId(event: string, locale: string, subject?: boolean): string | null | undefined; getTemplateId(event: string, subject?: boolean): any; getSubjectVariable(template: string): string[]; sendNotification(event: string, eventData: Record<string, unknown>, attachmentGenerator?: any): Promise<{ to: any; status: any; data: { template_id: any; from: string | { name?: string | undefined; email: string; }; to: any; bcc: import("@sendgrid/helpers/classes/email-address").EmailData | import("@sendgrid/helpers/classes/email-address").EmailData[] | undefined; dynamic_template_data: Record<any, any>; has_attachments: boolean; }; }>; resendNotification(notification: SendGridData, config: { to?: string; }, attachmentGenerator?: any): Promise<{ to: string; status: string; data: Record<string, unknown>; }>; sendEmail(options: SendGrid.MailDataRequired | SendGrid.MailDataRequired[]): Promise<[SendGrid.ClientResponse, {}]>; orderShipmentCreatedData({ id, fulfillment_id }: Record<string, unknown>, attachmentGenerator?: any): Promise<{ locale: {} | null; order: Order; date: any; email: string; fulfillment: any; tracking_links: any; tracking_number: any; }>; orderCanceledData({ id }: Record<string, unknown>): Promise<{ locale: {} | null; has_discounts: number; has_gift_cards: number; date: string; items: { thumbnail: string; price: string; cart_id: string; cart: import("@medusajs/medusa").Cart; order_id: string | null; order: Order; swap_id: string; swap: import("@medusajs/medusa").Swap; claim_order_id: string; claim_order: import("@medusajs/medusa").ClaimOrder; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; adjustments: import("@medusajs/medusa").LineItemAdjustment[]; original_item_id?: string | null | undefined; order_edit_id?: string | null | undefined; order_edit?: import("@medusajs/medusa").OrderEdit | null | undefined; title: string; description: string | null; is_return: boolean; is_giftcard: boolean; should_merge: boolean; allow_discounts: boolean; has_shipping: boolean | null; unit_price: number; variant_id: string | null; variant: import("@medusajs/medusa").ProductVariant; product_id: string | null; quantity: number; fulfilled_quantity: number | null; returned_quantity: number | null; shipped_quantity: number | null; metadata: Record<string, unknown>; includes_tax: boolean; refundable?: number | null | undefined; subtotal?: number | null | undefined; tax_total?: number | null | undefined; total?: number | null | undefined; original_total?: number | null | undefined; original_tax_total?: number | null | undefined; discount_total?: number | null | undefined; raw_discount_total?: number | null | undefined; gift_card_total?: number | null | undefined; id: string; created_at: Date; updated_at: Date; }[]; discounts: { is_giftcard: boolean; code: string; descriptor: string; }[]; subtotal: string; gift_card_total: string; tax_total: string; discount_total: string; shipping_total: string; total: string; object: "order"; status: import("@medusajs/medusa").OrderStatus; fulfillment_status: import("@medusajs/medusa").FulfillmentStatus; payment_status: import("@medusajs/medusa").PaymentStatus; display_id: number; cart_id: string; cart: import("@medusajs/medusa").Cart; customer_id: string; customer: import("@medusajs/medusa").Customer; email: string; billing_address_id: string; billing_address: import("@medusajs/medusa").Address; shipping_address_id: string; shipping_address: import("@medusajs/medusa").Address; region_id: string; region: import("@medusajs/medusa").Region; currency_code: string; currency: import("@medusajs/medusa").Currency; tax_rate: number | null; gift_cards: import("@medusajs/medusa").GiftCard[]; shipping_methods: import("@medusajs/medusa").ShippingMethod[]; payments: import("@medusajs/medusa").Payment[]; fulfillments: import("@medusajs/medusa").Fulfillment[]; returns: Return[]; claims: import("@medusajs/medusa").ClaimOrder[]; refunds: import("@medusajs/medusa").Refund[]; swaps: import("@medusajs/medusa").Swap[]; draft_order_id: string; draft_order: import("@medusajs/medusa").DraftOrder; edits: import("@medusajs/medusa").OrderEdit[]; gift_card_transactions: import("@medusajs/medusa").GiftCardTransaction[]; canceled_at: Date; metadata: Record<string, unknown>; no_notification: boolean; idempotency_key: string; external_id: string | null; sales_channel_id: string | null; sales_channel: import("@medusajs/medusa").SalesChannel; sales_channels?: import("@medusajs/medusa").SalesChannel[] | undefined; shipping_tax_total: number | null; raw_discount_total: number; item_tax_total: number | null; refunded_total: number; paid_total: number; refundable_amount: number; gift_card_tax_total: number; returnable_items?: LineItem[] | undefined; id: string; created_at: Date; updated_at: Date; }>; orderPlacedData({ id }: Record<string, unknown>): Promise<{ locale: {} | null; has_discounts: number; has_gift_cards: number; date: string; items: NewLineItem[]; discounts: { is_giftcard: boolean; code: string; descriptor: string; }[]; subtotal_ex_tax: string; subtotal: string; gift_card_total: string; tax_total: string; discount_total: string; shipping_total: string; total: string; object: "order"; status: import("@medusajs/medusa").OrderStatus; fulfillment_status: import("@medusajs/medusa").FulfillmentStatus; payment_status: import("@medusajs/medusa").PaymentStatus; display_id: number; cart_id: string; cart: import("@medusajs/medusa").Cart; customer_id: string; customer: import("@medusajs/medusa").Customer; email: string; billing_address_id: string; billing_address: import("@medusajs/medusa").Address; shipping_address_id: string; shipping_address: import("@medusajs/medusa").Address; region_id: string; region: import("@medusajs/medusa").Region; currency_code: string; currency: import("@medusajs/medusa").Currency; tax_rate: number | null; gift_cards: import("@medusajs/medusa").GiftCard[]; shipping_methods: import("@medusajs/medusa").ShippingMethod[]; payments: import("@medusajs/medusa").Payment[]; fulfillments: import("@medusajs/medusa").Fulfillment[]; returns: Return[]; claims: import("@medusajs/medusa").ClaimOrder[]; refunds: import("@medusajs/medusa").Refund[]; swaps: import("@medusajs/medusa").Swap[]; draft_order_id: string; draft_order: import("@medusajs/medusa").DraftOrder; edits: import("@medusajs/medusa").OrderEdit[]; gift_card_transactions: import("@medusajs/medusa").GiftCardTransaction[]; canceled_at: Date; metadata: Record<string, unknown>; no_notification: boolean; idempotency_key: string; external_id: string | null; sales_channel_id: string | null; sales_channel: import("@medusajs/medusa").SalesChannel; sales_channels?: import("@medusajs/medusa").SalesChannel[] | undefined; shipping_tax_total: number | null; raw_discount_total: number; item_tax_total: number | null; refunded_total: number; paid_total: number; refundable_amount: number; gift_card_tax_total: number; returnable_items?: LineItem[] | undefined; id: string; created_at: Date; updated_at: Date; }>; gcCreatedData({ id }: Record<string, unknown>): Promise<{ locale: {} | null; email: unknown; display_value: string; message: unknown; code: string; value: number; balance: number; region_id: string; region: import("@medusajs/medusa").Region; order_id: string; order: Order; is_disabled: boolean; ends_at: Date; tax_rate: number | null; metadata: Record<string, unknown>; deleted_at: Date | null; id: string; created_at: Date; updated_at: Date; }>; returnRequestedData({ id, return_id }: Record<string, unknown>): Promise<{ locale: {} | null; has_shipping: boolean; email: string; items: (Omit<ReturnItem, "beforeUpdate" | "afterUpdateOrLoad"> & { totals: any; price: string; tax_lines: any; thumbnail: string; })[]; subtotal: string; shipping_total: string; refund_amount: string; return_request: { refund_amount: string; status: import("@medusajs/medusa").ReturnStatus; items: ReturnItem[]; swap_id: string | null; swap: import("@medusajs/medusa").Swap; claim_order_id: string | null; claim_order: import("@medusajs/medusa").ClaimOrder; order_id: string | null; order: Order; shipping_method: import("@medusajs/medusa").ShippingMethod; location_id: string | null; shipping_data: Record<string, unknown>; received_at: Date; no_notification: boolean | null; metadata: Record<string, unknown> | null; idempotency_key: string | null; id: string; created_at: Date; updated_at: Date; }; order: Order; date: string; }>; swapReceivedData({ id }: Record<string, unknown>): Promise<{ locale: {} | null; swap: import("@medusajs/medusa").Swap; order: Order; return_request: Return; date: string; swap_link: string; email: string; items: { totals: { unit_price: number; quantity: number; subtotal: number; tax_total: number; total: number; original_total: number; original_tax_total: number; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; discount_total: number; raw_discount_total: number; }; price: string; cart_id: string; cart: import("@medusajs/medusa").Cart; order_id: string | null; order: Order; swap_id: string; swap: import("@medusajs/medusa").Swap; claim_order_id: string; claim_order: import("@medusajs/medusa").ClaimOrder; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; adjustments: import("@medusajs/medusa").LineItemAdjustment[]; original_item_id?: string | null | undefined; order_edit_id?: string | null | undefined; order_edit?: import("@medusajs/medusa").OrderEdit | null | undefined; title: string; description: string | null; thumbnail: string | null; is_return: boolean; is_giftcard: boolean; should_merge: boolean; allow_discounts: boolean; has_shipping: boolean | null; unit_price: number; variant_id: string | null; variant: import("@medusajs/medusa").ProductVariant; product_id: string | null; quantity: number; fulfilled_quantity: number | null; returned_quantity: number | null; shipped_quantity: number | null; metadata: Record<string, unknown>; includes_tax: boolean; refundable?: number | null | undefined; subtotal?: number | null | undefined; tax_total?: number | null | undefined; total?: number | null | undefined; original_total?: number | null | undefined; original_tax_total?: number | null | undefined; discount_total?: number | null | undefined; raw_discount_total?: number | null | undefined; gift_card_total?: number | null | undefined; id: string; created_at: Date; updated_at: Date; }[]; return_items: { totals: { unit_price: number; quantity: number; subtotal: number; tax_total: number; total: number; original_total: number; original_tax_total: number; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; discount_total: number; raw_discount_total: number; }; price: string; cart_id: string; cart: import("@medusajs/medusa").Cart; order_id: string | null; order: Order; swap_id: string; swap: import("@medusajs/medusa").Swap; claim_order_id: string; claim_order: import("@medusajs/medusa").ClaimOrder; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; adjustments: import("@medusajs/medusa").LineItemAdjustment[]; original_item_id?: string | null | undefined; order_edit_id?: string | null | undefined; order_edit?: import("@medusajs/medusa").OrderEdit | null | undefined; title: string; description: string | null; thumbnail: string | null; is_return: boolean; is_giftcard: boolean; should_merge: boolean; allow_discounts: boolean; has_shipping: boolean | null; unit_price: number; variant_id: string | null; variant: import("@medusajs/medusa").ProductVariant; product_id: string | null; quantity: number; fulfilled_quantity: number | null; returned_quantity: number | null; shipped_quantity: number | null; metadata: Record<string, unknown>; includes_tax: boolean; refundable?: number | null | undefined; subtotal?: number | null | undefined; tax_total?: number | null | undefined; total?: number | null | undefined; original_total?: number | null | undefined; original_tax_total?: number | null | undefined; discount_total?: number | null | undefined; raw_discount_total?: number | null | undefined; gift_card_total?: number | null | undefined; id: string; created_at: Date; updated_at: Date; }[]; return_total: string; tax_total: string; refund_amount: string; additional_total: string; }>; swapCreatedData({ id }: Record<string, unknown>): Promise<{ locale: {} | null; swap: import("@medusajs/medusa").Swap; order: Order; return_request: Omit<Return, "items"> & { items: (Omit<ReturnItem, "item"> & { item?: LineItem | undefined; })[]; }; date: string; swap_link: string | undefined; email: string; items: { totals: { unit_price: number; quantity: number; subtotal: number; tax_total: number; total: number; original_total: number; original_tax_total: number; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; discount_total: number; raw_discount_total: number; }; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; price: string; discounted_price: string; cart_id: string; cart: import("@medusajs/medusa").Cart; order_id: string | null; order: Order; swap_id: string; swap: import("@medusajs/medusa").Swap; claim_order_id: string; claim_order: import("@medusajs/medusa").ClaimOrder; adjustments: import("@medusajs/medusa").LineItemAdjustment[]; original_item_id?: string | null | undefined; order_edit_id?: string | null | undefined; order_edit?: import("@medusajs/medusa").OrderEdit | null | undefined; title: string; description: string | null; thumbnail: string | null; is_return: boolean; is_giftcard: boolean; should_merge: boolean; allow_discounts: boolean; has_shipping: boolean | null; unit_price: number; variant_id: string | null; variant: import("@medusajs/medusa").ProductVariant; product_id: string | null; quantity: number; fulfilled_quantity: number | null; returned_quantity: number | null; shipped_quantity: number | null; metadata: Record<string, unknown>; includes_tax: boolean; refundable?: number | null | undefined; subtotal?: number | null | undefined; tax_total?: number | null | undefined; total?: number | null | undefined; original_total?: number | null | undefined; original_tax_total?: number | null | undefined; discount_total?: number | null | undefined; raw_discount_total?: number | null | undefined; gift_card_total?: number | null | undefined; id: string; created_at: Date; updated_at: Date; }[]; return_items: { totals: { unit_price: number; quantity: number; subtotal: number; tax_total: number; total: number; original_total: number; original_tax_total: number; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; discount_total: number; raw_discount_total: number; }; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; price: string; discounted_price: string; cart_id: string; cart: import("@medusajs/medusa").Cart; order_id: string | null; order: Order; swap_id: string; swap: import("@medusajs/medusa").Swap; claim_order_id: string; claim_order: import("@medusajs/medusa").ClaimOrder; adjustments: import("@medusajs/medusa").LineItemAdjustment[]; original_item_id?: string | null | undefined; order_edit_id?: string | null | undefined; order_edit?: import("@medusajs/medusa").OrderEdit | null | undefined; title: string; description: string | null; thumbnail: string | null; is_return: boolean; is_giftcard: boolean; should_merge: boolean; allow_discounts: boolean; has_shipping: boolean | null; unit_price: number; variant_id: string | null; variant: import("@medusajs/medusa").ProductVariant; product_id: string | null; quantity: number; fulfilled_quantity: number | null; returned_quantity: number | null; shipped_quantity: number | null; metadata: Record<string, unknown>; includes_tax: boolean; refundable?: number | null | undefined; subtotal?: number | null | undefined; tax_total?: number | null | undefined; total?: number | null | undefined; original_total?: number | null | undefined; original_tax_total?: number | null | undefined; discount_total?: number | null | undefined; raw_discount_total?: number | null | undefined; gift_card_total?: number | null | undefined; id: string; created_at: Date; updated_at: Date; }[]; return_total: string; refund_amount: string; additional_total: string; }>; itemsReturnedData(data: Record<string, unknown>): Promise<{ locale: {} | null; has_shipping: boolean; email: string; items: (Omit<ReturnItem, "beforeUpdate" | "afterUpdateOrLoad"> & { totals: any; price: string; tax_lines: any; thumbnail: string; })[]; subtotal: string; shipping_total: string; refund_amount: string; return_request: { refund_amount: string; status: import("@medusajs/medusa").ReturnStatus; items: ReturnItem[]; swap_id: string | null; swap: import("@medusajs/medusa").Swap; claim_order_id: string | null; claim_order: import("@medusajs/medusa").ClaimOrder; order_id: string | null; order: Order; shipping_method: import("@medusajs/medusa").ShippingMethod; location_id: string | null; shipping_data: Record<string, unknown>; received_at: Date; no_notification: boolean | null; metadata: Record<string, unknown> | null; idempotency_key: string | null; id: string; created_at: Date; updated_at: Date; }; order: Order; date: string; }>; swapShipmentCreatedData({ id, fulfillment_id }: Record<string, unknown>): Promise<{ locale: {} | null; swap: import("@medusajs/medusa").Swap; order: Order; items: { thumbnail: string; price: string; discounted_price: string; quantity: number; cart_id: string; cart: import("@medusajs/medusa").Cart; order_id: string | null; order: Order; swap_id: string; swap: import("@medusajs/medusa").Swap; claim_order_id: string; claim_order: import("@medusajs/medusa").ClaimOrder; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; adjustments: import("@medusajs/medusa").LineItemAdjustment[]; original_item_id?: string | null | undefined; order_edit_id?: string | null | undefined; order_edit?: import("@medusajs/medusa").OrderEdit | null | undefined; title: string; description: string | null; is_return: boolean; is_giftcard: boolean; should_merge: boolean; allow_discounts: boolean; has_shipping: boolean | null; unit_price: number; variant_id: string | null; variant: import("@medusajs/medusa").ProductVariant; product_id: string | null; fulfilled_quantity: number | null; returned_quantity: number | null; shipped_quantity: number | null; metadata: Record<string, unknown>; includes_tax: boolean; refundable?: number | null | undefined; subtotal?: number | null | undefined; tax_total?: number | null | undefined; total?: number | null | undefined; original_total?: number | null | undefined; original_tax_total?: number | null | undefined; discount_total?: number | null | undefined; raw_discount_total?: number | null | undefined; gift_card_total?: number | null | undefined; id: string; created_at: Date; updated_at: Date; }[]; date: string; email: string; tax_amount: string; paid_total: string; return_total: string; refund_amount: string; additional_total: string; fulfillment: any; tracking_links: any; tracking_number: any; }>; claimShipmentCreatedData({ id, fulfillment_id }: Record<string, unknown>): Promise<{ locale: {} | null; email: string; claim: import("@medusajs/medusa").ClaimOrder; order: Order; fulfillment: any; tracking_links: any; tracking_number: any; }>; restockNotificationData({ variant_id, emails }: Record<string, unknown>): Promise<{ product: { thumbnail: string | null; title: string; subtitle: string | null; description: string | null; handle: string | null; is_giftcard: boolean; status: import("@medusajs/medusa").ProductStatus; images: import("@medusajs/medusa").Image[]; options: import("@medusajs/medusa").ProductOption[]; variants: import("@medusajs/medusa").ProductVariant[]; categories: import("@medusajs/medusa").ProductCategory[]; profile_id: string; profile: import("@medusajs/medusa").ShippingProfile; profiles: import("@medusajs/medusa").ShippingProfile[]; weight: number | null; length: number | null; height: number | null; width: number | null; hs_code: string | null; origin_country: string | null; mid_code: string | null; material: string | null; collection_id: string | null; collection: import("@medusajs/medusa").ProductCollection; type_id: string | null; type: import("@medusajs/medusa").ProductType; tags: import("@medusajs/medusa").ProductTag[]; discountable: boolean; external_id: string | null; metadata: Record<string, unknown> | null; sales_channels: import("@medusajs/medusa").SalesChannel[]; deleted_at: Date | null; id: string; created_at: Date; updated_at: Date; }; variant: import("@medusajs/medusa").ProductVariant; variant_id: string; emails: unknown; }>; userPasswordResetData(data: Record<string, unknown>): Record<string, unknown>; customerPasswordResetData(data: Record<string, unknown>): Record<string, unknown>; orderRefundCreatedData({ id, refund_id }: Record<string, unknown>): Promise<{ order: Order; refund: import("@medusajs/medusa").Refund | undefined; refund_amount: string; email: string; }>; processItems_(items: LineItem[], taxRate: number, currencyCode: string): { thumbnail: string; price: string; cart_id: string; cart: import("@medusajs/medusa").Cart; order_id: string | null; order: Order; swap_id: string; swap: import("@medusajs/medusa").Swap; claim_order_id: string; claim_order: import("@medusajs/medusa").ClaimOrder; tax_lines: import("@medusajs/medusa").LineItemTaxLine[]; adjustments: import("@medusajs/medusa").LineItemAdjustment[]; original_item_id?: string | null | undefined; order_edit_id?: string | null | undefined; order_edit?: import("@medusajs/medusa").OrderEdit | null | undefined; title: string; description: string | null; is_return: boolean; is_giftcard: boolean; should_merge: boolean; allow_discounts: boolean; has_shipping: boolean | null; unit_price: number; variant_id: string | null; variant: import("@medusajs/medusa").ProductVariant; product_id: string | null; quantity: number; fulfilled_quantity: number | null; returned_quantity: number | null; shipped_quantity: number | null; metadata: Record<string, unknown>; includes_tax: boolean; refundable?: number | null | undefined; subtotal?: number | null | undefined; tax_total?: number | null | undefined; total?: number | null | undefined; original_total?: number | null | undefined; original_tax_total?: number | null | undefined; discount_total?: number | null | undefined; raw_discount_total?: number | null | undefined; gift_card_total?: number | null | undefined; id: string; created_at: Date; updated_at: Date; }[]; humanPrice_(amount: number | null | undefined, currency: string): string; normalizeThumbUrl_(url?: string | null): string; extractLocale(fromOrder: Order): Promise<{} | null>; } export default SendGridService;