{"version":3,"sources":["libs/galaxy/alert/src/alert.component.ts","libs/galaxy/alert/src/alert.component.html","node_modules/@angular/material/fesm2022/select.mjs","node_modules/@angular/material/fesm2022/divider.mjs","libs/galaxy/alert/src/directives/alert-extended.directive.ts","libs/galaxy/alert/src/alert.module.ts","libs/galaxy/alert/public_api.ts","libs/galaxy/alert/index.ts","node_modules/@vendasta/billing/fesm2022/vendasta-billing.mjs","libs/billing/src/lib/payment/payment-facilitator-type.ts","libs/billing/src/lib/core/sort-direction.ts","libs/billing/src/lib/core/paged-response.ts","libs/billing/src/lib/core/index.ts","libs/billing/src/lib/applied_bundle/applied_bundle.ts","libs/billing/src/lib/applied_bundle/index.ts","libs/billing/src/lib/discount/discount_type.ts","libs/billing/src/lib/discount/discount.ts","libs/billing/src/lib/discount/discount_consumer.ts","libs/billing/src/lib/discount/discount.service.ts","libs/billing/src/lib/discount/index.ts","libs/billing/src/lib/applied_discount/applied_discount.ts","libs/billing/src/lib/applied_discount/index.ts","libs/billing/src/lib/bank_account/bank_account.ts","libs/billing/src/lib/bank_account/bank-account.service.ts","libs/billing/src/lib/bank_account/index.ts","libs/billing/src/lib/pricing/billing-strategy.ts","libs/billing/src/lib/pricing/currency.ts","libs/billing/src/lib/pricing/frequency.ts","libs/billing/src/lib/pricing/product-pricing-rules.ts","libs/billing/src/lib/pricing/product-pricing-type.ts","libs/billing/src/lib/pricing/commitment.ts","libs/billing/src/lib/pricing/fee.ts","libs/billing/src/lib/pricing/pricing-plan-product.ts","libs/billing/src/lib/pricing/product-pricing.ts","libs/billing/src/lib/pricing/wholesale-pricing.service.ts","libs/billing/src/lib/pricing/retail-pricing.service.ts","libs/billing/src/lib/pricing/pricing-plan.ts","libs/billing/src/lib/pricing/pricing-plan.service.ts","libs/billing/src/lib/pricing/list-pricing-plan-product-filter.ts","libs/billing/src/lib/pricing/status.ts","libs/billing/src/lib/pricing/source.ts","libs/billing/src/lib/pricing/index.ts","libs/billing/src/lib/bank_reconciliation/index.ts","libs/billing/src/lib/shared/time-helper.ts","libs/billing/src/lib/billable-item/billable-item.ts","libs/billing/src/lib/billable-item/index.ts","libs/billing/src/lib/http-shared/error-handlers.ts","libs/billing/src/lib/revenue/revenue.service.ts","libs/billing/src/lib/merchant-report/merchant-report.service.ts","libs/billing/src/lib/purchase/purchase_status.ts","libs/billing/src/lib/purchase/purchase.ts","libs/billing/src/lib/customer_summary/customer-summary.ts","libs/billing/src/lib/contract/dimension.ts","libs/billing/src/lib/contract/contract.ts","libs/billing/src/lib/contract/contract.service.ts","libs/billing/src/lib/contract/mutations.ts","libs/billing/src/lib/contract/index.ts","libs/billing/src/lib/product/product.ts","libs/billing/src/lib/product/list-products.ts","libs/billing/src/lib/billing.service.ts","libs/billing/src/lib/payment/payment-source.ts","libs/billing/src/lib/payment/payment-status.ts","libs/billing/src/lib/payment/payment-allocation-type.ts","libs/billing/src/lib/payment/payment.ts","libs/billing/src/lib/payment/provider-determinant.ts","libs/billing/src/lib/payment-card/payment-card.ts","libs/billing/src/lib/payment-card/index.ts","libs/billing/src/lib/payment/retail-payment.ts","libs/billing/src/lib/payment/retail-status.ts","libs/billing/src/lib/payment/transaction.ts","libs/billing/src/lib/payment/index.ts","libs/billing/src/lib/stripe.service.ts","libs/billing/src/lib/bundle/index.ts","libs/billing/src/lib/contract-document/index.ts","libs/billing/src/lib/credit/index.ts","node_modules/@vendasta/sso/fesm2020/vendasta-sso.mjs","node_modules/@vendasta/url-shortener/fesm2020/vendasta-url-shortener.mjs","libs/billing/src/lib/retail-customer-configuration/retail-customer-configuration.ts","libs/billing/src/lib/retail-customer-configuration/retail-customer-configuration.service.ts","libs/billing/src/lib/retail-customer-configuration/index.ts","libs/billing/src/lib/note/note.ts","libs/billing/src/lib/tax-rate/tax-rate.ts","libs/billing/src/lib/tax-rate/tax-rate.service.ts","libs/billing/src/lib/tax-rate/index.ts","libs/billing/src/lib/invoice/invoice.ts","libs/billing/src/lib/invoice/invoice.service.ts","libs/billing/src/lib/recurring_invoice/index.ts","libs/billing/src/lib/invoice/index.ts","libs/billing/src/lib/credit-note/credit-note.ts","libs/billing/src/lib/credit-note/index.ts","libs/billing/src/lib/merchant/merchant.ts","libs/billing/src/lib/merchant/payout-summary.ts","libs/billing/src/lib/merchant/retail-configuration.ts","libs/billing/src/lib/merchant/merchant.service.ts","libs/billing/src/lib/merchant/index.ts","libs/billing/src/lib/merchant-report/index.ts","libs/billing/src/lib/payment-method/payment-method.ts","libs/billing/src/lib/payment-method/payment-method.service.ts","libs/billing/src/lib/payment-method/index.ts","libs/billing/src/lib/product/index.ts","libs/billing/src/lib/product-summary/subscription-retention.ts","libs/billing/src/lib/product-summary/index.ts","libs/billing/src/lib/purchase/index.ts","libs/billing/src/lib/refund/refund.ts","libs/billing/src/lib/refund/refund.service.ts","libs/billing/src/lib/refund/index.ts","libs/billing/src/lib/revenue/index.ts","libs/billing/src/lib/sales-credit-note/index.ts","libs/billing/src/lib/sales-invoice/index.ts","libs/billing/src/lib/sku.ts","libs/billing/src/lib/stripe-file/index.ts","libs/billing/src/lib/subscription/index.ts","libs/billing/src/lib/interval-mapping.service.ts","libs/billing/src/lib/constants.ts","libs/billing/src/lib/assets/i18n/en_devel.json","libs/billing/src/lib/i18n/billing-i18n.module.ts","libs/billing/src/lib/i18n/index.ts","libs/billing/src/lib/index.ts","libs/billing/src/lib/payment/dispute.ts","libs/billing/src/lib/payment/payment.service.ts","libs/billing/src/index.ts","libs/shared/general/src/lib/display.price.ts","libs/shared/general/src/lib/remove-google-translated-content.ts","libs/shared/general/src/lib/remove-google-translated-content.pipe.ts","libs/shared/general/src/lib/display-price.service.ts","libs/shared/general/src/lib/display-price.pipe.ts","libs/shared/general/src/lib/assets/i18n/en.json","libs/shared/general/src/lib/shared.module.ts","node_modules/capacitor-native-settings/dist/esm/definitions.js","node_modules/capacitor-native-settings/dist/esm/index.js","libs/shared/general/src/lib/mobile.ts","node_modules/firebase/messaging/dist/esm/index.esm.js","libs/shared/general/src/lib/pwa.ts","libs/shared/general/src/lib/validator.ts","libs/shared/general/src/lib/verrors.ts","libs/shared/general/src/lib/contract-pricing/billing-model.ts","libs/shared/general/src/lib/contract-pricing/billed-product.ts","libs/shared/general/src/lib/contract-pricing/index.ts","libs/shared/general/src/lib/url-helper.ts","libs/shared/general/src/lib/index.ts","libs/shared/general/src/index.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { booleanAttribute, Component, computed, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\n\nexport type AlertTypes = 'tip' | 'info' | 'warning' | 'success' | 'error' | 'important';\n\nexport type AlertSizes = 'large' | 'small';\n\nconst alertTypeIcons: Record = {\n tip: 'info_outline',\n info: 'info',\n warning: 'warning',\n success: 'check',\n error: 'error',\n important: 'info_outline',\n};\n\n@Component({\n selector: 'glxy-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss', './alert-type-colors.scss'],\n imports: [CommonModule, MatIconModule, RouterModule, MatButtonModule],\n // TODO: Remove directive host when Angular adds support for direct host binding against signals.\n host: {\n '[class.has-border]': 'border()',\n '[class.has-border-radius]': 'borderRadius()',\n '[class.extended-has-border]': 'extendedBorder()',\n '[class]': 'alertClass()',\n },\n})\nexport class AlertComponent {\n // Choose the alert appearance and icon (default: info)\n readonly type = input('info');\n\n // solid color alert appearance for more impact (default: false)\n readonly solidColor = input(false, { transform: booleanAttribute });\n\n // use a custom mat-icon (optional)\n readonly icon = input(undefined);\n\n // use a custom svg icon (optional)\n readonly svgIcon = input(undefined);\n\n // select the size of the alert (default: large)\n readonly size = input('large');\n\n // show or hide close button (default: false)\n readonly showClose = input(false, { transform: booleanAttribute });\n\n // show or hide icon (default: true)\n readonly showIcon = input(true, { transform: booleanAttribute });\n\n // custom close button text (default: Dismiss)\n readonly closeTitle = input('Dismiss');\n\n // show or hide action button (default: false)\n readonly showAction = input(false, { transform: booleanAttribute });\n\n // action button title text (default: Action Button)\n readonly actionTitle = input('Action Button');\n\n // router link to navigate to when button clicked\n readonly actionRouterLink = input(undefined);\n\n // external url to open in new tab when button clicked\n readonly actionExternalLink = input(undefined);\n\n // show or hide mobile view (default: false)\n readonly stackedView = input(false, { transform: booleanAttribute });\n\n // Hide or show the border on regular alert appearance (default: true)\n readonly border = input(true, { transform: booleanAttribute });\n\n // Enable or disable the border-radius on the alert (default: true)\n readonly borderRadius = input(true, { transform: booleanAttribute });\n\n // Hide or show the border on regular alert appearance (default: true)\n readonly extendedBorder = input(true, { transform: booleanAttribute });\n\n // event emitted when clicking the close button\n readonly close = output();\n\n // event emmited when action button clicked\n readonly actionClick = output();\n\n // add class for alert type and appearance\n private alertClass = computed(\n () => `glxy-alert alert-${this.type()}${this.solidColor() ? '-solid' : ''} alert-size-${this.size()}`,\n );\n\n // if user specifies custom mat-icon, use that.\n // If no custom icon, show icons that matches alert type.\n protected get currentIcon(): string | null {\n if (this.svgIcon()) {\n return null;\n }\n\n return this.icon() ?? alertTypeIcons[this.type()];\n }\n}\n","
\n @if (showIcon()) {\n
\n \n {{ this.currentIcon }}\n \n
\n }\n\n
\n \n
\n\n @if (showAction()) {\n
\n @if (actionExternalLink()) {\n \n {{ this.actionTitle() }}\n \n } @else {\n \n }\n
\n }\n\n @if (showClose()) {\n
\n \n
\n }\n
\n\n
\n \n
\n\n@if (showAction()) {\n
\n @if (actionExternalLink()) {\n \n {{ this.actionTitle() }}\n \n } @else {\n \n }\n
\n}\n\n@if (showClose()) {\n
\n \n
\n}\n","import { Overlay, CdkOverlayOrigin, CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, ChangeDetectorRef, ElementRef, EventEmitter, HostAttributeToken, booleanAttribute, numberAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, ContentChild, Input, ViewChild, Output, Directive, NgModule } from '@angular/core';\nimport { _countGroupLabelsBeforeOption, _getOptionScrollPosition, ErrorStateMatcher, _ErrorStateTracker, MAT_OPTION_PARENT_COMPONENT, MatOption, MAT_OPTGROUP, MatOptionModule, MatCommonModule } from '@angular/material/core';\nconst _c0 = [\"trigger\"];\nconst _c1 = [\"panel\"];\nconst _c2 = [[[\"mat-select-trigger\"]], \"*\"];\nconst _c3 = [\"mat-select-trigger\", \"*\"];\nfunction MatSelect_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 4);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.placeholder);\n }\n}\nfunction MatSelect_Conditional_5_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0);\n }\n}\nfunction MatSelect_Conditional_5_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 11);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.triggerValue);\n }\n}\nfunction MatSelect_Conditional_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵtemplate(1, MatSelect_Conditional_5_Conditional_1_Template, 1, 0)(2, MatSelect_Conditional_5_Conditional_2_Template, 2, 1, \"span\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx_r1.customTrigger ? 1 : 2);\n }\n}\nfunction MatSelect_ng_template_10_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 12, 1);\n i0.ɵɵlistener(\"@transformPanel.done\", function MatSelect_ng_template_10_Template_div_animation_transformPanel_done_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._panelDoneAnimatingStream.next($event.toState));\n })(\"keydown\", function MatSelect_ng_template_10_Template_div_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._handleKeydown($event));\n });\n i0.ɵɵprojection(2, 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMapInterpolate1(\"mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open \", ctx_r1._getPanelTheme(), \"\");\n i0.ɵɵproperty(\"ngClass\", ctx_r1.panelClass)(\"@transformPanel\", \"showing\");\n i0.ɵɵattribute(\"id\", ctx_r1.id + \"-panel\")(\"aria-multiselectable\", ctx_r1.multiple)(\"aria-label\", ctx_r1.ariaLabel || null)(\"aria-labelledby\", ctx_r1._getPanelAriaLabelledby());\n }\n}\nexport { MatOptgroup, MatOption } from '@angular/material/core';\nimport { MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nexport { MatError, MatFormField, MatHint, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { ViewportRuler, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { _IdGenerator, LiveAnnouncer, removeAriaReferencedId, addAriaReferencedId, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, SPACE, hasModifierKey, A } from '@angular/cdk/keycodes';\nimport { NgControl, Validators, NgForm, FormGroupDirective } from '@angular/forms';\nimport { Subject, defer, merge } from 'rxjs';\nimport { startWith, switchMap, filter, map, distinctUntilChanged, takeUntil, take } from 'rxjs/operators';\nimport { trigger, transition, query, animateChild, state, style, animate } from '@angular/animations';\nimport { NgClass } from '@angular/common';\n\n/**\n * The following are all the animations for the mat-select component, with each\n * const containing the metadata for one animation.\n *\n * The values below match the implementation of the AngularJS Material mat-select animation.\n * @docs-private\n */\nconst matSelectAnimations = {\n /**\n * This animation ensures the select's overlay panel animation (transformPanel) is called when\n * closing the select.\n * This is needed due to https://github.com/angular/angular/issues/23302\n */\n transformPanelWrap: /*#__PURE__*/trigger('transformPanelWrap', [/*#__PURE__*/transition('* => void', /*#__PURE__*/query('@transformPanel', [/*#__PURE__*/animateChild()], {\n optional: true\n }))]),\n /** This animation transforms the select's overlay panel on and off the page. */\n transformPanel: /*#__PURE__*/trigger('transformPanel', [/*#__PURE__*/state('void', /*#__PURE__*/style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })), /*#__PURE__*/transition('void => showing', /*#__PURE__*/animate('120ms cubic-bezier(0, 0, 0.2, 1)', /*#__PURE__*/style({\n opacity: 1,\n transform: 'scale(1, 1)'\n }))), /*#__PURE__*/transition('* => void', /*#__PURE__*/animate('100ms linear', /*#__PURE__*/style({\n opacity: 0\n })))])\n};\n\n// Note that these have been copied over verbatim from\n// `material/select` so that we don't have to expose them publicly.\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\nfunction getMatSelectDynamicMultipleError() {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @docs-private\n */\nfunction getMatSelectNonArrayValueError() {\n return Error('Value must be an array in multiple-selection mode.');\n}\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nfunction getMatSelectNonFunctionValueError() {\n return Error('`compareWith` must be a function.');\n}\n\n/** Injection token that determines the scroll handling while a select is open. */\nconst MAT_SELECT_SCROLL_STRATEGY = /*#__PURE__*/new InjectionToken('mat-select-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n }\n});\n/** @docs-private */\nfunction MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** Injection token that can be used to provide the default options the select module. */\nconst MAT_SELECT_CONFIG = /*#__PURE__*/new InjectionToken('MAT_SELECT_CONFIG');\n/** @docs-private */\nconst MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n/**\n * Injection token that can be used to reference instances of `MatSelectTrigger`. It serves as\n * alternative token to the actual `MatSelectTrigger` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_SELECT_TRIGGER = /*#__PURE__*/new InjectionToken('MatSelectTrigger');\n/** Change event object that is emitted when the select value has changed. */\nclass MatSelectChange {\n source;\n value;\n constructor(/** Reference to the select that emitted the change event. */\n source, /** Current value of the select that emitted the event. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\nlet MatSelect = /*#__PURE__*/(() => {\n class MatSelect {\n _viewportRuler = inject(ViewportRuler);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _elementRef = inject(ElementRef);\n _dir = inject(Directionality, {\n optional: true\n });\n _idGenerator = inject(_IdGenerator);\n _parentFormField = inject(MAT_FORM_FIELD, {\n optional: true\n });\n ngControl = inject(NgControl, {\n self: true,\n optional: true\n });\n _liveAnnouncer = inject(LiveAnnouncer);\n _defaultOptions = inject(MAT_SELECT_CONFIG, {\n optional: true\n });\n _initialized = new Subject();\n /** All of the defined select options. */\n options;\n // TODO(crisbeto): this is only necessary for the non-MDC select, but it's technically a\n // public API so we have to keep it. It should be deprecated and removed eventually.\n /** All of the defined groups of options. */\n optionGroups;\n /** User-supplied override of the trigger element. */\n customTrigger;\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n _positions = [{\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }, {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'mat-mdc-select-panel-above'\n }, {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: 'mat-mdc-select-panel-above'\n }];\n /** Scrolls a particular option into the view. */\n _scrollOptionIntoView(index) {\n const option = this.options.toArray()[index];\n if (option) {\n const panel = this.panel.nativeElement;\n const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);\n const element = option._getHostElement();\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n panel.scrollTop = 0;\n } else {\n panel.scrollTop = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, panel.scrollTop, panel.offsetHeight);\n }\n }\n }\n /** Called when the panel has been opened and the overlay has settled on its final position. */\n _positioningSettled() {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n }\n /** Creates a change event object that should be emitted by the select. */\n _getChangeEvent(value) {\n return new MatSelectChange(this, value);\n }\n /** Factory function used to create a scroll strategy for this select. */\n _scrollStrategyFactory = inject(MAT_SELECT_SCROLL_STRATEGY);\n /** Whether or not the overlay panel is open. */\n _panelOpen = false;\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n _compareWith = (o1, o2) => o1 === o2;\n /** Unique id for this input. */\n _uid = this._idGenerator.getId('mat-select-');\n /** Current `aria-labelledby` value for the select trigger. */\n _triggerAriaLabelledBy = null;\n /**\n * Keeps track of the previous form control assigned to the select.\n * Used to detect if it has changed.\n */\n _previousControl;\n /** Emits whenever the component is destroyed. */\n _destroy = new Subject();\n /** Tracks the error state of the select. */\n _errorStateTracker;\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n stateChanges = new Subject();\n /**\n * Disable the automatic labeling to avoid issues like #27241.\n * @docs-private\n */\n disableAutomaticLabeling = true;\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n userAriaDescribedBy;\n /** Deals with the selection logic. */\n _selectionModel;\n /** Manages keyboard events for options in the panel. */\n _keyManager;\n /** Ideal origin for the overlay panel. */\n _preferredOverlayOrigin;\n /** Width of the overlay panel. */\n _overlayWidth;\n /** `View -> model callback called when value changes` */\n _onChange = () => {};\n /** `View -> model callback called when select has been touched` */\n _onTouched = () => {};\n /** ID for the DOM node containing the select's value. */\n _valueId = this._idGenerator.getId('mat-select-value-');\n /** Emits when the panel element is finished transforming in. */\n _panelDoneAnimatingStream = new Subject();\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n _scrollStrategy;\n _overlayPanelClass = this._defaultOptions?.overlayPanelClass || '';\n /** Whether the select is focused. */\n get focused() {\n return this._focused || this._panelOpen;\n }\n _focused = false;\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mat-select';\n /** Trigger that opens the select. */\n trigger;\n /** Panel containing the select options. */\n panel;\n /** Overlay pane containing the options. */\n _overlayDir;\n /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n panelClass;\n /** Whether the select is disabled. */\n disabled = false;\n /** Whether ripples in the select are disabled. */\n disableRipple = false;\n /** Tab index of the select. */\n tabIndex = 0;\n /** Whether checkmark indicator for single-selection options is hidden. */\n get hideSingleSelectionIndicator() {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value) {\n this._hideSingleSelectionIndicator = value;\n this._syncParentProperties();\n }\n _hideSingleSelectionIndicator = this._defaultOptions?.hideSingleSelectionIndicator ?? false;\n /** Placeholder to be shown if no value has been selected. */\n get placeholder() {\n return this._placeholder;\n }\n set placeholder(value) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n _placeholder;\n /** Whether the component is required. */\n get required() {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value) {\n this._required = value;\n this.stateChanges.next();\n }\n _required;\n /** Whether the user should be allowed to select multiple options. */\n get multiple() {\n return this._multiple;\n }\n set multiple(value) {\n if (this._selectionModel && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectDynamicMultipleError();\n }\n this._multiple = value;\n }\n _multiple = false;\n /** Whether to center the active option over the trigger. */\n disableOptionCentering = this._defaultOptions?.disableOptionCentering ?? false;\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonFunctionValueError();\n }\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n /** Value of the select control. */\n get value() {\n return this._value;\n }\n set value(newValue) {\n const hasAssigned = this._assignValue(newValue);\n if (hasAssigned) {\n this._onChange(newValue);\n }\n }\n _value;\n /** Aria label of the select. */\n ariaLabel = '';\n /** Input that can be used to specify the `aria-labelledby` attribute. */\n ariaLabelledby;\n /** Object used to control when error messages are shown. */\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value) {\n this._errorStateTracker.matcher = value;\n }\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n typeaheadDebounceInterval;\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n sortComparator;\n /** Unique id of the element. */\n get id() {\n return this._id;\n }\n set id(value) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n _id;\n /** Whether the select is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value) {\n this._errorStateTracker.errorState = value;\n }\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n panelWidth = this._defaultOptions && typeof this._defaultOptions.panelWidth !== 'undefined' ? this._defaultOptions.panelWidth : 'auto';\n /**\n * By default selecting an option with a `null` or `undefined` value will reset the select's\n * value. Enable this option if the reset behavior doesn't match your requirements and instead\n * the nullable options should become selected. The value of this input can be controlled app-wide\n * using the `MAT_SELECT_CONFIG` injection token.\n */\n canSelectNullableOptions = this._defaultOptions?.canSelectNullableOptions ?? false;\n /** Combined stream of all of the child options' change events. */\n optionSelectionChanges = defer(() => {\n const options = this.options;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n return this._initialized.pipe(switchMap(() => this.optionSelectionChanges));\n });\n /** Event emitted when the select panel has been toggled. */\n openedChange = new EventEmitter();\n /** Event emitted when the select has been opened. */\n _openedStream = this.openedChange.pipe(filter(o => o), map(() => {}));\n /** Event emitted when the select has been closed. */\n _closedStream = this.openedChange.pipe(filter(o => !o), map(() => {}));\n /** Event emitted when the selected value has been changed by the user. */\n selectionChange = new EventEmitter();\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n valueChange = new EventEmitter();\n constructor() {\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n const parentForm = inject(NgForm, {\n optional: true\n });\n const parentFormGroup = inject(FormGroupDirective, {\n optional: true\n });\n const tabIndex = inject(new HostAttributeToken('tabindex'), {\n optional: true\n });\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n // Note that we only want to set this when the defaults pass it in, otherwise it should\n // stay as `undefined` so that it falls back to the default in the key manager.\n if (this._defaultOptions?.typeaheadDebounceInterval != null) {\n this.typeaheadDebounceInterval = this._defaultOptions.typeaheadDebounceInterval;\n }\n this._errorStateTracker = new _ErrorStateTracker(defaultErrorStateMatcher, this.ngControl, parentFormGroup, parentForm, this.stateChanges);\n this._scrollStrategy = this._scrollStrategyFactory();\n this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0;\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n ngOnInit() {\n this._selectionModel = new SelectionModel(this.multiple);\n this.stateChanges.next();\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this._panelDoneAnimatingStream.pipe(distinctUntilChanged(), takeUntil(this._destroy)).subscribe(() => this._panelDoneAnimating(this.panelOpen));\n this._viewportRuler.change().pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen) {\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n ngAfterContentInit() {\n this._initialized.next();\n this._initialized.complete();\n this._initKeyManager();\n this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n ngDoCheck() {\n const newAriaLabelledby = this._getTriggerAriaLabelledby();\n const ngControl = this.ngControl;\n // We have to manage setting the `aria-labelledby` ourselves, because part of its value\n // is computed as a result of a content query which can cause this binding to trigger a\n // \"changed after checked\" error.\n if (newAriaLabelledby !== this._triggerAriaLabelledBy) {\n const element = this._elementRef.nativeElement;\n this._triggerAriaLabelledBy = newAriaLabelledby;\n if (newAriaLabelledby) {\n element.setAttribute('aria-labelledby', newAriaLabelledby);\n } else {\n element.removeAttribute('aria-labelledby');\n }\n }\n if (ngControl) {\n // The disabled state might go out of sync if the form group is swapped out. See #17860.\n if (this._previousControl !== ngControl.control) {\n if (this._previousControl !== undefined && ngControl.disabled !== null && ngControl.disabled !== this.disabled) {\n this.disabled = ngControl.disabled;\n }\n this._previousControl = ngControl.control;\n }\n this.updateErrorState();\n }\n }\n ngOnChanges(changes) {\n // Updating the disabled state is handled by the input, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes['disabled'] || changes['userAriaDescribedBy']) {\n this.stateChanges.next();\n }\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this.typeaheadDebounceInterval);\n }\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\n this._clearFromModal();\n }\n /** Toggles the overlay panel open or closed. */\n toggle() {\n this.panelOpen ? this.close() : this.open();\n }\n /** Opens the overlay panel. */\n open() {\n if (!this._canOpen()) {\n return;\n }\n // It's important that we read this as late as possible, because doing so earlier will\n // return a different element since it's based on queries in the form field which may\n // not have run yet. Also this needs to be assigned before we measure the overlay width.\n if (this._parentFormField) {\n this._preferredOverlayOrigin = this._parentFormField.getConnectedOverlayOrigin();\n }\n this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);\n this._applyModalPanelOwnership();\n this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n // Required for the MDC form field to pick up when the overlay has been opened.\n this.stateChanges.next();\n }\n /**\n * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is\n * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options\n * panel. Track the modal we have changed so we can undo the changes on destroy.\n */\n _trackedModal = null;\n /**\n * If the autocomplete trigger is inside of an `aria-modal` element, connect\n * that modal to the options panel with `aria-owns`.\n *\n * For some browser + screen reader combinations, when navigation is inside\n * of an `aria-modal` element, the screen reader treats everything outside\n * of that modal as hidden or invisible.\n *\n * This causes a problem when the combobox trigger is _inside_ of a modal, because the\n * options panel is rendered _outside_ of that modal, preventing screen reader navigation\n * from reaching the panel.\n *\n * We can work around this issue by applying `aria-owns` to the modal with the `id` of\n * the options panel. This effectively communicates to assistive technology that the\n * options panel is part of the same interaction as the modal.\n *\n * At time of this writing, this issue is present in VoiceOver.\n * See https://github.com/angular/components/issues/20694\n */\n _applyModalPanelOwnership() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modal = this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal=\"true\"]');\n if (!modal) {\n // Most commonly, the autocomplete trigger is not inside a modal.\n return;\n }\n const panelId = `${this.id}-panel`;\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n addAriaReferencedId(modal, 'aria-owns', panelId);\n this._trackedModal = modal;\n }\n /** Clears the reference to the listbox overlay element from the modal it was added to. */\n _clearFromModal() {\n if (!this._trackedModal) {\n // Most commonly, the autocomplete trigger is not used inside a modal.\n return;\n }\n const panelId = `${this.id}-panel`;\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n this._trackedModal = null;\n }\n /** Closes the overlay panel and focuses the host element. */\n close() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n // Required for the MDC form field to pick up when the overlay has been closed.\n this.stateChanges.next();\n }\n }\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value) {\n this._assignValue(value);\n }\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n /** Whether or not the overlay panel is open. */\n get panelOpen() {\n return this._panelOpen;\n }\n /** The currently selected option. */\n get selected() {\n return this.multiple ? this._selectionModel?.selected || [] : this._selectionModel?.selected[0];\n }\n /** The value displayed in the trigger. */\n get triggerValue() {\n if (this.empty) {\n return '';\n }\n if (this._multiple) {\n const selectedOptions = this._selectionModel.selected.map(option => option.viewValue);\n if (this._isRtl()) {\n selectedOptions.reverse();\n }\n // TODO(crisbeto): delimiter should be configurable for proper localization.\n return selectedOptions.join(', ');\n }\n return this._selectionModel.selected[0].viewValue;\n }\n /** Refreshes the error state of the select. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n /** Whether the element is in RTL mode. */\n _isRtl() {\n return this._dir ? this._dir.value === 'rtl' : false;\n }\n /** Handles all keydown events on the select. */\n _handleKeydown(event) {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n }\n /** Handles keyboard events while the select is closed. */\n _handleClosedKeydown(event) {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this._keyManager;\n // Open the select on ALT + arrow key to match the native \n event.preventDefault();\n this.close();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n } else if (!isTyping && (keyCode === ENTER || keyCode === SPACE) && manager.activeItem && !hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n } else if (!isTyping && this._multiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some(opt => !opt.disabled && !opt.selected);\n this.options.forEach(option => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = manager.activeItemIndex;\n manager.onKeydown(event);\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem && manager.activeItemIndex !== previouslyFocusedIndex) {\n manager.activeItem._selectViaInteraction();\n }\n }\n }\n _onFocus() {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n _onBlur() {\n this._focused = false;\n this._keyManager?.cancelTypeahead();\n if (!this.disabled && !this.panelOpen) {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n }\n /**\n * Callback that is invoked when the overlay panel has been attached.\n */\n _onAttached() {\n this._overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n }\n /** Returns the theme to be used on the panel. */\n _getPanelTheme() {\n return this._parentFormField ? `mat-${this._parentFormField.color}` : '';\n }\n /** Whether the select has a value. */\n get empty() {\n return !this._selectionModel || this._selectionModel.isEmpty();\n }\n _initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n if (this.ngControl) {\n this._value = this.ngControl.value;\n }\n this._setSelectionByValue(this._value);\n this.stateChanges.next();\n });\n }\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n _setSelectionByValue(value) {\n this.options.forEach(option => option.setInactiveStyles());\n this._selectionModel.clear();\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonArrayValueError();\n }\n value.forEach(currentValue => this._selectOptionByValue(currentValue));\n this._sortValues();\n } else {\n const correspondingOption = this._selectOptionByValue(value);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.updateActiveItem(correspondingOption);\n } else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.updateActiveItem(-1);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n _selectOptionByValue(value) {\n const correspondingOption = this.options.find(option => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n if (this._selectionModel.isSelected(option)) {\n return false;\n }\n try {\n // Treat null as a special reset value.\n return (option.value != null || this.canSelectNullableOptions) && this._compareWith(option.value, value);\n } catch (error) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Notify developers of errors in their comparator.\n console.warn(error);\n }\n return false;\n }\n });\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n return correspondingOption;\n }\n /** Assigns a specific value to the select. Returns whether the value has changed. */\n _assignValue(newValue) {\n // Always re-assign an array, because it might have been mutated.\n if (newValue !== this._value || this._multiple && Array.isArray(newValue)) {\n if (this.options) {\n this._setSelectionByValue(newValue);\n }\n this._value = newValue;\n return true;\n }\n return false;\n }\n // `skipPredicate` determines if key manager should avoid putting a given option in the tab\n // order. Allow disabled list items to receive focus via keyboard to align with WAI ARIA\n // recommendation.\n //\n // Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\n // makes a few exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n //\n // The user can focus disabled options using the keyboard, but the user cannot click disabled\n // options.\n _skipPredicate = option => {\n if (this.panelOpen) {\n // Support keyboard focusing disabled options in an ARIA listbox.\n return false;\n }\n // When the panel is closed, skip over disabled options. Support options via the UP/DOWN arrow\n // keys on a closed select. ARIA listbox interaction pattern is less relevant when the panel is\n // closed.\n return option.disabled;\n };\n /** Gets how wide the overlay panel should be. */\n _getOverlayWidth(preferredOrigin) {\n if (this.panelWidth === 'auto') {\n const refToMeasure = preferredOrigin instanceof CdkOverlayOrigin ? preferredOrigin.elementRef : preferredOrigin || this._elementRef;\n return refToMeasure.nativeElement.getBoundingClientRect().width;\n }\n return this.panelWidth === null ? '' : this.panelWidth;\n }\n /** Syncs the parent state with the individual options. */\n _syncParentProperties() {\n if (this.options) {\n for (const option of this.options) {\n option._changeDetectorRef.markForCheck();\n }\n }\n }\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr').withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(['shiftKey']).skipPredicate(this._skipPredicate);\n this._keyManager.tabOut.subscribe(() => {\n if (this.panelOpen) {\n // Select the active item when tabbing away. This is consistent with how the native\n // select behaves. Note that we only want to do this in single selection mode.\n if (!this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.close();\n }\n });\n this._keyManager.change.subscribe(() => {\n if (this._panelOpen && this.panel) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n } else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n /** Drops current option subscriptions and IDs and resets from scratch. */\n _resetOptions() {\n const changedOrDestroyed = merge(this.options.changes, this._destroy);\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe(event => {\n this._onSelect(event.source, event.isUserInput);\n if (event.isUserInput && !this.multiple && this._panelOpen) {\n this.close();\n this.focus();\n }\n });\n // Listen to changes in the internal state of the options and react accordingly.\n // Handles cases like the labels of the selected options changing.\n merge(...this.options.map(option => option._stateChanges)).pipe(takeUntil(changedOrDestroyed)).subscribe(() => {\n // `_stateChanges` can fire as a result of a change in the label's DOM value which may\n // be the result of an expression changing. We have to use `detectChanges` in order\n // to avoid \"changed after checked\" errors (see #14793).\n this._changeDetectorRef.detectChanges();\n this.stateChanges.next();\n });\n }\n /** Invoked when an option is clicked. */\n _onSelect(option, isUserInput) {\n const wasSelected = this._selectionModel.isSelected(option);\n if (!this.canSelectNullableOptions && option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n if (this.value != null) {\n this._propagateChanges(option.value);\n }\n } else {\n if (wasSelected !== option.selected) {\n option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);\n }\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n if (this.multiple) {\n this._sortValues();\n if (isUserInput) {\n // In case the user selected the option with their mouse, we\n // want to restore focus back to the trigger, in order to\n // prevent the select keyboard controls from clashing with\n // the ones from `mat-option`.\n this.focus();\n }\n }\n }\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n this.stateChanges.next();\n }\n /** Sorts the selected values in the selected based on their order in the panel. */\n _sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n this._selectionModel.sort((a, b) => {\n return this.sortComparator ? this.sortComparator(a, b, options) : options.indexOf(a) - options.indexOf(b);\n });\n this.stateChanges.next();\n }\n }\n /** Emits change event to set the model value. */\n _propagateChanges(fallbackValue) {\n let valueToEmit;\n if (this.multiple) {\n valueToEmit = this.selected.map(option => option.value);\n } else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this.selectionChange.emit(this._getChangeEvent(valueToEmit));\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first *enabled* option.\n */\n _highlightCorrectOption() {\n if (this._keyManager) {\n if (this.empty) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < this.options.length; index++) {\n const option = this.options.get(index);\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n this._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n /** Whether the panel is allowed to open. */\n _canOpen() {\n return !this._panelOpen && !this.disabled && this.options?.length > 0;\n }\n /** Focuses the select element. */\n focus(options) {\n this._elementRef.nativeElement.focus(options);\n }\n /** Gets the aria-labelledby for the select panel. */\n _getPanelAriaLabelledby() {\n if (this.ariaLabel) {\n return null;\n }\n const labelId = this._parentFormField?.getLabelId() || null;\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n /** Determines the `aria-activedescendant` to be set on the host. */\n _getAriaActiveDescendant() {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n return null;\n }\n /** Gets the aria-labelledby of the select component trigger. */\n _getTriggerAriaLabelledby() {\n if (this.ariaLabel) {\n return null;\n }\n const labelId = this._parentFormField?.getLabelId();\n let value = (labelId ? labelId + ' ' : '') + this._valueId;\n if (this.ariaLabelledby) {\n value += ' ' + this.ariaLabelledby;\n }\n return value;\n }\n /** Called when the overlay panel is done animating. */\n _panelDoneAnimating(isOpen) {\n this.openedChange.emit(isOpen);\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n } else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n this.open();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat() {\n // Since the panel doesn't overlap the trigger, we\n // want the label to only float when there's a value.\n return this.panelOpen || !this.empty || this.focused && !!this.placeholder;\n }\n static ɵfac = function MatSelect_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSelect)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSelect,\n selectors: [[\"mat-select\"]],\n contentQueries: function MatSelect_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MAT_SELECT_TRIGGER, 5);\n i0.ɵɵcontentQuery(dirIndex, MatOption, 5);\n i0.ɵɵcontentQuery(dirIndex, MAT_OPTGROUP, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customTrigger = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.options = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionGroups = _t);\n }\n },\n viewQuery: function MatSelect_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(_c1, 5);\n i0.ɵɵviewQuery(CdkConnectedOverlay, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.trigger = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.panel = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._overlayDir = _t.first);\n }\n },\n hostAttrs: [\"role\", \"combobox\", \"aria-haspopup\", \"listbox\", 1, \"mat-mdc-select\"],\n hostVars: 19,\n hostBindings: function MatSelect_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function MatSelect_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n })(\"focus\", function MatSelect_focus_HostBindingHandler() {\n return ctx._onFocus();\n })(\"blur\", function MatSelect_blur_HostBindingHandler() {\n return ctx._onBlur();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"id\", ctx.id)(\"tabindex\", ctx.disabled ? -1 : ctx.tabIndex)(\"aria-controls\", ctx.panelOpen ? ctx.id + \"-panel\" : null)(\"aria-expanded\", ctx.panelOpen)(\"aria-label\", ctx.ariaLabel || null)(\"aria-required\", ctx.required.toString())(\"aria-disabled\", ctx.disabled.toString())(\"aria-invalid\", ctx.errorState)(\"aria-activedescendant\", ctx._getAriaActiveDescendant());\n i0.ɵɵclassProp(\"mat-mdc-select-disabled\", ctx.disabled)(\"mat-mdc-select-invalid\", ctx.errorState)(\"mat-mdc-select-required\", ctx.required)(\"mat-mdc-select-empty\", ctx.empty)(\"mat-mdc-select-multiple\", ctx.multiple);\n }\n },\n inputs: {\n userAriaDescribedBy: [0, \"aria-describedby\", \"userAriaDescribedBy\"],\n panelClass: \"panelClass\",\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n tabIndex: [2, \"tabIndex\", \"tabIndex\", value => value == null ? 0 : numberAttribute(value)],\n hideSingleSelectionIndicator: [2, \"hideSingleSelectionIndicator\", \"hideSingleSelectionIndicator\", booleanAttribute],\n placeholder: \"placeholder\",\n required: [2, \"required\", \"required\", booleanAttribute],\n multiple: [2, \"multiple\", \"multiple\", booleanAttribute],\n disableOptionCentering: [2, \"disableOptionCentering\", \"disableOptionCentering\", booleanAttribute],\n compareWith: \"compareWith\",\n value: \"value\",\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"],\n errorStateMatcher: \"errorStateMatcher\",\n typeaheadDebounceInterval: [2, \"typeaheadDebounceInterval\", \"typeaheadDebounceInterval\", numberAttribute],\n sortComparator: \"sortComparator\",\n id: \"id\",\n panelWidth: \"panelWidth\",\n canSelectNullableOptions: [2, \"canSelectNullableOptions\", \"canSelectNullableOptions\", booleanAttribute]\n },\n outputs: {\n openedChange: \"openedChange\",\n _openedStream: \"opened\",\n _closedStream: \"closed\",\n selectionChange: \"selectionChange\",\n valueChange: \"valueChange\"\n },\n exportAs: [\"matSelect\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MatFormFieldControl,\n useExisting: MatSelect\n }, {\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatSelect\n }]), i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c3,\n decls: 11,\n vars: 8,\n consts: [[\"fallbackOverlayOrigin\", \"cdkOverlayOrigin\", \"trigger\", \"\"], [\"panel\", \"\"], [\"cdk-overlay-origin\", \"\", 1, \"mat-mdc-select-trigger\", 3, \"click\"], [1, \"mat-mdc-select-value\"], [1, \"mat-mdc-select-placeholder\", \"mat-mdc-select-min-line\"], [1, \"mat-mdc-select-value-text\"], [1, \"mat-mdc-select-arrow-wrapper\"], [1, \"mat-mdc-select-arrow\"], [\"viewBox\", \"0 0 24 24\", \"width\", \"24px\", \"height\", \"24px\", \"focusable\", \"false\", \"aria-hidden\", \"true\"], [\"d\", \"M7 10l5 5 5-5z\"], [\"cdk-connected-overlay\", \"\", \"cdkConnectedOverlayLockPosition\", \"\", \"cdkConnectedOverlayHasBackdrop\", \"\", \"cdkConnectedOverlayBackdropClass\", \"cdk-overlay-transparent-backdrop\", 3, \"backdropClick\", \"attach\", \"detach\", \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayWidth\"], [1, \"mat-mdc-select-min-line\"], [\"role\", \"listbox\", \"tabindex\", \"-1\", 3, \"keydown\", \"ngClass\"]],\n template: function MatSelect_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef(_c2);\n i0.ɵɵelementStart(0, \"div\", 2, 0);\n i0.ɵɵlistener(\"click\", function MatSelect_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.open());\n });\n i0.ɵɵelementStart(3, \"div\", 3);\n i0.ɵɵtemplate(4, MatSelect_Conditional_4_Template, 2, 1, \"span\", 4)(5, MatSelect_Conditional_5_Template, 3, 1, \"span\", 5);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"div\", 6)(7, \"div\", 7);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(8, \"svg\", 8);\n i0.ɵɵelement(9, \"path\", 9);\n i0.ɵɵelementEnd()()()();\n i0.ɵɵtemplate(10, MatSelect_ng_template_10_Template, 3, 9, \"ng-template\", 10);\n i0.ɵɵlistener(\"backdropClick\", function MatSelect_Template_ng_template_backdropClick_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.close());\n })(\"attach\", function MatSelect_Template_ng_template_attach_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._onAttached());\n })(\"detach\", function MatSelect_Template_ng_template_detach_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.close());\n });\n }\n if (rf & 2) {\n const fallbackOverlayOrigin_r4 = i0.ɵɵreference(1);\n i0.ɵɵadvance(3);\n i0.ɵɵattribute(\"id\", ctx._valueId);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.empty ? 4 : 5);\n i0.ɵɵadvance(6);\n i0.ɵɵproperty(\"cdkConnectedOverlayPanelClass\", ctx._overlayPanelClass)(\"cdkConnectedOverlayScrollStrategy\", ctx._scrollStrategy)(\"cdkConnectedOverlayOrigin\", ctx._preferredOverlayOrigin || fallbackOverlayOrigin_r4)(\"cdkConnectedOverlayOpen\", ctx.panelOpen)(\"cdkConnectedOverlayPositions\", ctx._positions)(\"cdkConnectedOverlayWidth\", ctx._overlayWidth);\n }\n },\n dependencies: [CdkOverlayOrigin, CdkConnectedOverlay, NgClass],\n styles: [\".mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-sys-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-sys-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-sys-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-sys-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-disabled .mat-mdc-select-placeholder{color:var(--mat-select-disabled-trigger-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-sys-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-sys-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-sys-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}@media(forced-colors: active){.mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .mat-mdc-select-arrow svg{fill:GrayText}}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-select-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}div.mat-mdc-select-panel .mat-mdc-option{--mdc-list-list-item-container-color: var(--mat-select-panel-background-color)}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-sys-on-surface-variant))}.mat-form-field-no-animations .mat-mdc-select-placeholder,._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform, translateY(-8px))}\"],\n encapsulation: 2,\n data: {\n animation: [matSelectAnimations.transformPanel]\n },\n changeDetection: 0\n });\n }\n return MatSelect;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\nlet MatSelectTrigger = /*#__PURE__*/(() => {\n class MatSelectTrigger {\n static ɵfac = function MatSelectTrigger_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSelectTrigger)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSelectTrigger,\n selectors: [[\"mat-select-trigger\"]],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_SELECT_TRIGGER,\n useExisting: MatSelectTrigger\n }])]\n });\n }\n return MatSelectTrigger;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatSelectModule = /*#__PURE__*/(() => {\n class MatSelectModule {\n static ɵfac = function MatSelectModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSelectModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSelectModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER],\n imports: [OverlayModule, MatOptionModule, MatCommonModule, CdkScrollableModule, MatFormFieldModule, MatOptionModule, MatCommonModule]\n });\n }\n return MatSelectModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SELECT_CONFIG, MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_SELECT_TRIGGER, MatSelect, MatSelectChange, MatSelectModule, MatSelectTrigger, matSelectAnimations };\n","import * as i0 from '@angular/core';\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatCommonModule } from '@angular/material/core';\nlet MatDivider = /*#__PURE__*/(() => {\n class MatDivider {\n /** Whether the divider is vertically aligned. */\n get vertical() {\n return this._vertical;\n }\n set vertical(value) {\n this._vertical = coerceBooleanProperty(value);\n }\n _vertical = false;\n /** Whether the divider is an inset divider. */\n get inset() {\n return this._inset;\n }\n set inset(value) {\n this._inset = coerceBooleanProperty(value);\n }\n _inset = false;\n static ɵfac = function MatDivider_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatDivider)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatDivider,\n selectors: [[\"mat-divider\"]],\n hostAttrs: [\"role\", \"separator\", 1, \"mat-divider\"],\n hostVars: 7,\n hostBindings: function MatDivider_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-orientation\", ctx.vertical ? \"vertical\" : \"horizontal\");\n i0.ɵɵclassProp(\"mat-divider-vertical\", ctx.vertical)(\"mat-divider-horizontal\", !ctx.vertical)(\"mat-divider-inset\", ctx.inset);\n }\n },\n inputs: {\n vertical: \"vertical\",\n inset: \"inset\"\n },\n decls: 0,\n vars: 0,\n template: function MatDivider_Template(rf, ctx) {},\n styles: [\".mat-divider{display:block;margin:0;border-top-style:solid;border-top-color:var(--mat-divider-color, var(--mat-sys-outline));border-top-width:var(--mat-divider-width, 1px)}.mat-divider.mat-divider-vertical{border-top:0;border-right-style:solid;border-right-color:var(--mat-divider-color, var(--mat-sys-outline));border-right-width:var(--mat-divider-width, 1px)}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n return MatDivider;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatDividerModule = /*#__PURE__*/(() => {\n class MatDividerModule {\n static ɵfac = function MatDividerModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatDividerModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatDividerModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, MatCommonModule]\n });\n }\n return MatDividerModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatDivider, MatDividerModule };\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'glxy-alert-extended, [glxyAlertExtended]',\n host: {\n class: 'glxy-alert-extended',\n },\n})\nexport class AlertExtendedDirective {}\n","import { NgModule } from '@angular/core';\nimport { AlertComponent } from './alert.component';\n\nimport { AlertExtendedDirective } from './directives/alert-extended.directive';\nexport { type AlertTypes, type AlertSizes } from './alert.component';\n\n@NgModule({\n exports: [AlertComponent, AlertExtendedDirective],\n imports: [AlertComponent, AlertExtendedDirective],\n})\nexport class GalaxyAlertModule {}\n","export * from './src/alert.module';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","import * as i0 from '@angular/core';\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CreditNoteType = /*#__PURE__*/function (CreditNoteType) {\n CreditNoteType[CreditNoteType[\"CREDIT_NOTE_UNSPECIFIED\"] = 0] = \"CREDIT_NOTE_UNSPECIFIED\";\n CreditNoteType[CreditNoteType[\"CREDIT_NOTE_PRE_PAYMENT\"] = 1] = \"CREDIT_NOTE_PRE_PAYMENT\";\n CreditNoteType[CreditNoteType[\"CREDIT_NOTE_POST_PAYMENT\"] = 2] = \"CREDIT_NOTE_POST_PAYMENT\";\n return CreditNoteType;\n}(CreditNoteType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Frequency = /*#__PURE__*/function (Frequency) {\n Frequency[Frequency[\"INVALID\"] = 0] = \"INVALID\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"YEARLY\"] = 2] = \"YEARLY\";\n Frequency[Frequency[\"ONE_TIME\"] = 3] = \"ONE_TIME\";\n return Frequency;\n}(Frequency || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Currency = /*#__PURE__*/function (Currency) {\n Currency[Currency[\"USD\"] = 0] = \"USD\";\n Currency[Currency[\"CAD\"] = 1] = \"CAD\";\n Currency[Currency[\"EUR\"] = 2] = \"EUR\";\n Currency[Currency[\"AUD\"] = 3] = \"AUD\";\n Currency[Currency[\"GBP\"] = 4] = \"GBP\";\n Currency[Currency[\"NZD\"] = 5] = \"NZD\";\n Currency[Currency[\"BRL\"] = 6] = \"BRL\";\n Currency[Currency[\"CHF\"] = 7] = \"CHF\";\n Currency[Currency[\"CNY\"] = 8] = \"CNY\";\n Currency[Currency[\"CZK\"] = 9] = \"CZK\";\n Currency[Currency[\"INR\"] = 10] = \"INR\";\n Currency[Currency[\"JPY\"] = 11] = \"JPY\";\n Currency[Currency[\"KHR\"] = 12] = \"KHR\";\n Currency[Currency[\"KRW\"] = 13] = \"KRW\";\n Currency[Currency[\"MXN\"] = 14] = \"MXN\";\n Currency[Currency[\"NOK\"] = 15] = \"NOK\";\n Currency[Currency[\"RUB\"] = 16] = \"RUB\";\n Currency[Currency[\"SEK\"] = 17] = \"SEK\";\n Currency[Currency[\"SGD\"] = 18] = \"SGD\";\n Currency[Currency[\"TRY\"] = 19] = \"TRY\";\n Currency[Currency[\"ZAR\"] = 20] = \"ZAR\";\n Currency[Currency[\"DZD\"] = 21] = \"DZD\";\n Currency[Currency[\"AWG\"] = 22] = \"AWG\";\n Currency[Currency[\"FJD\"] = 23] = \"FJD\";\n Currency[Currency[\"KYD\"] = 24] = \"KYD\";\n return Currency;\n}(Currency || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar FeeAmountType = /*#__PURE__*/function (FeeAmountType) {\n FeeAmountType[FeeAmountType[\"FEE_AMOUNT_TYPE_INVALID\"] = 0] = \"FEE_AMOUNT_TYPE_INVALID\";\n FeeAmountType[FeeAmountType[\"FEE_AMOUNT_TYPE_FIXED\"] = 1] = \"FEE_AMOUNT_TYPE_FIXED\";\n FeeAmountType[FeeAmountType[\"FEE_AMOUNT_TYPE_PERCENTAGE\"] = 2] = \"FEE_AMOUNT_TYPE_PERCENTAGE\";\n return FeeAmountType;\n}(FeeAmountType || {});\nvar FeeType = /*#__PURE__*/function (FeeType) {\n FeeType[FeeType[\"FEE_TYPE_INVALID\"] = 0] = \"FEE_TYPE_INVALID\";\n FeeType[FeeType[\"FEE_TYPE_MANAGEMENT\"] = 1] = \"FEE_TYPE_MANAGEMENT\";\n return FeeType;\n}(FeeType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar BillingStrategy = /*#__PURE__*/function (BillingStrategy) {\n BillingStrategy[BillingStrategy[\"BILLING_STRATEGY_NONE\"] = 0] = \"BILLING_STRATEGY_NONE\";\n BillingStrategy[BillingStrategy[\"BILLING_STRATEGY_END_OF_PERIOD\"] = 1] = \"BILLING_STRATEGY_END_OF_PERIOD\";\n BillingStrategy[BillingStrategy[\"BILLING_STRATEGY_START_OF_PERIOD\"] = 2] = \"BILLING_STRATEGY_START_OF_PERIOD\";\n BillingStrategy[BillingStrategy[\"BILLING_STRATEGY_INSTANTLY\"] = 3] = \"BILLING_STRATEGY_INSTANTLY\";\n BillingStrategy[BillingStrategy[\"BILLING_STRATEGY_END_OF_DAY\"] = 4] = \"BILLING_STRATEGY_END_OF_DAY\";\n return BillingStrategy;\n}(BillingStrategy || {});\nvar ProductPricingType = /*#__PURE__*/function (ProductPricingType) {\n ProductPricingType[ProductPricingType[\"PRODUCT_PRICING_TYPE_INVALID\"] = 0] = \"PRODUCT_PRICING_TYPE_INVALID\";\n ProductPricingType[ProductPricingType[\"PRODUCT_PRICING_TYPE_STANDARD\"] = 1] = \"PRODUCT_PRICING_TYPE_STANDARD\";\n ProductPricingType[ProductPricingType[\"PRODUCT_PRICING_TYPE_STAIRSTEP\"] = 2] = \"PRODUCT_PRICING_TYPE_STAIRSTEP\";\n ProductPricingType[ProductPricingType[\"PRODUCT_PRICING_TYPE_TIERED\"] = 3] = \"PRODUCT_PRICING_TYPE_TIERED\";\n return ProductPricingType;\n}(ProductPricingType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar SubscribeValidationStatus = /*#__PURE__*/function (SubscribeValidationStatus) {\n SubscribeValidationStatus[SubscribeValidationStatus[\"SUBSCRIBE_VALIDATION_STATUS_UNSET\"] = 0] = \"SUBSCRIBE_VALIDATION_STATUS_UNSET\";\n SubscribeValidationStatus[SubscribeValidationStatus[\"SUBSCRIBE_VALIDATION_STATUS_CANNOT_INSTANT_BILL\"] = 1] = \"SUBSCRIBE_VALIDATION_STATUS_CANNOT_INSTANT_BILL\";\n SubscribeValidationStatus[SubscribeValidationStatus[\"SUBSCRIBE_VALIDATION_STATUS_MISSING_MERCHANT_INFO\"] = 2] = \"SUBSCRIBE_VALIDATION_STATUS_MISSING_MERCHANT_INFO\";\n SubscribeValidationStatus[SubscribeValidationStatus[\"SUBSCRIBE_VALIDATION_STATUS_MISSING_PAYMENT_INFO\"] = 3] = \"SUBSCRIBE_VALIDATION_STATUS_MISSING_PAYMENT_INFO\";\n SubscribeValidationStatus[SubscribeValidationStatus[\"SUBSCRIBE_VALIDATION_STATUS_WILL_CAUSE_FUTURE_CHARGES\"] = 4] = \"SUBSCRIBE_VALIDATION_STATUS_WILL_CAUSE_FUTURE_CHARGES\";\n return SubscribeValidationStatus;\n}(SubscribeValidationStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Consumer = /*#__PURE__*/function (Consumer) {\n Consumer[Consumer[\"CONSUMER_WHOLESALE\"] = 0] = \"CONSUMER_WHOLESALE\";\n Consumer[Consumer[\"CONSUMER_RETAIL\"] = 1] = \"CONSUMER_RETAIL\";\n return Consumer;\n}(Consumer || {});\nvar RenewalState = /*#__PURE__*/function (RenewalState) {\n RenewalState[RenewalState[\"RENEWAL_STATE_IMMEDIATE\"] = 0] = \"RENEWAL_STATE_IMMEDIATE\";\n RenewalState[RenewalState[\"RENEWAL_STATE_DELAYED\"] = 1] = \"RENEWAL_STATE_DELAYED\";\n return RenewalState;\n}(RenewalState || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Source = /*#__PURE__*/function (Source) {\n Source[Source[\"SOURCE_UNSET\"] = 0] = \"SOURCE_UNSET\";\n Source[Source[\"SOURCE_SYSTEM\"] = 1] = \"SOURCE_SYSTEM\";\n Source[Source[\"SOURCE_USER\"] = 2] = \"SOURCE_USER\";\n return Source;\n}(Source || {});\nvar SubscriptionStatus = /*#__PURE__*/function (SubscriptionStatus) {\n SubscriptionStatus[SubscriptionStatus[\"SUBSCRIPTION_STATUS_UNSET\"] = 0] = \"SUBSCRIPTION_STATUS_UNSET\";\n SubscriptionStatus[SubscriptionStatus[\"SUBSCRIPTION_STATUS_ACTIVE\"] = 1] = \"SUBSCRIPTION_STATUS_ACTIVE\";\n SubscriptionStatus[SubscriptionStatus[\"SUBSCRIPTION_STATUS_EXPIRED\"] = 2] = \"SUBSCRIPTION_STATUS_EXPIRED\";\n return SubscriptionStatus;\n}(SubscriptionStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar DiscountType = /*#__PURE__*/function (DiscountType) {\n DiscountType[DiscountType[\"DISCOUNT_TYPE_FIXED_AMOUNT\"] = 0] = \"DISCOUNT_TYPE_FIXED_AMOUNT\";\n DiscountType[DiscountType[\"DISCOUNT_TYPE_PERCENT_AMOUNT\"] = 1] = \"DISCOUNT_TYPE_PERCENT_AMOUNT\";\n DiscountType[DiscountType[\"DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS\"] = 2] = \"DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS\";\n DiscountType[DiscountType[\"DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT\"] = 3] = \"DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT\";\n return DiscountType;\n}(DiscountType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ContractSubscriptionStatus = /*#__PURE__*/function (ContractSubscriptionStatus) {\n ContractSubscriptionStatus[ContractSubscriptionStatus[\"CONTRACT_SUBSCRIPTION_STATUS_UNSET\"] = 0] = \"CONTRACT_SUBSCRIPTION_STATUS_UNSET\";\n ContractSubscriptionStatus[ContractSubscriptionStatus[\"CONTRACT_SUBSCRIPTION_STATUS_PENDING\"] = 1] = \"CONTRACT_SUBSCRIPTION_STATUS_PENDING\";\n ContractSubscriptionStatus[ContractSubscriptionStatus[\"CONTRACT_SUBSCRIPTION_STATUS_SUCCEEDED\"] = 2] = \"CONTRACT_SUBSCRIPTION_STATUS_SUCCEEDED\";\n ContractSubscriptionStatus[ContractSubscriptionStatus[\"CONTRACT_SUBSCRIPTION_STATUS_FAILED\"] = 3] = \"CONTRACT_SUBSCRIPTION_STATUS_FAILED\";\n return ContractSubscriptionStatus;\n}(ContractSubscriptionStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ProductSummaryBillingStrategy = /*#__PURE__*/function (ProductSummaryBillingStrategy) {\n ProductSummaryBillingStrategy[ProductSummaryBillingStrategy[\"CHARGE_AT_END_OF_BILLING_PERIOD\"] = 0] = \"CHARGE_AT_END_OF_BILLING_PERIOD\";\n ProductSummaryBillingStrategy[ProductSummaryBillingStrategy[\"CHARGE_AT_START_OF_BILLING_PERIOD\"] = 1] = \"CHARGE_AT_START_OF_BILLING_PERIOD\";\n ProductSummaryBillingStrategy[ProductSummaryBillingStrategy[\"CHARGE_INSTANTLY\"] = 2] = \"CHARGE_INSTANTLY\";\n ProductSummaryBillingStrategy[ProductSummaryBillingStrategy[\"CHARGE_AT_END_OF_DAY\"] = 3] = \"CHARGE_AT_END_OF_DAY\";\n return ProductSummaryBillingStrategy;\n}(ProductSummaryBillingStrategy || {});\nvar ProductSummaryDiscountDiscountType = /*#__PURE__*/function (ProductSummaryDiscountDiscountType) {\n ProductSummaryDiscountDiscountType[ProductSummaryDiscountDiscountType[\"FIXED_AMOUNT\"] = 0] = \"FIXED_AMOUNT\";\n ProductSummaryDiscountDiscountType[ProductSummaryDiscountDiscountType[\"PERCENT_AMOUNT\"] = 1] = \"PERCENT_AMOUNT\";\n ProductSummaryDiscountDiscountType[ProductSummaryDiscountDiscountType[\"FIXED_NUMBER_OF_UNITS\"] = 2] = \"FIXED_NUMBER_OF_UNITS\";\n ProductSummaryDiscountDiscountType[ProductSummaryDiscountDiscountType[\"FIXED_AMOUNT_PER_UNIT\"] = 3] = \"FIXED_AMOUNT_PER_UNIT\";\n return ProductSummaryDiscountDiscountType;\n}(ProductSummaryDiscountDiscountType || {});\nvar ProductSummaryProductType = /*#__PURE__*/function (ProductSummaryProductType) {\n ProductSummaryProductType[ProductSummaryProductType[\"BUNDLE\"] = 0] = \"BUNDLE\";\n ProductSummaryProductType[ProductSummaryProductType[\"FEE\"] = 1] = \"FEE\";\n ProductSummaryProductType[ProductSummaryProductType[\"PRODUCT\"] = 2] = \"PRODUCT\";\n ProductSummaryProductType[ProductSummaryProductType[\"SUBSCRIPTION\"] = 3] = \"SUBSCRIPTION\";\n ProductSummaryProductType[ProductSummaryProductType[\"VENDASTA_PRODUCT\"] = 4] = \"VENDASTA_PRODUCT\";\n return ProductSummaryProductType;\n}(ProductSummaryProductType || {});\nvar PricingRuleType = /*#__PURE__*/function (PricingRuleType) {\n PricingRuleType[PricingRuleType[\"STANDARD\"] = 0] = \"STANDARD\";\n PricingRuleType[PricingRuleType[\"STAIRSTEP\"] = 1] = \"STAIRSTEP\";\n PricingRuleType[PricingRuleType[\"TIERED\"] = 2] = \"TIERED\";\n PricingRuleType[PricingRuleType[\"CUSTOM\"] = 3] = \"CUSTOM\";\n return PricingRuleType;\n}(PricingRuleType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar PaymentCardCARD_TYPE = /*#__PURE__*/function (PaymentCardCARD_TYPE) {\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"VISA\"] = 1] = \"VISA\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"MASTERCARD\"] = 2] = \"MASTERCARD\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"AMEX\"] = 3] = \"AMEX\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"DISCOVER\"] = 4] = \"DISCOVER\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"JCB\"] = 5] = \"JCB\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"DINERS_CLUB\"] = 6] = \"DINERS_CLUB\";\n return PaymentCardCARD_TYPE;\n}(PaymentCardCARD_TYPE || {});\nvar PaymentCardFUNDING_TYPE = /*#__PURE__*/function (PaymentCardFUNDING_TYPE) {\n PaymentCardFUNDING_TYPE[PaymentCardFUNDING_TYPE[\"FUNDING_TYPE_UNKNOWN\"] = 0] = \"FUNDING_TYPE_UNKNOWN\";\n PaymentCardFUNDING_TYPE[PaymentCardFUNDING_TYPE[\"FUNDING_TYPE_CREDIT\"] = 1] = \"FUNDING_TYPE_CREDIT\";\n PaymentCardFUNDING_TYPE[PaymentCardFUNDING_TYPE[\"FUNDING_TYPE_DEBIT\"] = 2] = \"FUNDING_TYPE_DEBIT\";\n PaymentCardFUNDING_TYPE[PaymentCardFUNDING_TYPE[\"FUNDING_TYPE_PREPAID\"] = 3] = \"FUNDING_TYPE_PREPAID\";\n return PaymentCardFUNDING_TYPE;\n}(PaymentCardFUNDING_TYPE || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar PaymentMethodType = /*#__PURE__*/function (PaymentMethodType) {\n PaymentMethodType[PaymentMethodType[\"PAYMENT_METHOD_TYPE_UNSET\"] = 0] = \"PAYMENT_METHOD_TYPE_UNSET\";\n PaymentMethodType[PaymentMethodType[\"PAYMENT_METHOD_TYPE_CARD\"] = 1] = \"PAYMENT_METHOD_TYPE_CARD\";\n PaymentMethodType[PaymentMethodType[\"PAYMENT_METHOD_TYPE_ACH_DEBIT\"] = 2] = \"PAYMENT_METHOD_TYPE_ACH_DEBIT\";\n PaymentMethodType[PaymentMethodType[\"PAYMENT_METHOD_TYPE_ACSS_DEBIT\"] = 3] = \"PAYMENT_METHOD_TYPE_ACSS_DEBIT\";\n return PaymentMethodType;\n}(PaymentMethodType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ListInvoicesRequestFiltersDateFilterDateField = /*#__PURE__*/function (ListInvoicesRequestFiltersDateFilterDateField) {\n ListInvoicesRequestFiltersDateFilterDateField[ListInvoicesRequestFiltersDateFilterDateField[\"CREATED\"] = 0] = \"CREATED\";\n ListInvoicesRequestFiltersDateFilterDateField[ListInvoicesRequestFiltersDateFilterDateField[\"ISSUED\"] = 1] = \"ISSUED\";\n return ListInvoicesRequestFiltersDateFilterDateField;\n}(ListInvoicesRequestFiltersDateFilterDateField || {});\nvar InvoiceStatus = /*#__PURE__*/function (InvoiceStatus) {\n InvoiceStatus[InvoiceStatus[\"DRAFT\"] = 0] = \"DRAFT\";\n InvoiceStatus[InvoiceStatus[\"DUE\"] = 1] = \"DUE\";\n InvoiceStatus[InvoiceStatus[\"PAID\"] = 2] = \"PAID\";\n InvoiceStatus[InvoiceStatus[\"VOID\"] = 3] = \"VOID\";\n return InvoiceStatus;\n}(InvoiceStatus || {});\nvar LastPaymentStatus = /*#__PURE__*/function (LastPaymentStatus) {\n LastPaymentStatus[LastPaymentStatus[\"PAYMENT_UNSET\"] = 0] = \"PAYMENT_UNSET\";\n LastPaymentStatus[LastPaymentStatus[\"PAYMENT_SUCCESS\"] = 1] = \"PAYMENT_SUCCESS\";\n LastPaymentStatus[LastPaymentStatus[\"PAYMENT_PENDING\"] = 2] = \"PAYMENT_PENDING\";\n LastPaymentStatus[LastPaymentStatus[\"PAYMENT_FAILED\"] = 3] = \"PAYMENT_FAILED\";\n return LastPaymentStatus;\n}(LastPaymentStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar PayoutStatus = /*#__PURE__*/function (PayoutStatus) {\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_NOT_SET\"] = 0] = \"PAYOUT_STATUS_NOT_SET\";\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_PAID\"] = 1] = \"PAYOUT_STATUS_PAID\";\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_PENDING\"] = 2] = \"PAYOUT_STATUS_PENDING\";\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_IN_TRANSIT\"] = 3] = \"PAYOUT_STATUS_IN_TRANSIT\";\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_CANCELED\"] = 4] = \"PAYOUT_STATUS_CANCELED\";\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_FAILED\"] = 5] = \"PAYOUT_STATUS_FAILED\";\n return PayoutStatus;\n}(PayoutStatus || {});\nvar PayoutType = /*#__PURE__*/function (PayoutType) {\n PayoutType[PayoutType[\"PAYOUT_TYPE_NOT_SET\"] = 0] = \"PAYOUT_TYPE_NOT_SET\";\n PayoutType[PayoutType[\"PAYOUT_TYPE_BANK_ACCOUNT\"] = 1] = \"PAYOUT_TYPE_BANK_ACCOUNT\";\n PayoutType[PayoutType[\"PAYOUT_TYPE_CARD\"] = 2] = \"PAYOUT_TYPE_CARD\";\n return PayoutType;\n}(PayoutType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar SortDirection = /*#__PURE__*/function (SortDirection) {\n SortDirection[SortDirection[\"SORT_DIRECTION_ASCENDING\"] = 0] = \"SORT_DIRECTION_ASCENDING\";\n SortDirection[SortDirection[\"SORT_DIRECTION_DESCENDING\"] = 1] = \"SORT_DIRECTION_DESCENDING\";\n return SortDirection;\n}(SortDirection || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar MerchantType = /*#__PURE__*/function (MerchantType) {\n MerchantType[MerchantType[\"MERCHANT_TYPE_INVALID\"] = 0] = \"MERCHANT_TYPE_INVALID\";\n MerchantType[MerchantType[\"MERCHANT_TYPE_WHOLESALE\"] = 1] = \"MERCHANT_TYPE_WHOLESALE\";\n MerchantType[MerchantType[\"MERCHANT_TYPE_RETAIL\"] = 2] = \"MERCHANT_TYPE_RETAIL\";\n return MerchantType;\n}(MerchantType || {});\nvar SearchMerchantsRequestSortBy = /*#__PURE__*/function (SearchMerchantsRequestSortBy) {\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID\"] = 0] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_COMPANY_NAME\"] = 1] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_COMPANY_NAME\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_CONTACT_NAME\"] = 2] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_CONTACT_NAME\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_EMAIL_ADDRESS\"] = 3] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_EMAIL_ADDRESS\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_COUNTRY\"] = 4] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_COUNTRY\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_STATE\"] = 5] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_STATE\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_CREATED\"] = 6] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_CREATED\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_UPDATED\"] = 7] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_UPDATED\";\n return SearchMerchantsRequestSortBy;\n}(SearchMerchantsRequestSortBy || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Month = /*#__PURE__*/function (Month) {\n Month[Month[\"INVALID_MONTH\"] = 0] = \"INVALID_MONTH\";\n Month[Month[\"JANUARY\"] = 1] = \"JANUARY\";\n Month[Month[\"FEBRUARY\"] = 2] = \"FEBRUARY\";\n Month[Month[\"MARCH\"] = 3] = \"MARCH\";\n Month[Month[\"APRIL\"] = 4] = \"APRIL\";\n Month[Month[\"MAY\"] = 5] = \"MAY\";\n Month[Month[\"JUNE\"] = 6] = \"JUNE\";\n Month[Month[\"JULY\"] = 7] = \"JULY\";\n Month[Month[\"AUGUST\"] = 8] = \"AUGUST\";\n Month[Month[\"SEPTEMBER\"] = 9] = \"SEPTEMBER\";\n Month[Month[\"OCTOBER\"] = 10] = \"OCTOBER\";\n Month[Month[\"NOVEMBER\"] = 11] = \"NOVEMBER\";\n Month[Month[\"DECEMBER\"] = 12] = \"DECEMBER\";\n return Month;\n}(Month || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar MerchantReportStatus = /*#__PURE__*/function (MerchantReportStatus) {\n MerchantReportStatus[MerchantReportStatus[\"FAILED\"] = 0] = \"FAILED\";\n MerchantReportStatus[MerchantReportStatus[\"PENDING\"] = 1] = \"PENDING\";\n MerchantReportStatus[MerchantReportStatus[\"COMPLETED\"] = 2] = \"COMPLETED\";\n return MerchantReportStatus;\n}(MerchantReportStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CardType = /*#__PURE__*/function (CardType) {\n CardType[CardType[\"CARD_TYPE_UNKNOWN\"] = 0] = \"CARD_TYPE_UNKNOWN\";\n CardType[CardType[\"CARD_TYPE_VISA\"] = 1] = \"CARD_TYPE_VISA\";\n CardType[CardType[\"CARD_TYPE_MASTERCARD\"] = 2] = \"CARD_TYPE_MASTERCARD\";\n CardType[CardType[\"CARD_TYPE_AMEX\"] = 3] = \"CARD_TYPE_AMEX\";\n CardType[CardType[\"CARD_TYPE_DISCOVER\"] = 4] = \"CARD_TYPE_DISCOVER\";\n CardType[CardType[\"CARD_TYPE_JCB\"] = 5] = \"CARD_TYPE_JCB\";\n CardType[CardType[\"CARD_TYPE_DINERS_CLUB\"] = 6] = \"CARD_TYPE_DINERS_CLUB\";\n return CardType;\n}(CardType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar DisputeStatus = /*#__PURE__*/function (DisputeStatus) {\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_UNSET\"] = 0] = \"DISPUTE_STATUS_UNSET\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_WARNING_NEEDS_RESPONSE\"] = 1] = \"DISPUTE_STATUS_WARNING_NEEDS_RESPONSE\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_WARNING_UNDER_REVIEW\"] = 2] = \"DISPUTE_STATUS_WARNING_UNDER_REVIEW\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_WARNING_CLOSED\"] = 3] = \"DISPUTE_STATUS_WARNING_CLOSED\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_NEEDS_RESPONSE\"] = 4] = \"DISPUTE_STATUS_NEEDS_RESPONSE\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_UNDER_REVIEW\"] = 5] = \"DISPUTE_STATUS_UNDER_REVIEW\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_CHARGE_REFUNDED\"] = 6] = \"DISPUTE_STATUS_CHARGE_REFUNDED\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_WON\"] = 7] = \"DISPUTE_STATUS_WON\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_LOST\"] = 8] = \"DISPUTE_STATUS_LOST\";\n return DisputeStatus;\n}(DisputeStatus || {});\nvar PaymentAllocationType = /*#__PURE__*/function (PaymentAllocationType) {\n PaymentAllocationType[PaymentAllocationType[\"PAYMENT_ALLOCATION_TYPE_UNSET\"] = 0] = \"PAYMENT_ALLOCATION_TYPE_UNSET\";\n PaymentAllocationType[PaymentAllocationType[\"PAYMENT_ALLOCATION_TYPE_PURCHASE\"] = 1] = \"PAYMENT_ALLOCATION_TYPE_PURCHASE\";\n PaymentAllocationType[PaymentAllocationType[\"PAYMENT_ALLOCATION_TYPE_INVOICE\"] = 2] = \"PAYMENT_ALLOCATION_TYPE_INVOICE\";\n return PaymentAllocationType;\n}(PaymentAllocationType || {});\nvar PaymentErrorCode = /*#__PURE__*/function (PaymentErrorCode) {\n PaymentErrorCode[PaymentErrorCode[\"PAYMENT_ERROR_CODE_UNSET\"] = 0] = \"PAYMENT_ERROR_CODE_UNSET\";\n PaymentErrorCode[PaymentErrorCode[\"PAYMENT_ERROR_CODE_UNKNOWN\"] = 1] = \"PAYMENT_ERROR_CODE_UNKNOWN\";\n PaymentErrorCode[PaymentErrorCode[\"PAYMENT_ERROR_CODE_NO_ACCOUNT\"] = 2] = \"PAYMENT_ERROR_CODE_NO_ACCOUNT\";\n PaymentErrorCode[PaymentErrorCode[\"PAYMENT_ERROR_CODE_INSUFFICIENT_FUNDS\"] = 3] = \"PAYMENT_ERROR_CODE_INSUFFICIENT_FUNDS\";\n PaymentErrorCode[PaymentErrorCode[\"PAYMENT_ERROR_CODE_DEBIT_NOT_AUTHORIZED\"] = 4] = \"PAYMENT_ERROR_CODE_DEBIT_NOT_AUTHORIZED\";\n return PaymentErrorCode;\n}(PaymentErrorCode || {});\nvar PaymentFacilitatorType = /*#__PURE__*/function (PaymentFacilitatorType) {\n PaymentFacilitatorType[PaymentFacilitatorType[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n PaymentFacilitatorType[PaymentFacilitatorType[\"CUSTOM_STRIPE\"] = 1] = \"CUSTOM_STRIPE\";\n PaymentFacilitatorType[PaymentFacilitatorType[\"STANDARD_STRIPE\"] = 2] = \"STANDARD_STRIPE\";\n return PaymentFacilitatorType;\n}(PaymentFacilitatorType || {});\nvar PaymentIntentStatus = /*#__PURE__*/function (PaymentIntentStatus) {\n PaymentIntentStatus[PaymentIntentStatus[\"PAYMENT_INTENT_STATUS_UNSET\"] = 0] = \"PAYMENT_INTENT_STATUS_UNSET\";\n PaymentIntentStatus[PaymentIntentStatus[\"PAYMENT_INTENT_STATUS_PROCESSING\"] = 1] = \"PAYMENT_INTENT_STATUS_PROCESSING\";\n PaymentIntentStatus[PaymentIntentStatus[\"PAYMENT_INTENT_STATUS_SUCCEEDED\"] = 2] = \"PAYMENT_INTENT_STATUS_SUCCEEDED\";\n return PaymentIntentStatus;\n}(PaymentIntentStatus || {});\nvar RetailPaymentPaymentMethodDetailsType = /*#__PURE__*/function (RetailPaymentPaymentMethodDetailsType) {\n RetailPaymentPaymentMethodDetailsType[RetailPaymentPaymentMethodDetailsType[\"PAYMENT_METHOD_DETAILS_TYPE_UNSET\"] = 0] = \"PAYMENT_METHOD_DETAILS_TYPE_UNSET\";\n RetailPaymentPaymentMethodDetailsType[RetailPaymentPaymentMethodDetailsType[\"PAYMENT_METHOD_DETAILS_TYPE_CARD\"] = 1] = \"PAYMENT_METHOD_DETAILS_TYPE_CARD\";\n RetailPaymentPaymentMethodDetailsType[RetailPaymentPaymentMethodDetailsType[\"PAYMENT_METHOD_DETAILS_TYPE_ACH_DEBIT\"] = 2] = \"PAYMENT_METHOD_DETAILS_TYPE_ACH_DEBIT\";\n RetailPaymentPaymentMethodDetailsType[RetailPaymentPaymentMethodDetailsType[\"PAYMENT_METHOD_DETAILS_TYPE_ACSS_DEBIT\"] = 3] = \"PAYMENT_METHOD_DETAILS_TYPE_ACSS_DEBIT\";\n return RetailPaymentPaymentMethodDetailsType;\n}(RetailPaymentPaymentMethodDetailsType || {});\nvar PaymentSource = /*#__PURE__*/function (PaymentSource) {\n PaymentSource[PaymentSource[\"PAYMENT_SOURCE_NONE\"] = 0] = \"PAYMENT_SOURCE_NONE\";\n PaymentSource[PaymentSource[\"PAYMENT_SOURCE_STRIPE\"] = 1] = \"PAYMENT_SOURCE_STRIPE\";\n PaymentSource[PaymentSource[\"PAYMENT_SOURCE_VCASH\"] = 2] = \"PAYMENT_SOURCE_VCASH\";\n return PaymentSource;\n}(PaymentSource || {});\nvar PaymentStatus = /*#__PURE__*/function (PaymentStatus) {\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_UNSET\"] = 0] = \"PAYMENT_STATUS_UNSET\";\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_SUCCEEDED\"] = 1] = \"PAYMENT_STATUS_SUCCEEDED\";\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_FAILED\"] = 2] = \"PAYMENT_STATUS_FAILED\";\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_REFUNDED\"] = 3] = \"PAYMENT_STATUS_REFUNDED\";\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_PARTIALLY_REFUNDED\"] = 4] = \"PAYMENT_STATUS_PARTIALLY_REFUNDED\";\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_PENDING\"] = 5] = \"PAYMENT_STATUS_PENDING\";\n return PaymentStatus;\n}(PaymentStatus || {});\nvar RetailPaymentReferenceType = /*#__PURE__*/function (RetailPaymentReferenceType) {\n RetailPaymentReferenceType[RetailPaymentReferenceType[\"RETAIL_PAYMENT_REFERENCE_TYPE_UNSET\"] = 0] = \"RETAIL_PAYMENT_REFERENCE_TYPE_UNSET\";\n RetailPaymentReferenceType[RetailPaymentReferenceType[\"RETAIL_PAYMENT_REFERENCE_TYPE_INVOICE\"] = 1] = \"RETAIL_PAYMENT_REFERENCE_TYPE_INVOICE\";\n RetailPaymentReferenceType[RetailPaymentReferenceType[\"RETAIL_PAYMENT_REFERENCE_TYPE_SALES_ORDER\"] = 2] = \"RETAIL_PAYMENT_REFERENCE_TYPE_SALES_ORDER\";\n return RetailPaymentReferenceType;\n}(RetailPaymentReferenceType || {});\nvar RetailRefundFailureReason = /*#__PURE__*/function (RetailRefundFailureReason) {\n RetailRefundFailureReason[RetailRefundFailureReason[\"RETAIL_REFUND_FAILURE_REASON_UNSET\"] = 0] = \"RETAIL_REFUND_FAILURE_REASON_UNSET\";\n RetailRefundFailureReason[RetailRefundFailureReason[\"RETAIL_REFUND_FAILURE_REASON_LOST_OR_STOLEN_CARD\"] = 1] = \"RETAIL_REFUND_FAILURE_REASON_LOST_OR_STOLEN_CARD\";\n RetailRefundFailureReason[RetailRefundFailureReason[\"RETAIL_REFUND_FAILURE_REASON_EXPIRED_OR_CANCELED_CARD\"] = 2] = \"RETAIL_REFUND_FAILURE_REASON_EXPIRED_OR_CANCELED_CARD\";\n RetailRefundFailureReason[RetailRefundFailureReason[\"RETAIL_REFUND_FAILURE_REASON_UNKNOWN\"] = 3] = \"RETAIL_REFUND_FAILURE_REASON_UNKNOWN\";\n return RetailRefundFailureReason;\n}(RetailRefundFailureReason || {});\nvar RetailRefundReason = /*#__PURE__*/function (RetailRefundReason) {\n RetailRefundReason[RetailRefundReason[\"RETAIL_REFUND_REASON_UNSET\"] = 0] = \"RETAIL_REFUND_REASON_UNSET\";\n RetailRefundReason[RetailRefundReason[\"RETAIL_REFUND_REASON_DUPLICATE\"] = 1] = \"RETAIL_REFUND_REASON_DUPLICATE\";\n RetailRefundReason[RetailRefundReason[\"RETAIL_REFUND_REASON_FRAUDULENT\"] = 2] = \"RETAIL_REFUND_REASON_FRAUDULENT\";\n RetailRefundReason[RetailRefundReason[\"RETAIL_REFUND_REASON_REQUESTED_BY_CUSTOMER\"] = 3] = \"RETAIL_REFUND_REASON_REQUESTED_BY_CUSTOMER\";\n return RetailRefundReason;\n}(RetailRefundReason || {});\nvar RetailRefundStatus = /*#__PURE__*/function (RetailRefundStatus) {\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_UNSET\"] = 0] = \"RETAIL_REFUND_STATUS_UNSET\";\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_PENDING\"] = 1] = \"RETAIL_REFUND_STATUS_PENDING\";\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_SUCCEEDED\"] = 2] = \"RETAIL_REFUND_STATUS_SUCCEEDED\";\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_FAILED\"] = 3] = \"RETAIL_REFUND_STATUS_FAILED\";\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_REQUIRES_ACTION\"] = 4] = \"RETAIL_REFUND_STATUS_REQUIRES_ACTION\";\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_CANCELED\"] = 5] = \"RETAIL_REFUND_STATUS_CANCELED\";\n return RetailRefundStatus;\n}(RetailRefundStatus || {});\nvar RetailTransactionType = /*#__PURE__*/function (RetailTransactionType) {\n RetailTransactionType[RetailTransactionType[\"RETAIL_TRANSACTION_TYPE_UNSET\"] = 0] = \"RETAIL_TRANSACTION_TYPE_UNSET\";\n RetailTransactionType[RetailTransactionType[\"RETAIL_TRANSACTION_TYPE_PAYMENT\"] = 1] = \"RETAIL_TRANSACTION_TYPE_PAYMENT\";\n RetailTransactionType[RetailTransactionType[\"RETAIL_TRANSACTION_TYPE_REFUND\"] = 2] = \"RETAIL_TRANSACTION_TYPE_REFUND\";\n RetailTransactionType[RetailTransactionType[\"RETAIL_TRANSACTION_TYPE_PAYOUT_FAILURE\"] = 3] = \"RETAIL_TRANSACTION_TYPE_PAYOUT_FAILURE\";\n RetailTransactionType[RetailTransactionType[\"RETAIL_TRANSACTION_TYPE_ADJUSTMENT\"] = 4] = \"RETAIL_TRANSACTION_TYPE_ADJUSTMENT\";\n return RetailTransactionType;\n}(RetailTransactionType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ProductType = /*#__PURE__*/function (ProductType) {\n ProductType[ProductType[\"PRODUCT_TYPE_INVALID\"] = 0] = \"PRODUCT_TYPE_INVALID\";\n ProductType[ProductType[\"PRODUCT_TYPE_STANDARD_PRODUCT\"] = 1] = \"PRODUCT_TYPE_STANDARD_PRODUCT\";\n ProductType[ProductType[\"PRODUCT_TYPE_VENDASTA_PRODUCT\"] = 2] = \"PRODUCT_TYPE_VENDASTA_PRODUCT\";\n ProductType[ProductType[\"PRODUCT_TYPE_SUBSCRIPTION\"] = 3] = \"PRODUCT_TYPE_SUBSCRIPTION\";\n ProductType[ProductType[\"PRODUCT_TYPE_FEE\"] = 4] = \"PRODUCT_TYPE_FEE\";\n ProductType[ProductType[\"PRODUCT_TYPE_PRIVATE_PRODUCT\"] = 5] = \"PRODUCT_TYPE_PRIVATE_PRODUCT\";\n ProductType[ProductType[\"PRODUCT_TYPE_PARTNER_SUPPORT_SALES\"] = 6] = \"PRODUCT_TYPE_PARTNER_SUPPORT_SALES\";\n ProductType[ProductType[\"PRODUCT_TYPE_PACKAGE\"] = 7] = \"PRODUCT_TYPE_PACKAGE\";\n return ProductType;\n}(ProductType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CreditType = /*#__PURE__*/function (CreditType) {\n CreditType[CreditType[\"CREDIT_TYPE_UNSET\"] = 0] = \"CREDIT_TYPE_UNSET\";\n CreditType[CreditType[\"CREDIT_TYPE_CREDIT_NOTE\"] = 1] = \"CREDIT_TYPE_CREDIT_NOTE\";\n CreditType[CreditType[\"CREDIT_TYPE_PROMOTIONAL\"] = 2] = \"CREDIT_TYPE_PROMOTIONAL\";\n return CreditType;\n}(CreditType || {});\nvar PurchaseStatus = /*#__PURE__*/function (PurchaseStatus) {\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_UNSET\"] = 0] = \"PURCHASE_STATUS_UNSET\";\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_PENDING\"] = 1] = \"PURCHASE_STATUS_PENDING\";\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_DUE\"] = 2] = \"PURCHASE_STATUS_DUE\";\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_SUCCESS\"] = 3] = \"PURCHASE_STATUS_SUCCESS\";\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_DUNNING\"] = 4] = \"PURCHASE_STATUS_DUNNING\";\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_FAILED\"] = 5] = \"PURCHASE_STATUS_FAILED\";\n return PurchaseStatus;\n}(PurchaseStatus || {});\nvar ListPurchaseRequestState = /*#__PURE__*/function (ListPurchaseRequestState) {\n ListPurchaseRequestState[ListPurchaseRequestState[\"LIST_PURCHASE_REQUEST_STATE_ALL\"] = 0] = \"LIST_PURCHASE_REQUEST_STATE_ALL\";\n ListPurchaseRequestState[ListPurchaseRequestState[\"LIST_PURCHASE_REQUEST_STATE_OVERDUE\"] = 1] = \"LIST_PURCHASE_REQUEST_STATE_OVERDUE\";\n return ListPurchaseRequestState;\n}(ListPurchaseRequestState || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ReferenceType = /*#__PURE__*/function (ReferenceType) {\n ReferenceType[ReferenceType[\"PURCHASE\"] = 0] = \"PURCHASE\";\n ReferenceType[ReferenceType[\"PURCHASE_ITEM\"] = 1] = \"PURCHASE_ITEM\";\n ReferenceType[ReferenceType[\"INVOICE\"] = 2] = \"INVOICE\";\n return ReferenceType;\n}(ReferenceType || {});\nvar RefundReason = /*#__PURE__*/function (RefundReason) {\n RefundReason[RefundReason[\"REQUESTED_BY_CUSTOMER\"] = 0] = \"REQUESTED_BY_CUSTOMER\";\n RefundReason[RefundReason[\"DUPLICATE\"] = 1] = \"DUPLICATE\";\n RefundReason[RefundReason[\"FRAUDULENT\"] = 2] = \"FRAUDULENT\";\n return RefundReason;\n}(RefundReason || {});\nvar RefundStatus = /*#__PURE__*/function (RefundStatus) {\n RefundStatus[RefundStatus[\"SUCCEEDED\"] = 0] = \"SUCCEEDED\";\n RefundStatus[RefundStatus[\"FAILED\"] = 1] = \"FAILED\";\n RefundStatus[RefundStatus[\"PENDING\"] = 3] = \"PENDING\";\n return RefundStatus;\n}(RefundStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar SalesCreditNoteStatus = /*#__PURE__*/function (SalesCreditNoteStatus) {\n SalesCreditNoteStatus[SalesCreditNoteStatus[\"SALES_CREDIT_NOTE_STATUS_IN_PROGRESS\"] = 0] = \"SALES_CREDIT_NOTE_STATUS_IN_PROGRESS\";\n SalesCreditNoteStatus[SalesCreditNoteStatus[\"SALES_CREDIT_NOTE_STATUS_READY_TO_POST\"] = 1] = \"SALES_CREDIT_NOTE_STATUS_READY_TO_POST\";\n SalesCreditNoteStatus[SalesCreditNoteStatus[\"SALES_CREDIT_NOTE_STATUS_COMPLETE\"] = 2] = \"SALES_CREDIT_NOTE_STATUS_COMPLETE\";\n SalesCreditNoteStatus[SalesCreditNoteStatus[\"SALES_CREDIT_NOTE_STATUS_DISCARDED\"] = 3] = \"SALES_CREDIT_NOTE_STATUS_DISCARDED\";\n return SalesCreditNoteStatus;\n}(SalesCreditNoteStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar PaymentStatuses = /*#__PURE__*/function (PaymentStatuses) {\n PaymentStatuses[PaymentStatuses[\"PAYMENT_STATUSES_NOT_SET\"] = 0] = \"PAYMENT_STATUSES_NOT_SET\";\n PaymentStatuses[PaymentStatuses[\"PAYMENT_STATUSES_UNPAID\"] = 1] = \"PAYMENT_STATUSES_UNPAID\";\n PaymentStatuses[PaymentStatuses[\"PAYMENT_STATUSES_PAID\"] = 2] = \"PAYMENT_STATUSES_PAID\";\n PaymentStatuses[PaymentStatuses[\"PAYMENT_STATUSES_PART_PAID\"] = 3] = \"PAYMENT_STATUSES_PART_PAID\";\n PaymentStatuses[PaymentStatuses[\"PAYMENT_STATUSES_NOT_APPLICABLE\"] = 4] = \"PAYMENT_STATUSES_NOT_APPLICABLE\";\n return PaymentStatuses;\n}(PaymentStatuses || {});\nvar SalesInvoiceStatus = /*#__PURE__*/function (SalesInvoiceStatus) {\n SalesInvoiceStatus[SalesInvoiceStatus[\"SALES_INVOICE_STATUS_IN_PROGRESS\"] = 0] = \"SALES_INVOICE_STATUS_IN_PROGRESS\";\n SalesInvoiceStatus[SalesInvoiceStatus[\"SALES_INVOICE_STATUS_READY_TO_POST\"] = 1] = \"SALES_INVOICE_STATUS_READY_TO_POST\";\n SalesInvoiceStatus[SalesInvoiceStatus[\"SALES_INVOICE_STATUS_COMPLETE\"] = 2] = \"SALES_INVOICE_STATUS_COMPLETE\";\n SalesInvoiceStatus[SalesInvoiceStatus[\"SALES_INVOICE_STATUS_DISCARDED\"] = 3] = \"SALES_INVOICE_STATUS_DISCARDED\";\n return SalesInvoiceStatus;\n}(SalesInvoiceStatus || {});\nvar SalesInvoiceType = /*#__PURE__*/function (SalesInvoiceType) {\n SalesInvoiceType[SalesInvoiceType[\"SALES_INVOICE_TYPE_UNSET\"] = 0] = \"SALES_INVOICE_TYPE_UNSET\";\n SalesInvoiceType[SalesInvoiceType[\"SALES_INVOICE_TYPE_INVOICED\"] = 1] = \"SALES_INVOICE_TYPE_INVOICED\";\n SalesInvoiceType[SalesInvoiceType[\"SALES_INVOICE_TYPE_INSTANT\"] = 2] = \"SALES_INVOICE_TYPE_INSTANT\";\n return SalesInvoiceType;\n}(SalesInvoiceType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar TaxRuleEntityType = /*#__PURE__*/function (TaxRuleEntityType) {\n TaxRuleEntityType[TaxRuleEntityType[\"TAX_RULE_ENTITY_TYPE_UNSET\"] = 0] = \"TAX_RULE_ENTITY_TYPE_UNSET\";\n TaxRuleEntityType[TaxRuleEntityType[\"TAX_RULE_ENTITY_TYPE_CUSTOMER\"] = 1] = \"TAX_RULE_ENTITY_TYPE_CUSTOMER\";\n TaxRuleEntityType[TaxRuleEntityType[\"TAX_RULE_ENTITY_TYPE_PRODUCT\"] = 2] = \"TAX_RULE_ENTITY_TYPE_PRODUCT\";\n return TaxRuleEntityType;\n}(TaxRuleEntityType || {});\nvar TaxRuleType = /*#__PURE__*/function (TaxRuleType) {\n TaxRuleType[TaxRuleType[\"TAX_RULE_TYPE_UNSET\"] = 0] = \"TAX_RULE_TYPE_UNSET\";\n TaxRuleType[TaxRuleType[\"TAX_RULE_TYPE_EXEMPTION\"] = 1] = \"TAX_RULE_TYPE_EXEMPTION\";\n return TaxRuleType;\n}(TaxRuleType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar PaymentProcessor = /*#__PURE__*/function (PaymentProcessor) {\n PaymentProcessor[PaymentProcessor[\"PAYMENT_PROCESSOR_INVALID\"] = 0] = \"PAYMENT_PROCESSOR_INVALID\";\n PaymentProcessor[PaymentProcessor[\"PAYMENT_PROCESSOR_UNSET\"] = 1] = \"PAYMENT_PROCESSOR_UNSET\";\n PaymentProcessor[PaymentProcessor[\"PAYMENT_PROCESSOR_STRIPE\"] = 2] = \"PAYMENT_PROCESSOR_STRIPE\";\n return PaymentProcessor;\n}(PaymentProcessor || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CollectionMethod = /*#__PURE__*/function (CollectionMethod) {\n CollectionMethod[CollectionMethod[\"COLLECTION_METHOD_INVALID\"] = 0] = \"COLLECTION_METHOD_INVALID\";\n CollectionMethod[CollectionMethod[\"COLLECTION_METHOD_MANUAL\"] = 1] = \"COLLECTION_METHOD_MANUAL\";\n CollectionMethod[CollectionMethod[\"COLLECTION_METHOD_EMAIL\"] = 2] = \"COLLECTION_METHOD_EMAIL\";\n CollectionMethod[CollectionMethod[\"COLLECTION_METHOD_CHARGE_AUTOMATICALLY\"] = 3] = \"COLLECTION_METHOD_CHARGE_AUTOMATICALLY\";\n return CollectionMethod;\n}(CollectionMethod || {});\nvar Interval = /*#__PURE__*/function (Interval) {\n Interval[Interval[\"INTERVAL_INVALID\"] = 0] = \"INTERVAL_INVALID\";\n Interval[Interval[\"INTERVAL_DAY\"] = 1] = \"INTERVAL_DAY\";\n Interval[Interval[\"INTERVAL_WEEK\"] = 2] = \"INTERVAL_WEEK\";\n Interval[Interval[\"INTERVAL_MONTH\"] = 3] = \"INTERVAL_MONTH\";\n Interval[Interval[\"INTERVAL_YEAR\"] = 4] = \"INTERVAL_YEAR\";\n return Interval;\n}(Interval || {});\nvar RecurringInvoiceStatus = /*#__PURE__*/function (RecurringInvoiceStatus) {\n RecurringInvoiceStatus[RecurringInvoiceStatus[\"RECURRING_INVOICE_STATUS_INVALID\"] = 0] = \"RECURRING_INVOICE_STATUS_INVALID\";\n RecurringInvoiceStatus[RecurringInvoiceStatus[\"RECURRING_INVOICE_STATUS_INACTIVE\"] = 1] = \"RECURRING_INVOICE_STATUS_INACTIVE\";\n RecurringInvoiceStatus[RecurringInvoiceStatus[\"RECURRING_INVOICE_STATUS_ACTIVE\"] = 2] = \"RECURRING_INVOICE_STATUS_ACTIVE\";\n RecurringInvoiceStatus[RecurringInvoiceStatus[\"RECURRING_INVOICE_STATUS_ARCHIVED\"] = 3] = \"RECURRING_INVOICE_STATUS_ARCHIVED\";\n return RecurringInvoiceStatus;\n}(RecurringInvoiceStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar MerchantServicesReportRunStatus = /*#__PURE__*/function (MerchantServicesReportRunStatus) {\n MerchantServicesReportRunStatus[MerchantServicesReportRunStatus[\"MERCHANT_SERVICES_REPORT_RUN_STATUS_UNSPECIFIED\"] = 0] = \"MERCHANT_SERVICES_REPORT_RUN_STATUS_UNSPECIFIED\";\n MerchantServicesReportRunStatus[MerchantServicesReportRunStatus[\"MERCHANT_SERVICES_REPORT_RUN_STATUS_PENDING\"] = 1] = \"MERCHANT_SERVICES_REPORT_RUN_STATUS_PENDING\";\n MerchantServicesReportRunStatus[MerchantServicesReportRunStatus[\"MERCHANT_SERVICES_REPORT_RUN_STATUS_SUCCEEDED\"] = 2] = \"MERCHANT_SERVICES_REPORT_RUN_STATUS_SUCCEEDED\";\n MerchantServicesReportRunStatus[MerchantServicesReportRunStatus[\"MERCHANT_SERVICES_REPORT_RUN_STATUS_FAILED\"] = 3] = \"MERCHANT_SERVICES_REPORT_RUN_STATUS_FAILED\";\n return MerchantServicesReportRunStatus;\n}(MerchantServicesReportRunStatus || {});\nvar MerchantServicesReportRunType = /*#__PURE__*/function (MerchantServicesReportRunType) {\n MerchantServicesReportRunType[MerchantServicesReportRunType[\"MERCHANT_SERVICES_REPORT_RUN_TYPE_UNSPECIFIED\"] = 0] = \"MERCHANT_SERVICES_REPORT_RUN_TYPE_UNSPECIFIED\";\n MerchantServicesReportRunType[MerchantServicesReportRunType[\"MERCHANT_SERVICES_REPORT_RUN_TYPE_BALANCE_ITEMIZED\"] = 1] = \"MERCHANT_SERVICES_REPORT_RUN_TYPE_BALANCE_ITEMIZED\";\n return MerchantServicesReportRunType;\n}(MerchantServicesReportRunType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar EntityType = /*#__PURE__*/function (EntityType) {\n EntityType[EntityType[\"ENTITY_TYPE_INVALID\"] = 0] = \"ENTITY_TYPE_INVALID\";\n EntityType[EntityType[\"ENTITY_TYPE_SUBSCRIPTION\"] = 1] = \"ENTITY_TYPE_SUBSCRIPTION\";\n return EntityType;\n}(EntityType || {});\nvar RelationshipType = /*#__PURE__*/function (RelationshipType) {\n RelationshipType[RelationshipType[\"RELATIONSHIP_TYPE_INVALID\"] = 0] = \"RELATIONSHIP_TYPE_INVALID\";\n RelationshipType[RelationshipType[\"RELATIONSHIP_TYPE_ASSOCIATED_WITH\"] = 1] = \"RELATIONSHIP_TYPE_ASSOCIATED_WITH\";\n return RelationshipType;\n}(RelationshipType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar AppliedReferenceType = /*#__PURE__*/function (AppliedReferenceType) {\n AppliedReferenceType[AppliedReferenceType[\"APPLIED_REFERENCE_TYPE_UNSPECIFIED\"] = 0] = \"APPLIED_REFERENCE_TYPE_UNSPECIFIED\";\n AppliedReferenceType[AppliedReferenceType[\"APPLIED_REFERENCE_TYPE_INVOICE\"] = 1] = \"APPLIED_REFERENCE_TYPE_INVOICE\";\n return AppliedReferenceType;\n}(AppliedReferenceType || {});\nvar CreditNoteReason = /*#__PURE__*/function (CreditNoteReason) {\n CreditNoteReason[CreditNoteReason[\"CREDIT_NOTE_REASON_UNSPECIFIED\"] = 0] = \"CREDIT_NOTE_REASON_UNSPECIFIED\";\n CreditNoteReason[CreditNoteReason[\"CREDIT_NOTE_REASON_DUPLICATE_CHARGE\"] = 1] = \"CREDIT_NOTE_REASON_DUPLICATE_CHARGE\";\n CreditNoteReason[CreditNoteReason[\"CREDIT_NOTE_REASON_PRODUCT_UNSATISFACTORY\"] = 2] = \"CREDIT_NOTE_REASON_PRODUCT_UNSATISFACTORY\";\n CreditNoteReason[CreditNoteReason[\"CREDIT_NOTE_REASON_ORDER_CHANGE\"] = 3] = \"CREDIT_NOTE_REASON_ORDER_CHANGE\";\n CreditNoteReason[CreditNoteReason[\"CREDIT_NOTE_REASON_OTHER\"] = 4] = \"CREDIT_NOTE_REASON_OTHER\";\n return CreditNoteReason;\n}(CreditNoteReason || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$J(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ExportResponse {\n static fromProto(proto) {\n let m = new ExportResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass Note {\n static fromProto(proto) {\n let m = new Note();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.message !== 'undefined') {\n toReturn['message'] = this.message;\n }\n return toReturn;\n }\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$I(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$H(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Commitment {\n static fromProto(proto) {\n let m = new Commitment();\n m = Object.assign(m, proto);\n if (proto.initial) {\n m.initial = parseInt(proto.initial, 10);\n }\n if (proto.recurring) {\n m.recurring = parseInt(proto.recurring, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.initial !== 'undefined') {\n toReturn['initial'] = this.initial;\n }\n if (typeof this.recurring !== 'undefined') {\n toReturn['recurring'] = this.recurring;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$G(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedFee {\n static fromProto(proto) {\n let m = new AppliedFee();\n m = Object.assign(m, proto);\n if (proto.appliedAmount) {\n m.appliedAmount = parseInt(proto.appliedAmount, 10);\n }\n if (proto.fee) {\n m.fee = Fee.fromProto(proto.fee);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appliedAmount !== 'undefined') {\n toReturn['appliedAmount'] = this.appliedAmount;\n }\n if (typeof this.fee !== 'undefined' && this.fee !== null) {\n toReturn['fee'] = 'toApiJson' in this.fee ? this.fee.toApiJson() : this.fee;\n }\n return toReturn;\n }\n}\nclass Fee {\n static fromProto(proto) {\n let m = new Fee();\n m = Object.assign(m, proto);\n if (proto.amountType) {\n m.amountType = enumStringToValue$G(FeeAmountType, proto.amountType);\n }\n if (proto.feeType) {\n m.feeType = enumStringToValue$G(FeeType, proto.feeType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.amountType !== 'undefined') {\n toReturn['amountType'] = this.amountType;\n }\n if (typeof this.feeType !== 'undefined') {\n toReturn['feeType'] = this.feeType;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$F(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ComponentPricing {\n static fromProto(proto) {\n let m = new ComponentPricing();\n m = Object.assign(m, proto);\n if (proto.unitPrice) {\n m.unitPrice = parseInt(proto.unitPrice, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.componentId !== 'undefined') {\n toReturn['componentId'] = this.componentId;\n }\n if (typeof this.unitPrice !== 'undefined') {\n toReturn['unitPrice'] = this.unitPrice;\n }\n return toReturn;\n }\n}\nclass CreatePricingPlanRequest {\n static fromProto(proto) {\n let m = new CreatePricingPlanRequest();\n m = Object.assign(m, proto);\n if (proto.defaultBillingStrategy) {\n m.defaultBillingStrategy = enumStringToValue$F(BillingStrategy, proto.defaultBillingStrategy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.defaultBillingStrategy !== 'undefined') {\n toReturn['defaultBillingStrategy'] = this.defaultBillingStrategy;\n }\n return toReturn;\n }\n}\nclass CreatePricingPlanResponse {\n static fromProto(proto) {\n let m = new CreatePricingPlanResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetMultiPricingPlanRequest {\n static fromProto(proto) {\n let m = new GetMultiPricingPlanRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanIds !== 'undefined') {\n toReturn['pricingPlanIds'] = this.pricingPlanIds;\n }\n return toReturn;\n }\n}\nclass GetMultiPricingPlanResponse {\n static fromProto(proto) {\n let m = new GetMultiPricingPlanResponse();\n m = Object.assign(m, proto);\n if (proto.plans) {\n m.plans = proto.plans.map(PricingPlan.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.plans !== 'undefined' && this.plans !== null) {\n toReturn['plans'] = 'toApiJson' in this.plans ? this.plans.toApiJson() : this.plans;\n }\n return toReturn;\n }\n}\nclass PricingPlan {\n static fromProto(proto) {\n let m = new PricingPlan();\n m = Object.assign(m, proto);\n if (proto.defaultBillingStrategy) {\n m.defaultBillingStrategy = enumStringToValue$F(BillingStrategy, proto.defaultBillingStrategy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.defaultBillingStrategy !== 'undefined') {\n toReturn['defaultBillingStrategy'] = this.defaultBillingStrategy;\n }\n return toReturn;\n }\n}\nclass PricingPlanProductPricing {\n static fromProto(proto) {\n let m = new PricingPlanProductPricing();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$F(ProductPricingType, proto.type);\n }\n if (proto.rules) {\n m.rules = proto.rules.map(ProductPricingRule.fromProto);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$F(Frequency, proto.frequency);\n }\n if (proto.fees) {\n m.fees = proto.fees.map(Fee.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.rules !== 'undefined' && this.rules !== null) {\n toReturn['rules'] = 'toApiJson' in this.rules ? this.rules.toApiJson() : this.rules;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.fees !== 'undefined' && this.fees !== null) {\n toReturn['fees'] = 'toApiJson' in this.fees ? this.fees.toApiJson() : this.fees;\n }\n return toReturn;\n }\n}\nclass ProductPricingRule {\n static fromProto(proto) {\n let m = new ProductPricingRule();\n m = Object.assign(m, proto);\n if (proto.price) {\n m.price = parseInt(proto.price, 10);\n }\n if (proto.minUnits) {\n m.minUnits = parseInt(proto.minUnits, 10);\n }\n if (proto.maxUnits) {\n m.maxUnits = parseInt(proto.maxUnits, 10);\n }\n if (proto.componentPricing) {\n m.componentPricing = proto.componentPricing.map(ComponentPricing.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.price !== 'undefined') {\n toReturn['price'] = this.price;\n }\n if (typeof this.minUnits !== 'undefined') {\n toReturn['minUnits'] = this.minUnits;\n }\n if (typeof this.maxUnits !== 'undefined') {\n toReturn['maxUnits'] = this.maxUnits;\n }\n if (typeof this.componentPricing !== 'undefined' && this.componentPricing !== null) {\n toReturn['componentPricing'] = 'toApiJson' in this.componentPricing ? this.componentPricing.toApiJson() : this.componentPricing;\n }\n return toReturn;\n }\n}\nclass UpdatePricingPlanRequest {\n static fromProto(proto) {\n let m = new UpdatePricingPlanRequest();\n m = Object.assign(m, proto);\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n if (proto.defaultBillingStrategy) {\n m.defaultBillingStrategy = enumStringToValue$F(BillingStrategy, proto.defaultBillingStrategy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.defaultBillingStrategy !== 'undefined') {\n toReturn['defaultBillingStrategy'] = this.defaultBillingStrategy;\n }\n return toReturn;\n }\n}\nclass UpdatePricingPlanResponse {\n static fromProto(proto) {\n let m = new UpdatePricingPlanResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nfunction enumStringToValue$E(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ProductPrices {\n static fromProto(proto) {\n let m = new ProductPrices();\n m = Object.assign(m, proto);\n if (proto.prices) {\n m.prices = proto.prices.map(ProductPricing.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.prices !== 'undefined' && this.prices !== null) {\n toReturn['prices'] = 'toApiJson' in this.prices ? this.prices.toApiJson() : this.prices;\n }\n return toReturn;\n }\n}\nclass ProductPricing {\n static fromProto(proto) {\n let m = new ProductPricing();\n m = Object.assign(m, proto);\n if (proto.strategy) {\n m.strategy = enumStringToValue$E(BillingStrategy, proto.strategy);\n }\n if (proto.pricingType) {\n m.pricingType = enumStringToValue$E(ProductPricingType, proto.pricingType);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$E(Currency, proto.currency);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$E(Frequency, proto.frequency);\n }\n if (proto.pricingRules) {\n m.pricingRules = proto.pricingRules.map(ProductPricingRule.fromProto);\n }\n if (proto.commitment) {\n m.commitment = Commitment.fromProto(proto.commitment);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n if (proto.fees) {\n m.fees = proto.fees.map(Fee.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.pricingType !== 'undefined') {\n toReturn['pricingType'] = this.pricingType;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.pricingRules !== 'undefined' && this.pricingRules !== null) {\n toReturn['pricingRules'] = 'toApiJson' in this.pricingRules ? this.pricingRules.toApiJson() : this.pricingRules;\n }\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {\n toReturn['commitment'] = 'toApiJson' in this.commitment ? this.commitment.toApiJson() : this.commitment;\n }\n if (typeof this.isStartingPrice !== 'undefined') {\n toReturn['isStartingPrice'] = this.isStartingPrice;\n }\n if (typeof this.resolvedFrom !== 'undefined') {\n toReturn['resolvedFrom'] = this.resolvedFrom;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n if (typeof this.fees !== 'undefined' && this.fees !== null) {\n toReturn['fees'] = 'toApiJson' in this.fees ? this.fees.toApiJson() : this.fees;\n }\n return toReturn;\n }\n}\nclass WholesaleCostItemRequest {\n static fromProto(proto) {\n let m = new WholesaleCostItemRequest();\n m = Object.assign(m, proto);\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$E(Frequency, proto.frequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$D(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass SubscribeValidation {\n static fromProto(proto) {\n let m = new SubscribeValidation();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$D(SubscribeValidationStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$C(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AlignmentSubscription {\n static fromProto(proto) {\n let m = new AlignmentSubscription();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass CanCreateSubscriptionsRequest {\n static fromProto(proto) {\n let m = new CanCreateSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.skus) {\n m.skus = Object.keys(proto.skus).reduce((obj, k) => {\n obj[k] = parseInt(proto.skus[k], 10);\n return obj;\n }, {});\n }\n if (proto.items) {\n m.items = proto.items.map(CanCreateSubscriptionsRequestSubscriptionItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.skus !== 'undefined' && this.skus !== null) {\n toReturn['skus'] = 'toApiJson' in this.skus ? this.skus.toApiJson() : this.skus;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n return toReturn;\n }\n}\nclass CanCreateSubscriptionsResponse {\n static fromProto(proto) {\n let m = new CanCreateSubscriptionsResponse();\n m = Object.assign(m, proto);\n if (proto.validationResponse) {\n m.validationResponse = proto.validationResponse.map(ValidateResponse.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.validationResponse !== 'undefined' && this.validationResponse !== null) {\n toReturn['validationResponse'] = 'toApiJson' in this.validationResponse ? this.validationResponse.toApiJson() : this.validationResponse;\n }\n return toReturn;\n }\n}\nclass ChangeCustomUnitPriceRequest {\n static fromProto(proto) {\n let m = new ChangeCustomUnitPriceRequest();\n m = Object.assign(m, proto);\n if (proto.customUnitPrice) {\n m.customUnitPrice = parseInt(proto.customUnitPrice, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.customUnitPrice !== 'undefined') {\n toReturn['customUnitPrice'] = this.customUnitPrice;\n }\n return toReturn;\n }\n}\nclass ChangeFrequencyRequest {\n static fromProto(proto) {\n let m = new ChangeFrequencyRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$C(Frequency, proto.frequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n return toReturn;\n }\n}\nclass ChangeRenewalDateRequest {\n static fromProto(proto) {\n let m = new ChangeRenewalDateRequest();\n m = Object.assign(m, proto);\n if (proto.nextRenewalDate) {\n m.nextRenewalDate = new Date(proto.nextRenewalDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.nextRenewalDate !== 'undefined' && this.nextRenewalDate !== null) {\n toReturn['nextRenewalDate'] = 'toApiJson' in this.nextRenewalDate ? this.nextRenewalDate.toApiJson() : this.nextRenewalDate;\n }\n return toReturn;\n }\n}\nclass CreateSubscriptionRequest {\n static fromProto(proto) {\n let m = new CreateSubscriptionRequest();\n m = Object.assign(m, proto);\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n if (proto.proratedTo) {\n m.proratedTo = new Date(proto.proratedTo);\n }\n if (proto.renewalState) {\n m.renewalState = enumStringToValue$C(RenewalState, proto.renewalState);\n }\n if (proto.customUnitPrice) {\n m.customUnitPrice = parseInt(proto.customUnitPrice, 10);\n }\n if (proto.alignWith) {\n m.alignWith = AlignmentSubscription.fromProto(proto.alignWith);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$C(Frequency, proto.frequency);\n }\n if (proto.retailAmount) {\n m.retailAmount = parseInt(proto.retailAmount, 10);\n }\n if (proto.retailFrequency) {\n m.retailFrequency = enumStringToValue$C(Frequency, proto.retailFrequency);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$C(Consumer, proto.consumer);\n }\n if (proto.renewalStart) {\n m.renewalStart = new Date(proto.renewalStart);\n }\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n if (proto.billingCycleAnchor) {\n m.billingCycleAnchor = new Date(proto.billingCycleAnchor);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {\n toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? this.proratedTo.toApiJson() : this.proratedTo;\n }\n if (typeof this.renewalState !== 'undefined') {\n toReturn['renewalState'] = this.renewalState;\n }\n if (typeof this.retailBundleId !== 'undefined') {\n toReturn['retailBundleId'] = this.retailBundleId;\n }\n if (typeof this.forResale !== 'undefined') {\n toReturn['forResale'] = this.forResale;\n }\n if (typeof this.customUnitPrice !== 'undefined') {\n toReturn['customUnitPrice'] = this.customUnitPrice;\n }\n if (typeof this.alignWith !== 'undefined' && this.alignWith !== null) {\n toReturn['alignWith'] = 'toApiJson' in this.alignWith ? this.alignWith.toApiJson() : this.alignWith;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.retailAmount !== 'undefined') {\n toReturn['retailAmount'] = this.retailAmount;\n }\n if (typeof this.retailFrequency !== 'undefined') {\n toReturn['retailFrequency'] = this.retailFrequency;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n if (typeof this.renewalStart !== 'undefined' && this.renewalStart !== null) {\n toReturn['renewalStart'] = 'toApiJson' in this.renewalStart ? this.renewalStart.toApiJson() : this.renewalStart;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.billingCycleAnchor !== 'undefined' && this.billingCycleAnchor !== null) {\n toReturn['billingCycleAnchor'] = 'toApiJson' in this.billingCycleAnchor ? this.billingCycleAnchor.toApiJson() : this.billingCycleAnchor;\n }\n return toReturn;\n }\n}\nclass CreateSubscriptionResponse {\n static fromProto(proto) {\n let m = new CreateSubscriptionResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass CreateSubscriptionsRequest {\n static fromProto(proto) {\n let m = new CreateSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.subscriptions) {\n m.subscriptions = proto.subscriptions.map(Subscription.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.subscriptions !== 'undefined' && this.subscriptions !== null) {\n toReturn['subscriptions'] = 'toApiJson' in this.subscriptions ? this.subscriptions.toApiJson() : this.subscriptions;\n }\n return toReturn;\n }\n}\nclass CreateSubscriptionsResponse {\n static fromProto(proto) {\n let m = new CreateSubscriptionsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ReverseSubscriptionRequest {\n static fromProto(proto) {\n let m = new ReverseSubscriptionRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass SetAutoBillableRequest {\n static fromProto(proto) {\n let m = new SetAutoBillableRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n return toReturn;\n }\n}\nclass SetRenewalStartRequest {\n static fromProto(proto) {\n let m = new SetRenewalStartRequest();\n m = Object.assign(m, proto);\n if (proto.renewalStart) {\n m.renewalStart = new Date(proto.renewalStart);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.renewalStart !== 'undefined' && this.renewalStart !== null) {\n toReturn['renewalStart'] = 'toApiJson' in this.renewalStart ? this.renewalStart.toApiJson() : this.renewalStart;\n }\n return toReturn;\n }\n}\nclass CanCreateSubscriptionsRequestSkusEntry {\n static fromProto(proto) {\n let m = new CanCreateSubscriptionsRequestSkusEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass Subscription {\n static fromProto(proto) {\n let m = new Subscription();\n m = Object.assign(m, proto);\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n if (proto.renewalState) {\n m.renewalState = enumStringToValue$C(RenewalState, proto.renewalState);\n }\n if (proto.proratedTo) {\n m.proratedTo = new Date(proto.proratedTo);\n }\n if (proto.customUnitPrice) {\n m.customUnitPrice = parseInt(proto.customUnitPrice, 10);\n }\n if (proto.alignWith) {\n m.alignWith = AlignmentSubscription.fromProto(proto.alignWith);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$C(Frequency, proto.frequency);\n }\n if (proto.retailAmount) {\n m.retailAmount = parseInt(proto.retailAmount, 10);\n }\n if (proto.retailFrequency) {\n m.retailFrequency = enumStringToValue$C(Frequency, proto.retailFrequency);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$C(Consumer, proto.consumer);\n }\n if (proto.renewalStart) {\n m.renewalStart = new Date(proto.renewalStart);\n }\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n if (proto.billingCycleAnchor) {\n m.billingCycleAnchor = new Date(proto.billingCycleAnchor);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n if (typeof this.renewalState !== 'undefined') {\n toReturn['renewalState'] = this.renewalState;\n }\n if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {\n toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? this.proratedTo.toApiJson() : this.proratedTo;\n }\n if (typeof this.retailBundleId !== 'undefined') {\n toReturn['retailBundleId'] = this.retailBundleId;\n }\n if (typeof this.forResale !== 'undefined') {\n toReturn['forResale'] = this.forResale;\n }\n if (typeof this.customUnitPrice !== 'undefined') {\n toReturn['customUnitPrice'] = this.customUnitPrice;\n }\n if (typeof this.alignWith !== 'undefined' && this.alignWith !== null) {\n toReturn['alignWith'] = 'toApiJson' in this.alignWith ? this.alignWith.toApiJson() : this.alignWith;\n }\n if (typeof this.bundleInstanceId !== 'undefined') {\n toReturn['bundleInstanceId'] = this.bundleInstanceId;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.retailAmount !== 'undefined') {\n toReturn['retailAmount'] = this.retailAmount;\n }\n if (typeof this.retailFrequency !== 'undefined') {\n toReturn['retailFrequency'] = this.retailFrequency;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n if (typeof this.renewalStart !== 'undefined' && this.renewalStart !== null) {\n toReturn['renewalStart'] = 'toApiJson' in this.renewalStart ? this.renewalStart.toApiJson() : this.renewalStart;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.billingCycleAnchor !== 'undefined' && this.billingCycleAnchor !== null) {\n toReturn['billingCycleAnchor'] = 'toApiJson' in this.billingCycleAnchor ? this.billingCycleAnchor.toApiJson() : this.billingCycleAnchor;\n }\n return toReturn;\n }\n}\nclass CanCreateSubscriptionsRequestSubscriptionItem {\n static fromProto(proto) {\n let m = new CanCreateSubscriptionsRequestSubscriptionItem();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$C(Frequency, proto.frequency);\n }\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n return toReturn;\n }\n}\nclass ValidateResponse {\n static fromProto(proto) {\n let m = new ValidateResponse();\n m = Object.assign(m, proto);\n if (proto.code) {\n m.code = SubscribeValidation.fromProto(proto.code);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.code !== 'undefined' && this.code !== null) {\n toReturn['code'] = 'toApiJson' in this.code ? this.code.toApiJson() : this.code;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$B(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass BillItemRequest {\n static fromProto(proto) {\n let m = new BillItemRequest();\n m = Object.assign(m, proto);\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n if (proto.proratedTo) {\n m.proratedTo = new Date(proto.proratedTo);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {\n toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? this.proratedTo.toApiJson() : this.proratedTo;\n }\n return toReturn;\n }\n}\nclass BillMultipleItemsRequest {\n static fromProto(proto) {\n let m = new BillMultipleItemsRequest();\n m = Object.assign(m, proto);\n if (proto.items) {\n m.items = proto.items.map(Item.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n return toReturn;\n }\n}\nclass BillMultipleItemsResponse {\n static fromProto(proto) {\n let m = new BillMultipleItemsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass BillableItem {\n static fromProto(proto) {\n let m = new BillableItem();\n m = Object.assign(m, proto);\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$B(Frequency, proto.frequency);\n }\n if (proto.nextRenewal) {\n m.nextRenewal = new Date(proto.nextRenewal);\n }\n if (proto.customerAddress) {\n m.customerAddress = BillableItemCustomerAddress.fromProto(proto.customerAddress);\n }\n if (proto.customUnitPrice) {\n m.customUnitPrice = parseInt(proto.customUnitPrice, 10);\n }\n if (proto.retailFrequency) {\n m.retailFrequency = enumStringToValue$B(Frequency, proto.retailFrequency);\n }\n if (proto.nextRetailRenewal) {\n m.nextRetailRenewal = new Date(proto.nextRetailRenewal);\n }\n if (proto.retailUnitPrice) {\n m.retailUnitPrice = parseInt(proto.retailUnitPrice, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$B(SubscriptionStatus, proto.status);\n }\n if (proto.price) {\n m.price = ProductPricing.fromProto(proto.price);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n if (proto.source) {\n m.source = enumStringToValue$B(Source, proto.source);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$B(Consumer, proto.consumer);\n }\n if (proto.billingCycleAnchor) {\n m.billingCycleAnchor = new Date(proto.billingCycleAnchor);\n }\n if (proto.nextServicePeriodStart) {\n m.nextServicePeriodStart = new Date(proto.nextServicePeriodStart);\n }\n if (proto.nextServicePeriodEnd) {\n m.nextServicePeriodEnd = new Date(proto.nextServicePeriodEnd);\n }\n if (proto.nextInvoiceDate) {\n m.nextInvoiceDate = new Date(proto.nextInvoiceDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.nextRenewal !== 'undefined' && this.nextRenewal !== null) {\n toReturn['nextRenewal'] = 'toApiJson' in this.nextRenewal ? this.nextRenewal.toApiJson() : this.nextRenewal;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.productName !== 'undefined') {\n toReturn['productName'] = this.productName;\n }\n if (typeof this.customerAddress !== 'undefined' && this.customerAddress !== null) {\n toReturn['customerAddress'] = 'toApiJson' in this.customerAddress ? this.customerAddress.toApiJson() : this.customerAddress;\n }\n if (typeof this.customUnitPrice !== 'undefined') {\n toReturn['customUnitPrice'] = this.customUnitPrice;\n }\n if (typeof this.retailFrequency !== 'undefined') {\n toReturn['retailFrequency'] = this.retailFrequency;\n }\n if (typeof this.nextRetailRenewal !== 'undefined' && this.nextRetailRenewal !== null) {\n toReturn['nextRetailRenewal'] = 'toApiJson' in this.nextRetailRenewal ? this.nextRetailRenewal.toApiJson() : this.nextRetailRenewal;\n }\n if (typeof this.retailUnitPrice !== 'undefined') {\n toReturn['retailUnitPrice'] = this.retailUnitPrice;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.price !== 'undefined' && this.price !== null) {\n toReturn['price'] = 'toApiJson' in this.price ? this.price.toApiJson() : this.price;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.source !== 'undefined') {\n toReturn['source'] = this.source;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n if (typeof this.billingCycleAnchor !== 'undefined' && this.billingCycleAnchor !== null) {\n toReturn['billingCycleAnchor'] = 'toApiJson' in this.billingCycleAnchor ? this.billingCycleAnchor.toApiJson() : this.billingCycleAnchor;\n }\n if (typeof this.nextServicePeriodStart !== 'undefined' && this.nextServicePeriodStart !== null) {\n toReturn['nextServicePeriodStart'] = 'toApiJson' in this.nextServicePeriodStart ? this.nextServicePeriodStart.toApiJson() : this.nextServicePeriodStart;\n }\n if (typeof this.nextServicePeriodEnd !== 'undefined' && this.nextServicePeriodEnd !== null) {\n toReturn['nextServicePeriodEnd'] = 'toApiJson' in this.nextServicePeriodEnd ? this.nextServicePeriodEnd.toApiJson() : this.nextServicePeriodEnd;\n }\n if (typeof this.nextInvoiceDate !== 'undefined' && this.nextInvoiceDate !== null) {\n toReturn['nextInvoiceDate'] = 'toApiJson' in this.nextInvoiceDate ? this.nextInvoiceDate.toApiJson() : this.nextInvoiceDate;\n }\n return toReturn;\n }\n}\nclass CanBillItemRequest {\n static fromProto(proto) {\n let m = new CanBillItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass CreateUsageRequest {\n static fromProto(proto) {\n let m = new CreateUsageRequest();\n m = Object.assign(m, proto);\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n if (proto.usageDate) {\n m.usageDate = new Date(proto.usageDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.usageDate !== 'undefined' && this.usageDate !== null) {\n toReturn['usageDate'] = 'toApiJson' in this.usageDate ? this.usageDate.toApiJson() : this.usageDate;\n }\n return toReturn;\n }\n}\nclass BillableItemCustomerAddress {\n static fromProto(proto) {\n let m = new BillableItemCustomerAddress();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n return toReturn;\n }\n}\nclass DeleteBillableItemRequest {\n static fromProto(proto) {\n let m = new DeleteBillableItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass ExpireBillableItemRequest {\n static fromProto(proto) {\n let m = new ExpireBillableItemRequest();\n m = Object.assign(m, proto);\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass ExportSubscriptionsRequest {\n static fromProto(proto) {\n let m = new ExportSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSubscriptionsRequestFilters.fromProto(proto.filters);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$B(Consumer, proto.consumer);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionsRequestFilters {\n static fromProto(proto) {\n let m = new ListSubscriptionsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$B(SubscriptionStatus, proto.status);\n }\n if (proto.expiredDateGte) {\n m.expiredDateGte = new Date(proto.expiredDateGte);\n }\n if (proto.expiredDateLte) {\n m.expiredDateLte = new Date(proto.expiredDateLte);\n }\n if (proto.frequencies) {\n m.frequencies = proto.frequencies.map(v => enumStringToValue$B(Frequency, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.expiredDateGte !== 'undefined' && this.expiredDateGte !== null) {\n toReturn['expiredDateGte'] = 'toApiJson' in this.expiredDateGte ? this.expiredDateGte.toApiJson() : this.expiredDateGte;\n }\n if (typeof this.expiredDateLte !== 'undefined' && this.expiredDateLte !== null) {\n toReturn['expiredDateLte'] = 'toApiJson' in this.expiredDateLte ? this.expiredDateLte.toApiJson() : this.expiredDateLte;\n }\n if (typeof this.frequencies !== 'undefined') {\n toReturn['frequencies'] = this.frequencies;\n }\n return toReturn;\n }\n}\nclass ListBillableItemsRequestFilters {\n static fromProto(proto) {\n let m = new ListBillableItemsRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n return toReturn;\n }\n}\nclass GetBillableItemRequest {\n static fromProto(proto) {\n let m = new GetBillableItemRequest();\n m = Object.assign(m, proto);\n if (proto.projectionFilter) {\n m.projectionFilter = SubscriptionProjectionFilter.fromProto(proto.projectionFilter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.projectionFilter !== 'undefined' && this.projectionFilter !== null) {\n toReturn['projectionFilter'] = 'toApiJson' in this.projectionFilter ? this.projectionFilter.toApiJson() : this.projectionFilter;\n }\n return toReturn;\n }\n}\nclass GetBillableItemResponse {\n static fromProto(proto) {\n let m = new GetBillableItemResponse();\n m = Object.assign(m, proto);\n if (proto.item) {\n m.item = BillableItem.fromProto(proto.item);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.item !== 'undefined' && this.item !== null) {\n toReturn['item'] = 'toApiJson' in this.item ? this.item.toApiJson() : this.item;\n }\n return toReturn;\n }\n}\nclass GetMultiSubscriptionsRequest {\n static fromProto(proto) {\n let m = new GetMultiSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.subscriptionKeys) {\n m.subscriptionKeys = proto.subscriptionKeys.map(GetMultiSubscriptionsRequestKey.fromProto);\n }\n if (proto.projectionFilter) {\n m.projectionFilter = SubscriptionProjectionFilter.fromProto(proto.projectionFilter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionKeys !== 'undefined' && this.subscriptionKeys !== null) {\n toReturn['subscriptionKeys'] = 'toApiJson' in this.subscriptionKeys ? this.subscriptionKeys.toApiJson() : this.subscriptionKeys;\n }\n if (typeof this.projectionFilter !== 'undefined' && this.projectionFilter !== null) {\n toReturn['projectionFilter'] = 'toApiJson' in this.projectionFilter ? this.projectionFilter.toApiJson() : this.projectionFilter;\n }\n if (typeof this.subscriptionIds !== 'undefined') {\n toReturn['subscriptionIds'] = this.subscriptionIds;\n }\n return toReturn;\n }\n}\nclass GetMultiSubscriptionsResponse {\n static fromProto(proto) {\n let m = new GetMultiSubscriptionsResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptions) {\n m.subscriptions = proto.subscriptions.map(BillableItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptions !== 'undefined' && this.subscriptions !== null) {\n toReturn['subscriptions'] = 'toApiJson' in this.subscriptions ? this.subscriptions.toApiJson() : this.subscriptions;\n }\n return toReturn;\n }\n}\nclass Item {\n static fromProto(proto) {\n let m = new Item();\n m = Object.assign(m, proto);\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n return toReturn;\n }\n}\nclass GetMultiSubscriptionsRequestKey {\n static fromProto(proto) {\n let m = new GetMultiSubscriptionsRequestKey();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass ListBillableItemsRequest {\n static fromProto(proto) {\n let m = new ListBillableItemsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListBillableItemsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n return toReturn;\n }\n}\nclass ListBillableItemsResponse {\n static fromProto(proto) {\n let m = new ListBillableItemsResponse();\n m = Object.assign(m, proto);\n if (proto.items) {\n m.items = proto.items.map(BillableItem.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionsRequest {\n static fromProto(proto) {\n let m = new ListSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSubscriptionsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.projectionFilter) {\n m.projectionFilter = SubscriptionProjectionFilter.fromProto(proto.projectionFilter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.projectionFilter !== 'undefined' && this.projectionFilter !== null) {\n toReturn['projectionFilter'] = 'toApiJson' in this.projectionFilter ? this.projectionFilter.toApiJson() : this.projectionFilter;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionsResponse {\n static fromProto(proto) {\n let m = new ListSubscriptionsResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptions) {\n m.subscriptions = proto.subscriptions.map(BillableItem.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptions !== 'undefined' && this.subscriptions !== null) {\n toReturn['subscriptions'] = 'toApiJson' in this.subscriptions ? this.subscriptions.toApiJson() : this.subscriptions;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass UpdateSubscriptionRequestSubscription {\n static fromProto(proto) {\n let m = new UpdateSubscriptionRequestSubscription();\n m = Object.assign(m, proto);\n if (proto.billingCycleAnchor) {\n m.billingCycleAnchor = new Date(proto.billingCycleAnchor);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.billingCycleAnchor !== 'undefined' && this.billingCycleAnchor !== null) {\n toReturn['billingCycleAnchor'] = 'toApiJson' in this.billingCycleAnchor ? this.billingCycleAnchor.toApiJson() : this.billingCycleAnchor;\n }\n return toReturn;\n }\n}\nclass SubscriptionProjectionFilter {\n static fromProto(proto) {\n let m = new SubscriptionProjectionFilter();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.price !== 'undefined') {\n toReturn['price'] = this.price;\n }\n if (typeof this.includeDeleted !== 'undefined') {\n toReturn['includeDeleted'] = this.includeDeleted;\n }\n return toReturn;\n }\n}\nclass UnexpireBillableItemRequest {\n static fromProto(proto) {\n let m = new UnexpireBillableItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass UpdateSubscriptionRequest {\n static fromProto(proto) {\n let m = new UpdateSubscriptionRequest();\n m = Object.assign(m, proto);\n if (proto.subscription) {\n m.subscription = UpdateSubscriptionRequestSubscription.fromProto(proto.subscription);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscription !== 'undefined' && this.subscription !== null) {\n toReturn['subscription'] = 'toApiJson' in this.subscription ? this.subscription.toApiJson() : this.subscription;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateSubscriptionResponse {\n static fromProto(proto) {\n let m = new UpdateSubscriptionResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nfunction enumStringToValue$A(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedDiscount {\n static fromProto(proto) {\n let m = new AppliedDiscount();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$A(DiscountType, proto.type);\n }\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$z(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Bundle {\n static fromProto(proto) {\n let m = new Bundle();\n m = Object.assign(m, proto);\n if (proto.items) {\n m.items = proto.items.map(BundleItem.fromProto);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.hideBundleDetails !== 'undefined') {\n toReturn['hideBundleDetails'] = this.hideBundleDetails;\n }\n return toReturn;\n }\n}\nclass BundleItem {\n static fromProto(proto) {\n let m = new BundleItem();\n m = Object.assign(m, proto);\n if (proto.discountType) {\n m.discountType = enumStringToValue$z(DiscountType, proto.discountType);\n }\n if (proto.discountAmount) {\n m.discountAmount = parseInt(proto.discountAmount, 10);\n }\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n if (proto.price) {\n m.price = BundleItemPrice.fromProto(proto.price);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.productId !== 'undefined') {\n toReturn['productId'] = this.productId;\n }\n if (typeof this.discountType !== 'undefined') {\n toReturn['discountType'] = this.discountType;\n }\n if (typeof this.discountAmount !== 'undefined') {\n toReturn['discountAmount'] = this.discountAmount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.defaultSku !== 'undefined') {\n toReturn['defaultSku'] = this.defaultSku;\n }\n if (typeof this.price !== 'undefined' && this.price !== null) {\n toReturn['price'] = 'toApiJson' in this.price ? this.price.toApiJson() : this.price;\n }\n return toReturn;\n }\n}\nclass BundlePricing {\n static fromProto(proto) {\n let m = new BundlePricing();\n m = Object.assign(m, proto);\n if (proto.prices) {\n m.prices = proto.prices.map(BundlePricingPriceAndFrequency.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.prices !== 'undefined' && this.prices !== null) {\n toReturn['prices'] = 'toApiJson' in this.prices ? this.prices.toApiJson() : this.prices;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleResponseBundlesEntry {\n static fromProto(proto) {\n let m = new GetMultiBundleResponseBundlesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = Bundle.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass ListBundlesRequestFilters {\n static fromProto(proto) {\n let m = new ListBundlesRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleRequest {\n static fromProto(proto) {\n let m = new GetMultiBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bundleIds !== 'undefined') {\n toReturn['bundleIds'] = this.bundleIds;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleResponse {\n static fromProto(proto) {\n let m = new GetMultiBundleResponse();\n m = Object.assign(m, proto);\n if (proto.bundles) {\n m.bundles = Object.keys(proto.bundles).reduce((obj, k) => {\n obj[k] = Bundle.fromProto(proto.bundles[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bundles !== 'undefined' && this.bundles !== null) {\n toReturn['bundles'] = 'toApiJson' in this.bundles ? this.bundles.toApiJson() : this.bundles;\n }\n return toReturn;\n }\n}\nclass ListBundlesRequest {\n static fromProto(proto) {\n let m = new ListBundlesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListBundlesRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListBundlesResponse {\n static fromProto(proto) {\n let m = new ListBundlesResponse();\n m = Object.assign(m, proto);\n if (proto.bundles) {\n m.bundles = proto.bundles.map(Bundle.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bundles !== 'undefined' && this.bundles !== null) {\n toReturn['bundles'] = 'toApiJson' in this.bundles ? this.bundles.toApiJson() : this.bundles;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass BundleItemPrice {\n static fromProto(proto) {\n let m = new BundleItemPrice();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n return toReturn;\n }\n}\nclass BundlePricingPriceAndFrequency {\n static fromProto(proto) {\n let m = new BundlePricingPriceAndFrequency();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$z(Frequency, proto.frequency);\n }\n if (proto.effectivePrice) {\n m.effectivePrice = parseInt(proto.effectivePrice, 10);\n }\n if (proto.initialPrice) {\n m.initialPrice = parseInt(proto.initialPrice, 10);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.effectivePrice !== 'undefined') {\n toReturn['effectivePrice'] = this.effectivePrice;\n }\n if (typeof this.initialPrice !== 'undefined') {\n toReturn['initialPrice'] = this.initialPrice;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n return toReturn;\n }\n}\nclass UpsertBundleRequest {\n static fromProto(proto) {\n let m = new UpsertBundleRequest();\n m = Object.assign(m, proto);\n if (proto.items) {\n m.items = proto.items.map(BundleItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.hideBundleDetails !== 'undefined') {\n toReturn['hideBundleDetails'] = this.hideBundleDetails;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$y(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Contract {\n static fromProto(proto) {\n let m = new Contract();\n m = Object.assign(m, proto);\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$y(Currency, proto.currency);\n }\n if (proto.signed) {\n m.signed = new Date(proto.signed);\n }\n if (proto.activated) {\n m.activated = new Date(proto.activated);\n }\n if (proto.modified) {\n m.modified = new Date(proto.modified);\n }\n if (proto.verified) {\n m.verified = new Date(proto.verified);\n }\n if (proto.creditLimit) {\n m.creditLimit = parseInt(proto.creditLimit, 10);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.subscriptionUpdateStatus) {\n m.subscriptionUpdateStatus = enumStringToValue$y(ContractSubscriptionStatus, proto.subscriptionUpdateStatus);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.signed !== 'undefined' && this.signed !== null) {\n toReturn['signed'] = 'toApiJson' in this.signed ? this.signed.toApiJson() : this.signed;\n }\n if (typeof this.activated !== 'undefined' && this.activated !== null) {\n toReturn['activated'] = 'toApiJson' in this.activated ? this.activated.toApiJson() : this.activated;\n }\n if (typeof this.modified !== 'undefined' && this.modified !== null) {\n toReturn['modified'] = 'toApiJson' in this.modified ? this.modified.toApiJson() : this.modified;\n }\n if (typeof this.verified !== 'undefined' && this.verified !== null) {\n toReturn['verified'] = 'toApiJson' in this.verified ? this.verified.toApiJson() : this.verified;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.creditLimit !== 'undefined') {\n toReturn['creditLimit'] = this.creditLimit;\n }\n if (typeof this.dimension !== 'undefined') {\n toReturn['dimension'] = this.dimension;\n }\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.subscriptionUpdateStatus !== 'undefined') {\n toReturn['subscriptionUpdateStatus'] = this.subscriptionUpdateStatus;\n }\n return toReturn;\n }\n}\nclass GetMultiContractsResponseContractsEntry {\n static fromProto(proto) {\n let m = new GetMultiContractsResponseContractsEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = Contract.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass CreateContractRequest {\n static fromProto(proto) {\n let m = new CreateContractRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n return toReturn;\n }\n}\nclass CreateContractResponse {\n static fromProto(proto) {\n let m = new CreateContractResponse();\n m = Object.assign(m, proto);\n if (proto.contract) {\n m.contract = Contract.fromProto(proto.contract);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contract !== 'undefined' && this.contract !== null) {\n toReturn['contract'] = 'toApiJson' in this.contract ? this.contract.toApiJson() : this.contract;\n }\n return toReturn;\n }\n}\nclass GetContractRequest {\n static fromProto(proto) {\n let m = new GetContractRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetContractResponse {\n static fromProto(proto) {\n let m = new GetContractResponse();\n m = Object.assign(m, proto);\n if (proto.contract) {\n m.contract = Contract.fromProto(proto.contract);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contract !== 'undefined' && this.contract !== null) {\n toReturn['contract'] = 'toApiJson' in this.contract ? this.contract.toApiJson() : this.contract;\n }\n return toReturn;\n }\n}\nclass GetMerchantWholesaleCurrencyRequest {\n static fromProto(proto) {\n let m = new GetMerchantWholesaleCurrencyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetMerchantWholesaleCurrencyResponse {\n static fromProto(proto) {\n let m = new GetMerchantWholesaleCurrencyResponse();\n m = Object.assign(m, proto);\n if (proto.currency) {\n m.currency = enumStringToValue$y(Currency, proto.currency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n return toReturn;\n }\n}\nclass GetMultiContractsRequest {\n static fromProto(proto) {\n let m = new GetMultiContractsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantIds !== 'undefined') {\n toReturn['merchantIds'] = this.merchantIds;\n }\n return toReturn;\n }\n}\nclass GetMultiContractsResponse {\n static fromProto(proto) {\n let m = new GetMultiContractsResponse();\n m = Object.assign(m, proto);\n if (proto.contracts) {\n m.contracts = Object.keys(proto.contracts).reduce((obj, k) => {\n obj[k] = Contract.fromProto(proto.contracts[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contracts !== 'undefined' && this.contracts !== null) {\n toReturn['contracts'] = 'toApiJson' in this.contracts ? this.contracts.toApiJson() : this.contracts;\n }\n return toReturn;\n }\n}\nclass ListContractsRequest {\n static fromProto(proto) {\n let m = new ListContractsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListContractsResponse {\n static fromProto(proto) {\n let m = new ListContractsResponse();\n m = Object.assign(m, proto);\n if (proto.contracts) {\n m.contracts = proto.contracts.map(Contract.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contracts !== 'undefined' && this.contracts !== null) {\n toReturn['contracts'] = 'toApiJson' in this.contracts ? this.contracts.toApiJson() : this.contracts;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass UpdateContractRequestMutation {\n static fromProto(proto) {\n let m = new UpdateContractRequestMutation();\n m = Object.assign(m, proto);\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n if (proto.signed) {\n m.signed = new Date(proto.signed);\n }\n if (proto.activated) {\n m.activated = new Date(proto.activated);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.modified) {\n m.modified = new Date(proto.modified);\n }\n if (proto.creditLimit) {\n m.creditLimit = parseInt(proto.creditLimit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.dimension !== 'undefined') {\n toReturn['dimension'] = this.dimension;\n }\n if (typeof this.signed !== 'undefined' && this.signed !== null) {\n toReturn['signed'] = 'toApiJson' in this.signed ? this.signed.toApiJson() : this.signed;\n }\n if (typeof this.activated !== 'undefined' && this.activated !== null) {\n toReturn['activated'] = 'toApiJson' in this.activated ? this.activated.toApiJson() : this.activated;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.modified !== 'undefined' && this.modified !== null) {\n toReturn['modified'] = 'toApiJson' in this.modified ? this.modified.toApiJson() : this.modified;\n }\n if (typeof this.creditLimit !== 'undefined') {\n toReturn['creditLimit'] = this.creditLimit;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass ResetContractPricingRequest {\n static fromProto(proto) {\n let m = new ResetContractPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass UpdateContractRequest {\n static fromProto(proto) {\n let m = new UpdateContractRequest();\n m = Object.assign(m, proto);\n if (proto.mutations) {\n m.mutations = proto.mutations.map(UpdateContractRequestMutation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {\n toReturn['mutations'] = 'toApiJson' in this.mutations ? this.mutations.toApiJson() : this.mutations;\n }\n if (typeof this.performedBy !== 'undefined') {\n toReturn['performedBy'] = this.performedBy;\n }\n return toReturn;\n }\n}\nclass UpdateContractResponse {\n static fromProto(proto) {\n let m = new UpdateContractResponse();\n m = Object.assign(m, proto);\n if (proto.contract) {\n m.contract = Contract.fromProto(proto.contract);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contract !== 'undefined' && this.contract !== null) {\n toReturn['contract'] = 'toApiJson' in this.contract ? this.contract.toApiJson() : this.contract;\n }\n return toReturn;\n }\n}\nclass UpdateContractSubscriptionRequest {\n static fromProto(proto) {\n let m = new UpdateContractSubscriptionRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$y(Frequency, proto.frequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$x(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CustomerSummary {\n static fromProto(proto) {\n let m = new CustomerSummary();\n m = Object.assign(m, proto);\n if (proto.purchaseItemQuantity) {\n m.purchaseItemQuantity = parseInt(proto.purchaseItemQuantity, 10);\n }\n if (proto.purchaseItemTotal) {\n m.purchaseItemTotal = parseInt(proto.purchaseItemTotal, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$x(Currency, proto.currency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.purchaseItemQuantity !== 'undefined') {\n toReturn['purchaseItemQuantity'] = this.purchaseItemQuantity;\n }\n if (typeof this.purchaseItemTotal !== 'undefined') {\n toReturn['purchaseItemTotal'] = this.purchaseItemTotal;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n return toReturn;\n }\n}\nclass GetMultiCustomerSummariesRequest {\n static fromProto(proto) {\n let m = new GetMultiCustomerSummariesRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {\n m.periodStart = new Date(proto.periodStart);\n }\n if (proto.periodEnd) {\n m.periodEnd = new Date(proto.periodEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerIds !== 'undefined') {\n toReturn['customerIds'] = this.customerIds;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {\n toReturn['periodStart'] = 'toApiJson' in this.periodStart ? this.periodStart.toApiJson() : this.periodStart;\n }\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {\n toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? this.periodEnd.toApiJson() : this.periodEnd;\n }\n return toReturn;\n }\n}\nclass GetMultiCustomerSummariesResponse {\n static fromProto(proto) {\n let m = new GetMultiCustomerSummariesResponse();\n m = Object.assign(m, proto);\n if (proto.customerSummaries) {\n m.customerSummaries = proto.customerSummaries.map(CustomerSummary.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerSummaries !== 'undefined' && this.customerSummaries !== null) {\n toReturn['customerSummaries'] = 'toApiJson' in this.customerSummaries ? this.customerSummaries.toApiJson() : this.customerSummaries;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$w(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass BankAccount {\n static fromProto(proto) {\n let m = new BankAccount();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.accountHolderName !== 'undefined') {\n toReturn['accountHolderName'] = this.accountHolderName;\n }\n if (typeof this.bankName !== 'undefined') {\n toReturn['bankName'] = this.bankName;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.routingNumber !== 'undefined') {\n toReturn['routingNumber'] = this.routingNumber;\n }\n if (typeof this.last4 !== 'undefined') {\n toReturn['last4'] = this.last4;\n }\n if (typeof this.defaultForCurrency !== 'undefined') {\n toReturn['defaultForCurrency'] = this.defaultForCurrency;\n }\n return toReturn;\n }\n}\nclass CreateStripeExternalAccountRequest {\n static fromProto(proto) {\n let m = new CreateStripeExternalAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.stripeToken !== 'undefined') {\n toReturn['stripeToken'] = this.stripeToken;\n }\n return toReturn;\n }\n}\nclass DeleteBankAccountRequest {\n static fromProto(proto) {\n let m = new DeleteBankAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bankAccountId !== 'undefined') {\n toReturn['bankAccountId'] = this.bankAccountId;\n }\n return toReturn;\n }\n}\nclass ListBankAccountsRequest {\n static fromProto(proto) {\n let m = new ListBankAccountsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass ListBankAccountsResponse {\n static fromProto(proto) {\n let m = new ListBankAccountsResponse();\n m = Object.assign(m, proto);\n if (proto.bankAccount) {\n m.bankAccount = proto.bankAccount.map(BankAccount.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bankAccount !== 'undefined' && this.bankAccount !== null) {\n toReturn['bankAccount'] = 'toApiJson' in this.bankAccount ? this.bankAccount.toApiJson() : this.bankAccount;\n }\n return toReturn;\n }\n}\nclass SetDefaultBankAccountRequest {\n static fromProto(proto) {\n let m = new SetDefaultBankAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bankAccountId !== 'undefined') {\n toReturn['bankAccountId'] = this.bankAccountId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$v(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ProductSummaryDiscount {\n static fromProto(proto) {\n let m = new ProductSummaryDiscount();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$v(ProductSummaryDiscountDiscountType, proto.type);\n }\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.resetEachPeriod !== 'undefined') {\n toReturn['resetEachPeriod'] = this.resetEachPeriod;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRetentionRequestFilters {\n static fromProto(proto) {\n let m = new ListSubscriptionRetentionRequestFilters();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nclass GetProductSummariesTotalRequest {\n static fromProto(proto) {\n let m = new GetProductSummariesTotalRequest();\n m = Object.assign(m, proto);\n if (proto.startDate) {\n m.startDate = new Date(proto.startDate);\n }\n if (proto.endDate) {\n m.endDate = new Date(proto.endDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {\n toReturn['startDate'] = 'toApiJson' in this.startDate ? this.startDate.toApiJson() : this.startDate;\n }\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {\n toReturn['endDate'] = 'toApiJson' in this.endDate ? this.endDate.toApiJson() : this.endDate;\n }\n return toReturn;\n }\n}\nclass GetProductSummariesTotalResponse {\n static fromProto(proto) {\n let m = new GetProductSummariesTotalResponse();\n m = Object.assign(m, proto);\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n return toReturn;\n }\n}\nclass ListProductSummariesRequest {\n static fromProto(proto) {\n let m = new ListProductSummariesRequest();\n m = Object.assign(m, proto);\n if (proto.startDate) {\n m.startDate = new Date(proto.startDate);\n }\n if (proto.endDate) {\n m.endDate = new Date(proto.endDate);\n }\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {\n toReturn['startDate'] = 'toApiJson' in this.startDate ? this.startDate.toApiJson() : this.startDate;\n }\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {\n toReturn['endDate'] = 'toApiJson' in this.endDate ? this.endDate.toApiJson() : this.endDate;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n return toReturn;\n }\n}\nclass ListProductSummariesResponse {\n static fromProto(proto) {\n let m = new ListProductSummariesResponse();\n m = Object.assign(m, proto);\n if (proto.results) {\n m.results = proto.results.map(ProductSummary.fromProto);\n }\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRetentionByGroupResponse {\n static fromProto(proto) {\n let m = new ListSubscriptionRetentionByGroupResponse();\n m = Object.assign(m, proto);\n if (proto.metricsByGroup) {\n m.metricsByGroup = proto.metricsByGroup.map(ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.metricsByGroup !== 'undefined' && this.metricsByGroup !== null) {\n toReturn['metricsByGroup'] = 'toApiJson' in this.metricsByGroup ? this.metricsByGroup.toApiJson() : this.metricsByGroup;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRetentionBySKUResponse {\n static fromProto(proto) {\n let m = new ListSubscriptionRetentionBySKUResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptionMetrics) {\n m.subscriptionMetrics = proto.subscriptionMetrics.map(RetentionMetrics.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionMetrics !== 'undefined' && this.subscriptionMetrics !== null) {\n toReturn['subscriptionMetrics'] = 'toApiJson' in this.subscriptionMetrics ? this.subscriptionMetrics.toApiJson() : this.subscriptionMetrics;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRetentionRequest {\n static fromProto(proto) {\n let m = new ListSubscriptionRetentionRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSubscriptionRetentionRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass Pricing {\n static fromProto(proto) {\n let m = new Pricing();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$v(PricingRuleType, proto.type);\n }\n if (proto.rules) {\n m.rules = proto.rules.map(PricingRule.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.rules !== 'undefined' && this.rules !== null) {\n toReturn['rules'] = 'toApiJson' in this.rules ? this.rules.toApiJson() : this.rules;\n }\n return toReturn;\n }\n}\nclass ProductSummary {\n static fromProto(proto) {\n let m = new ProductSummary();\n m = Object.assign(m, proto);\n if (proto.totalQuantity) {\n m.totalQuantity = parseInt(proto.totalQuantity, 10);\n }\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n if (proto.totalDiscount) {\n m.totalDiscount = parseInt(proto.totalDiscount, 10);\n }\n if (proto.pricing) {\n m.pricing = Pricing.fromProto(proto.pricing);\n }\n if (proto.discounts) {\n m.discounts = proto.discounts.map(ProductSummaryDiscount.fromProto);\n }\n if (proto.billingStrategy) {\n m.billingStrategy = enumStringToValue$v(ProductSummaryBillingStrategy, proto.billingStrategy);\n }\n if (proto.productType) {\n m.productType = enumStringToValue$v(ProductSummaryProductType, proto.productType);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$v(Frequency, proto.frequency);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.productName !== 'undefined') {\n toReturn['productName'] = this.productName;\n }\n if (typeof this.totalQuantity !== 'undefined') {\n toReturn['totalQuantity'] = this.totalQuantity;\n }\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n if (typeof this.totalDiscount !== 'undefined') {\n toReturn['totalDiscount'] = this.totalDiscount;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {\n toReturn['discounts'] = 'toApiJson' in this.discounts ? this.discounts.toApiJson() : this.discounts;\n }\n if (typeof this.billingStrategy !== 'undefined') {\n toReturn['billingStrategy'] = this.billingStrategy;\n }\n if (typeof this.productType !== 'undefined') {\n toReturn['productType'] = this.productType;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.proratedPercent !== 'undefined') {\n toReturn['proratedPercent'] = this.proratedPercent;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n return toReturn;\n }\n}\nclass RetentionMetrics {\n static fromProto(proto) {\n let m = new RetentionMetrics();\n m = Object.assign(m, proto);\n if (proto.startingCount) {\n m.startingCount = parseInt(proto.startingCount, 10);\n }\n if (proto.activations) {\n m.activations = parseInt(proto.activations, 10);\n }\n if (proto.deactivations) {\n m.deactivations = parseInt(proto.deactivations, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.productName !== 'undefined') {\n toReturn['productName'] = this.productName;\n }\n if (typeof this.startingCount !== 'undefined') {\n toReturn['startingCount'] = this.startingCount;\n }\n if (typeof this.activations !== 'undefined') {\n toReturn['activations'] = this.activations;\n }\n if (typeof this.deactivations !== 'undefined') {\n toReturn['deactivations'] = this.deactivations;\n }\n if (typeof this.churn !== 'undefined') {\n toReturn['churn'] = this.churn;\n }\n if (typeof this.retention !== 'undefined') {\n toReturn['retention'] = this.retention;\n }\n return toReturn;\n }\n}\nclass PricingRule {\n static fromProto(proto) {\n let m = new PricingRule();\n m = Object.assign(m, proto);\n if (proto.min) {\n m.min = parseInt(proto.min, 10);\n }\n if (proto.max) {\n m.max = parseInt(proto.max, 10);\n }\n if (proto.units) {\n m.units = parseInt(proto.units, 10);\n }\n if (proto.unitPrice) {\n m.unitPrice = parseInt(proto.unitPrice, 10);\n }\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.min !== 'undefined') {\n toReturn['min'] = this.min;\n }\n if (typeof this.max !== 'undefined') {\n toReturn['max'] = this.max;\n }\n if (typeof this.units !== 'undefined') {\n toReturn['units'] = this.units;\n }\n if (typeof this.unitPrice !== 'undefined') {\n toReturn['unitPrice'] = this.unitPrice;\n }\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup {\n static fromProto(proto) {\n let m = new ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup();\n m = Object.assign(m, proto);\n if (proto.subscriptionMetrics) {\n m.subscriptionMetrics = proto.subscriptionMetrics.map(RetentionMetrics.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.subscriptionMetrics !== 'undefined' && this.subscriptionMetrics !== null) {\n toReturn['subscriptionMetrics'] = 'toApiJson' in this.subscriptionMetrics ? this.subscriptionMetrics.toApiJson() : this.subscriptionMetrics;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$u(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateDiscountRequest {\n static fromProto(proto) {\n let m = new CreateDiscountRequest();\n m = Object.assign(m, proto);\n if (proto.discountType) {\n m.discountType = enumStringToValue$u(DiscountType, proto.discountType);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$u(Consumer, proto.consumer);\n }\n if (proto.numberOfBillingPeriods) {\n m.numberOfBillingPeriods = parseInt(proto.numberOfBillingPeriods, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.discountType !== 'undefined') {\n toReturn['discountType'] = this.discountType;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.resetEachPeriod !== 'undefined') {\n toReturn['resetEachPeriod'] = this.resetEachPeriod;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.numberOfBillingPeriods !== 'undefined') {\n toReturn['numberOfBillingPeriods'] = this.numberOfBillingPeriods;\n }\n return toReturn;\n }\n}\nclass CreateDiscountResponse {\n static fromProto(proto) {\n let m = new CreateDiscountResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass Discount {\n static fromProto(proto) {\n let m = new Discount();\n m = Object.assign(m, proto);\n if (proto.discountId) {\n m.discountId = parseInt(proto.discountId, 10);\n }\n if (proto.discountType) {\n m.discountType = enumStringToValue$u(DiscountType, proto.discountType);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$u(Consumer, proto.consumer);\n }\n if (proto.numberOfBillingPeriods) {\n m.numberOfBillingPeriods = parseInt(proto.numberOfBillingPeriods, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.discountId !== 'undefined') {\n toReturn['discountId'] = this.discountId;\n }\n if (typeof this.discountType !== 'undefined') {\n toReturn['discountType'] = this.discountType;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.resetEachPeriod !== 'undefined') {\n toReturn['resetEachPeriod'] = this.resetEachPeriod;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.numberOfBillingPeriods !== 'undefined') {\n toReturn['numberOfBillingPeriods'] = this.numberOfBillingPeriods;\n }\n return toReturn;\n }\n}\nclass ExpireDiscountRequest {\n static fromProto(proto) {\n let m = new ExpireDiscountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ListDiscountsRequestFilters {\n static fromProto(proto) {\n let m = new ListDiscountsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n if (proto.consumers) {\n m.consumers = proto.consumers.map(v => enumStringToValue$u(Consumer, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.customerIds !== 'undefined') {\n toReturn['customerIds'] = this.customerIds;\n }\n if (typeof this.includeCustomerDiscounts !== 'undefined') {\n toReturn['includeCustomerDiscounts'] = this.includeCustomerDiscounts;\n }\n if (typeof this.consumers !== 'undefined') {\n toReturn['consumers'] = this.consumers;\n }\n if (typeof this.subscriptionIds !== 'undefined') {\n toReturn['subscriptionIds'] = this.subscriptionIds;\n }\n return toReturn;\n }\n}\nclass ListDiscountsRequest {\n static fromProto(proto) {\n let m = new ListDiscountsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListDiscountsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListDiscountsResponse {\n static fromProto(proto) {\n let m = new ListDiscountsResponse();\n m = Object.assign(m, proto);\n if (proto.discounts) {\n m.discounts = proto.discounts.map(Discount.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {\n toReturn['discounts'] = 'toApiJson' in this.discounts ? this.discounts.toApiJson() : this.discounts;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass UpdateDiscountRequest {\n static fromProto(proto) {\n let m = new UpdateDiscountRequest();\n m = Object.assign(m, proto);\n if (proto.discountType) {\n m.discountType = enumStringToValue$u(DiscountType, proto.discountType);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.numberOfBillingPeriods) {\n m.numberOfBillingPeriods = parseInt(proto.numberOfBillingPeriods, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.discountType !== 'undefined') {\n toReturn['discountType'] = this.discountType;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.resetEachPeriod !== 'undefined') {\n toReturn['resetEachPeriod'] = this.resetEachPeriod;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.numberOfBillingPeriods !== 'undefined') {\n toReturn['numberOfBillingPeriods'] = this.numberOfBillingPeriods;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$t(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedTaxRate {\n static fromProto(proto) {\n let m = new AppliedTaxRate();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.taxRateId !== 'undefined') {\n toReturn['taxRateId'] = this.taxRateId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.percentage !== 'undefined') {\n toReturn['percentage'] = this.percentage;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$s(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ArchiveTaxRequest {\n static fromProto(proto) {\n let m = new ArchiveTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass CalculateLineItemTaxesRequest {\n static fromProto(proto) {\n let m = new CalculateLineItemTaxesRequest();\n m = Object.assign(m, proto);\n if (proto.lineItems) {\n m.lineItems = proto.lineItems.map(CalculateLineItemTaxesRequestLineItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.lineItems !== 'undefined' && this.lineItems !== null) {\n toReturn['lineItems'] = 'toApiJson' in this.lineItems ? this.lineItems.toApiJson() : this.lineItems;\n }\n return toReturn;\n }\n}\nclass CalculateLineItemTaxesResponse {\n static fromProto(proto) {\n let m = new CalculateLineItemTaxesResponse();\n m = Object.assign(m, proto);\n if (proto.lineItemTaxes) {\n m.lineItemTaxes = proto.lineItemTaxes.map(CalculateLineItemTaxesResponseLineItemTaxes.fromProto);\n }\n if (proto.totalTaxableAmount) {\n m.totalTaxableAmount = parseInt(proto.totalTaxableAmount, 10);\n }\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n if (proto.appliedTaxes) {\n m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lineItemTaxes !== 'undefined' && this.lineItemTaxes !== null) {\n toReturn['lineItemTaxes'] = 'toApiJson' in this.lineItemTaxes ? this.lineItemTaxes.toApiJson() : this.lineItemTaxes;\n }\n if (typeof this.totalTaxableAmount !== 'undefined') {\n toReturn['totalTaxableAmount'] = this.totalTaxableAmount;\n }\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {\n toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? this.appliedTaxes.toApiJson() : this.appliedTaxes;\n }\n return toReturn;\n }\n}\nclass CalculateTaxRequest {\n static fromProto(proto) {\n let m = new CalculateTaxRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n return toReturn;\n }\n}\nclass CalculateTaxResponse {\n static fromProto(proto) {\n let m = new CalculateTaxResponse();\n m = Object.assign(m, proto);\n if (proto.taxableAmount) {\n m.taxableAmount = parseInt(proto.taxableAmount, 10);\n }\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.taxableAmount !== 'undefined') {\n toReturn['taxableAmount'] = this.taxableAmount;\n }\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n return toReturn;\n }\n}\nclass CreateTaxRequest {\n static fromProto(proto) {\n let m = new CreateTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.stateCode !== 'undefined') {\n toReturn['stateCode'] = this.stateCode;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.percentage !== 'undefined') {\n toReturn['percentage'] = this.percentage;\n }\n if (typeof this.accountingSystemId !== 'undefined') {\n toReturn['accountingSystemId'] = this.accountingSystemId;\n }\n return toReturn;\n }\n}\nclass CreateTaxResponse {\n static fromProto(proto) {\n let m = new CreateTaxResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ListTaxRequestFilters {\n static fromProto(proto) {\n let m = new ListTaxRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.includeArchived !== 'undefined') {\n toReturn['includeArchived'] = this.includeArchived;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.stateCode !== 'undefined') {\n toReturn['stateCode'] = this.stateCode;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass GetMultiTaxRequest {\n static fromProto(proto) {\n let m = new GetMultiTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.ids !== 'undefined') {\n toReturn['ids'] = this.ids;\n }\n return toReturn;\n }\n}\nclass GetMultiTaxResponse {\n static fromProto(proto) {\n let m = new GetMultiTaxResponse();\n m = Object.assign(m, proto);\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n return toReturn;\n }\n}\nclass CalculateLineItemTaxesRequestLineItem {\n static fromProto(proto) {\n let m = new CalculateLineItemTaxesRequestLineItem();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n return toReturn;\n }\n}\nclass CalculateLineItemTaxesResponseLineItemTaxes {\n static fromProto(proto) {\n let m = new CalculateLineItemTaxesResponseLineItemTaxes();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.taxableAmount !== 'undefined') {\n toReturn['taxableAmount'] = this.taxableAmount;\n }\n if (typeof this.taxRateIds !== 'undefined') {\n toReturn['taxRateIds'] = this.taxRateIds;\n }\n return toReturn;\n }\n}\nclass ListTaxRequest {\n static fromProto(proto) {\n let m = new ListTaxRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListTaxRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListTaxResponse {\n static fromProto(proto) {\n let m = new ListTaxResponse();\n m = Object.assign(m, proto);\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass TaxRate {\n static fromProto(proto) {\n let m = new TaxRate();\n m = Object.assign(m, proto);\n if (proto.archived) {\n m.archived = new Date(proto.archived);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.stateCode !== 'undefined') {\n toReturn['stateCode'] = this.stateCode;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.percentage !== 'undefined') {\n toReturn['percentage'] = this.percentage;\n }\n if (typeof this.accountingSystemId !== 'undefined') {\n toReturn['accountingSystemId'] = this.accountingSystemId;\n }\n if (typeof this.archived !== 'undefined' && this.archived !== null) {\n toReturn['archived'] = 'toApiJson' in this.archived ? this.archived.toApiJson() : this.archived;\n }\n return toReturn;\n }\n}\nclass UpdateTaxRequest {\n static fromProto(proto) {\n let m = new UpdateTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.stateCode !== 'undefined') {\n toReturn['stateCode'] = this.stateCode;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.percentage !== 'undefined') {\n toReturn['percentage'] = this.percentage;\n }\n if (typeof this.accountingSystemId !== 'undefined') {\n toReturn['accountingSystemId'] = this.accountingSystemId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$r(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedBundle {\n static fromProto(proto) {\n let m = new AppliedBundle();\n m = Object.assign(m, proto);\n if (proto.bundleItems) {\n m.bundleItems = proto.bundleItems.map(AppliedBundleItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.bundleItems !== 'undefined' && this.bundleItems !== null) {\n toReturn['bundleItems'] = 'toApiJson' in this.bundleItems ? this.bundleItems.toApiJson() : this.bundleItems;\n }\n if (typeof this.hideBundleItems !== 'undefined') {\n toReturn['hideBundleItems'] = this.hideBundleItems;\n }\n if (typeof this.bundleInstanceId !== 'undefined') {\n toReturn['bundleInstanceId'] = this.bundleInstanceId;\n }\n return toReturn;\n }\n}\nclass AppliedBundleItem {\n static fromProto(proto) {\n let m = new AppliedBundleItem();\n m = Object.assign(m, proto);\n if (proto.discountAmount) {\n m.discountAmount = parseInt(proto.discountAmount, 10);\n }\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.productId !== 'undefined') {\n toReturn['productId'] = this.productId;\n }\n if (typeof this.discountType !== 'undefined') {\n toReturn['discountType'] = this.discountType;\n }\n if (typeof this.discountAmount !== 'undefined') {\n toReturn['discountAmount'] = this.discountAmount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$q(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreatePaymentCardRequest {\n static fromProto(proto) {\n let m = new CreatePaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.stripeToken !== 'undefined') {\n toReturn['stripeToken'] = this.stripeToken;\n }\n if (typeof this.recaptchaToken !== 'undefined') {\n toReturn['recaptchaToken'] = this.recaptchaToken;\n }\n return toReturn;\n }\n}\nclass DeletePaymentCardRequest {\n static fromProto(proto) {\n let m = new DeletePaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.cardId !== 'undefined') {\n toReturn['cardId'] = this.cardId;\n }\n return toReturn;\n }\n}\nclass ListPaymentCardsRequest {\n static fromProto(proto) {\n let m = new ListPaymentCardsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n return toReturn;\n }\n}\nclass ListPaymentCardsResponse {\n static fromProto(proto) {\n let m = new ListPaymentCardsResponse();\n m = Object.assign(m, proto);\n if (proto.paymentCard) {\n m.paymentCard = proto.paymentCard.map(PaymentCard.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paymentCard !== 'undefined' && this.paymentCard !== null) {\n toReturn['paymentCard'] = 'toApiJson' in this.paymentCard ? this.paymentCard.toApiJson() : this.paymentCard;\n }\n return toReturn;\n }\n}\nclass PaymentCard {\n static fromProto(proto) {\n let m = new PaymentCard();\n m = Object.assign(m, proto);\n if (proto.cardType) {\n m.cardType = enumStringToValue$q(PaymentCardCARD_TYPE, proto.cardType);\n }\n if (proto.fundingType) {\n m.fundingType = enumStringToValue$q(PaymentCardFUNDING_TYPE, proto.fundingType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n if (typeof this.cardType !== 'undefined') {\n toReturn['cardType'] = this.cardType;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.zipCode !== 'undefined') {\n toReturn['zipCode'] = this.zipCode;\n }\n if (typeof this.cardId !== 'undefined') {\n toReturn['cardId'] = this.cardId;\n }\n if (typeof this.cardholderName !== 'undefined') {\n toReturn['cardholderName'] = this.cardholderName;\n }\n if (typeof this.expiryMonth !== 'undefined') {\n toReturn['expiryMonth'] = this.expiryMonth;\n }\n if (typeof this.expiryYear !== 'undefined') {\n toReturn['expiryYear'] = this.expiryYear;\n }\n if (typeof this.fundingType !== 'undefined') {\n toReturn['fundingType'] = this.fundingType;\n }\n if (typeof this.default !== 'undefined') {\n toReturn['default'] = this.default;\n }\n return toReturn;\n }\n}\nclass SetDefaultPaymentMethodRequest {\n static fromProto(proto) {\n let m = new SetDefaultPaymentMethodRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.paymentMethodId !== 'undefined') {\n toReturn['paymentMethodId'] = this.paymentMethodId;\n }\n return toReturn;\n }\n}\nclass UpdatePaymentCardRequest {\n static fromProto(proto) {\n let m = new UpdatePaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.stripeToken !== 'undefined') {\n toReturn['stripeToken'] = this.stripeToken;\n }\n if (typeof this.recaptchaToken !== 'undefined') {\n toReturn['recaptchaToken'] = this.recaptchaToken;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$p(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ListPaymentMethodsRequest {\n static fromProto(proto) {\n let m = new ListPaymentMethodsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n return toReturn;\n }\n}\nclass ListPaymentMethodsResponse {\n static fromProto(proto) {\n let m = new ListPaymentMethodsResponse();\n m = Object.assign(m, proto);\n if (proto.paymentMethods) {\n m.paymentMethods = proto.paymentMethods.map(PaymentMethod.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paymentMethods !== 'undefined' && this.paymentMethods !== null) {\n toReturn['paymentMethods'] = 'toApiJson' in this.paymentMethods ? this.paymentMethods.toApiJson() : this.paymentMethods;\n }\n return toReturn;\n }\n}\nclass PaymentACHDebit {\n static fromProto(proto) {\n let m = new PaymentACHDebit();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass PaymentACSSDebit {\n static fromProto(proto) {\n let m = new PaymentACSSDebit();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass PaymentMethod {\n static fromProto(proto) {\n let m = new PaymentMethod();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$p(PaymentMethodType, proto.type);\n }\n if (proto.card) {\n m.card = PaymentCard.fromProto(proto.card);\n }\n if (proto.achDebit) {\n m.achDebit = PaymentACHDebit.fromProto(proto.achDebit);\n }\n if (proto.acssDebit) {\n m.acssDebit = PaymentACSSDebit.fromProto(proto.acssDebit);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.card !== 'undefined' && this.card !== null) {\n toReturn['card'] = 'toApiJson' in this.card ? this.card.toApiJson() : this.card;\n }\n if (typeof this.achDebit !== 'undefined' && this.achDebit !== null) {\n toReturn['achDebit'] = 'toApiJson' in this.achDebit ? this.achDebit.toApiJson() : this.achDebit;\n }\n if (typeof this.acssDebit !== 'undefined' && this.acssDebit !== null) {\n toReturn['acssDebit'] = 'toApiJson' in this.acssDebit ? this.acssDebit.toApiJson() : this.acssDebit;\n }\n if (typeof this.default !== 'undefined') {\n toReturn['default'] = this.default;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$o(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AddBundleRequest {\n static fromProto(proto) {\n let m = new AddBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n return toReturn;\n }\n}\nclass AddBundleResponse {\n static fromProto(proto) {\n let m = new AddBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass AddLineItemRequest {\n static fromProto(proto) {\n let m = new AddLineItemRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.discounts) {\n m.discounts = proto.discounts.map(AppliedDiscount.fromProto);\n }\n if (proto.servicePeriodStart) {\n m.servicePeriodStart = new Date(proto.servicePeriodStart);\n }\n if (proto.servicePeriodEnd) {\n m.servicePeriodEnd = new Date(proto.servicePeriodEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.taxRates !== 'undefined') {\n toReturn['taxRates'] = this.taxRates;\n }\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {\n toReturn['discounts'] = 'toApiJson' in this.discounts ? this.discounts.toApiJson() : this.discounts;\n }\n if (typeof this.servicePeriodStart !== 'undefined' && this.servicePeriodStart !== null) {\n toReturn['servicePeriodStart'] = 'toApiJson' in this.servicePeriodStart ? this.servicePeriodStart.toApiJson() : this.servicePeriodStart;\n }\n if (typeof this.servicePeriodEnd !== 'undefined' && this.servicePeriodEnd !== null) {\n toReturn['servicePeriodEnd'] = 'toApiJson' in this.servicePeriodEnd ? this.servicePeriodEnd.toApiJson() : this.servicePeriodEnd;\n }\n return toReturn;\n }\n}\nclass AddLineItemResponse {\n static fromProto(proto) {\n let m = new AddLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass AppliedCreditNote {\n static fromProto(proto) {\n let m = new AppliedCreditNote();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.creditNoteType) {\n m.creditNoteType = enumStringToValue$o(CreditNoteType, proto.creditNoteType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNoteId !== 'undefined') {\n toReturn['creditNoteId'] = this.creditNoteId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.creditNoteType !== 'undefined') {\n toReturn['creditNoteType'] = this.creditNoteType;\n }\n if (typeof this.creditNoteNumber !== 'undefined') {\n toReturn['creditNoteNumber'] = this.creditNoteNumber;\n }\n return toReturn;\n }\n}\nclass ChargeInvoiceRequest {\n static fromProto(proto) {\n let m = new ChargeInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.paymentMethodId !== 'undefined') {\n toReturn['paymentMethodId'] = this.paymentMethodId;\n }\n return toReturn;\n }\n}\nclass CreateInvoiceRequest {\n static fromProto(proto) {\n let m = new CreateInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass CreateInvoiceResponse {\n static fromProto(proto) {\n let m = new CreateInvoiceResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass CreatePaymentLinkRequest {\n static fromProto(proto) {\n let m = new CreatePaymentLinkRequest();\n m = Object.assign(m, proto);\n if (proto.lineItems) {\n m.lineItems = proto.lineItems.map(PaymentLinkItem.fromProto);\n }\n if (proto.due) {\n m.due = new Date(proto.due);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.lineItems !== 'undefined' && this.lineItems !== null) {\n toReturn['lineItems'] = 'toApiJson' in this.lineItems ? this.lineItems.toApiJson() : this.lineItems;\n }\n if (typeof this.due !== 'undefined' && this.due !== null) {\n toReturn['due'] = 'toApiJson' in this.due ? this.due.toApiJson() : this.due;\n }\n return toReturn;\n }\n}\nclass CreatePaymentLinkResponse {\n static fromProto(proto) {\n let m = new CreatePaymentLinkResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass InvoiceCustomerAddress {\n static fromProto(proto) {\n let m = new InvoiceCustomerAddress();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.address2 !== 'undefined') {\n toReturn['address2'] = this.address2;\n }\n return toReturn;\n }\n}\nclass ListInvoicesRequestFiltersDateFilter {\n static fromProto(proto) {\n let m = new ListInvoicesRequestFiltersDateFilter();\n m = Object.assign(m, proto);\n if (proto.dateField) {\n m.dateField = enumStringToValue$o(ListInvoicesRequestFiltersDateFilterDateField, proto.dateField);\n }\n if (proto.dateLte) {\n m.dateLte = new Date(proto.dateLte);\n }\n if (proto.dateGte) {\n m.dateGte = new Date(proto.dateGte);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dateField !== 'undefined') {\n toReturn['dateField'] = this.dateField;\n }\n if (typeof this.dateLte !== 'undefined' && this.dateLte !== null) {\n toReturn['dateLte'] = 'toApiJson' in this.dateLte ? this.dateLte.toApiJson() : this.dateLte;\n }\n if (typeof this.dateGte !== 'undefined' && this.dateGte !== null) {\n toReturn['dateGte'] = 'toApiJson' in this.dateGte ? this.dateGte.toApiJson() : this.dateGte;\n }\n return toReturn;\n }\n}\nclass DeleteInvoiceRequest {\n static fromProto(proto) {\n let m = new DeleteInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass DeleteLineItemRequest {\n static fromProto(proto) {\n let m = new DeleteLineItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass DeleteLineItemResponse {\n static fromProto(proto) {\n let m = new DeleteLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass DuplicateInvoiceRequest {\n static fromProto(proto) {\n let m = new DuplicateInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass DuplicateInvoiceResponse {\n static fromProto(proto) {\n let m = new DuplicateInvoiceResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass ListInvoicesRequestFilters {\n static fromProto(proto) {\n let m = new ListInvoicesRequestFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue$o(InvoiceStatus, v));\n }\n if (proto.dateFilter) {\n m.dateFilter = ListInvoicesRequestFiltersDateFilter.fromProto(proto.dateFilter);\n }\n if (proto.lastPaymentStatuses) {\n m.lastPaymentStatuses = proto.lastPaymentStatuses.map(v => enumStringToValue$o(LastPaymentStatus, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.pastDue !== 'undefined') {\n toReturn['pastDue'] = this.pastDue;\n }\n if (typeof this.number !== 'undefined') {\n toReturn['number'] = this.number;\n }\n if (typeof this.dateFilter !== 'undefined' && this.dateFilter !== null) {\n toReturn['dateFilter'] = 'toApiJson' in this.dateFilter ? this.dateFilter.toApiJson() : this.dateFilter;\n }\n if (typeof this.origins !== 'undefined') {\n toReturn['origins'] = this.origins;\n }\n if (typeof this.collectionMethods !== 'undefined') {\n toReturn['collectionMethods'] = this.collectionMethods;\n }\n if (typeof this.lastPaymentStatuses !== 'undefined') {\n toReturn['lastPaymentStatuses'] = this.lastPaymentStatuses;\n }\n return toReturn;\n }\n}\nclass GetInvoiceRequest {\n static fromProto(proto) {\n let m = new GetInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass GetInvoiceResponse {\n static fromProto(proto) {\n let m = new GetInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass GetUpcomingInvoicePreviewRequest {\n static fromProto(proto) {\n let m = new GetUpcomingInvoicePreviewRequest();\n m = Object.assign(m, proto);\n if (proto.invoiceDate) {\n m.invoiceDate = new Date(proto.invoiceDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.invoiceDate !== 'undefined' && this.invoiceDate !== null) {\n toReturn['invoiceDate'] = 'toApiJson' in this.invoiceDate ? this.invoiceDate.toApiJson() : this.invoiceDate;\n }\n return toReturn;\n }\n}\nclass GetUpcomingInvoicePreviewResponse {\n static fromProto(proto) {\n let m = new GetUpcomingInvoicePreviewResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass Invoice {\n static fromProto(proto) {\n let m = new Invoice();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$o(InvoiceStatus, proto.status);\n }\n if (proto.subtotal) {\n m.subtotal = parseInt(proto.subtotal, 10);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.amountPaid) {\n m.amountPaid = parseInt(proto.amountPaid, 10);\n }\n if (proto.issued) {\n m.issued = new Date(proto.issued);\n }\n if (proto.due) {\n m.due = new Date(proto.due);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.items) {\n m.items = proto.items.map(InvoiceItem.fromProto);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$o(Currency, proto.currency);\n }\n if (proto.paid) {\n m.paid = new Date(proto.paid);\n }\n if (proto.amountTax) {\n m.amountTax = parseInt(proto.amountTax, 10);\n }\n if (proto.appliedTaxes) {\n m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);\n }\n if (proto.defaultTaxRates) {\n m.defaultTaxRates = proto.defaultTaxRates.map(TaxRate.fromProto);\n }\n if (proto.appliedBundles) {\n m.appliedBundles = proto.appliedBundles.map(AppliedBundle.fromProto);\n }\n if (proto.amountDiscount) {\n m.amountDiscount = parseInt(proto.amountDiscount, 10);\n }\n if (proto.voided) {\n m.voided = new Date(proto.voided);\n }\n if (proto.customerAddress) {\n m.customerAddress = InvoiceCustomerAddress.fromProto(proto.customerAddress);\n }\n if (proto.notes) {\n m.notes = proto.notes.map(Note.fromProto);\n }\n if (proto.autoAdvance) {\n m.autoAdvance = new Date(proto.autoAdvance);\n }\n if (proto.paymentMethodTypes) {\n m.paymentMethodTypes = proto.paymentMethodTypes.map(v => enumStringToValue$o(PaymentMethodType, v));\n }\n if (proto.lastPaymentStatus) {\n m.lastPaymentStatus = enumStringToValue$o(LastPaymentStatus, proto.lastPaymentStatus);\n }\n if (proto.amountOwing) {\n m.amountOwing = parseInt(proto.amountOwing, 10);\n }\n if (proto.appliedCreditNotes) {\n m.appliedCreditNotes = proto.appliedCreditNotes.map(AppliedCreditNote.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.number !== 'undefined') {\n toReturn['number'] = this.number;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.subtotal !== 'undefined') {\n toReturn['subtotal'] = this.subtotal;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.amountPaid !== 'undefined') {\n toReturn['amountPaid'] = this.amountPaid;\n }\n if (typeof this.issued !== 'undefined' && this.issued !== null) {\n toReturn['issued'] = 'toApiJson' in this.issued ? this.issued.toApiJson() : this.issued;\n }\n if (typeof this.due !== 'undefined' && this.due !== null) {\n toReturn['due'] = 'toApiJson' in this.due ? this.due.toApiJson() : this.due;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.paid !== 'undefined' && this.paid !== null) {\n toReturn['paid'] = 'toApiJson' in this.paid ? this.paid.toApiJson() : this.paid;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.amountTax !== 'undefined') {\n toReturn['amountTax'] = this.amountTax;\n }\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {\n toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? this.appliedTaxes.toApiJson() : this.appliedTaxes;\n }\n if (typeof this.defaultTaxRates !== 'undefined' && this.defaultTaxRates !== null) {\n toReturn['defaultTaxRates'] = 'toApiJson' in this.defaultTaxRates ? this.defaultTaxRates.toApiJson() : this.defaultTaxRates;\n }\n if (typeof this.appliedBundles !== 'undefined' && this.appliedBundles !== null) {\n toReturn['appliedBundles'] = 'toApiJson' in this.appliedBundles ? this.appliedBundles.toApiJson() : this.appliedBundles;\n }\n if (typeof this.amountDiscount !== 'undefined') {\n toReturn['amountDiscount'] = this.amountDiscount;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.origin !== 'undefined') {\n toReturn['origin'] = this.origin;\n }\n if (typeof this.collectionMethod !== 'undefined') {\n toReturn['collectionMethod'] = this.collectionMethod;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.voided !== 'undefined' && this.voided !== null) {\n toReturn['voided'] = 'toApiJson' in this.voided ? this.voided.toApiJson() : this.voided;\n }\n if (typeof this.defaultPaymentMethod !== 'undefined') {\n toReturn['defaultPaymentMethod'] = this.defaultPaymentMethod;\n }\n if (typeof this.customerAddress !== 'undefined' && this.customerAddress !== null) {\n toReturn['customerAddress'] = 'toApiJson' in this.customerAddress ? this.customerAddress.toApiJson() : this.customerAddress;\n }\n if (typeof this.externalCustomerIdentifier !== 'undefined') {\n toReturn['externalCustomerIdentifier'] = this.externalCustomerIdentifier;\n }\n if (typeof this.notes !== 'undefined' && this.notes !== null) {\n toReturn['notes'] = 'toApiJson' in this.notes ? this.notes.toApiJson() : this.notes;\n }\n if (typeof this.additionalContactIds !== 'undefined') {\n toReturn['additionalContactIds'] = this.additionalContactIds;\n }\n if (typeof this.autoAdvance !== 'undefined' && this.autoAdvance !== null) {\n toReturn['autoAdvance'] = 'toApiJson' in this.autoAdvance ? this.autoAdvance.toApiJson() : this.autoAdvance;\n }\n if (typeof this.paymentMethodTypes !== 'undefined') {\n toReturn['paymentMethodTypes'] = this.paymentMethodTypes;\n }\n if (typeof this.lastPaymentStatus !== 'undefined') {\n toReturn['lastPaymentStatus'] = this.lastPaymentStatus;\n }\n if (typeof this.amountOwing !== 'undefined') {\n toReturn['amountOwing'] = this.amountOwing;\n }\n if (typeof this.appliedCreditNotes !== 'undefined' && this.appliedCreditNotes !== null) {\n toReturn['appliedCreditNotes'] = 'toApiJson' in this.appliedCreditNotes ? this.appliedCreditNotes.toApiJson() : this.appliedCreditNotes;\n }\n return toReturn;\n }\n}\nclass InvoiceItem {\n static fromProto(proto) {\n let m = new InvoiceItem();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.appliedTaxes) {\n m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);\n }\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n if (proto.discounts) {\n m.discounts = proto.discounts.map(AppliedDiscount.fromProto);\n }\n if (proto.subtotal) {\n m.subtotal = parseInt(proto.subtotal, 10);\n }\n if (proto.servicePeriodStart) {\n m.servicePeriodStart = new Date(proto.servicePeriodStart);\n }\n if (proto.servicePeriodEnd) {\n m.servicePeriodEnd = new Date(proto.servicePeriodEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {\n toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? this.appliedTaxes.toApiJson() : this.appliedTaxes;\n }\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {\n toReturn['discounts'] = 'toApiJson' in this.discounts ? this.discounts.toApiJson() : this.discounts;\n }\n if (typeof this.subtotal !== 'undefined') {\n toReturn['subtotal'] = this.subtotal;\n }\n if (typeof this.bundleInstanceId !== 'undefined') {\n toReturn['bundleInstanceId'] = this.bundleInstanceId;\n }\n if (typeof this.servicePeriodStart !== 'undefined' && this.servicePeriodStart !== null) {\n toReturn['servicePeriodStart'] = 'toApiJson' in this.servicePeriodStart ? this.servicePeriodStart.toApiJson() : this.servicePeriodStart;\n }\n if (typeof this.servicePeriodEnd !== 'undefined' && this.servicePeriodEnd !== null) {\n toReturn['servicePeriodEnd'] = 'toApiJson' in this.servicePeriodEnd ? this.servicePeriodEnd.toApiJson() : this.servicePeriodEnd;\n }\n return toReturn;\n }\n}\nclass ListInvoicesRequest {\n static fromProto(proto) {\n let m = new ListInvoicesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListInvoicesRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListInvoicesResponse {\n static fromProto(proto) {\n let m = new ListInvoicesResponse();\n m = Object.assign(m, proto);\n if (proto.invoices) {\n m.invoices = proto.invoices.map(Invoice.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoices !== 'undefined' && this.invoices !== null) {\n toReturn['invoices'] = 'toApiJson' in this.invoices ? this.invoices.toApiJson() : this.invoices;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PayInvoiceRequest {\n static fromProto(proto) {\n let m = new PayInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n return toReturn;\n }\n}\nclass PaymentLinkItem {\n static fromProto(proto) {\n let m = new PaymentLinkItem();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass RemoveBundleRequest {\n static fromProto(proto) {\n let m = new RemoveBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.bundleInstanceId !== 'undefined') {\n toReturn['bundleInstanceId'] = this.bundleInstanceId;\n }\n return toReturn;\n }\n}\nclass RemoveBundleResponse {\n static fromProto(proto) {\n let m = new RemoveBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass SendInvoiceRequest {\n static fromProto(proto) {\n let m = new SendInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.emailAddresses !== 'undefined') {\n toReturn['emailAddresses'] = this.emailAddresses;\n }\n if (typeof this.languageCode !== 'undefined') {\n toReturn['languageCode'] = this.languageCode;\n }\n return toReturn;\n }\n}\nclass UpdateBundleRequest {\n static fromProto(proto) {\n let m = new UpdateBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.hideBundleItems !== 'undefined') {\n toReturn['hideBundleItems'] = this.hideBundleItems;\n }\n if (typeof this.bundleInstanceId !== 'undefined') {\n toReturn['bundleInstanceId'] = this.bundleInstanceId;\n }\n return toReturn;\n }\n}\nclass UpdateBundleResponse {\n static fromProto(proto) {\n let m = new UpdateBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass UpdateDefaultTaxRatesRequest {\n static fromProto(proto) {\n let m = new UpdateDefaultTaxRatesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.taxRateIds !== 'undefined') {\n toReturn['taxRateIds'] = this.taxRateIds;\n }\n return toReturn;\n }\n}\nclass UpdateDefaultTaxRatesResponse {\n static fromProto(proto) {\n let m = new UpdateDefaultTaxRatesResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass UpdateInvoiceRequest {\n static fromProto(proto) {\n let m = new UpdateInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateInvoiceResponse {\n static fromProto(proto) {\n let m = new UpdateInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass UpdateLineItemRequest {\n static fromProto(proto) {\n let m = new UpdateLineItemRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.discounts) {\n m.discounts = proto.discounts.map(AppliedDiscount.fromProto);\n }\n if (proto.servicePeriodStart) {\n m.servicePeriodStart = new Date(proto.servicePeriodStart);\n }\n if (proto.servicePeriodEnd) {\n m.servicePeriodEnd = new Date(proto.servicePeriodEnd);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.taxRates !== 'undefined') {\n toReturn['taxRates'] = this.taxRates;\n }\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {\n toReturn['discounts'] = 'toApiJson' in this.discounts ? this.discounts.toApiJson() : this.discounts;\n }\n if (typeof this.servicePeriodStart !== 'undefined' && this.servicePeriodStart !== null) {\n toReturn['servicePeriodStart'] = 'toApiJson' in this.servicePeriodStart ? this.servicePeriodStart.toApiJson() : this.servicePeriodStart;\n }\n if (typeof this.servicePeriodEnd !== 'undefined' && this.servicePeriodEnd !== null) {\n toReturn['servicePeriodEnd'] = 'toApiJson' in this.servicePeriodEnd ? this.servicePeriodEnd.toApiJson() : this.servicePeriodEnd;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateLineItemResponse {\n static fromProto(proto) {\n let m = new UpdateLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass VoidInvoiceRequest {\n static fromProto(proto) {\n let m = new VoidInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$n(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AccountBalance {\n static fromProto(proto) {\n let m = new AccountBalance();\n m = Object.assign(m, proto);\n if (proto.available) {\n m.available = proto.available.map(BalanceAmount.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.available !== 'undefined' && this.available !== null) {\n toReturn['available'] = 'toApiJson' in this.available ? this.available.toApiJson() : this.available;\n }\n return toReturn;\n }\n}\nclass Balance {\n static fromProto(proto) {\n let m = new Balance();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.futurePayouts) {\n m.futurePayouts = parseInt(proto.futurePayouts, 10);\n }\n if (proto.inTransit) {\n m.inTransit = parseInt(proto.inTransit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.futurePayouts !== 'undefined') {\n toReturn['futurePayouts'] = this.futurePayouts;\n }\n if (typeof this.inTransit !== 'undefined') {\n toReturn['inTransit'] = this.inTransit;\n }\n return toReturn;\n }\n}\nclass BalanceAmount {\n static fromProto(proto) {\n let m = new BalanceAmount();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$m(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass DateRange {\n static fromProto(proto) {\n let m = new DateRange();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$l(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ListPayoutsRequestFilters {\n static fromProto(proto) {\n let m = new ListPayoutsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.arrivalDateRange) {\n m.arrivalDateRange = DateRange.fromProto(proto.arrivalDateRange);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.arrivalDateRange !== 'undefined' && this.arrivalDateRange !== null) {\n toReturn['arrivalDateRange'] = 'toApiJson' in this.arrivalDateRange ? this.arrivalDateRange.toApiJson() : this.arrivalDateRange;\n }\n return toReturn;\n }\n}\nclass ListPayoutsRequest {\n static fromProto(proto) {\n let m = new ListPayoutsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListPayoutsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.subsidiary !== 'undefined') {\n toReturn['subsidiary'] = this.subsidiary;\n }\n return toReturn;\n }\n}\nclass ListPayoutsResponse {\n static fromProto(proto) {\n let m = new ListPayoutsResponse();\n m = Object.assign(m, proto);\n if (proto.payouts) {\n m.payouts = proto.payouts.map(Payout.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payouts !== 'undefined' && this.payouts !== null) {\n toReturn['payouts'] = 'toApiJson' in this.payouts ? this.payouts.toApiJson() : this.payouts;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass Payout {\n static fromProto(proto) {\n let m = new Payout();\n m = Object.assign(m, proto);\n if (proto.arrivalDate) {\n m.arrivalDate = new Date(proto.arrivalDate);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$l(Currency, proto.currency);\n }\n if (proto.status) {\n m.status = enumStringToValue$l(PayoutStatus, proto.status);\n }\n if (proto.type) {\n m.type = enumStringToValue$l(PayoutType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.arrivalDate !== 'undefined' && this.arrivalDate !== null) {\n toReturn['arrivalDate'] = 'toApiJson' in this.arrivalDate ? this.arrivalDate.toApiJson() : this.arrivalDate;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n if (typeof this.bankName !== 'undefined') {\n toReturn['bankName'] = this.bankName;\n }\n if (typeof this.bankId !== 'undefined') {\n toReturn['bankId'] = this.bankId;\n }\n return toReturn;\n }\n}\nclass ReconcilePayoutRequest {\n static fromProto(proto) {\n let m = new ReconcilePayoutRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bankReconciliationId !== 'undefined') {\n toReturn['bankReconciliationId'] = this.bankReconciliationId;\n }\n if (typeof this.payoutId !== 'undefined') {\n toReturn['payoutId'] = this.payoutId;\n }\n if (typeof this.allowRetries !== 'undefined') {\n toReturn['allowRetries'] = this.allowRetries;\n }\n if (typeof this.subsidiary !== 'undefined') {\n toReturn['subsidiary'] = this.subsidiary;\n }\n return toReturn;\n }\n}\nclass ReconcilePayoutResponse {\n static fromProto(proto) {\n let m = new ReconcilePayoutResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n return toReturn;\n }\n}\nclass RetailPayout {\n static fromProto(proto) {\n let m = new RetailPayout();\n m = Object.assign(m, proto);\n if (proto.arrivalDate) {\n m.arrivalDate = new Date(proto.arrivalDate);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$l(PayoutStatus, proto.status);\n }\n if (proto.type) {\n m.type = enumStringToValue$l(PayoutType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.arrivalDate !== 'undefined' && this.arrivalDate !== null) {\n toReturn['arrivalDate'] = 'toApiJson' in this.arrivalDate ? this.arrivalDate.toApiJson() : this.arrivalDate;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n if (typeof this.bankName !== 'undefined') {\n toReturn['bankName'] = this.bankName;\n }\n if (typeof this.bankId !== 'undefined') {\n toReturn['bankId'] = this.bankId;\n }\n if (typeof this.failureCode !== 'undefined') {\n toReturn['failureCode'] = this.failureCode;\n }\n if (typeof this.failureMessage !== 'undefined') {\n toReturn['failureMessage'] = this.failureMessage;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$k(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CancelRetailBillingRequest {\n static fromProto(proto) {\n let m = new CancelRetailBillingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass ChargeSalesInvoiceRequest {\n static fromProto(proto) {\n let m = new ChargeSalesInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n return toReturn;\n }\n}\nclass ConnectStripeAccountRequest {\n static fromProto(proto) {\n let m = new ConnectStripeAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.failureUrl !== 'undefined') {\n toReturn['failureUrl'] = this.failureUrl;\n }\n if (typeof this.successUrl !== 'undefined') {\n toReturn['successUrl'] = this.successUrl;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass ConnectStripeAccountResponse {\n static fromProto(proto) {\n let m = new ConnectStripeAccountResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stripeUrl !== 'undefined') {\n toReturn['stripeUrl'] = this.stripeUrl;\n }\n if (typeof this.error !== 'undefined') {\n toReturn['error'] = this.error;\n }\n return toReturn;\n }\n}\nclass CreateMerchantRequest {\n static fromProto(proto) {\n let m = new CreateMerchantRequest();\n m = Object.assign(m, proto);\n if (proto.includeInFinancialRecords) {\n m.includeInFinancialRecords = CreateMerchantRequestIncludeInFinancialRecords.fromProto(proto.includeInFinancialRecords);\n }\n if (proto.merchantType) {\n m.merchantType = enumStringToValue$k(MerchantType, proto.merchantType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.zipCode !== 'undefined') {\n toReturn['zipCode'] = this.zipCode;\n }\n if (typeof this.emailAddress !== 'undefined') {\n toReturn['emailAddress'] = this.emailAddress;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.contactName !== 'undefined') {\n toReturn['contactName'] = this.contactName;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.additionalEmailAddresses !== 'undefined') {\n toReturn['additionalEmailAddresses'] = this.additionalEmailAddresses;\n }\n if (typeof this.includeInFinancialRecords !== 'undefined' && this.includeInFinancialRecords !== null) {\n toReturn['includeInFinancialRecords'] = 'toApiJson' in this.includeInFinancialRecords ? this.includeInFinancialRecords.toApiJson() : this.includeInFinancialRecords;\n }\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {\n toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;\n }\n if (typeof this.merchantType !== 'undefined') {\n toReturn['merchantType'] = this.merchantType;\n }\n return toReturn;\n }\n}\nclass DefaultCustomerConfiguration {\n static fromProto(proto) {\n let m = new DefaultCustomerConfiguration();\n m = Object.assign(m, proto);\n if (proto.invoiceDay) {\n m.invoiceDay = parseInt(proto.invoiceDay, 10);\n }\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.generateMethod !== 'undefined') {\n toReturn['generateMethod'] = this.generateMethod;\n }\n if (typeof this.collectionMethod !== 'undefined') {\n toReturn['collectionMethod'] = this.collectionMethod;\n }\n if (typeof this.invoiceDay !== 'undefined') {\n toReturn['invoiceDay'] = this.invoiceDay;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.autoGenerateRetailSubscriptions !== 'undefined') {\n toReturn['autoGenerateRetailSubscriptions'] = this.autoGenerateRetailSubscriptions;\n }\n return toReturn;\n }\n}\nclass GetMerchantRequest {\n static fromProto(proto) {\n let m = new GetMerchantRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetMerchantResponse {\n static fromProto(proto) {\n let m = new GetMerchantResponse();\n m = Object.assign(m, proto);\n if (proto.merchant) {\n m.merchant = Merchant.fromProto(proto.merchant);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchant !== 'undefined' && this.merchant !== null) {\n toReturn['merchant'] = 'toApiJson' in this.merchant ? this.merchant.toApiJson() : this.merchant;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailConfigurationsRequest {\n static fromProto(proto) {\n let m = new GetMultiRetailConfigurationsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.retailGroupIds !== 'undefined') {\n toReturn['retailGroupIds'] = this.retailGroupIds;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailConfigurationsResponse {\n static fromProto(proto) {\n let m = new GetMultiRetailConfigurationsResponse();\n m = Object.assign(m, proto);\n if (proto.retailConfigurations) {\n m.retailConfigurations = Object.keys(proto.retailConfigurations).reduce((obj, k) => {\n obj[k] = RetailConfiguration.fromProto(proto.retailConfigurations[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.retailConfigurations !== 'undefined' && this.retailConfigurations !== null) {\n toReturn['retailConfigurations'] = 'toApiJson' in this.retailConfigurations ? this.retailConfigurations.toApiJson() : this.retailConfigurations;\n }\n return toReturn;\n }\n}\nclass GetNextRetailInvoiceSequenceRequest {\n static fromProto(proto) {\n let m = new GetNextRetailInvoiceSequenceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetNextRetailInvoiceSequenceResponse {\n static fromProto(proto) {\n let m = new GetNextRetailInvoiceSequenceResponse();\n m = Object.assign(m, proto);\n if (proto.nextRetailInvoiceSequence) {\n m.nextRetailInvoiceSequence = parseInt(proto.nextRetailInvoiceSequence, 10);\n }\n if (proto.nextInvoiceNumber) {\n m.nextInvoiceNumber = parseInt(proto.nextInvoiceNumber, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextRetailInvoiceSequence !== 'undefined') {\n toReturn['nextRetailInvoiceSequence'] = this.nextRetailInvoiceSequence;\n }\n if (typeof this.nextInvoiceNumber !== 'undefined') {\n toReturn['nextInvoiceNumber'] = this.nextInvoiceNumber;\n }\n return toReturn;\n }\n}\nclass GetOutstandingBalanceRequest {\n static fromProto(proto) {\n let m = new GetOutstandingBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetOutstandingBalanceResponse {\n static fromProto(proto) {\n let m = new GetOutstandingBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.outstandingBalance) {\n m.outstandingBalance = parseInt(proto.outstandingBalance, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$k(Currency, proto.currency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.outstandingBalance !== 'undefined') {\n toReturn['outstandingBalance'] = this.outstandingBalance;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n return toReturn;\n }\n}\nclass GetPayoutSummaryRequest {\n static fromProto(proto) {\n let m = new GetPayoutSummaryRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetPayoutSummaryResponse {\n static fromProto(proto) {\n let m = new GetPayoutSummaryResponse();\n m = Object.assign(m, proto);\n if (proto.balances) {\n m.balances = proto.balances.map(Balance.fromProto);\n }\n if (proto.nextInTransitPayoutExpectedDate) {\n m.nextInTransitPayoutExpectedDate = new Date(proto.nextInTransitPayoutExpectedDate);\n }\n if (proto.payoutDelayDays) {\n m.payoutDelayDays = parseInt(proto.payoutDelayDays, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.balances !== 'undefined' && this.balances !== null) {\n toReturn['balances'] = 'toApiJson' in this.balances ? this.balances.toApiJson() : this.balances;\n }\n if (typeof this.nextInTransitPayoutExpectedDate !== 'undefined' && this.nextInTransitPayoutExpectedDate !== null) {\n toReturn['nextInTransitPayoutExpectedDate'] = 'toApiJson' in this.nextInTransitPayoutExpectedDate ? this.nextInTransitPayoutExpectedDate.toApiJson() : this.nextInTransitPayoutExpectedDate;\n }\n if (typeof this.payoutInterval !== 'undefined') {\n toReturn['payoutInterval'] = this.payoutInterval;\n }\n if (typeof this.payoutDelayDays !== 'undefined') {\n toReturn['payoutDelayDays'] = this.payoutDelayDays;\n }\n return toReturn;\n }\n}\nclass GetRetailAccountBalanceRequest {\n static fromProto(proto) {\n let m = new GetRetailAccountBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetRetailAccountBalanceResponse {\n static fromProto(proto) {\n let m = new GetRetailAccountBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.balance) {\n m.balance = AccountBalance.fromProto(proto.balance);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.balance !== 'undefined' && this.balance !== null) {\n toReturn['balance'] = 'toApiJson' in this.balance ? this.balance.toApiJson() : this.balance;\n }\n return toReturn;\n }\n}\nclass GetRetailBalanceRequest {\n static fromProto(proto) {\n let m = new GetRetailBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetRetailBalanceResponse {\n static fromProto(proto) {\n let m = new GetRetailBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.balances) {\n m.balances = proto.balances.map(Balance.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.balances !== 'undefined' && this.balances !== null) {\n toReturn['balances'] = 'toApiJson' in this.balances ? this.balances.toApiJson() : this.balances;\n }\n return toReturn;\n }\n}\nclass GetRetailPayoutRequest {\n static fromProto(proto) {\n let m = new GetRetailPayoutRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.payoutId !== 'undefined') {\n toReturn['payoutId'] = this.payoutId;\n }\n return toReturn;\n }\n}\nclass GetRetailPayoutResponse {\n static fromProto(proto) {\n let m = new GetRetailPayoutResponse();\n m = Object.assign(m, proto);\n if (proto.payout) {\n m.payout = RetailPayout.fromProto(proto.payout);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payout !== 'undefined' && this.payout !== null) {\n toReturn['payout'] = 'toApiJson' in this.payout ? this.payout.toApiJson() : this.payout;\n }\n return toReturn;\n }\n}\nclass CreateMerchantRequestIncludeInFinancialRecords {\n static fromProto(proto) {\n let m = new CreateMerchantRequestIncludeInFinancialRecords();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.includeInFinancialRecords !== 'undefined') {\n toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;\n }\n return toReturn;\n }\n}\nclass UpdateMerchantRequestIncludeInFinancialRecords {\n static fromProto(proto) {\n let m = new UpdateMerchantRequestIncludeInFinancialRecords();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.includeInFinancialRecords !== 'undefined') {\n toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;\n }\n return toReturn;\n }\n}\nclass ListRetailPayoutsRequest {\n static fromProto(proto) {\n let m = new ListRetailPayoutsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListRetailPayoutsResponse {\n static fromProto(proto) {\n let m = new ListRetailPayoutsResponse();\n m = Object.assign(m, proto);\n if (proto.payouts) {\n m.payouts = proto.payouts.map(RetailPayout.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payouts !== 'undefined' && this.payouts !== null) {\n toReturn['payouts'] = 'toApiJson' in this.payouts ? this.payouts.toApiJson() : this.payouts;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass Merchant {\n static fromProto(proto) {\n let m = new Merchant();\n m = Object.assign(m, proto);\n if (proto.merchantType) {\n m.merchantType = enumStringToValue$k(MerchantType, proto.merchantType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.zipCode !== 'undefined') {\n toReturn['zipCode'] = this.zipCode;\n }\n if (typeof this.emailAddress !== 'undefined') {\n toReturn['emailAddress'] = this.emailAddress;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.contactName !== 'undefined') {\n toReturn['contactName'] = this.contactName;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.autoPostInvoices !== 'undefined') {\n toReturn['autoPostInvoices'] = this.autoPostInvoices;\n }\n if (typeof this.autoChargeInvoices !== 'undefined') {\n toReturn['autoChargeInvoices'] = this.autoChargeInvoices;\n }\n if (typeof this.includeInFinancialRecords !== 'undefined') {\n toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;\n }\n if (typeof this.additionalEmailAddresses !== 'undefined') {\n toReturn['additionalEmailAddresses'] = this.additionalEmailAddresses;\n }\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {\n toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;\n }\n if (typeof this.stripeAccountId !== 'undefined') {\n toReturn['stripeAccountId'] = this.stripeAccountId;\n }\n if (typeof this.merchantType !== 'undefined') {\n toReturn['merchantType'] = this.merchantType;\n }\n return toReturn;\n }\n}\nclass ResetPaymentFacilitatorRequest {\n static fromProto(proto) {\n let m = new ResetPaymentFacilitatorRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass RetailConfiguration {\n static fromProto(proto) {\n let m = new RetailConfiguration();\n m = Object.assign(m, proto);\n if (proto.defaultCustomerConfiguration) {\n m.defaultCustomerConfiguration = DefaultCustomerConfiguration.fromProto(proto.defaultCustomerConfiguration);\n }\n if (proto.currencyConversionRate) {\n m.currencyConversionRate = parseInt(proto.currencyConversionRate, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.retailGroupId !== 'undefined') {\n toReturn['retailGroupId'] = this.retailGroupId;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.defaultCustomerConfiguration !== 'undefined' && this.defaultCustomerConfiguration !== null) {\n toReturn['defaultCustomerConfiguration'] = 'toApiJson' in this.defaultCustomerConfiguration ? this.defaultCustomerConfiguration.toApiJson() : this.defaultCustomerConfiguration;\n }\n if (typeof this.currencyConversionRate !== 'undefined') {\n toReturn['currencyConversionRate'] = this.currencyConversionRate;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailConfigurationsResponseRetailConfigurationsEntry {\n static fromProto(proto) {\n let m = new GetMultiRetailConfigurationsResponseRetailConfigurationsEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = RetailConfiguration.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass SearchMerchantsRequest {\n static fromProto(proto) {\n let m = new SearchMerchantsRequest();\n m = Object.assign(m, proto);\n if (proto.sortBy) {\n m.sortBy = enumStringToValue$k(SearchMerchantsRequestSortBy, proto.sortBy);\n }\n if (proto.sortDirection) {\n m.sortDirection = enumStringToValue$k(SortDirection, proto.sortDirection);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.sortBy !== 'undefined') {\n toReturn['sortBy'] = this.sortBy;\n }\n if (typeof this.sortDirection !== 'undefined') {\n toReturn['sortDirection'] = this.sortDirection;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass SearchMerchantsResponse {\n static fromProto(proto) {\n let m = new SearchMerchantsResponse();\n m = Object.assign(m, proto);\n if (proto.merchants) {\n m.merchants = proto.merchants.map(Merchant.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchants !== 'undefined' && this.merchants !== null) {\n toReturn['merchants'] = 'toApiJson' in this.merchants ? this.merchants.toApiJson() : this.merchants;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass SetAutoChargeInvoicesRequest {\n static fromProto(proto) {\n let m = new SetAutoChargeInvoicesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.autoChargeInvoices !== 'undefined') {\n toReturn['autoChargeInvoices'] = this.autoChargeInvoices;\n }\n return toReturn;\n }\n}\nclass SetAutoPostInvoicesRequest {\n static fromProto(proto) {\n let m = new SetAutoPostInvoicesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.shouldAutoPostInvoices !== 'undefined') {\n toReturn['shouldAutoPostInvoices'] = this.shouldAutoPostInvoices;\n }\n return toReturn;\n }\n}\nclass SetDefaultPaymentCardRequest {\n static fromProto(proto) {\n let m = new SetDefaultPaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.cardId !== 'undefined') {\n toReturn['cardId'] = this.cardId;\n }\n return toReturn;\n }\n}\nclass SetHasAlternativePaymentMethodRequest {\n static fromProto(proto) {\n let m = new SetHasAlternativePaymentMethodRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {\n toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;\n }\n return toReturn;\n }\n}\nclass SetIncludeInFinancialRecordsRequest {\n static fromProto(proto) {\n let m = new SetIncludeInFinancialRecordsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.includeInFinancialRecords !== 'undefined') {\n toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;\n }\n return toReturn;\n }\n}\nclass SetNextRetailInvoiceSequenceRequest {\n static fromProto(proto) {\n let m = new SetNextRetailInvoiceSequenceRequest();\n m = Object.assign(m, proto);\n if (proto.nextRetailInvoiceSequence) {\n m.nextRetailInvoiceSequence = parseInt(proto.nextRetailInvoiceSequence, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.nextRetailInvoiceSequence !== 'undefined') {\n toReturn['nextRetailInvoiceSequence'] = this.nextRetailInvoiceSequence;\n }\n return toReturn;\n }\n}\nclass UpdateMerchantRequest {\n static fromProto(proto) {\n let m = new UpdateMerchantRequest();\n m = Object.assign(m, proto);\n if (proto.includeInFinancialRecords) {\n m.includeInFinancialRecords = UpdateMerchantRequestIncludeInFinancialRecords.fromProto(proto.includeInFinancialRecords);\n }\n if (proto.merchantType) {\n m.merchantType = enumStringToValue$k(MerchantType, proto.merchantType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.zipCode !== 'undefined') {\n toReturn['zipCode'] = this.zipCode;\n }\n if (typeof this.emailAddress !== 'undefined') {\n toReturn['emailAddress'] = this.emailAddress;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.contactName !== 'undefined') {\n toReturn['contactName'] = this.contactName;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.additionalEmailAddresses !== 'undefined') {\n toReturn['additionalEmailAddresses'] = this.additionalEmailAddresses;\n }\n if (typeof this.includeInFinancialRecords !== 'undefined' && this.includeInFinancialRecords !== null) {\n toReturn['includeInFinancialRecords'] = 'toApiJson' in this.includeInFinancialRecords ? this.includeInFinancialRecords.toApiJson() : this.includeInFinancialRecords;\n }\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {\n toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;\n }\n if (typeof this.merchantType !== 'undefined') {\n toReturn['merchantType'] = this.merchantType;\n }\n return toReturn;\n }\n}\nclass UpsertDefaultRetailCustomerConfigurationRequest {\n static fromProto(proto) {\n let m = new UpsertDefaultRetailCustomerConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.defaultCustomerConfiguration) {\n m.defaultCustomerConfiguration = DefaultCustomerConfiguration.fromProto(proto.defaultCustomerConfiguration);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.retailGroupId !== 'undefined') {\n toReturn['retailGroupId'] = this.retailGroupId;\n }\n if (typeof this.defaultCustomerConfiguration !== 'undefined' && this.defaultCustomerConfiguration !== null) {\n toReturn['defaultCustomerConfiguration'] = 'toApiJson' in this.defaultCustomerConfiguration ? this.defaultCustomerConfiguration.toApiJson() : this.defaultCustomerConfiguration;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpsertRetailConfigurationRequest {\n static fromProto(proto) {\n let m = new UpsertRetailConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.currencyConversionRate) {\n m.currencyConversionRate = parseInt(proto.currencyConversionRate, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.retailGroupId !== 'undefined') {\n toReturn['retailGroupId'] = this.retailGroupId;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.currencyConversionRate !== 'undefined') {\n toReturn['currencyConversionRate'] = this.currencyConversionRate;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$j(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ListMerchantBillingReportsRequest {\n static fromProto(proto) {\n let m = new ListMerchantBillingReportsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListMerchantBillingReportsResponse {\n static fromProto(proto) {\n let m = new ListMerchantBillingReportsResponse();\n m = Object.assign(m, proto);\n if (proto.reports) {\n m.reports = proto.reports.map(MerchantReport.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.reports !== 'undefined' && this.reports !== null) {\n toReturn['reports'] = 'toApiJson' in this.reports ? this.reports.toApiJson() : this.reports;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass MerchantReport {\n static fromProto(proto) {\n let m = new MerchantReport();\n m = Object.assign(m, proto);\n if (proto.year) {\n m.year = parseInt(proto.year, 10);\n }\n if (proto.month) {\n m.month = enumStringToValue$j(Month, proto.month);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.status) {\n m.status = enumStringToValue$j(MerchantReportStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.year !== 'undefined') {\n toReturn['year'] = this.year;\n }\n if (typeof this.month !== 'undefined') {\n toReturn['month'] = this.month;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$i(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateMeteredComponentRequest {\n static fromProto(proto) {\n let m = new CreateMeteredComponentRequest();\n m = Object.assign(m, proto);\n if (proto.component) {\n m.component = MeteredComponent.fromProto(proto.component);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.component !== 'undefined' && this.component !== null) {\n toReturn['component'] = 'toApiJson' in this.component ? this.component.toApiJson() : this.component;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass MeteredComponent {\n static fromProto(proto) {\n let m = new MeteredComponent();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.componentId !== 'undefined') {\n toReturn['componentId'] = this.componentId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass TickComponentUsageRequest {\n static fromProto(proto) {\n let m = new TickComponentUsageRequest();\n m = Object.assign(m, proto);\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.componentId !== 'undefined') {\n toReturn['componentId'] = this.componentId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.idempotencyKey !== 'undefined') {\n toReturn['idempotencyKey'] = this.idempotencyKey;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$h(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass RetailPaymentACHDetails {\n static fromProto(proto) {\n let m = new RetailPaymentACHDetails();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n return toReturn;\n }\n}\nclass RetailPaymentACSSDetails {\n static fromProto(proto) {\n let m = new RetailPaymentACSSDetails();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n return toReturn;\n }\n}\nclass Adjustment {\n static fromProto(proto) {\n let m = new Adjustment();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.fee) {\n m.fee = parseInt(proto.fee, 10);\n }\n if (proto.net) {\n m.net = parseInt(proto.net, 10);\n }\n if (proto.refund) {\n m.refund = RetailRefund.fromProto(proto.refund);\n }\n if (proto.dispute) {\n m.dispute = Dispute.fromProto(proto.dispute);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.fee !== 'undefined') {\n toReturn['fee'] = this.fee;\n }\n if (typeof this.net !== 'undefined') {\n toReturn['net'] = this.net;\n }\n if (typeof this.refund !== 'undefined' && this.refund !== null) {\n toReturn['refund'] = 'toApiJson' in this.refund ? this.refund.toApiJson() : this.refund;\n }\n if (typeof this.dispute !== 'undefined' && this.dispute !== null) {\n toReturn['dispute'] = 'toApiJson' in this.dispute ? this.dispute.toApiJson() : this.dispute;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nclass RetailPaymentCardDetails {\n static fromProto(proto) {\n let m = new RetailPaymentCardDetails();\n m = Object.assign(m, proto);\n if (proto.cardType) {\n m.cardType = enumStringToValue$h(CardType, proto.cardType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cardType !== 'undefined') {\n toReturn['cardType'] = this.cardType;\n }\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n return toReturn;\n }\n}\nclass CloseRetailDisputeRequest {\n static fromProto(proto) {\n let m = new CloseRetailDisputeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.disputeId !== 'undefined') {\n toReturn['disputeId'] = this.disputeId;\n }\n return toReturn;\n }\n}\nclass ConfigureRetailPaymentProviderRequest {\n static fromProto(proto) {\n let m = new ConfigureRetailPaymentProviderRequest();\n m = Object.assign(m, proto);\n if (proto.paymentFacilitatorType) {\n m.paymentFacilitatorType = enumStringToValue$h(PaymentFacilitatorType, proto.paymentFacilitatorType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.failureUrl !== 'undefined') {\n toReturn['failureUrl'] = this.failureUrl;\n }\n if (typeof this.successUrl !== 'undefined') {\n toReturn['successUrl'] = this.successUrl;\n }\n if (typeof this.paymentFacilitatorType !== 'undefined') {\n toReturn['paymentFacilitatorType'] = this.paymentFacilitatorType;\n }\n return toReturn;\n }\n}\nclass ConfigureRetailPaymentProviderResponse {\n static fromProto(proto) {\n let m = new ConfigureRetailPaymentProviderResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stripeUrl !== 'undefined') {\n toReturn['stripeUrl'] = this.stripeUrl;\n }\n if (typeof this.error !== 'undefined') {\n toReturn['error'] = this.error;\n }\n return toReturn;\n }\n}\nclass ConfirmRetailPaymentRequest {\n static fromProto(proto) {\n let m = new ConfirmRetailPaymentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass Dispute {\n static fromProto(proto) {\n let m = new Dispute();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$h(DisputeStatus, proto.status);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.evidence) {\n m.evidence = DisputeEvidence.fromProto(proto.evidence);\n }\n if (proto.evidenceDetails) {\n m.evidenceDetails = DisputeEvidenceDetails.fromProto(proto.evidenceDetails);\n }\n if (proto.fee) {\n m.fee = parseInt(proto.fee, 10);\n }\n if (proto.paymentReferenceType) {\n m.paymentReferenceType = enumStringToValue$h(RetailPaymentReferenceType, proto.paymentReferenceType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paymentId !== 'undefined') {\n toReturn['paymentId'] = this.paymentId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.evidence !== 'undefined' && this.evidence !== null) {\n toReturn['evidence'] = 'toApiJson' in this.evidence ? this.evidence.toApiJson() : this.evidence;\n }\n if (typeof this.evidenceDetails !== 'undefined' && this.evidenceDetails !== null) {\n toReturn['evidenceDetails'] = 'toApiJson' in this.evidenceDetails ? this.evidenceDetails.toApiJson() : this.evidenceDetails;\n }\n if (typeof this.isChargeRefundable !== 'undefined') {\n toReturn['isChargeRefundable'] = this.isChargeRefundable;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.fee !== 'undefined') {\n toReturn['fee'] = this.fee;\n }\n if (typeof this.feeCurrencyCode !== 'undefined') {\n toReturn['feeCurrencyCode'] = this.feeCurrencyCode;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.paymentReferenceId !== 'undefined') {\n toReturn['paymentReferenceId'] = this.paymentReferenceId;\n }\n if (typeof this.paymentReferenceType !== 'undefined') {\n toReturn['paymentReferenceType'] = this.paymentReferenceType;\n }\n if (typeof this.paymentDescription !== 'undefined') {\n toReturn['paymentDescription'] = this.paymentDescription;\n }\n return toReturn;\n }\n}\nclass DisputeEvidence {\n static fromProto(proto) {\n let m = new DisputeEvidence();\n m = Object.assign(m, proto);\n if (proto.customerCommunication) {\n m.customerCommunication = File.fromProto(proto.customerCommunication);\n }\n if (proto.customerSignature) {\n m.customerSignature = File.fromProto(proto.customerSignature);\n }\n if (proto.shippingDocumentation) {\n m.shippingDocumentation = File.fromProto(proto.shippingDocumentation);\n }\n if (proto.receipt) {\n m.receipt = File.fromProto(proto.receipt);\n }\n if (proto.uncategorizedFile) {\n m.uncategorizedFile = File.fromProto(proto.uncategorizedFile);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerCommunication !== 'undefined' && this.customerCommunication !== null) {\n toReturn['customerCommunication'] = 'toApiJson' in this.customerCommunication ? this.customerCommunication.toApiJson() : this.customerCommunication;\n }\n if (typeof this.customerSignature !== 'undefined' && this.customerSignature !== null) {\n toReturn['customerSignature'] = 'toApiJson' in this.customerSignature ? this.customerSignature.toApiJson() : this.customerSignature;\n }\n if (typeof this.shippingDocumentation !== 'undefined' && this.shippingDocumentation !== null) {\n toReturn['shippingDocumentation'] = 'toApiJson' in this.shippingDocumentation ? this.shippingDocumentation.toApiJson() : this.shippingDocumentation;\n }\n if (typeof this.receipt !== 'undefined' && this.receipt !== null) {\n toReturn['receipt'] = 'toApiJson' in this.receipt ? this.receipt.toApiJson() : this.receipt;\n }\n if (typeof this.uncategorizedFile !== 'undefined' && this.uncategorizedFile !== null) {\n toReturn['uncategorizedFile'] = 'toApiJson' in this.uncategorizedFile ? this.uncategorizedFile.toApiJson() : this.uncategorizedFile;\n }\n if (typeof this.billingAddress !== 'undefined') {\n toReturn['billingAddress'] = this.billingAddress;\n }\n if (typeof this.customerEmailAddress !== 'undefined') {\n toReturn['customerEmailAddress'] = this.customerEmailAddress;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.productDescription !== 'undefined') {\n toReturn['productDescription'] = this.productDescription;\n }\n return toReturn;\n }\n}\nclass SubmitEvidenceRequestDisputeEvidence {\n static fromProto(proto) {\n let m = new SubmitEvidenceRequestDisputeEvidence();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.billingAddress !== 'undefined') {\n toReturn['billingAddress'] = this.billingAddress;\n }\n if (typeof this.customerEmailAddress !== 'undefined') {\n toReturn['customerEmailAddress'] = this.customerEmailAddress;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.productDescription !== 'undefined') {\n toReturn['productDescription'] = this.productDescription;\n }\n if (typeof this.customerSignatureFileId !== 'undefined') {\n toReturn['customerSignatureFileId'] = this.customerSignatureFileId;\n }\n if (typeof this.customerCommunicationFileId !== 'undefined') {\n toReturn['customerCommunicationFileId'] = this.customerCommunicationFileId;\n }\n if (typeof this.receiptFileId !== 'undefined') {\n toReturn['receiptFileId'] = this.receiptFileId;\n }\n if (typeof this.shippingDocumentationFileId !== 'undefined') {\n toReturn['shippingDocumentationFileId'] = this.shippingDocumentationFileId;\n }\n if (typeof this.uncategorizedFileId !== 'undefined') {\n toReturn['uncategorizedFileId'] = this.uncategorizedFileId;\n }\n return toReturn;\n }\n}\nclass DisputeEvidenceDetails {\n static fromProto(proto) {\n let m = new DisputeEvidenceDetails();\n m = Object.assign(m, proto);\n if (proto.dueBy) {\n m.dueBy = new Date(proto.dueBy);\n }\n if (proto.submissionCount) {\n m.submissionCount = parseInt(proto.submissionCount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dueBy !== 'undefined' && this.dueBy !== null) {\n toReturn['dueBy'] = 'toApiJson' in this.dueBy ? this.dueBy.toApiJson() : this.dueBy;\n }\n if (typeof this.hasEvidence !== 'undefined') {\n toReturn['hasEvidence'] = this.hasEvidence;\n }\n if (typeof this.pastDue !== 'undefined') {\n toReturn['pastDue'] = this.pastDue;\n }\n if (typeof this.submissionCount !== 'undefined') {\n toReturn['submissionCount'] = this.submissionCount;\n }\n return toReturn;\n }\n}\nclass File {\n static fromProto(proto) {\n let m = new File();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.filename !== 'undefined') {\n toReturn['filename'] = this.filename;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nclass GetRetailDisputeRequest {\n static fromProto(proto) {\n let m = new GetRetailDisputeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.disputeId !== 'undefined') {\n toReturn['disputeId'] = this.disputeId;\n }\n return toReturn;\n }\n}\nclass GetRetailDisputeResponse {\n static fromProto(proto) {\n let m = new GetRetailDisputeResponse();\n m = Object.assign(m, proto);\n if (proto.dispute) {\n m.dispute = Dispute.fromProto(proto.dispute);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dispute !== 'undefined' && this.dispute !== null) {\n toReturn['dispute'] = 'toApiJson' in this.dispute ? this.dispute.toApiJson() : this.dispute;\n }\n return toReturn;\n }\n}\nclass GetRetailPaymentProviderRequest {\n static fromProto(proto) {\n let m = new GetRetailPaymentProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetRetailPaymentProviderResponse {\n static fromProto(proto) {\n let m = new GetRetailPaymentProviderResponse();\n m = Object.assign(m, proto);\n if (proto.paymentFacilitatorType) {\n m.paymentFacilitatorType = enumStringToValue$h(PaymentFacilitatorType, proto.paymentFacilitatorType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.statementDescriptor !== 'undefined') {\n toReturn['statementDescriptor'] = this.statementDescriptor;\n }\n if (typeof this.stripeConnectId !== 'undefined') {\n toReturn['stripeConnectId'] = this.stripeConnectId;\n }\n if (typeof this.paymentFacilitatorType !== 'undefined') {\n toReturn['paymentFacilitatorType'] = this.paymentFacilitatorType;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n return toReturn;\n }\n}\nclass GetRetailPaymentRequest {\n static fromProto(proto) {\n let m = new GetRetailPaymentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.paymentId !== 'undefined') {\n toReturn['paymentId'] = this.paymentId;\n }\n return toReturn;\n }\n}\nclass GetRetailPaymentResponse {\n static fromProto(proto) {\n let m = new GetRetailPaymentResponse();\n m = Object.assign(m, proto);\n if (proto.payment) {\n m.payment = RetailPayment.fromProto(proto.payment);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payment !== 'undefined' && this.payment !== null) {\n toReturn['payment'] = 'toApiJson' in this.payment ? this.payment.toApiJson() : this.payment;\n }\n return toReturn;\n }\n}\nclass GetWholesaleProviderPublicKeyRequest {\n static fromProto(proto) {\n let m = new GetWholesaleProviderPublicKeyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n return toReturn;\n }\n}\nclass GetWholesaleProviderPublicKeyResponse {\n static fromProto(proto) {\n let m = new GetWholesaleProviderPublicKeyResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.publcApiKey !== 'undefined') {\n toReturn['publcApiKey'] = this.publcApiKey;\n }\n return toReturn;\n }\n}\nclass ListPaymentRequestListPaymentFilters {\n static fromProto(proto) {\n let m = new ListPaymentRequestListPaymentFilters();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.allocationIds !== 'undefined') {\n toReturn['allocationIds'] = this.allocationIds;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nclass ListPaymentRequest {\n static fromProto(proto) {\n let m = new ListPaymentRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListPaymentRequestListPaymentFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPaymentResponse {\n static fromProto(proto) {\n let m = new ListPaymentResponse();\n m = Object.assign(m, proto);\n if (proto.payments) {\n m.payments = proto.payments.map(Payment.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payments !== 'undefined' && this.payments !== null) {\n toReturn['payments'] = 'toApiJson' in this.payments ? this.payments.toApiJson() : this.payments;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListRetailDisputesRequestListRetailDisputesFilters {\n static fromProto(proto) {\n let m = new ListRetailDisputesRequestListRetailDisputesFilters();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$h(DisputeStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass ListRetailDisputesRequest {\n static fromProto(proto) {\n let m = new ListRetailDisputesRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = ListRetailDisputesRequestListRetailDisputesFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListRetailDisputesResponse {\n static fromProto(proto) {\n let m = new ListRetailDisputesResponse();\n m = Object.assign(m, proto);\n if (proto.disputes) {\n m.disputes = proto.disputes.map(Dispute.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.disputes !== 'undefined' && this.disputes !== null) {\n toReturn['disputes'] = 'toApiJson' in this.disputes ? this.disputes.toApiJson() : this.disputes;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListRetailPaymentsRequestListRetailPaymentsFilters {\n static fromProto(proto) {\n let m = new ListRetailPaymentsRequestListRetailPaymentsFilters();\n m = Object.assign(m, proto);\n if (proto.createdDateGte) {\n m.createdDateGte = new Date(proto.createdDateGte);\n }\n if (proto.createdDateLte) {\n m.createdDateLte = new Date(proto.createdDateLte);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payoutId !== 'undefined') {\n toReturn['payoutId'] = this.payoutId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.createdDateGte !== 'undefined' && this.createdDateGte !== null) {\n toReturn['createdDateGte'] = 'toApiJson' in this.createdDateGte ? this.createdDateGte.toApiJson() : this.createdDateGte;\n }\n if (typeof this.createdDateLte !== 'undefined' && this.createdDateLte !== null) {\n toReturn['createdDateLte'] = 'toApiJson' in this.createdDateLte ? this.createdDateLte.toApiJson() : this.createdDateLte;\n }\n return toReturn;\n }\n}\nclass ListRetailPaymentsRequest {\n static fromProto(proto) {\n let m = new ListRetailPaymentsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = ListRetailPaymentsRequestListRetailPaymentsFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListRetailPaymentsResponse {\n static fromProto(proto) {\n let m = new ListRetailPaymentsResponse();\n m = Object.assign(m, proto);\n if (proto.payments) {\n m.payments = proto.payments.map(RetailPayment.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payments !== 'undefined' && this.payments !== null) {\n toReturn['payments'] = 'toApiJson' in this.payments ? this.payments.toApiJson() : this.payments;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListRetailTransactionsRequestListRetailTransactionsFilters {\n static fromProto(proto) {\n let m = new ListRetailTransactionsRequestListRetailTransactionsFilters();\n m = Object.assign(m, proto);\n if (proto.createdDateGte) {\n m.createdDateGte = new Date(proto.createdDateGte);\n }\n if (proto.createdDateLte) {\n m.createdDateLte = new Date(proto.createdDateLte);\n }\n if (proto.type) {\n m.type = enumStringToValue$h(RetailTransactionType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payoutId !== 'undefined') {\n toReturn['payoutId'] = this.payoutId;\n }\n if (typeof this.createdDateGte !== 'undefined' && this.createdDateGte !== null) {\n toReturn['createdDateGte'] = 'toApiJson' in this.createdDateGte ? this.createdDateGte.toApiJson() : this.createdDateGte;\n }\n if (typeof this.createdDateLte !== 'undefined' && this.createdDateLte !== null) {\n toReturn['createdDateLte'] = 'toApiJson' in this.createdDateLte ? this.createdDateLte.toApiJson() : this.createdDateLte;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass ListRetailTransactionsRequest {\n static fromProto(proto) {\n let m = new ListRetailTransactionsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = ListRetailTransactionsRequestListRetailTransactionsFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListRetailTransactionsResponse {\n static fromProto(proto) {\n let m = new ListRetailTransactionsResponse();\n m = Object.assign(m, proto);\n if (proto.transactions) {\n m.transactions = proto.transactions.map(RetailTransaction.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.transactions !== 'undefined' && this.transactions !== null) {\n toReturn['transactions'] = 'toApiJson' in this.transactions ? this.transactions.toApiJson() : this.transactions;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PrepareRetailPaymentRequestOrder {\n static fromProto(proto) {\n let m = new PrepareRetailPaymentRequestOrder();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.paymentMethodId !== 'undefined') {\n toReturn['paymentMethodId'] = this.paymentMethodId;\n }\n return toReturn;\n }\n}\nclass Payment {\n static fromProto(proto) {\n let m = new Payment();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$h(Currency, proto.currency);\n }\n if (proto.paymentSource) {\n m.paymentSource = enumStringToValue$h(PaymentSource, proto.paymentSource);\n }\n if (proto.allocations) {\n m.allocations = proto.allocations.map(PaymentPaymentAllocation.fromProto);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$h(PaymentStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.paymentSource !== 'undefined') {\n toReturn['paymentSource'] = this.paymentSource;\n }\n if (typeof this.allocations !== 'undefined' && this.allocations !== null) {\n toReturn['allocations'] = 'toApiJson' in this.allocations ? this.allocations.toApiJson() : this.allocations;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.externalReferenceId !== 'undefined') {\n toReturn['externalReferenceId'] = this.externalReferenceId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass PaymentPaymentAllocation {\n static fromProto(proto) {\n let m = new PaymentPaymentAllocation();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.type) {\n m.type = enumStringToValue$h(PaymentAllocationType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n return toReturn;\n }\n}\nclass PaymentIntent {\n static fromProto(proto) {\n let m = new PaymentIntent();\n m = Object.assign(m, proto);\n if (proto.paymentIntentStatus) {\n m.paymentIntentStatus = enumStringToValue$h(PaymentIntentStatus, proto.paymentIntentStatus);\n }\n if (proto.paymentMethodType) {\n m.paymentMethodType = enumStringToValue$h(PaymentMethodType, proto.paymentMethodType);\n }\n if (proto.lastErrorCode) {\n m.lastErrorCode = enumStringToValue$h(PaymentErrorCode, proto.lastErrorCode);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paymentIntentStatus !== 'undefined') {\n toReturn['paymentIntentStatus'] = this.paymentIntentStatus;\n }\n if (typeof this.paymentMethodType !== 'undefined') {\n toReturn['paymentMethodType'] = this.paymentMethodType;\n }\n if (typeof this.lastErrorCode !== 'undefined') {\n toReturn['lastErrorCode'] = this.lastErrorCode;\n }\n return toReturn;\n }\n}\nclass PrepareRetailPaymentRequest {\n static fromProto(proto) {\n let m = new PrepareRetailPaymentRequest();\n m = Object.assign(m, proto);\n if (proto.order) {\n m.order = PrepareRetailPaymentRequestOrder.fromProto(proto.order);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.order !== 'undefined' && this.order !== null) {\n toReturn['order'] = 'toApiJson' in this.order ? this.order.toApiJson() : this.order;\n }\n return toReturn;\n }\n}\nclass PrepareRetailPaymentResponse {\n static fromProto(proto) {\n let m = new PrepareRetailPaymentResponse();\n m = Object.assign(m, proto);\n if (proto.paymentIntent) {\n m.paymentIntent = PaymentIntent.fromProto(proto.paymentIntent);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stripeClientSecret !== 'undefined') {\n toReturn['stripeClientSecret'] = this.stripeClientSecret;\n }\n if (typeof this.intentId !== 'undefined') {\n toReturn['intentId'] = this.intentId;\n }\n if (typeof this.paymentIntent !== 'undefined' && this.paymentIntent !== null) {\n toReturn['paymentIntent'] = 'toApiJson' in this.paymentIntent ? this.paymentIntent.toApiJson() : this.paymentIntent;\n }\n return toReturn;\n }\n}\nclass RefundRetailPaymentRequest {\n static fromProto(proto) {\n let m = new RefundRetailPaymentRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.reason) {\n m.reason = enumStringToValue$h(RetailRefundReason, proto.reason);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.paymentId !== 'undefined') {\n toReturn['paymentId'] = this.paymentId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n return toReturn;\n }\n}\nclass RefundRetailPaymentResponse {\n static fromProto(proto) {\n let m = new RefundRetailPaymentResponse();\n m = Object.assign(m, proto);\n if (proto.payment) {\n m.payment = RetailPayment.fromProto(proto.payment);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payment !== 'undefined' && this.payment !== null) {\n toReturn['payment'] = 'toApiJson' in this.payment ? this.payment.toApiJson() : this.payment;\n }\n return toReturn;\n }\n}\nclass RetailPayment {\n static fromProto(proto) {\n let m = new RetailPayment();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.referenceType) {\n m.referenceType = enumStringToValue$h(RetailPaymentReferenceType, proto.referenceType);\n }\n if (proto.status) {\n m.status = enumStringToValue$h(PaymentStatus, proto.status);\n }\n if (proto.applicationFee) {\n m.applicationFee = parseInt(proto.applicationFee, 10);\n }\n if (proto.dispute) {\n m.dispute = Dispute.fromProto(proto.dispute);\n }\n if (proto.cardDetails) {\n m.cardDetails = RetailPaymentCardDetails.fromProto(proto.cardDetails);\n }\n if (proto.refunds) {\n m.refunds = proto.refunds.map(RetailRefund.fromProto);\n }\n if (proto.paymentMethodDetailsType) {\n m.paymentMethodDetailsType = enumStringToValue$h(RetailPaymentPaymentMethodDetailsType, proto.paymentMethodDetailsType);\n }\n if (proto.achDebitDetails) {\n m.achDebitDetails = RetailPaymentACHDetails.fromProto(proto.achDebitDetails);\n }\n if (proto.acssDebitDetails) {\n m.acssDebitDetails = RetailPaymentACSSDetails.fromProto(proto.acssDebitDetails);\n }\n if (proto.paymentFacilitatorFee) {\n m.paymentFacilitatorFee = parseInt(proto.paymentFacilitatorFee, 10);\n }\n if (proto.paymentFacilitatorType) {\n m.paymentFacilitatorType = enumStringToValue$h(PaymentFacilitatorType, proto.paymentFacilitatorType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.referenceType !== 'undefined') {\n toReturn['referenceType'] = this.referenceType;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.failureCode !== 'undefined') {\n toReturn['failureCode'] = this.failureCode;\n }\n if (typeof this.failureMessage !== 'undefined') {\n toReturn['failureMessage'] = this.failureMessage;\n }\n if (typeof this.applicationFee !== 'undefined') {\n toReturn['applicationFee'] = this.applicationFee;\n }\n if (typeof this.disputed !== 'undefined') {\n toReturn['disputed'] = this.disputed;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.dispute !== 'undefined' && this.dispute !== null) {\n toReturn['dispute'] = 'toApiJson' in this.dispute ? this.dispute.toApiJson() : this.dispute;\n }\n if (typeof this.cardDetails !== 'undefined' && this.cardDetails !== null) {\n toReturn['cardDetails'] = 'toApiJson' in this.cardDetails ? this.cardDetails.toApiJson() : this.cardDetails;\n }\n if (typeof this.refunds !== 'undefined' && this.refunds !== null) {\n toReturn['refunds'] = 'toApiJson' in this.refunds ? this.refunds.toApiJson() : this.refunds;\n }\n if (typeof this.paymentMethodDetailsType !== 'undefined') {\n toReturn['paymentMethodDetailsType'] = this.paymentMethodDetailsType;\n }\n if (typeof this.achDebitDetails !== 'undefined' && this.achDebitDetails !== null) {\n toReturn['achDebitDetails'] = 'toApiJson' in this.achDebitDetails ? this.achDebitDetails.toApiJson() : this.achDebitDetails;\n }\n if (typeof this.acssDebitDetails !== 'undefined' && this.acssDebitDetails !== null) {\n toReturn['acssDebitDetails'] = 'toApiJson' in this.acssDebitDetails ? this.acssDebitDetails.toApiJson() : this.acssDebitDetails;\n }\n if (typeof this.paymentFacilitatorFee !== 'undefined') {\n toReturn['paymentFacilitatorFee'] = this.paymentFacilitatorFee;\n }\n if (typeof this.paymentFacilitatorType !== 'undefined') {\n toReturn['paymentFacilitatorType'] = this.paymentFacilitatorType;\n }\n return toReturn;\n }\n}\nclass RetailPaymentsEnabledRequest {\n static fromProto(proto) {\n let m = new RetailPaymentsEnabledRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass RetailPaymentsEnabledResponse {\n static fromProto(proto) {\n let m = new RetailPaymentsEnabledResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.enabled !== 'undefined') {\n toReturn['enabled'] = this.enabled;\n }\n return toReturn;\n }\n}\nclass RetailRefund {\n static fromProto(proto) {\n let m = new RetailRefund();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.refundReason) {\n m.refundReason = enumStringToValue$h(RetailRefundReason, proto.refundReason);\n }\n if (proto.status) {\n m.status = enumStringToValue$h(RetailRefundStatus, proto.status);\n }\n if (proto.failureReason) {\n m.failureReason = enumStringToValue$h(RetailRefundFailureReason, proto.failureReason);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.payment) {\n m.payment = RetailPayment.fromProto(proto.payment);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.refundReason !== 'undefined') {\n toReturn['refundReason'] = this.refundReason;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.failureReason !== 'undefined') {\n toReturn['failureReason'] = this.failureReason;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.payment !== 'undefined' && this.payment !== null) {\n toReturn['payment'] = 'toApiJson' in this.payment ? this.payment.toApiJson() : this.payment;\n }\n return toReturn;\n }\n}\nclass RetailStatusRequest {\n static fromProto(proto) {\n let m = new RetailStatusRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass RetailStatusResponse {\n static fromProto(proto) {\n let m = new RetailStatusResponse();\n m = Object.assign(m, proto);\n if (proto.requirements) {\n m.requirements = RetailStatusResponseVerificationRequirements.fromProto(proto.requirements);\n }\n if (proto.futureRequirements) {\n m.futureRequirements = RetailStatusResponseVerificationRequirements.fromProto(proto.futureRequirements);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.supportedRegion !== 'undefined') {\n toReturn['supportedRegion'] = this.supportedRegion;\n }\n if (typeof this.canAcceptPayment !== 'undefined') {\n toReturn['canAcceptPayment'] = this.canAcceptPayment;\n }\n if (typeof this.requirements !== 'undefined' && this.requirements !== null) {\n toReturn['requirements'] = 'toApiJson' in this.requirements ? this.requirements.toApiJson() : this.requirements;\n }\n if (typeof this.disabledReason !== 'undefined') {\n toReturn['disabledReason'] = this.disabledReason;\n }\n if (typeof this.futureRequirements !== 'undefined' && this.futureRequirements !== null) {\n toReturn['futureRequirements'] = 'toApiJson' in this.futureRequirements ? this.futureRequirements.toApiJson() : this.futureRequirements;\n }\n return toReturn;\n }\n}\nclass RetailTransaction {\n static fromProto(proto) {\n let m = new RetailTransaction();\n m = Object.assign(m, proto);\n if (proto.payment) {\n m.payment = RetailPayment.fromProto(proto.payment);\n }\n if (proto.refund) {\n m.refund = RetailRefund.fromProto(proto.refund);\n }\n if (proto.payoutFailure) {\n m.payoutFailure = RetailPayout.fromProto(proto.payoutFailure);\n }\n if (proto.adjustment) {\n m.adjustment = Adjustment.fromProto(proto.adjustment);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payment !== 'undefined' && this.payment !== null) {\n toReturn['payment'] = 'toApiJson' in this.payment ? this.payment.toApiJson() : this.payment;\n }\n if (typeof this.refund !== 'undefined' && this.refund !== null) {\n toReturn['refund'] = 'toApiJson' in this.refund ? this.refund.toApiJson() : this.refund;\n }\n if (typeof this.payoutFailure !== 'undefined' && this.payoutFailure !== null) {\n toReturn['payoutFailure'] = 'toApiJson' in this.payoutFailure ? this.payoutFailure.toApiJson() : this.payoutFailure;\n }\n if (typeof this.adjustment !== 'undefined' && this.adjustment !== null) {\n toReturn['adjustment'] = 'toApiJson' in this.adjustment ? this.adjustment.toApiJson() : this.adjustment;\n }\n return toReturn;\n }\n}\nclass SubmitEvidenceRequest {\n static fromProto(proto) {\n let m = new SubmitEvidenceRequest();\n m = Object.assign(m, proto);\n if (proto.evidence) {\n m.evidence = SubmitEvidenceRequestDisputeEvidence.fromProto(proto.evidence);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.disputeId !== 'undefined') {\n toReturn['disputeId'] = this.disputeId;\n }\n if (typeof this.paymentId !== 'undefined') {\n toReturn['paymentId'] = this.paymentId;\n }\n if (typeof this.evidence !== 'undefined' && this.evidence !== null) {\n toReturn['evidence'] = 'toApiJson' in this.evidence ? this.evidence.toApiJson() : this.evidence;\n }\n if (typeof this.submit !== 'undefined') {\n toReturn['submit'] = this.submit;\n }\n return toReturn;\n }\n}\nclass UpdateRetailPaymentProviderRequest {\n static fromProto(proto) {\n let m = new UpdateRetailPaymentProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.statementDescriptor !== 'undefined') {\n toReturn['statementDescriptor'] = this.statementDescriptor;\n }\n return toReturn;\n }\n}\nclass RetailStatusResponseVerificationError {\n static fromProto(proto) {\n let m = new RetailStatusResponseVerificationError();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.requirement !== 'undefined') {\n toReturn['requirement'] = this.requirement;\n }\n if (typeof this.code !== 'undefined') {\n toReturn['code'] = this.code;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n return toReturn;\n }\n}\nclass RetailStatusResponseVerificationRequirements {\n static fromProto(proto) {\n let m = new RetailStatusResponseVerificationRequirements();\n m = Object.assign(m, proto);\n if (proto.error) {\n m.error = proto.error.map(RetailStatusResponseVerificationError.fromProto);\n }\n if (proto.currentDeadline) {\n m.currentDeadline = new Date(proto.currentDeadline);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.due !== 'undefined') {\n toReturn['due'] = this.due;\n }\n if (typeof this.error !== 'undefined' && this.error !== null) {\n toReturn['error'] = 'toApiJson' in this.error ? this.error.toApiJson() : this.error;\n }\n if (typeof this.currentDeadline !== 'undefined' && this.currentDeadline !== null) {\n toReturn['currentDeadline'] = 'toApiJson' in this.currentDeadline ? this.currentDeadline.toApiJson() : this.currentDeadline;\n }\n if (typeof this.eventuallyDue !== 'undefined') {\n toReturn['eventuallyDue'] = this.eventuallyDue;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$g(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreatePricingPlanProductRequest {\n static fromProto(proto) {\n let m = new CreatePricingPlanProductRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$g(Frequency, proto.frequency);\n }\n if (proto.pricing) {\n m.pricing = Object.keys(proto.pricing).reduce((obj, k) => {\n obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]);\n return obj;\n }, {});\n }\n if (proto.commitment) {\n m.commitment = Commitment.fromProto(proto.commitment);\n }\n if (proto.strategy) {\n m.strategy = enumStringToValue$g(BillingStrategy, proto.strategy);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.volumeCommitmentStartsAt) {\n m.volumeCommitmentStartsAt = new Date(proto.volumeCommitmentStartsAt);\n }\n if (proto.volumeCommitmentEndsAt) {\n m.volumeCommitmentEndsAt = new Date(proto.volumeCommitmentEndsAt);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {\n toReturn['commitment'] = 'toApiJson' in this.commitment ? this.commitment.toApiJson() : this.commitment;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.volumeCommitmentStartsAt !== 'undefined' && this.volumeCommitmentStartsAt !== null) {\n toReturn['volumeCommitmentStartsAt'] = 'toApiJson' in this.volumeCommitmentStartsAt ? this.volumeCommitmentStartsAt.toApiJson() : this.volumeCommitmentStartsAt;\n }\n if (typeof this.volumeCommitmentEndsAt !== 'undefined' && this.volumeCommitmentEndsAt !== null) {\n toReturn['volumeCommitmentEndsAt'] = 'toApiJson' in this.volumeCommitmentEndsAt ? this.volumeCommitmentEndsAt.toApiJson() : this.volumeCommitmentEndsAt;\n }\n return toReturn;\n }\n}\nclass CreatePricingPlanProductResponse {\n static fromProto(proto) {\n let m = new CreatePricingPlanProductResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass DeletePricingPlanProductRequest {\n static fromProto(proto) {\n let m = new DeletePricingPlanProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass GetMultiPricingPlanProductRequest {\n static fromProto(proto) {\n let m = new GetMultiPricingPlanProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n return toReturn;\n }\n}\nclass GetMultiPricingPlanProductResponse {\n static fromProto(proto) {\n let m = new GetMultiPricingPlanProductResponse();\n m = Object.assign(m, proto);\n if (proto.pricingPlanProducts) {\n m.pricingPlanProducts = proto.pricingPlanProducts.map(PricingPlanProduct.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanProducts !== 'undefined' && this.pricingPlanProducts !== null) {\n toReturn['pricingPlanProducts'] = 'toApiJson' in this.pricingPlanProducts ? this.pricingPlanProducts.toApiJson() : this.pricingPlanProducts;\n }\n return toReturn;\n }\n}\nclass GetPricingPlanProductRequest {\n static fromProto(proto) {\n let m = new GetPricingPlanProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass GetPricingPlanProductResponse {\n static fromProto(proto) {\n let m = new GetPricingPlanProductResponse();\n m = Object.assign(m, proto);\n if (proto.pricingPlanProduct) {\n m.pricingPlanProduct = PricingPlanProduct.fromProto(proto.pricingPlanProduct);\n }\n if (proto.pricingPlanDefaultStrategy) {\n m.pricingPlanDefaultStrategy = enumStringToValue$g(BillingStrategy, proto.pricingPlanDefaultStrategy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanProduct !== 'undefined' && this.pricingPlanProduct !== null) {\n toReturn['pricingPlanProduct'] = 'toApiJson' in this.pricingPlanProduct ? this.pricingPlanProduct.toApiJson() : this.pricingPlanProduct;\n }\n if (typeof this.pricingPlanDefaultStrategy !== 'undefined') {\n toReturn['pricingPlanDefaultStrategy'] = this.pricingPlanDefaultStrategy;\n }\n return toReturn;\n }\n}\nclass ListPricingPlanProductsRequestListPricingPlanProductsFilters {\n static fromProto(proto) {\n let m = new ListPricingPlanProductsRequestListPricingPlanProductsFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.pricingPlanIds !== 'undefined') {\n toReturn['pricingPlanIds'] = this.pricingPlanIds;\n }\n return toReturn;\n }\n}\nclass ListPricingPlanProductsRequest {\n static fromProto(proto) {\n let m = new ListPricingPlanProductsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = ListPricingPlanProductsRequestListPricingPlanProductsFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListPricingPlanProductsResponse {\n static fromProto(proto) {\n let m = new ListPricingPlanProductsResponse();\n m = Object.assign(m, proto);\n if (proto.products) {\n m.products = proto.products.map(PricingPlanProduct.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.products !== 'undefined' && this.products !== null) {\n toReturn['products'] = 'toApiJson' in this.products ? this.products.toApiJson() : this.products;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PricingPlanProductPricingEntry {\n static fromProto(proto) {\n let m = new PricingPlanProductPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = PricingPlanProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass CreatePricingPlanProductRequestPricingEntry {\n static fromProto(proto) {\n let m = new CreatePricingPlanProductRequestPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = PricingPlanProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass UpdatePricingPlanProductRequestPricingEntry {\n static fromProto(proto) {\n let m = new UpdatePricingPlanProductRequestPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = PricingPlanProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass PricingPlanProduct {\n static fromProto(proto) {\n let m = new PricingPlanProduct();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$g(Frequency, proto.frequency);\n }\n if (proto.pricing) {\n m.pricing = Object.keys(proto.pricing).reduce((obj, k) => {\n obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]);\n return obj;\n }, {});\n }\n if (proto.commitment) {\n m.commitment = Commitment.fromProto(proto.commitment);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.modified) {\n m.modified = new Date(proto.modified);\n }\n if (proto.strategy) {\n m.strategy = enumStringToValue$g(BillingStrategy, proto.strategy);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.volumeCommitmentStartsAt) {\n m.volumeCommitmentStartsAt = new Date(proto.volumeCommitmentStartsAt);\n }\n if (proto.volumeCommitmentEndsAt) {\n m.volumeCommitmentEndsAt = new Date(proto.volumeCommitmentEndsAt);\n }\n if (proto.pricingType) {\n m.pricingType = enumStringToValue$g(ProductPricingType, proto.pricingType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {\n toReturn['commitment'] = 'toApiJson' in this.commitment ? this.commitment.toApiJson() : this.commitment;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.modified !== 'undefined' && this.modified !== null) {\n toReturn['modified'] = 'toApiJson' in this.modified ? this.modified.toApiJson() : this.modified;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.volumeCommitmentStartsAt !== 'undefined' && this.volumeCommitmentStartsAt !== null) {\n toReturn['volumeCommitmentStartsAt'] = 'toApiJson' in this.volumeCommitmentStartsAt ? this.volumeCommitmentStartsAt.toApiJson() : this.volumeCommitmentStartsAt;\n }\n if (typeof this.volumeCommitmentEndsAt !== 'undefined' && this.volumeCommitmentEndsAt !== null) {\n toReturn['volumeCommitmentEndsAt'] = 'toApiJson' in this.volumeCommitmentEndsAt ? this.volumeCommitmentEndsAt.toApiJson() : this.volumeCommitmentEndsAt;\n }\n if (typeof this.pricingType !== 'undefined') {\n toReturn['pricingType'] = this.pricingType;\n }\n return toReturn;\n }\n}\nclass UpdatePricingPlanProductRequest {\n static fromProto(proto) {\n let m = new UpdatePricingPlanProductRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$g(Frequency, proto.frequency);\n }\n if (proto.pricing) {\n m.pricing = Object.keys(proto.pricing).reduce((obj, k) => {\n obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]);\n return obj;\n }, {});\n }\n if (proto.commitment) {\n m.commitment = Commitment.fromProto(proto.commitment);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n if (proto.strategy) {\n m.strategy = enumStringToValue$g(BillingStrategy, proto.strategy);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.volumeCommitmentStartsAt) {\n m.volumeCommitmentStartsAt = new Date(proto.volumeCommitmentStartsAt);\n }\n if (proto.volumeCommitmentEndsAt) {\n m.volumeCommitmentEndsAt = new Date(proto.volumeCommitmentEndsAt);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {\n toReturn['commitment'] = 'toApiJson' in this.commitment ? this.commitment.toApiJson() : this.commitment;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.volumeCommitmentStartsAt !== 'undefined' && this.volumeCommitmentStartsAt !== null) {\n toReturn['volumeCommitmentStartsAt'] = 'toApiJson' in this.volumeCommitmentStartsAt ? this.volumeCommitmentStartsAt.toApiJson() : this.volumeCommitmentStartsAt;\n }\n if (typeof this.volumeCommitmentEndsAt !== 'undefined' && this.volumeCommitmentEndsAt !== null) {\n toReturn['volumeCommitmentEndsAt'] = 'toApiJson' in this.volumeCommitmentEndsAt ? this.volumeCommitmentEndsAt.toApiJson() : this.volumeCommitmentEndsAt;\n }\n return toReturn;\n }\n}\nclass UpdatePricingPlanProductResponse {\n static fromProto(proto) {\n let m = new UpdatePricingPlanProductResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass UpsertWholesalePricingRequest {\n static fromProto(proto) {\n let m = new UpsertWholesalePricingRequest();\n m = Object.assign(m, proto);\n if (proto.pricing) {\n m.pricing = proto.pricing.map(PricingPlanProductPricing.fromProto);\n }\n if (proto.termCommitment) {\n m.termCommitment = Commitment.fromProto(proto.termCommitment);\n }\n if (proto.strategy) {\n m.strategy = enumStringToValue$g(BillingStrategy, proto.strategy);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.volumeCommitmentStartsAt) {\n m.volumeCommitmentStartsAt = new Date(proto.volumeCommitmentStartsAt);\n }\n if (proto.volumeCommitmentEndsAt) {\n m.volumeCommitmentEndsAt = new Date(proto.volumeCommitmentEndsAt);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.termCommitment !== 'undefined' && this.termCommitment !== null) {\n toReturn['termCommitment'] = 'toApiJson' in this.termCommitment ? this.termCommitment.toApiJson() : this.termCommitment;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.volumeCommitmentStartsAt !== 'undefined' && this.volumeCommitmentStartsAt !== null) {\n toReturn['volumeCommitmentStartsAt'] = 'toApiJson' in this.volumeCommitmentStartsAt ? this.volumeCommitmentStartsAt.toApiJson() : this.volumeCommitmentStartsAt;\n }\n if (typeof this.volumeCommitmentEndsAt !== 'undefined' && this.volumeCommitmentEndsAt !== null) {\n toReturn['volumeCommitmentEndsAt'] = 'toApiJson' in this.volumeCommitmentEndsAt ? this.volumeCommitmentEndsAt.toApiJson() : this.volumeCommitmentEndsAt;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$f(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateProductRequest {\n static fromProto(proto) {\n let m = new CreateProductRequest();\n m = Object.assign(m, proto);\n if (proto.productType) {\n m.productType = enumStringToValue$f(ProductType, proto.productType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.productId !== 'undefined') {\n toReturn['productId'] = this.productId;\n }\n if (typeof this.editionId !== 'undefined') {\n toReturn['editionId'] = this.editionId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.reportingCode !== 'undefined') {\n toReturn['reportingCode'] = this.reportingCode;\n }\n if (typeof this.productType !== 'undefined') {\n toReturn['productType'] = this.productType;\n }\n if (typeof this.metered !== 'undefined') {\n toReturn['metered'] = this.metered;\n }\n return toReturn;\n }\n}\nclass DeleteProductRequest {\n static fromProto(proto) {\n let m = new DeleteProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass GetMultiProductRequest {\n static fromProto(proto) {\n let m = new GetMultiProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n return toReturn;\n }\n}\nclass GetMultiProductResponse {\n static fromProto(proto) {\n let m = new GetMultiProductResponse();\n m = Object.assign(m, proto);\n if (proto.products) {\n m.products = Object.keys(proto.products).reduce((obj, k) => {\n obj[k] = Product.fromProto(proto.products[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.products !== 'undefined' && this.products !== null) {\n toReturn['products'] = 'toApiJson' in this.products ? this.products.toApiJson() : this.products;\n }\n return toReturn;\n }\n}\nclass ListProductsRequestListProductsFilters {\n static fromProto(proto) {\n let m = new ListProductsRequestListProductsFilters();\n m = Object.assign(m, proto);\n if (proto.productType) {\n m.productType = proto.productType.map(v => enumStringToValue$f(ProductType, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hasDiscount !== 'undefined') {\n toReturn['hasDiscount'] = this.hasDiscount;\n }\n if (typeof this.hasPricingOverride !== 'undefined') {\n toReturn['hasPricingOverride'] = this.hasPricingOverride;\n }\n if (typeof this.productType !== 'undefined') {\n toReturn['productType'] = this.productType;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n return toReturn;\n }\n}\nclass ListProductsRequest {\n static fromProto(proto) {\n let m = new ListProductsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListProductsRequestListProductsFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListProductsResponse {\n static fromProto(proto) {\n let m = new ListProductsResponse();\n m = Object.assign(m, proto);\n if (proto.products) {\n m.products = proto.products.map(Product.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.products !== 'undefined' && this.products !== null) {\n toReturn['products'] = 'toApiJson' in this.products ? this.products.toApiJson() : this.products;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass Product {\n static fromProto(proto) {\n let m = new Product();\n m = Object.assign(m, proto);\n if (proto.productType) {\n m.productType = enumStringToValue$f(ProductType, proto.productType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.iconUrl !== 'undefined') {\n toReturn['iconUrl'] = this.iconUrl;\n }\n if (typeof this.hasPricingOverride !== 'undefined') {\n toReturn['hasPricingOverride'] = this.hasPricingOverride;\n }\n if (typeof this.hasDiscount !== 'undefined') {\n toReturn['hasDiscount'] = this.hasDiscount;\n }\n if (typeof this.productType !== 'undefined') {\n toReturn['productType'] = this.productType;\n }\n if (typeof this.metered !== 'undefined') {\n toReturn['metered'] = this.metered;\n }\n return toReturn;\n }\n}\nclass GetMultiProductResponseProductsEntry {\n static fromProto(proto) {\n let m = new GetMultiProductResponseProductsEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = Product.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass UpdateProductRequest {\n static fromProto(proto) {\n let m = new UpdateProductRequest();\n m = Object.assign(m, proto);\n if (proto.productType) {\n m.productType = enumStringToValue$f(ProductType, proto.productType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.reportingCode !== 'undefined') {\n toReturn['reportingCode'] = this.reportingCode;\n }\n if (typeof this.productType !== 'undefined') {\n toReturn['productType'] = this.productType;\n }\n if (typeof this.metered !== 'undefined') {\n toReturn['metered'] = this.metered;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$e(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedCredit {\n static fromProto(proto) {\n let m = new AppliedCredit();\n m = Object.assign(m, proto);\n if (proto.appliedAmount) {\n m.appliedAmount = parseInt(proto.appliedAmount, 10);\n }\n if (proto.referenceType) {\n m.referenceType = enumStringToValue$e(CreditType, proto.referenceType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appliedAmount !== 'undefined') {\n toReturn['appliedAmount'] = this.appliedAmount;\n }\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.referenceType !== 'undefined') {\n toReturn['referenceType'] = this.referenceType;\n }\n return toReturn;\n }\n}\nclass ListPurchaseRequestListPurchaseBillingStrategyFilter {\n static fromProto(proto) {\n let m = new ListPurchaseRequestListPurchaseBillingStrategyFilter();\n m = Object.assign(m, proto);\n if (proto.billingStrategy) {\n m.billingStrategy = proto.billingStrategy.map(v => enumStringToValue$e(BillingStrategy, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.billingStrategy !== 'undefined') {\n toReturn['billingStrategy'] = this.billingStrategy;\n }\n return toReturn;\n }\n}\nclass ListPurchaseRequestListPurchaseFilters {\n static fromProto(proto) {\n let m = new ListPurchaseRequestListPurchaseFilters();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.billingStrategyFilter) {\n m.billingStrategyFilter = ListPurchaseRequestListPurchaseBillingStrategyFilter.fromProto(proto.billingStrategyFilter);\n }\n if (proto.state) {\n m.state = enumStringToValue$e(ListPurchaseRequestState, proto.state);\n }\n if (proto.minPrice) {\n m.minPrice = parseInt(proto.minPrice, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$e(PurchaseStatus, proto.status);\n }\n if (proto.dunningPauseStart) {\n m.dunningPauseStart = new Date(proto.dunningPauseStart);\n }\n if (proto.dunningPauseEnd) {\n m.dunningPauseEnd = new Date(proto.dunningPauseEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.billingStrategyFilter !== 'undefined' && this.billingStrategyFilter !== null) {\n toReturn['billingStrategyFilter'] = 'toApiJson' in this.billingStrategyFilter ? this.billingStrategyFilter.toApiJson() : this.billingStrategyFilter;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.minPrice !== 'undefined') {\n toReturn['minPrice'] = this.minPrice;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.includeVoided !== 'undefined') {\n toReturn['includeVoided'] = this.includeVoided;\n }\n if (typeof this.dunningPauseStart !== 'undefined' && this.dunningPauseStart !== null) {\n toReturn['dunningPauseStart'] = 'toApiJson' in this.dunningPauseStart ? this.dunningPauseStart.toApiJson() : this.dunningPauseStart;\n }\n if (typeof this.dunningPauseEnd !== 'undefined' && this.dunningPauseEnd !== null) {\n toReturn['dunningPauseEnd'] = 'toApiJson' in this.dunningPauseEnd ? this.dunningPauseEnd.toApiJson() : this.dunningPauseEnd;\n }\n return toReturn;\n }\n}\nclass ListPurchaseItemsRequestListPurchaseItemsFilters {\n static fromProto(proto) {\n let m = new ListPurchaseItemsRequestListPurchaseItemsFilters();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nclass ListPurchaseItemsRequest {\n static fromProto(proto) {\n let m = new ListPurchaseItemsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListPurchaseItemsRequestListPurchaseItemsFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPurchaseItemsResponse {\n static fromProto(proto) {\n let m = new ListPurchaseItemsResponse();\n m = Object.assign(m, proto);\n if (proto.purchaseItems) {\n m.purchaseItems = proto.purchaseItems.map(PurchaseItem.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$e(Currency, proto.currency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseItems !== 'undefined' && this.purchaseItems !== null) {\n toReturn['purchaseItems'] = 'toApiJson' in this.purchaseItems ? this.purchaseItems.toApiJson() : this.purchaseItems;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n return toReturn;\n }\n}\nclass ListPurchaseRequest {\n static fromProto(proto) {\n let m = new ListPurchaseRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListPurchaseRequestListPurchaseFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPurchaseResponse {\n static fromProto(proto) {\n let m = new ListPurchaseResponse();\n m = Object.assign(m, proto);\n if (proto.purchases) {\n m.purchases = proto.purchases.map(Purchase.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchases !== 'undefined' && this.purchases !== null) {\n toReturn['purchases'] = 'toApiJson' in this.purchases ? this.purchases.toApiJson() : this.purchases;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PauseDunningRequest {\n static fromProto(proto) {\n let m = new PauseDunningRequest();\n m = Object.assign(m, proto);\n if (proto.pauseDunningUntil) {\n m.pauseDunningUntil = new Date(proto.pauseDunningUntil);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n if (typeof this.pauseDunningUntil !== 'undefined' && this.pauseDunningUntil !== null) {\n toReturn['pauseDunningUntil'] = 'toApiJson' in this.pauseDunningUntil ? this.pauseDunningUntil.toApiJson() : this.pauseDunningUntil;\n }\n return toReturn;\n }\n}\nclass Purchase {\n static fromProto(proto) {\n let m = new Purchase();\n m = Object.assign(m, proto);\n if (proto.timestamp) {\n m.timestamp = new Date(proto.timestamp);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$e(Currency, proto.currency);\n }\n if (proto.items) {\n m.items = proto.items.map(PurchaseItem.fromProto);\n }\n if (proto.billingStrategy) {\n m.billingStrategy = enumStringToValue$e(BillingStrategy, proto.billingStrategy);\n }\n if (proto.dunningAttempt) {\n m.dunningAttempt = parseInt(proto.dunningAttempt, 10);\n }\n if (proto.voided) {\n m.voided = new Date(proto.voided);\n }\n if (proto.status) {\n m.status = enumStringToValue$e(PurchaseStatus, proto.status);\n }\n if (proto.creditAmount) {\n m.creditAmount = parseInt(proto.creditAmount, 10);\n }\n if (proto.appliedCredits) {\n m.appliedCredits = proto.appliedCredits.map(AppliedCredit.fromProto);\n }\n if (proto.taxAmount) {\n m.taxAmount = parseInt(proto.taxAmount, 10);\n }\n if (proto.appliedTaxRates) {\n m.appliedTaxRates = proto.appliedTaxRates.map(AppliedTaxRate.fromProto);\n }\n if (proto.pauseDunningUntil) {\n m.pauseDunningUntil = new Date(proto.pauseDunningUntil);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.timestamp !== 'undefined' && this.timestamp !== null) {\n toReturn['timestamp'] = 'toApiJson' in this.timestamp ? this.timestamp.toApiJson() : this.timestamp;\n }\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.renewal !== 'undefined') {\n toReturn['renewal'] = this.renewal;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.billingStrategy !== 'undefined') {\n toReturn['billingStrategy'] = this.billingStrategy;\n }\n if (typeof this.isDunning !== 'undefined') {\n toReturn['isDunning'] = this.isDunning;\n }\n if (typeof this.dunningAttempt !== 'undefined') {\n toReturn['dunningAttempt'] = this.dunningAttempt;\n }\n if (typeof this.voided !== 'undefined' && this.voided !== null) {\n toReturn['voided'] = 'toApiJson' in this.voided ? this.voided.toApiJson() : this.voided;\n }\n if (typeof this.paid !== 'undefined') {\n toReturn['paid'] = this.paid;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.creditAmount !== 'undefined') {\n toReturn['creditAmount'] = this.creditAmount;\n }\n if (typeof this.appliedCredits !== 'undefined' && this.appliedCredits !== null) {\n toReturn['appliedCredits'] = 'toApiJson' in this.appliedCredits ? this.appliedCredits.toApiJson() : this.appliedCredits;\n }\n if (typeof this.taxAmount !== 'undefined') {\n toReturn['taxAmount'] = this.taxAmount;\n }\n if (typeof this.appliedTaxRates !== 'undefined' && this.appliedTaxRates !== null) {\n toReturn['appliedTaxRates'] = 'toApiJson' in this.appliedTaxRates ? this.appliedTaxRates.toApiJson() : this.appliedTaxRates;\n }\n if (typeof this.pauseDunningUntil !== 'undefined' && this.pauseDunningUntil !== null) {\n toReturn['pauseDunningUntil'] = 'toApiJson' in this.pauseDunningUntil ? this.pauseDunningUntil.toApiJson() : this.pauseDunningUntil;\n }\n return toReturn;\n }\n}\nclass PurchaseItem {\n static fromProto(proto) {\n let m = new PurchaseItem();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.discountAmount) {\n m.discountAmount = parseInt(proto.discountAmount, 10);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.appliedDiscounts) {\n m.appliedDiscounts = proto.appliedDiscounts.map(AppliedDiscount.fromProto);\n }\n if (proto.taxAmount) {\n m.taxAmount = parseInt(proto.taxAmount, 10);\n }\n if (proto.appliedTaxRates) {\n m.appliedTaxRates = proto.appliedTaxRates.map(AppliedTaxRate.fromProto);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n if (proto.feeAmount) {\n m.feeAmount = parseInt(proto.feeAmount, 10);\n }\n if (proto.appliedFees) {\n m.appliedFees = proto.appliedFees.map(AppliedFee.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.discountAmount !== 'undefined') {\n toReturn['discountAmount'] = this.discountAmount;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.appliedDiscounts !== 'undefined' && this.appliedDiscounts !== null) {\n toReturn['appliedDiscounts'] = 'toApiJson' in this.appliedDiscounts ? this.appliedDiscounts.toApiJson() : this.appliedDiscounts;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.taxAmount !== 'undefined') {\n toReturn['taxAmount'] = this.taxAmount;\n }\n if (typeof this.appliedTaxRates !== 'undefined' && this.appliedTaxRates !== null) {\n toReturn['appliedTaxRates'] = 'toApiJson' in this.appliedTaxRates ? this.appliedTaxRates.toApiJson() : this.appliedTaxRates;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n if (typeof this.feeAmount !== 'undefined') {\n toReturn['feeAmount'] = this.feeAmount;\n }\n if (typeof this.appliedFees !== 'undefined' && this.appliedFees !== null) {\n toReturn['appliedFees'] = 'toApiJson' in this.appliedFees ? this.appliedFees.toApiJson() : this.appliedFees;\n }\n return toReturn;\n }\n}\nclass ResumeDunningRequest {\n static fromProto(proto) {\n let m = new ResumeDunningRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n return toReturn;\n }\n}\nclass RetryPurchaseRequest {\n static fromProto(proto) {\n let m = new RetryPurchaseRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n if (typeof this.shouldEnterDunning !== 'undefined') {\n toReturn['shouldEnterDunning'] = this.shouldEnterDunning;\n }\n return toReturn;\n }\n}\nclass StopDunningRequest {\n static fromProto(proto) {\n let m = new StopDunningRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n return toReturn;\n }\n}\nclass VoidPurchaseRequest {\n static fromProto(proto) {\n let m = new VoidPurchaseRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$d(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateRefundRequest {\n static fromProto(proto) {\n let m = new CreateRefundRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.reason) {\n m.reason = enumStringToValue$d(RefundReason, proto.reason);\n }\n if (proto.referenceType) {\n m.referenceType = enumStringToValue$d(ReferenceType, proto.referenceType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.paymentId !== 'undefined') {\n toReturn['paymentId'] = this.paymentId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.referenceType !== 'undefined') {\n toReturn['referenceType'] = this.referenceType;\n }\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass ListRefundsRequest {\n static fromProto(proto) {\n let m = new ListRefundsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paymentIds !== 'undefined') {\n toReturn['paymentIds'] = this.paymentIds;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass ListRefundsResponse {\n static fromProto(proto) {\n let m = new ListRefundsResponse();\n m = Object.assign(m, proto);\n if (proto.refunds) {\n m.refunds = proto.refunds.map(Refund.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.refunds !== 'undefined' && this.refunds !== null) {\n toReturn['refunds'] = 'toApiJson' in this.refunds ? this.refunds.toApiJson() : this.refunds;\n }\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass Refund {\n static fromProto(proto) {\n let m = new Refund();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.reason) {\n m.reason = enumStringToValue$d(RefundReason, proto.reason);\n }\n if (proto.status) {\n m.status = enumStringToValue$d(RefundStatus, proto.status);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.referenceType) {\n m.referenceType = enumStringToValue$d(ReferenceType, proto.referenceType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.chargeId !== 'undefined') {\n toReturn['chargeId'] = this.chargeId;\n }\n if (typeof this.refundId !== 'undefined') {\n toReturn['refundId'] = this.refundId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.referenceType !== 'undefined') {\n toReturn['referenceType'] = this.referenceType;\n }\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$c(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateSalesCreditNoteRequest {\n static fromProto(proto) {\n let m = new CreateSalesCreditNoteRequest();\n m = Object.assign(m, proto);\n if (proto.creditNoteDate) {\n m.creditNoteDate = new Date(proto.creditNoteDate);\n }\n if (proto.dueDate) {\n m.dueDate = new Date(proto.dueDate);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.creditNoteReason !== 'undefined') {\n toReturn['creditNoteReason'] = this.creditNoteReason;\n }\n if (typeof this.creditNoteDate !== 'undefined' && this.creditNoteDate !== null) {\n toReturn['creditNoteDate'] = 'toApiJson' in this.creditNoteDate ? this.creditNoteDate.toApiJson() : this.creditNoteDate;\n }\n if (typeof this.dueDate !== 'undefined' && this.dueDate !== null) {\n toReturn['dueDate'] = 'toApiJson' in this.dueDate ? this.dueDate.toApiJson() : this.dueDate;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass ListSalesCreditNoteRequestListSalesCreditNoteFilters {\n static fromProto(proto) {\n let m = new ListSalesCreditNoteRequestListSalesCreditNoteFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue$c(SalesCreditNoteStatus, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n return toReturn;\n }\n}\nclass ListSalesCreditNoteRequest {\n static fromProto(proto) {\n let m = new ListSalesCreditNoteRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSalesCreditNoteRequestListSalesCreditNoteFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListSalesCreditNoteResponse {\n static fromProto(proto) {\n let m = new ListSalesCreditNoteResponse();\n m = Object.assign(m, proto);\n if (proto.creditNote) {\n m.creditNote = proto.creditNote.map(SalesCreditNote.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNote !== 'undefined' && this.creditNote !== null) {\n toReturn['creditNote'] = 'toApiJson' in this.creditNote ? this.creditNote.toApiJson() : this.creditNote;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass SalesCreditNote {\n static fromProto(proto) {\n let m = new SalesCreditNote();\n m = Object.assign(m, proto);\n if (proto.creditNoteDate) {\n m.creditNoteDate = new Date(proto.creditNoteDate);\n }\n if (proto.dueDate) {\n m.dueDate = new Date(proto.dueDate);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$c(Currency, proto.currency);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.outstanding) {\n m.outstanding = parseInt(proto.outstanding, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$c(SalesCreditNoteStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNoteId !== 'undefined') {\n toReturn['creditNoteId'] = this.creditNoteId;\n }\n if (typeof this.creditNoteNumber !== 'undefined') {\n toReturn['creditNoteNumber'] = this.creditNoteNumber;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.creditNoteReason !== 'undefined') {\n toReturn['creditNoteReason'] = this.creditNoteReason;\n }\n if (typeof this.creditNoteDate !== 'undefined' && this.creditNoteDate !== null) {\n toReturn['creditNoteDate'] = 'toApiJson' in this.creditNoteDate ? this.creditNoteDate.toApiJson() : this.creditNoteDate;\n }\n if (typeof this.dueDate !== 'undefined' && this.dueDate !== null) {\n toReturn['dueDate'] = 'toApiJson' in this.dueDate ? this.dueDate.toApiJson() : this.dueDate;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.outstanding !== 'undefined') {\n toReturn['outstanding'] = this.outstanding;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.invoiceNumber !== 'undefined') {\n toReturn['invoiceNumber'] = this.invoiceNumber;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.paymentStatus !== 'undefined') {\n toReturn['paymentStatus'] = this.paymentStatus;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$b(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass GetSalesInvoiceRequest {\n static fromProto(proto) {\n let m = new GetSalesInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetSalesInvoiceResponse {\n static fromProto(proto) {\n let m = new GetSalesInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = SalesInvoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass ListSalesInvoiceRequestListSalesInvoiceFilters {\n static fromProto(proto) {\n let m = new ListSalesInvoiceRequestListSalesInvoiceFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue$b(SalesInvoiceStatus, v));\n }\n if (proto.paymentStatuses) {\n m.paymentStatuses = proto.paymentStatuses.map(v => enumStringToValue$b(PaymentStatuses, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.paymentStatuses !== 'undefined') {\n toReturn['paymentStatuses'] = this.paymentStatuses;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass ListSalesInvoiceRequest {\n static fromProto(proto) {\n let m = new ListSalesInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSalesInvoiceRequestListSalesInvoiceFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n return toReturn;\n }\n}\nclass ListSalesInvoiceResponse {\n static fromProto(proto) {\n let m = new ListSalesInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = proto.invoice.map(SalesInvoice.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PostSalesInvoiceRequest {\n static fromProto(proto) {\n let m = new PostSalesInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass SalesInvoice {\n static fromProto(proto) {\n let m = new SalesInvoice();\n m = Object.assign(m, proto);\n if (proto.invoiceDate) {\n m.invoiceDate = new Date(proto.invoiceDate);\n }\n if (proto.startDate) {\n m.startDate = new Date(proto.startDate);\n }\n if (proto.endDate) {\n m.endDate = new Date(proto.endDate);\n }\n if (proto.dueDate) {\n m.dueDate = new Date(proto.dueDate);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$b(Currency, proto.currency);\n }\n if (proto.status) {\n m.status = enumStringToValue$b(SalesInvoiceStatus, proto.status);\n }\n if (proto.outstanding) {\n m.outstanding = parseInt(proto.outstanding, 10);\n }\n if (proto.type) {\n m.type = enumStringToValue$b(SalesInvoiceType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.invoiceNumber !== 'undefined') {\n toReturn['invoiceNumber'] = this.invoiceNumber;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceDate !== 'undefined' && this.invoiceDate !== null) {\n toReturn['invoiceDate'] = 'toApiJson' in this.invoiceDate ? this.invoiceDate.toApiJson() : this.invoiceDate;\n }\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {\n toReturn['startDate'] = 'toApiJson' in this.startDate ? this.startDate.toApiJson() : this.startDate;\n }\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {\n toReturn['endDate'] = 'toApiJson' in this.endDate ? this.endDate.toApiJson() : this.endDate;\n }\n if (typeof this.dueDate !== 'undefined' && this.dueDate !== null) {\n toReturn['dueDate'] = 'toApiJson' in this.dueDate ? this.dueDate.toApiJson() : this.dueDate;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.paymentStatus !== 'undefined') {\n toReturn['paymentStatus'] = this.paymentStatus;\n }\n if (typeof this.outstanding !== 'undefined') {\n toReturn['outstanding'] = this.outstanding;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n return toReturn;\n }\n}\nclass SendSalesInvoiceEmailRequest {\n static fromProto(proto) {\n let m = new SendSalesInvoiceEmailRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass SendSalesInvoiceReceiptEmailRequest {\n static fromProto(proto) {\n let m = new SendSalesInvoiceReceiptEmailRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$a(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass BulkReplaceTaxRulesRequest {\n static fromProto(proto) {\n let m = new BulkReplaceTaxRulesRequest();\n m = Object.assign(m, proto);\n if (proto.taxRules) {\n m.taxRules = proto.taxRules.map(ReplaceTaxRuleRequest.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.taxRules !== 'undefined' && this.taxRules !== null) {\n toReturn['taxRules'] = 'toApiJson' in this.taxRules ? this.taxRules.toApiJson() : this.taxRules;\n }\n return toReturn;\n }\n}\nclass BulkReplaceTaxRulesResponse {\n static fromProto(proto) {\n let m = new BulkReplaceTaxRulesResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ids !== 'undefined') {\n toReturn['ids'] = this.ids;\n }\n return toReturn;\n }\n}\nclass TaxRuleCustomerCustomerAddress {\n static fromProto(proto) {\n let m = new TaxRuleCustomerCustomerAddress();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.address2 !== 'undefined') {\n toReturn['address2'] = this.address2;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n return toReturn;\n }\n}\nclass DeleteTaxRuleRequest {\n static fromProto(proto) {\n let m = new DeleteTaxRuleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ListTaxRulesRequestFilters {\n static fromProto(proto) {\n let m = new ListTaxRulesRequestFilters();\n m = Object.assign(m, proto);\n if (proto.consumer) {\n m.consumer = enumStringToValue$a(Consumer, proto.consumer);\n }\n if (proto.entityType) {\n m.entityType = enumStringToValue$a(TaxRuleEntityType, proto.entityType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n if (typeof this.entityType !== 'undefined') {\n toReturn['entityType'] = this.entityType;\n }\n return toReturn;\n }\n}\nclass GetTaxRuleRequest {\n static fromProto(proto) {\n let m = new GetTaxRuleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetTaxRuleResponse {\n static fromProto(proto) {\n let m = new GetTaxRuleResponse();\n m = Object.assign(m, proto);\n if (proto.taxRule) {\n m.taxRule = TaxRule.fromProto(proto.taxRule);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.taxRule !== 'undefined' && this.taxRule !== null) {\n toReturn['taxRule'] = 'toApiJson' in this.taxRule ? this.taxRule.toApiJson() : this.taxRule;\n }\n return toReturn;\n }\n}\nclass ListTaxRulesRequest {\n static fromProto(proto) {\n let m = new ListTaxRulesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListTaxRulesRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListTaxRulesResponse {\n static fromProto(proto) {\n let m = new ListTaxRulesResponse();\n m = Object.assign(m, proto);\n if (proto.taxRules) {\n m.taxRules = proto.taxRules.map(TaxRule.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.taxRules !== 'undefined' && this.taxRules !== null) {\n toReturn['taxRules'] = 'toApiJson' in this.taxRules ? this.taxRules.toApiJson() : this.taxRules;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass TaxRuleProductProductIdentifier {\n static fromProto(proto) {\n let m = new TaxRuleProductProductIdentifier();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$a(ProductType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n return toReturn;\n }\n}\nclass ReplaceTaxRuleRequest {\n static fromProto(proto) {\n let m = new ReplaceTaxRuleRequest();\n m = Object.assign(m, proto);\n if (proto.entityType) {\n m.entityType = enumStringToValue$a(TaxRuleEntityType, proto.entityType);\n }\n if (proto.type) {\n m.type = enumStringToValue$a(TaxRuleType, proto.type);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$a(Consumer, proto.consumer);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.entityType !== 'undefined') {\n toReturn['entityType'] = this.entityType;\n }\n if (typeof this.entityId !== 'undefined') {\n toReturn['entityId'] = this.entityId;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.taxRateIds !== 'undefined') {\n toReturn['taxRateIds'] = this.taxRateIds;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n return toReturn;\n }\n}\nclass ReplaceTaxRuleResponse {\n static fromProto(proto) {\n let m = new ReplaceTaxRuleResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass TaxRule {\n static fromProto(proto) {\n let m = new TaxRule();\n m = Object.assign(m, proto);\n if (proto.entityType) {\n m.entityType = enumStringToValue$a(TaxRuleEntityType, proto.entityType);\n }\n if (proto.entity) {\n m.entity = TaxRuleTaxRuleEntity.fromProto(proto.entity);\n }\n if (proto.type) {\n m.type = enumStringToValue$a(TaxRuleType, proto.type);\n }\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.entityId !== 'undefined') {\n toReturn['entityId'] = this.entityId;\n }\n if (typeof this.entityType !== 'undefined') {\n toReturn['entityType'] = this.entityType;\n }\n if (typeof this.entity !== 'undefined' && this.entity !== null) {\n toReturn['entity'] = 'toApiJson' in this.entity ? this.entity.toApiJson() : this.entity;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n return toReturn;\n }\n}\nclass TaxRuleCustomer {\n static fromProto(proto) {\n let m = new TaxRuleCustomer();\n m = Object.assign(m, proto);\n if (proto.address) {\n m.address = TaxRuleCustomerCustomerAddress.fromProto(proto.address);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.address !== 'undefined' && this.address !== null) {\n toReturn['address'] = 'toApiJson' in this.address ? this.address.toApiJson() : this.address;\n }\n return toReturn;\n }\n}\nclass TaxRuleTaxRuleEntity {\n static fromProto(proto) {\n let m = new TaxRuleTaxRuleEntity();\n m = Object.assign(m, proto);\n if (proto.customer) {\n m.customer = TaxRuleCustomer.fromProto(proto.customer);\n }\n if (proto.product) {\n m.product = TaxRuleProduct.fromProto(proto.product);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customer !== 'undefined' && this.customer !== null) {\n toReturn['customer'] = 'toApiJson' in this.customer ? this.customer.toApiJson() : this.customer;\n }\n if (typeof this.product !== 'undefined' && this.product !== null) {\n toReturn['product'] = 'toApiJson' in this.product ? this.product.toApiJson() : this.product;\n }\n return toReturn;\n }\n}\nclass TaxRuleProduct {\n static fromProto(proto) {\n let m = new TaxRuleProduct();\n m = Object.assign(m, proto);\n if (proto.identifier) {\n m.identifier = TaxRuleProductProductIdentifier.fromProto(proto.identifier);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.identifier !== 'undefined' && this.identifier !== null) {\n toReturn['identifier'] = 'toApiJson' in this.identifier ? this.identifier.toApiJson() : this.identifier;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$9(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ContractDocument {\n static fromProto(proto) {\n let m = new ContractDocument();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.filename !== 'undefined') {\n toReturn['filename'] = this.filename;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nclass DeleteContractDocumentRequest {\n static fromProto(proto) {\n let m = new DeleteContractDocumentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ListContractDocumentsRequestFilters {\n static fromProto(proto) {\n let m = new ListContractDocumentsRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass ListContractDocumentsRequest {\n static fromProto(proto) {\n let m = new ListContractDocumentsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListContractDocumentsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListContractDocumentsResponse {\n static fromProto(proto) {\n let m = new ListContractDocumentsResponse();\n m = Object.assign(m, proto);\n if (proto.contractDocuments) {\n m.contractDocuments = proto.contractDocuments.map(ContractDocument.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contractDocuments !== 'undefined' && this.contractDocuments !== null) {\n toReturn['contractDocuments'] = 'toApiJson' in this.contractDocuments ? this.contractDocuments.toApiJson() : this.contractDocuments;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$8(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass GetRetailCustomerConfigurationRequest {\n static fromProto(proto) {\n let m = new GetRetailCustomerConfigurationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetRetailCustomerConfigurationResponse {\n static fromProto(proto) {\n let m = new GetRetailCustomerConfigurationResponse();\n m = Object.assign(m, proto);\n if (proto.configuration) {\n m.configuration = RetailCustomerConfiguration.fromProto(proto.configuration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.configuration !== 'undefined' && this.configuration !== null) {\n toReturn['configuration'] = 'toApiJson' in this.configuration ? this.configuration.toApiJson() : this.configuration;\n }\n return toReturn;\n }\n}\nclass RetailCustomerConfiguration {\n static fromProto(proto) {\n let m = new RetailCustomerConfiguration();\n m = Object.assign(m, proto);\n if (proto.invoiceDay) {\n m.invoiceDay = parseInt(proto.invoiceDay, 10);\n }\n if (proto.nextInvoiceDate) {\n m.nextInvoiceDate = new Date(proto.nextInvoiceDate);\n }\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n if (proto.paymentMethodTypes) {\n m.paymentMethodTypes = proto.paymentMethodTypes.map(v => enumStringToValue$8(PaymentMethodType, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceDay !== 'undefined') {\n toReturn['invoiceDay'] = this.invoiceDay;\n }\n if (typeof this.nextInvoiceDate !== 'undefined' && this.nextInvoiceDate !== null) {\n toReturn['nextInvoiceDate'] = 'toApiJson' in this.nextInvoiceDate ? this.nextInvoiceDate.toApiJson() : this.nextInvoiceDate;\n }\n if (typeof this.autoPost !== 'undefined') {\n toReturn['autoPost'] = this.autoPost;\n }\n if (typeof this.collectionMethod !== 'undefined') {\n toReturn['collectionMethod'] = this.collectionMethod;\n }\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.autoGenerate !== 'undefined') {\n toReturn['autoGenerate'] = this.autoGenerate;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.useTemplateInvoice !== 'undefined') {\n toReturn['useTemplateInvoice'] = this.useTemplateInvoice;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.additionalContactIds !== 'undefined') {\n toReturn['additionalContactIds'] = this.additionalContactIds;\n }\n if (typeof this.autoGenerateRetailSubscriptions !== 'undefined') {\n toReturn['autoGenerateRetailSubscriptions'] = this.autoGenerateRetailSubscriptions;\n }\n if (typeof this.paymentMethodTypes !== 'undefined') {\n toReturn['paymentMethodTypes'] = this.paymentMethodTypes;\n }\n return toReturn;\n }\n}\nclass UpsertRetailCustomerConfigurationRequest {\n static fromProto(proto) {\n let m = new UpsertRetailCustomerConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.invoiceDay) {\n m.invoiceDay = parseInt(proto.invoiceDay, 10);\n }\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n if (proto.paymentMethodTypes) {\n m.paymentMethodTypes = proto.paymentMethodTypes.map(v => enumStringToValue$8(PaymentMethodType, v));\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceDay !== 'undefined') {\n toReturn['invoiceDay'] = this.invoiceDay;\n }\n if (typeof this.autoPost !== 'undefined') {\n toReturn['autoPost'] = this.autoPost;\n }\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.autoGenerate !== 'undefined') {\n toReturn['autoGenerate'] = this.autoGenerate;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.collectionMethod !== 'undefined') {\n toReturn['collectionMethod'] = this.collectionMethod;\n }\n if (typeof this.useTemplateInvoice !== 'undefined') {\n toReturn['useTemplateInvoice'] = this.useTemplateInvoice;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.additionalContactIds !== 'undefined') {\n toReturn['additionalContactIds'] = this.additionalContactIds;\n }\n if (typeof this.autoGenerateRetailSubscriptions !== 'undefined') {\n toReturn['autoGenerateRetailSubscriptions'] = this.autoGenerateRetailSubscriptions;\n }\n if (typeof this.paymentMethodTypes !== 'undefined') {\n toReturn['paymentMethodTypes'] = this.paymentMethodTypes;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AddCreditRequest {\n static fromProto(proto) {\n let m = new AddCreditRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.idempotencyKey !== 'undefined') {\n toReturn['idempotencyKey'] = this.idempotencyKey;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n return toReturn;\n }\n}\nclass CreditBalance {\n static fromProto(proto) {\n let m = new CreditBalance();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n return toReturn;\n }\n}\nclass GetBalanceRequest {\n static fromProto(proto) {\n let m = new GetBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetBalanceResponse {\n static fromProto(proto) {\n let m = new GetBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.creditBalance) {\n m.creditBalance = CreditBalance.fromProto(proto.creditBalance);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditBalance !== 'undefined' && this.creditBalance !== null) {\n toReturn['creditBalance'] = 'toApiJson' in this.creditBalance ? this.creditBalance.toApiJson() : this.creditBalance;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass RecurringInvoiceCustomerAddress {\n static fromProto(proto) {\n let m = new RecurringInvoiceCustomerAddress();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.address2 !== 'undefined') {\n toReturn['address2'] = this.address2;\n }\n return toReturn;\n }\n}\nclass ListRecurringInvoicesFiltersDateFilter {\n static fromProto(proto) {\n let m = new ListRecurringInvoicesFiltersDateFilter();\n m = Object.assign(m, proto);\n if (proto.dateLte) {\n m.dateLte = new Date(proto.dateLte);\n }\n if (proto.dateGte) {\n m.dateGte = new Date(proto.dateGte);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dateLte !== 'undefined' && this.dateLte !== null) {\n toReturn['dateLte'] = 'toApiJson' in this.dateLte ? this.dateLte.toApiJson() : this.dateLte;\n }\n if (typeof this.dateGte !== 'undefined' && this.dateGte !== null) {\n toReturn['dateGte'] = 'toApiJson' in this.dateGte ? this.dateGte.toApiJson() : this.dateGte;\n }\n return toReturn;\n }\n}\nclass DeleteRecurringInvoiceRequest {\n static fromProto(proto) {\n let m = new DeleteRecurringInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ListRecurringInvoicesFiltersDetailedInterval {\n static fromProto(proto) {\n let m = new ListRecurringInvoicesFiltersDetailedInterval();\n m = Object.assign(m, proto);\n if (proto.interval) {\n m.interval = enumStringToValue$6(Interval, proto.interval);\n }\n if (proto.intervalCount) {\n m.intervalCount = parseInt(proto.intervalCount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.interval !== 'undefined') {\n toReturn['interval'] = this.interval;\n }\n if (typeof this.intervalCount !== 'undefined') {\n toReturn['intervalCount'] = this.intervalCount;\n }\n return toReturn;\n }\n}\nclass GetRecurringInvoiceRequest {\n static fromProto(proto) {\n let m = new GetRecurringInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ListRecurringInvoicesFilters {\n static fromProto(proto) {\n let m = new ListRecurringInvoicesFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue$6(RecurringInvoiceStatus, v));\n }\n if (proto.intervals) {\n m.intervals = proto.intervals.map(ListRecurringInvoicesFiltersDetailedInterval.fromProto);\n }\n if (proto.nextIssuedDate) {\n m.nextIssuedDate = ListRecurringInvoicesFiltersDateFilter.fromProto(proto.nextIssuedDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.intervals !== 'undefined' && this.intervals !== null) {\n toReturn['intervals'] = 'toApiJson' in this.intervals ? this.intervals.toApiJson() : this.intervals;\n }\n if (typeof this.nextIssuedDate !== 'undefined' && this.nextIssuedDate !== null) {\n toReturn['nextIssuedDate'] = 'toApiJson' in this.nextIssuedDate ? this.nextIssuedDate.toApiJson() : this.nextIssuedDate;\n }\n return toReturn;\n }\n}\nclass ListRecurringInvoicesRequest {\n static fromProto(proto) {\n let m = new ListRecurringInvoicesRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = ListRecurringInvoicesFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListRecurringInvoicesResponse {\n static fromProto(proto) {\n let m = new ListRecurringInvoicesResponse();\n m = Object.assign(m, proto);\n if (proto.recurringInvoices) {\n m.recurringInvoices = proto.recurringInvoices.map(RecurringInvoice.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recurringInvoices !== 'undefined' && this.recurringInvoices !== null) {\n toReturn['recurringInvoices'] = 'toApiJson' in this.recurringInvoices ? this.recurringInvoices.toApiJson() : this.recurringInvoices;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass RecurringInvoice {\n static fromProto(proto) {\n let m = new RecurringInvoice();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.status) {\n m.status = enumStringToValue$6(RecurringInvoiceStatus, proto.status);\n }\n if (proto.nextIssue) {\n m.nextIssue = new Date(proto.nextIssue);\n }\n if (proto.intervalCount) {\n m.intervalCount = parseInt(proto.intervalCount, 10);\n }\n if (proto.interval) {\n m.interval = enumStringToValue$6(Interval, proto.interval);\n }\n if (proto.repeatOnDayOfMonth) {\n m.repeatOnDayOfMonth = parseInt(proto.repeatOnDayOfMonth, 10);\n }\n if (proto.collectionMethod) {\n m.collectionMethod = enumStringToValue$6(CollectionMethod, proto.collectionMethod);\n }\n if (proto.paymentProcessor) {\n m.paymentProcessor = enumStringToValue$6(PaymentProcessor, proto.paymentProcessor);\n }\n if (proto.items) {\n m.items = proto.items.map(RecurringInvoiceItem.fromProto);\n }\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n if (proto.endsAt) {\n m.endsAt = new Date(proto.endsAt);\n }\n if (proto.customerAddress) {\n m.customerAddress = RecurringInvoiceCustomerAddress.fromProto(proto.customerAddress);\n }\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n if (proto.paymentMethodTypes) {\n m.paymentMethodTypes = proto.paymentMethodTypes.map(v => enumStringToValue$6(PaymentMethodType, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.nextIssue !== 'undefined' && this.nextIssue !== null) {\n toReturn['nextIssue'] = 'toApiJson' in this.nextIssue ? this.nextIssue.toApiJson() : this.nextIssue;\n }\n if (typeof this.intervalCount !== 'undefined') {\n toReturn['intervalCount'] = this.intervalCount;\n }\n if (typeof this.interval !== 'undefined') {\n toReturn['interval'] = this.interval;\n }\n if (typeof this.repeatOnDayOfMonth !== 'undefined') {\n toReturn['repeatOnDayOfMonth'] = this.repeatOnDayOfMonth;\n }\n if (typeof this.collectionMethod !== 'undefined') {\n toReturn['collectionMethod'] = this.collectionMethod;\n }\n if (typeof this.recipientUserId !== 'undefined') {\n toReturn['recipientUserId'] = this.recipientUserId;\n }\n if (typeof this.paymentProcessor !== 'undefined') {\n toReturn['paymentProcessor'] = this.paymentProcessor;\n }\n if (typeof this.paymentProcessorId !== 'undefined') {\n toReturn['paymentProcessorId'] = this.paymentProcessorId;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.endsAt !== 'undefined' && this.endsAt !== null) {\n toReturn['endsAt'] = 'toApiJson' in this.endsAt ? this.endsAt.toApiJson() : this.endsAt;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.customerAddress !== 'undefined' && this.customerAddress !== null) {\n toReturn['customerAddress'] = 'toApiJson' in this.customerAddress ? this.customerAddress.toApiJson() : this.customerAddress;\n }\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.additionalRecipientIds !== 'undefined') {\n toReturn['additionalRecipientIds'] = this.additionalRecipientIds;\n }\n if (typeof this.paymentMethodTypes !== 'undefined') {\n toReturn['paymentMethodTypes'] = this.paymentMethodTypes;\n }\n return toReturn;\n }\n}\nclass RecurringInvoiceBundle {\n static fromProto(proto) {\n let m = new RecurringInvoiceBundle();\n m = Object.assign(m, proto);\n if (proto.lineItems) {\n m.lineItems = proto.lineItems.map(RecurringInvoiceLineItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.hideLineItems !== 'undefined') {\n toReturn['hideLineItems'] = this.hideLineItems;\n }\n if (typeof this.lineItems !== 'undefined' && this.lineItems !== null) {\n toReturn['lineItems'] = 'toApiJson' in this.lineItems ? this.lineItems.toApiJson() : this.lineItems;\n }\n return toReturn;\n }\n}\nclass RecurringInvoiceItem {\n static fromProto(proto) {\n let m = new RecurringInvoiceItem();\n m = Object.assign(m, proto);\n if (proto.lineItem) {\n m.lineItem = RecurringInvoiceLineItem.fromProto(proto.lineItem);\n }\n if (proto.bundle) {\n m.bundle = RecurringInvoiceBundle.fromProto(proto.bundle);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lineItem !== 'undefined' && this.lineItem !== null) {\n toReturn['lineItem'] = 'toApiJson' in this.lineItem ? this.lineItem.toApiJson() : this.lineItem;\n }\n if (typeof this.bundle !== 'undefined' && this.bundle !== null) {\n toReturn['bundle'] = 'toApiJson' in this.bundle ? this.bundle.toApiJson() : this.bundle;\n }\n return toReturn;\n }\n}\nclass RecurringInvoiceLineItem {\n static fromProto(proto) {\n let m = new RecurringInvoiceLineItem();\n m = Object.assign(m, proto);\n if (proto.unitPrice) {\n m.unitPrice = parseInt(proto.unitPrice, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.unitPrice !== 'undefined') {\n toReturn['unitPrice'] = this.unitPrice;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.taxRateIds !== 'undefined') {\n toReturn['taxRateIds'] = this.taxRateIds;\n }\n return toReturn;\n }\n}\nclass UpdateRecurringInvoiceRequest {\n static fromProto(proto) {\n let m = new UpdateRecurringInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.recurringInvoice) {\n m.recurringInvoice = RecurringInvoice.fromProto(proto.recurringInvoice);\n }\n if (proto.updateMask) {\n m.updateMask = FieldMask.fromProto(proto.updateMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recurringInvoice !== 'undefined' && this.recurringInvoice !== null) {\n toReturn['recurringInvoice'] = 'toApiJson' in this.recurringInvoice ? this.recurringInvoice.toApiJson() : this.recurringInvoice;\n }\n if (typeof this.updateMask !== 'undefined' && this.updateMask !== null) {\n toReturn['updateMask'] = 'toApiJson' in this.updateMask ? this.updateMask.toApiJson() : this.updateMask;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateMerchantServicesReportRun {\n static fromProto(proto) {\n let m = new CreateMerchantServicesReportRun();\n m = Object.assign(m, proto);\n if (proto.reportType) {\n m.reportType = enumStringToValue$5(MerchantServicesReportRunType, proto.reportType);\n }\n if (proto.intervalStart) {\n m.intervalStart = new Date(proto.intervalStart);\n }\n if (proto.intervalEnd) {\n m.intervalEnd = new Date(proto.intervalEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.reportType !== 'undefined') {\n toReturn['reportType'] = this.reportType;\n }\n if (typeof this.intervalStart !== 'undefined' && this.intervalStart !== null) {\n toReturn['intervalStart'] = 'toApiJson' in this.intervalStart ? this.intervalStart.toApiJson() : this.intervalStart;\n }\n if (typeof this.intervalEnd !== 'undefined' && this.intervalEnd !== null) {\n toReturn['intervalEnd'] = 'toApiJson' in this.intervalEnd ? this.intervalEnd.toApiJson() : this.intervalEnd;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n return toReturn;\n }\n}\nclass GetMerchantServicesReportRun {\n static fromProto(proto) {\n let m = new GetMerchantServicesReportRun();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass MerchantServicesReportRun {\n static fromProto(proto) {\n let m = new MerchantServicesReportRun();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.reportType) {\n m.reportType = enumStringToValue$5(MerchantServicesReportRunType, proto.reportType);\n }\n if (proto.status) {\n m.status = enumStringToValue$5(MerchantServicesReportRunStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.reportType !== 'undefined') {\n toReturn['reportType'] = this.reportType;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.error !== 'undefined') {\n toReturn['error'] = this.error;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ListSubscriptionRelationshipsRequestFilters {\n static fromProto(proto) {\n let m = new ListSubscriptionRelationshipsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.originType) {\n m.originType = enumStringToValue$3(EntityType, proto.originType);\n }\n if (proto.targetType) {\n m.targetType = enumStringToValue$3(EntityType, proto.targetType);\n }\n if (proto.relationshipType) {\n m.relationshipType = enumStringToValue$3(RelationshipType, proto.relationshipType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.originId !== 'undefined') {\n toReturn['originId'] = this.originId;\n }\n if (typeof this.originType !== 'undefined') {\n toReturn['originType'] = this.originType;\n }\n if (typeof this.targetId !== 'undefined') {\n toReturn['targetId'] = this.targetId;\n }\n if (typeof this.targetType !== 'undefined') {\n toReturn['targetType'] = this.targetType;\n }\n if (typeof this.relationshipType !== 'undefined') {\n toReturn['relationshipType'] = this.relationshipType;\n }\n return toReturn;\n }\n}\nclass GetMultiSubscriptionRelationshipsRequest {\n static fromProto(proto) {\n let m = new GetMultiSubscriptionRelationshipsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionRelationshipIds !== 'undefined') {\n toReturn['subscriptionRelationshipIds'] = this.subscriptionRelationshipIds;\n }\n return toReturn;\n }\n}\nclass GetMultiSubscriptionRelationshipsResponse {\n static fromProto(proto) {\n let m = new GetMultiSubscriptionRelationshipsResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptionRelationships) {\n m.subscriptionRelationships = proto.subscriptionRelationships.map(SubscriptionRelationship.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionRelationships !== 'undefined' && this.subscriptionRelationships !== null) {\n toReturn['subscriptionRelationships'] = 'toApiJson' in this.subscriptionRelationships ? this.subscriptionRelationships.toApiJson() : this.subscriptionRelationships;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRelationshipsRequest {\n static fromProto(proto) {\n let m = new ListSubscriptionRelationshipsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSubscriptionRelationshipsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRelationshipsResponse {\n static fromProto(proto) {\n let m = new ListSubscriptionRelationshipsResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptionRelationships) {\n m.subscriptionRelationships = proto.subscriptionRelationships.map(SubscriptionRelationship.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionRelationships !== 'undefined' && this.subscriptionRelationships !== null) {\n toReturn['subscriptionRelationships'] = 'toApiJson' in this.subscriptionRelationships ? this.subscriptionRelationships.toApiJson() : this.subscriptionRelationships;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ReplaceSubscriptionRelationshipsRequest {\n static fromProto(proto) {\n let m = new ReplaceSubscriptionRelationshipsRequest();\n m = Object.assign(m, proto);\n if (proto.toAdd) {\n m.toAdd = proto.toAdd.map(SubscriptionRelationship.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.toAdd !== 'undefined' && this.toAdd !== null) {\n toReturn['toAdd'] = 'toApiJson' in this.toAdd ? this.toAdd.toApiJson() : this.toAdd;\n }\n if (typeof this.toRemove !== 'undefined') {\n toReturn['toRemove'] = this.toRemove;\n }\n return toReturn;\n }\n}\nclass ReplaceSubscriptionRelationshipsResponse {\n static fromProto(proto) {\n let m = new ReplaceSubscriptionRelationshipsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.addedSubscriptionRelationshipIds !== 'undefined') {\n toReturn['addedSubscriptionRelationshipIds'] = this.addedSubscriptionRelationshipIds;\n }\n return toReturn;\n }\n}\nclass SubscriptionRelationship {\n static fromProto(proto) {\n let m = new SubscriptionRelationship();\n m = Object.assign(m, proto);\n if (proto.originType) {\n m.originType = enumStringToValue$3(EntityType, proto.originType);\n }\n if (proto.targetType) {\n m.targetType = enumStringToValue$3(EntityType, proto.targetType);\n }\n if (proto.relationshipType) {\n m.relationshipType = enumStringToValue$3(RelationshipType, proto.relationshipType);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionRelationshipId !== 'undefined') {\n toReturn['subscriptionRelationshipId'] = this.subscriptionRelationshipId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.originId !== 'undefined') {\n toReturn['originId'] = this.originId;\n }\n if (typeof this.originType !== 'undefined') {\n toReturn['originType'] = this.originType;\n }\n if (typeof this.targetId !== 'undefined') {\n toReturn['targetId'] = this.targetId;\n }\n if (typeof this.targetType !== 'undefined') {\n toReturn['targetType'] = this.targetType;\n }\n if (typeof this.relationshipType !== 'undefined') {\n toReturn['relationshipType'] = this.relationshipType;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ReplaceSubscriptionPresetsRequest {\n static fromProto(proto) {\n let m = new ReplaceSubscriptionPresetsRequest();\n m = Object.assign(m, proto);\n if (proto.presets) {\n m.presets = proto.presets.map(SubscriptionPreset.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.presets !== 'undefined' && this.presets !== null) {\n toReturn['presets'] = 'toApiJson' in this.presets ? this.presets.toApiJson() : this.presets;\n }\n return toReturn;\n }\n}\nclass ReplaceSubscriptionPresetsResponse {\n static fromProto(proto) {\n let m = new ReplaceSubscriptionPresetsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionIds !== 'undefined') {\n toReturn['subscriptionIds'] = this.subscriptionIds;\n }\n return toReturn;\n }\n}\nclass SubscriptionPreset {\n static fromProto(proto) {\n let m = new SubscriptionPreset();\n m = Object.assign(m, proto);\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n if (proto.renewalStart) {\n m.renewalStart = new Date(proto.renewalStart);\n }\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n if (typeof this.salesOrderId !== 'undefined') {\n toReturn['salesOrderId'] = this.salesOrderId;\n }\n if (typeof this.paymentIntentId !== 'undefined') {\n toReturn['paymentIntentId'] = this.paymentIntentId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n if (typeof this.renewalStart !== 'undefined' && this.renewalStart !== null) {\n toReturn['renewalStart'] = 'toApiJson' in this.renewalStart ? this.renewalStart.toApiJson() : this.renewalStart;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedTo {\n static fromProto(proto) {\n let m = new AppliedTo();\n m = Object.assign(m, proto);\n if (proto.referenceType) {\n m.referenceType = enumStringToValue$1(AppliedReferenceType, proto.referenceType);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.creditNoteType) {\n m.creditNoteType = enumStringToValue$1(CreditNoteType, proto.creditNoteType);\n }\n if (proto.appliedAt) {\n m.appliedAt = new Date(proto.appliedAt);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.referenceType !== 'undefined') {\n toReturn['referenceType'] = this.referenceType;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.creditNoteType !== 'undefined') {\n toReturn['creditNoteType'] = this.creditNoteType;\n }\n if (typeof this.appliedAt !== 'undefined' && this.appliedAt !== null) {\n toReturn['appliedAt'] = 'toApiJson' in this.appliedAt ? this.appliedAt.toApiJson() : this.appliedAt;\n }\n if (typeof this.referenceNumber !== 'undefined') {\n toReturn['referenceNumber'] = this.referenceNumber;\n }\n if (typeof this.shouldRefund !== 'undefined') {\n toReturn['shouldRefund'] = this.shouldRefund;\n }\n return toReturn;\n }\n}\nclass CalculateCreditNoteRequest {\n static fromProto(proto) {\n let m = new CalculateCreditNoteRequest();\n m = Object.assign(m, proto);\n if (proto.creditNote) {\n m.creditNote = CreditNote.fromProto(proto.creditNote);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNote !== 'undefined' && this.creditNote !== null) {\n toReturn['creditNote'] = 'toApiJson' in this.creditNote ? this.creditNote.toApiJson() : this.creditNote;\n }\n return toReturn;\n }\n}\nclass CalculateCreditNoteResponse {\n static fromProto(proto) {\n let m = new CalculateCreditNoteResponse();\n m = Object.assign(m, proto);\n if (proto.creditNote) {\n m.creditNote = CreditNote.fromProto(proto.creditNote);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNote !== 'undefined' && this.creditNote !== null) {\n toReturn['creditNote'] = 'toApiJson' in this.creditNote ? this.creditNote.toApiJson() : this.creditNote;\n }\n return toReturn;\n }\n}\nclass CreateCreditNoteRequest {\n static fromProto(proto) {\n let m = new CreateCreditNoteRequest();\n m = Object.assign(m, proto);\n if (proto.creditNote) {\n m.creditNote = CreditNote.fromProto(proto.creditNote);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNote !== 'undefined' && this.creditNote !== null) {\n toReturn['creditNote'] = 'toApiJson' in this.creditNote ? this.creditNote.toApiJson() : this.creditNote;\n }\n return toReturn;\n }\n}\nclass CreateCreditNoteResponse {\n static fromProto(proto) {\n let m = new CreateCreditNoteResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass CreditNote {\n static fromProto(proto) {\n let m = new CreditNote();\n m = Object.assign(m, proto);\n if (proto.subtotal) {\n m.subtotal = parseInt(proto.subtotal, 10);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.items) {\n m.items = proto.items.map(LineItem.fromProto);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$1(Currency, proto.currency);\n }\n if (proto.amountTax) {\n m.amountTax = parseInt(proto.amountTax, 10);\n }\n if (proto.appliedTaxes) {\n m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);\n }\n if (proto.notes) {\n m.notes = proto.notes.map(Note.fromProto);\n }\n if (proto.reason) {\n m.reason = enumStringToValue$1(CreditNoteReason, proto.reason);\n }\n if (proto.appliedTo) {\n m.appliedTo = proto.appliedTo.map(AppliedTo.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.number !== 'undefined') {\n toReturn['number'] = this.number;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.subtotal !== 'undefined') {\n toReturn['subtotal'] = this.subtotal;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.amountTax !== 'undefined') {\n toReturn['amountTax'] = this.amountTax;\n }\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {\n toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? this.appliedTaxes.toApiJson() : this.appliedTaxes;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.notes !== 'undefined' && this.notes !== null) {\n toReturn['notes'] = 'toApiJson' in this.notes ? this.notes.toApiJson() : this.notes;\n }\n if (typeof this.additionalContactIds !== 'undefined') {\n toReturn['additionalContactIds'] = this.additionalContactIds;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.appliedTo !== 'undefined' && this.appliedTo !== null) {\n toReturn['appliedTo'] = 'toApiJson' in this.appliedTo ? this.appliedTo.toApiJson() : this.appliedTo;\n }\n return toReturn;\n }\n}\nclass ListCreditNotesRequestFilters {\n static fromProto(proto) {\n let m = new ListCreditNotesRequestFilters();\n m = Object.assign(m, proto);\n if (proto.createdLte) {\n m.createdLte = new Date(proto.createdLte);\n }\n if (proto.createdGte) {\n m.createdGte = new Date(proto.createdGte);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.number !== 'undefined') {\n toReturn['number'] = this.number;\n }\n if (typeof this.createdLte !== 'undefined' && this.createdLte !== null) {\n toReturn['createdLte'] = 'toApiJson' in this.createdLte ? this.createdLte.toApiJson() : this.createdLte;\n }\n if (typeof this.createdGte !== 'undefined' && this.createdGte !== null) {\n toReturn['createdGte'] = 'toApiJson' in this.createdGte ? this.createdGte.toApiJson() : this.createdGte;\n }\n return toReturn;\n }\n}\nclass GetCreditNoteRequest {\n static fromProto(proto) {\n let m = new GetCreditNoteRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetCreditNoteResponse {\n static fromProto(proto) {\n let m = new GetCreditNoteResponse();\n m = Object.assign(m, proto);\n if (proto.creditNote) {\n m.creditNote = CreditNote.fromProto(proto.creditNote);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNote !== 'undefined' && this.creditNote !== null) {\n toReturn['creditNote'] = 'toApiJson' in this.creditNote ? this.creditNote.toApiJson() : this.creditNote;\n }\n return toReturn;\n }\n}\nclass GetMultiCreditNoteRequest {\n static fromProto(proto) {\n let m = new GetMultiCreditNoteRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ids !== 'undefined') {\n toReturn['ids'] = this.ids;\n }\n return toReturn;\n }\n}\nclass GetMultiCreditNoteResponse {\n static fromProto(proto) {\n let m = new GetMultiCreditNoteResponse();\n m = Object.assign(m, proto);\n if (proto.creditNotes) {\n m.creditNotes = proto.creditNotes.map(CreditNote.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNotes !== 'undefined' && this.creditNotes !== null) {\n toReturn['creditNotes'] = 'toApiJson' in this.creditNotes ? this.creditNotes.toApiJson() : this.creditNotes;\n }\n return toReturn;\n }\n}\nclass LineItem {\n static fromProto(proto) {\n let m = new LineItem();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.appliedTaxes) {\n m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);\n }\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n if (proto.subtotal) {\n m.subtotal = parseInt(proto.subtotal, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {\n toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? this.appliedTaxes.toApiJson() : this.appliedTaxes;\n }\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n if (typeof this.subtotal !== 'undefined') {\n toReturn['subtotal'] = this.subtotal;\n }\n return toReturn;\n }\n}\nclass ListCreditNotesRequest {\n static fromProto(proto) {\n let m = new ListCreditNotesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListCreditNotesRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListCreditNotesResponse {\n static fromProto(proto) {\n let m = new ListCreditNotesResponse();\n m = Object.assign(m, proto);\n if (proto.creditNotes) {\n m.creditNotes = proto.creditNotes.map(CreditNote.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNotes !== 'undefined' && this.creditNotes !== null) {\n toReturn['creditNotes'] = 'toApiJson' in this.creditNotes ? this.creditNotes.toApiJson() : this.creditNotes;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass SendCreditNoteRequest {\n static fromProto(proto) {\n let m = new SendCreditNoteRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.emailAddresses !== 'undefined') {\n toReturn['emailAddresses'] = this.emailAddresses;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass DeleteRetailPricingRequest {\n static fromProto(proto) {\n let m = new DeleteRetailPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass GenerateBillableItemsCSVRequest {\n static fromProto(proto) {\n let m = new GenerateBillableItemsCSVRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {\n m.periodStart = new Date(proto.periodStart);\n }\n if (proto.periodEnd) {\n m.periodEnd = new Date(proto.periodEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {\n toReturn['periodStart'] = 'toApiJson' in this.periodStart ? this.periodStart.toApiJson() : this.periodStart;\n }\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {\n toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? this.periodEnd.toApiJson() : this.periodEnd;\n }\n return toReturn;\n }\n}\nclass GenerateBillableItemsCSVResponse {\n static fromProto(proto) {\n let m = new GenerateBillableItemsCSVResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nclass GenerateVendorReportRequest {\n static fromProto(proto) {\n let m = new GenerateVendorReportRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {\n m.periodStart = new Date(proto.periodStart);\n }\n if (proto.periodEnd) {\n m.periodEnd = new Date(proto.periodEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {\n toReturn['periodStart'] = 'toApiJson' in this.periodStart ? this.periodStart.toApiJson() : this.periodStart;\n }\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {\n toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? this.periodEnd.toApiJson() : this.periodEnd;\n }\n if (typeof this.vendorName !== 'undefined') {\n toReturn['vendorName'] = this.vendorName;\n }\n if (typeof this.markAsApproved !== 'undefined') {\n toReturn['markAsApproved'] = this.markAsApproved;\n }\n return toReturn;\n }\n}\nclass GenerateVendorReportResponse {\n static fromProto(proto) {\n let m = new GenerateVendorReportResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.bucket !== 'undefined') {\n toReturn['bucket'] = this.bucket;\n }\n if (typeof this.filename !== 'undefined') {\n toReturn['filename'] = this.filename;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleRetailPricingRequest {\n static fromProto(proto) {\n let m = new GetMultiBundleRetailPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.storeId !== 'undefined') {\n toReturn['storeId'] = this.storeId;\n }\n if (typeof this.bundleIds !== 'undefined') {\n toReturn['bundleIds'] = this.bundleIds;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleRetailPricingResponse {\n static fromProto(proto) {\n let m = new GetMultiBundleRetailPricingResponse();\n m = Object.assign(m, proto);\n if (proto.prices) {\n m.prices = Object.keys(proto.prices).reduce((obj, k) => {\n obj[k] = BundlePricing.fromProto(proto.prices[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.prices !== 'undefined' && this.prices !== null) {\n toReturn['prices'] = 'toApiJson' in this.prices ? this.prices.toApiJson() : this.prices;\n }\n return toReturn;\n }\n}\nclass GetMultiProductPricingRequest {\n static fromProto(proto) {\n let m = new GetMultiProductPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n return toReturn;\n }\n}\nclass GetMultiProductPricingResponse {\n static fromProto(proto) {\n let m = new GetMultiProductPricingResponse();\n m = Object.assign(m, proto);\n if (proto.productPrices) {\n m.productPrices = Object.keys(proto.productPrices).reduce((obj, k) => {\n obj[k] = ProductPricing.fromProto(proto.productPrices[k]);\n return obj;\n }, {});\n }\n if (proto.prices) {\n m.prices = proto.prices.map(ProductPrices.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.productPrices !== 'undefined' && this.productPrices !== null) {\n toReturn['productPrices'] = 'toApiJson' in this.productPrices ? this.productPrices.toApiJson() : this.productPrices;\n }\n if (typeof this.prices !== 'undefined' && this.prices !== null) {\n toReturn['prices'] = 'toApiJson' in this.prices ? this.prices.toApiJson() : this.prices;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailPricingRequest {\n static fromProto(proto) {\n let m = new GetMultiRetailPricingRequest();\n m = Object.assign(m, proto);\n if (proto.currency) {\n m.currency = enumStringToValue(Currency, proto.currency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailPricingResponse {\n static fromProto(proto) {\n let m = new GetMultiRetailPricingResponse();\n m = Object.assign(m, proto);\n if (proto.productPrices) {\n m.productPrices = Object.keys(proto.productPrices).reduce((obj, k) => {\n obj[k] = ProductPricing.fromProto(proto.productPrices[k]);\n return obj;\n }, {});\n }\n if (proto.prices) {\n m.prices = proto.prices.map(ProductPrices.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.productPrices !== 'undefined' && this.productPrices !== null) {\n toReturn['productPrices'] = 'toApiJson' in this.productPrices ? this.productPrices.toApiJson() : this.productPrices;\n }\n if (typeof this.prices !== 'undefined' && this.prices !== null) {\n toReturn['prices'] = 'toApiJson' in this.prices ? this.prices.toApiJson() : this.prices;\n }\n return toReturn;\n }\n}\nclass GetMultiWholesaleCostRequest {\n static fromProto(proto) {\n let m = new GetMultiWholesaleCostRequest();\n m = Object.assign(m, proto);\n if (proto.items) {\n m.items = proto.items.map(WholesaleCostItemRequest.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n return toReturn;\n }\n}\nclass GetMultiWholesaleCostResponse {\n static fromProto(proto) {\n let m = new GetMultiWholesaleCostResponse();\n m = Object.assign(m, proto);\n if (proto.costs) {\n m.costs = proto.costs.map(GetPurchaseCostResponse.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.costs !== 'undefined' && this.costs !== null) {\n toReturn['costs'] = 'toApiJson' in this.costs ? this.costs.toApiJson() : this.costs;\n }\n return toReturn;\n }\n}\nclass GetPurchaseCostRequest {\n static fromProto(proto) {\n let m = new GetPurchaseCostRequest();\n m = Object.assign(m, proto);\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue(Frequency, proto.frequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n return toReturn;\n }\n}\nclass GetPurchaseCostResponse {\n static fromProto(proto) {\n let m = new GetPurchaseCostResponse();\n m = Object.assign(m, proto);\n if (proto.totalCost) {\n m.totalCost = parseInt(proto.totalCost, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue(Currency, proto.currency);\n }\n if (proto.strategy) {\n m.strategy = enumStringToValue(BillingStrategy, proto.strategy);\n }\n if (proto.commitment) {\n m.commitment = Commitment.fromProto(proto.commitment);\n }\n if (proto.discountAmount) {\n m.discountAmount = parseInt(proto.discountAmount, 10);\n }\n if (proto.subtotalCost) {\n m.subtotalCost = parseInt(proto.subtotalCost, 10);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.billingFrequency !== 'undefined') {\n toReturn['billingFrequency'] = this.billingFrequency;\n }\n if (typeof this.totalCost !== 'undefined') {\n toReturn['totalCost'] = this.totalCost;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {\n toReturn['commitment'] = 'toApiJson' in this.commitment ? this.commitment.toApiJson() : this.commitment;\n }\n if (typeof this.isStartingPrice !== 'undefined') {\n toReturn['isStartingPrice'] = this.isStartingPrice;\n }\n if (typeof this.discountAmount !== 'undefined') {\n toReturn['discountAmount'] = this.discountAmount;\n }\n if (typeof this.subtotalCost !== 'undefined') {\n toReturn['subtotalCost'] = this.subtotalCost;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n return toReturn;\n }\n}\nclass GetRevenueStatsRequest {\n static fromProto(proto) {\n let m = new GetRevenueStatsRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {\n m.periodStart = new Date(proto.periodStart);\n }\n if (proto.periodEnd) {\n m.periodEnd = new Date(proto.periodEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {\n toReturn['periodStart'] = 'toApiJson' in this.periodStart ? this.periodStart.toApiJson() : this.periodStart;\n }\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {\n toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? this.periodEnd.toApiJson() : this.periodEnd;\n }\n return toReturn;\n }\n}\nclass GetRevenueStatsResponse {\n static fromProto(proto) {\n let m = new GetRevenueStatsResponse();\n m = Object.assign(m, proto);\n if (proto.totalRevenue) {\n m.totalRevenue = parseInt(proto.totalRevenue, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.totalRevenue !== 'undefined') {\n toReturn['totalRevenue'] = this.totalRevenue;\n }\n return toReturn;\n }\n}\nclass GetStatisticsRequest {\n static fromProto(proto) {\n let m = new GetStatisticsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetStatisticsResponse {\n static fromProto(proto) {\n let m = new GetStatisticsResponse();\n m = Object.assign(m, proto);\n if (proto.totalBillableCustomers) {\n m.totalBillableCustomers = parseInt(proto.totalBillableCustomers, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.totalBillableCustomers !== 'undefined') {\n toReturn['totalBillableCustomers'] = this.totalBillableCustomers;\n }\n if (typeof this.currentBasketSize !== 'undefined') {\n toReturn['currentBasketSize'] = this.currentBasketSize;\n }\n if (typeof this.changeInBasketSize30Days !== 'undefined') {\n toReturn['changeInBasketSize30Days'] = this.changeInBasketSize30Days;\n }\n return toReturn;\n }\n}\nclass GetWholesaleComparisonRequestGetWholesaleComparisonFilters {\n static fromProto(proto) {\n let m = new GetWholesaleComparisonRequestGetWholesaleComparisonFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n return toReturn;\n }\n}\nclass GetWholesaleComparisonRequest {\n static fromProto(proto) {\n let m = new GetWholesaleComparisonRequest();\n m = Object.assign(m, proto);\n if (proto.filter) {\n m.filter = GetWholesaleComparisonRequestGetWholesaleComparisonFilters.fromProto(proto.filter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.filter !== 'undefined' && this.filter !== null) {\n toReturn['filter'] = 'toApiJson' in this.filter ? this.filter.toApiJson() : this.filter;\n }\n return toReturn;\n }\n}\nclass GetWholesaleComparisonResponse {\n static fromProto(proto) {\n let m = new GetWholesaleComparisonResponse();\n m = Object.assign(m, proto);\n if (proto.results) {\n m.results = proto.results.map(GetWholesaleComparisonResponseGetWholesaleComparisonResult.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n return toReturn;\n }\n}\nclass GetWholesaleComparisonResponseGetWholesaleComparisonResult {\n static fromProto(proto) {\n let m = new GetWholesaleComparisonResponseGetWholesaleComparisonResult();\n m = Object.assign(m, proto);\n if (proto.productPricing) {\n m.productPricing = ProductPricing.fromProto(proto.productPricing);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.productPricing !== 'undefined' && this.productPricing !== null) {\n toReturn['productPricing'] = 'toApiJson' in this.productPricing ? this.productPricing.toApiJson() : this.productPricing;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleRetailPricingResponsePricesEntry {\n static fromProto(proto) {\n let m = new GetMultiBundleRetailPricingResponsePricesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = BundlePricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass UpsertRetailPricingRequestPricingEntry {\n static fromProto(proto) {\n let m = new UpsertRetailPricingRequestPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = PricingPlanProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailPricingResponseProductPricesEntry {\n static fromProto(proto) {\n let m = new GetMultiRetailPricingResponseProductPricesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = ProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass GetMultiProductPricingResponseProductPricesEntry {\n static fromProto(proto) {\n let m = new GetMultiProductPricingResponseProductPricesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = ProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass SetWholesaleProductStrategyRequest {\n static fromProto(proto) {\n let m = new SetWholesaleProductStrategyRequest();\n m = Object.assign(m, proto);\n if (proto.strategy) {\n m.strategy = enumStringToValue(BillingStrategy, proto.strategy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n return toReturn;\n }\n}\nclass SetWholesaleProductVolumeCommitmentRequest {\n static fromProto(proto) {\n let m = new SetWholesaleProductVolumeCommitmentRequest();\n m = Object.assign(m, proto);\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.volumeCommitmentStartsAt) {\n m.volumeCommitmentStartsAt = new Date(proto.volumeCommitmentStartsAt);\n }\n if (proto.volumeCommitmentEndsAt) {\n m.volumeCommitmentEndsAt = new Date(proto.volumeCommitmentEndsAt);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.volumeCommitmentStartsAt !== 'undefined' && this.volumeCommitmentStartsAt !== null) {\n toReturn['volumeCommitmentStartsAt'] = 'toApiJson' in this.volumeCommitmentStartsAt ? this.volumeCommitmentStartsAt.toApiJson() : this.volumeCommitmentStartsAt;\n }\n if (typeof this.volumeCommitmentEndsAt !== 'undefined' && this.volumeCommitmentEndsAt !== null) {\n toReturn['volumeCommitmentEndsAt'] = 'toApiJson' in this.volumeCommitmentEndsAt ? this.volumeCommitmentEndsAt.toApiJson() : this.volumeCommitmentEndsAt;\n }\n return toReturn;\n }\n}\nclass StartRevRecTemplateBackfillRequest {\n static fromProto(proto) {\n let m = new StartRevRecTemplateBackfillRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass UpsertRetailPricingRequest {\n static fromProto(proto) {\n let m = new UpsertRetailPricingRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue(Frequency, proto.frequency);\n }\n if (proto.pricing) {\n m.pricing = Object.keys(proto.pricing).reduce((obj, k) => {\n obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'billing-api.vendasta-local.com',\n 'test': '',\n 'demo': 'billing-demo.apigateway.co',\n 'prod': 'billing-prod.apigateway.co',\n 'production': 'billing-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n static {\n this.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet BankReconciliationApiService = /*#__PURE__*/(() => {\n class BankReconciliationApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n listPayouts(r) {\n const request = r.toApiJson ? r : new ListPayoutsRequest(r);\n return this.http.post(this._host + \"/billing.v1.BankReconciliationService/ListPayouts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPayoutsResponse.fromProto(resp)));\n }\n reconcilePayout(r) {\n const request = r.toApiJson ? r : new ReconcilePayoutRequest(r);\n return this.http.post(this._host + \"/billing.v1.BankReconciliationService/ReconcilePayout\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ReconcilePayoutResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function BankReconciliationApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BankReconciliationApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BankReconciliationApiService,\n factory: BankReconciliationApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return BankReconciliationApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet BillingApiService = /*#__PURE__*/(() => {\n class BillingApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n canBillItem(r) {\n const request = r.toApiJson ? r : new CanBillItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CanBillItem\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n canCreateSubscriptions(r) {\n const request = r.toApiJson ? r : new CanCreateSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CanCreateSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CanCreateSubscriptionsResponse.fromProto(resp)));\n }\n createSubscription(r) {\n const request = r.toApiJson ? r : new CreateSubscriptionRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreateSubscription\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateSubscriptionResponse.fromProto(resp)));\n }\n createSubscriptions(r) {\n const request = r.toApiJson ? r : new CreateSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreateSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateSubscriptionsResponse.fromProto(resp)));\n }\n reverseSubscription(r) {\n const request = r.toApiJson ? r : new ReverseSubscriptionRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ReverseSubscription\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setAutoBillable(r) {\n const request = r.toApiJson ? r : new SetAutoBillableRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/SetAutoBillable\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setRenewalStart(r) {\n const request = r.toApiJson ? r : new SetRenewalStartRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/SetRenewalStart\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n billItem(r) {\n const request = r.toApiJson ? r : new BillItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/BillItem\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n billMultipleItems(r) {\n const request = r.toApiJson ? r : new BillMultipleItemsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/BillMultipleItems\", request.toApiJson(), this.apiOptions()).pipe(map(resp => BillMultipleItemsResponse.fromProto(resp)));\n }\n getBillableItem(r) {\n const request = r.toApiJson ? r : new GetBillableItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetBillableItem\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetBillableItemResponse.fromProto(resp)));\n }\n getMultiSubscriptions(r) {\n const request = r.toApiJson ? r : new GetMultiSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiSubscriptionsResponse.fromProto(resp)));\n }\n listSubscriptions(r) {\n const request = r.toApiJson ? r : new ListSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSubscriptionsResponse.fromProto(resp)));\n }\n exportSubscriptions(r) {\n const request = r.toApiJson ? r : new ExportSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ExportSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ExportResponse.fromProto(resp)));\n }\n listRetailSubscriptions(r) {\n const request = r.toApiJson ? r : new ListSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListRetailSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSubscriptionsResponse.fromProto(resp)));\n }\n listBillableItems(r) {\n const request = r.toApiJson ? r : new ListBillableItemsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListBillableItems\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListBillableItemsResponse.fromProto(resp)));\n }\n expireBillableItem(r) {\n const request = r.toApiJson ? r : new ExpireBillableItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ExpireBillableItem\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n unexpireBillableItem(r) {\n const request = r.toApiJson ? r : new UnexpireBillableItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/UnexpireBillableItem\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteBillableItem(r) {\n const request = r.toApiJson ? r : new DeleteBillableItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/DeleteBillableItem\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listMerchantBillingReports(r) {\n const request = r.toApiJson ? r : new ListMerchantBillingReportsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListMerchantBillingReports\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListMerchantBillingReportsResponse.fromProto(resp)));\n }\n listProductSummaries(r) {\n const request = r.toApiJson ? r : new ListProductSummariesRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListProductSummaries\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListProductSummariesResponse.fromProto(resp)));\n }\n getProductSummariesTotal(r) {\n const request = r.toApiJson ? r : new GetProductSummariesTotalRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetProductSummariesTotal\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetProductSummariesTotalResponse.fromProto(resp)));\n }\n generateBillableItemsCsv(r) {\n const request = r.toApiJson ? r : new GenerateBillableItemsCSVRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GenerateBillableItemsCSV\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GenerateBillableItemsCSVResponse.fromProto(resp)));\n }\n createPricingPlan(r) {\n const request = r.toApiJson ? r : new CreatePricingPlanRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreatePricingPlan\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreatePricingPlanResponse.fromProto(resp)));\n }\n updatePricingPlan(r) {\n const request = r.toApiJson ? r : new UpdatePricingPlanRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/UpdatePricingPlan\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdatePricingPlanResponse.fromProto(resp)));\n }\n getMultiPricingPlan(r) {\n const request = r.toApiJson ? r : new GetMultiPricingPlanRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiPricingPlan\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiPricingPlanResponse.fromProto(resp)));\n }\n createPricingPlanProduct(r) {\n const request = r.toApiJson ? r : new CreatePricingPlanProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreatePricingPlanProduct\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreatePricingPlanProductResponse.fromProto(resp)));\n }\n updatePricingPlanProduct(r) {\n const request = r.toApiJson ? r : new UpdatePricingPlanProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/UpdatePricingPlanProduct\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdatePricingPlanProductResponse.fromProto(resp)));\n }\n deletePricingPlanProduct(r) {\n const request = r.toApiJson ? r : new DeletePricingPlanProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/DeletePricingPlanProduct\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listPricingPlanProducts(r) {\n const request = r.toApiJson ? r : new ListPricingPlanProductsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListPricingPlanProducts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPricingPlanProductsResponse.fromProto(resp)));\n }\n getPricingPlanProduct(r) {\n const request = r.toApiJson ? r : new GetPricingPlanProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetPricingPlanProduct\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPricingPlanProductResponse.fromProto(resp)));\n }\n getMultiPricingPlanProduct(r) {\n const request = r.toApiJson ? r : new GetMultiPricingPlanProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiPricingPlanProduct\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiPricingPlanProductResponse.fromProto(resp)));\n }\n getMultiProductPricing(r) {\n const request = r.toApiJson ? r : new GetMultiProductPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiProductPricing\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiProductPricingResponse.fromProto(resp)));\n }\n tickComponentUsage(r) {\n const request = r.toApiJson ? r : new TickComponentUsageRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/TickComponentUsage\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createMeteredComponent(r) {\n const request = r.toApiJson ? r : new CreateMeteredComponentRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreateMeteredComponent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createUsage(r) {\n const request = r.toApiJson ? r : new CreateUsageRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreateUsage\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listContracts(r) {\n const request = r.toApiJson ? r : new ListContractsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListContracts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListContractsResponse.fromProto(resp)));\n }\n getMultiContract(r) {\n const request = r.toApiJson ? r : new GetMultiContractsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiContract\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiContractsResponse.fromProto(resp)));\n }\n getMerchantWholesaleCurrency(r) {\n const request = r.toApiJson ? r : new GetMerchantWholesaleCurrencyRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMerchantWholesaleCurrency\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMerchantWholesaleCurrencyResponse.fromProto(resp)));\n }\n listProducts(r) {\n const request = r.toApiJson ? r : new ListProductsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListProducts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListProductsResponse.fromProto(resp)));\n }\n getMultiProduct(r) {\n const request = r.toApiJson ? r : new GetMultiProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiProduct\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiProductResponse.fromProto(resp)));\n }\n resetContractPricing(r) {\n const request = r.toApiJson ? r : new ResetContractPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ResetContractPricing\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getPurchaseCost(r) {\n const request = r.toApiJson ? r : new GetPurchaseCostRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetPurchaseCost\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPurchaseCostResponse.fromProto(resp)));\n }\n changeFrequency(r) {\n const request = r.toApiJson ? r : new ChangeFrequencyRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ChangeFrequency\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n changeRenewalDate(r) {\n const request = r.toApiJson ? r : new ChangeRenewalDateRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ChangeRenewalDate\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n changeCustomUnitPrice(r) {\n const request = r.toApiJson ? r : new ChangeCustomUnitPriceRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ChangeCustomUnitPrice\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n startRevRecTemplateBackfill(r) {\n const request = r.toApiJson ? r : new StartRevRecTemplateBackfillRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/StartRevRecTemplateBackfill\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n replaceSubscriptionPresets(r) {\n const request = r.toApiJson ? r : new ReplaceSubscriptionPresetsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ReplaceSubscriptionPresets\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ReplaceSubscriptionPresetsResponse.fromProto(resp)));\n }\n updateSubscription(r) {\n const request = r.toApiJson ? r : new UpdateSubscriptionRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/UpdateSubscription\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateSubscriptionResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function BillingApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BillingApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BillingApiService,\n factory: BillingApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return BillingApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet BundleApiService = /*#__PURE__*/(() => {\n class BundleApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n upsert(r) {\n const request = r.toApiJson ? r : new UpsertBundleRequest(r);\n return this.http.post(this._host + \"/billing.v1.BundleService/Upsert\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiBundleRequest(r);\n return this.http.post(this._host + \"/billing.v1.BundleService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiBundleResponse.fromProto(resp)));\n }\n list(r) {\n const request = r.toApiJson ? r : new ListBundlesRequest(r);\n return this.http.post(this._host + \"/billing.v1.BundleService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListBundlesResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function BundleApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BundleApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BundleApiService,\n factory: BundleApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return BundleApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ContractDocumentApiService = /*#__PURE__*/(() => {\n class ContractDocumentApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListContractDocumentsRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractDocumentService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListContractDocumentsResponse.fromProto(resp)));\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteContractDocumentRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractDocumentService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function ContractDocumentApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ContractDocumentApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContractDocumentApiService,\n factory: ContractDocumentApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ContractDocumentApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ContractApiService = /*#__PURE__*/(() => {\n class ContractApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetContractRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetContractResponse.fromProto(resp)));\n }\n updateSubscription(r) {\n const request = r.toApiJson ? r : new UpdateContractSubscriptionRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractService/UpdateSubscription\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateContractRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateContractResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateContractRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractService/Update\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateContractResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function ContractApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ContractApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContractApiService,\n factory: ContractApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ContractApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CreditNoteApiService = /*#__PURE__*/(() => {\n class CreditNoteApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateCreditNoteRequest(r);\n return this.http.post(this._host + \"/billing.v1.CreditNoteService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateCreditNoteResponse.fromProto(resp)));\n }\n calculate(r) {\n const request = r.toApiJson ? r : new CalculateCreditNoteRequest(r);\n return this.http.post(this._host + \"/billing.v1.CreditNoteService/Calculate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CalculateCreditNoteResponse.fromProto(resp)));\n }\n get(r) {\n const request = r.toApiJson ? r : new GetCreditNoteRequest(r);\n return this.http.post(this._host + \"/billing.v1.CreditNoteService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCreditNoteResponse.fromProto(resp)));\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiCreditNoteRequest(r);\n return this.http.post(this._host + \"/billing.v1.CreditNoteService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiCreditNoteResponse.fromProto(resp)));\n }\n list(r) {\n const request = r.toApiJson ? r : new ListCreditNotesRequest(r);\n return this.http.post(this._host + \"/billing.v1.CreditNoteService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListCreditNotesResponse.fromProto(resp)));\n }\n send(r) {\n const request = r.toApiJson ? r : new SendCreditNoteRequest(r);\n return this.http.post(this._host + \"/billing.v1.CreditNoteService/Send\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function CreditNoteApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CreditNoteApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CreditNoteApiService,\n factory: CreditNoteApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return CreditNoteApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CreditApiService = /*#__PURE__*/(() => {\n class CreditApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n add(r) {\n const request = r.toApiJson ? r : new AddCreditRequest(r);\n return this.http.post(this._host + \"/billing.v1.CreditService/Add\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getBalance(r) {\n const request = r.toApiJson ? r : new GetBalanceRequest(r);\n return this.http.post(this._host + \"/billing.v1.CreditService/GetBalance\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetBalanceResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function CreditApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CreditApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CreditApiService,\n factory: CreditApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return CreditApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet DiscountApiService = /*#__PURE__*/(() => {\n class DiscountApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListDiscountsRequest(r);\n return this.http.post(this._host + \"/billing.v1.DiscountService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListDiscountsResponse.fromProto(resp)));\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateDiscountRequest(r);\n return this.http.post(this._host + \"/billing.v1.DiscountService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateDiscountResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateDiscountRequest(r);\n return this.http.post(this._host + \"/billing.v1.DiscountService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n expire(r) {\n const request = r.toApiJson ? r : new ExpireDiscountRequest(r);\n return this.http.post(this._host + \"/billing.v1.DiscountService/Expire\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function DiscountApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DiscountApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DiscountApiService,\n factory: DiscountApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return DiscountApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet InvoiceApiService = /*#__PURE__*/(() => {\n class InvoiceApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n addBundle(r) {\n const request = r.toApiJson ? r : new AddBundleRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/AddBundle\", request.toApiJson(), this.apiOptions()).pipe(map(resp => AddBundleResponse.fromProto(resp)));\n }\n addLineItem(r) {\n const request = r.toApiJson ? r : new AddLineItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/AddLineItem\", request.toApiJson(), this.apiOptions()).pipe(map(resp => AddLineItemResponse.fromProto(resp)));\n }\n charge(r) {\n const request = r.toApiJson ? r : new ChargeInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Charge\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateInvoiceResponse.fromProto(resp)));\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteLineItem(r) {\n const request = r.toApiJson ? r : new DeleteLineItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/DeleteLineItem\", request.toApiJson(), this.apiOptions()).pipe(map(resp => DeleteLineItemResponse.fromProto(resp)));\n }\n get(r) {\n const request = r.toApiJson ? r : new GetInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetInvoiceResponse.fromProto(resp)));\n }\n removeBundle(r) {\n const request = r.toApiJson ? r : new RemoveBundleRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/RemoveBundle\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RemoveBundleResponse.fromProto(resp)));\n }\n send(r) {\n const request = r.toApiJson ? r : new SendInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Send\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListInvoicesRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListInvoicesResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Update\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateInvoiceResponse.fromProto(resp)));\n }\n pay(r) {\n const request = r.toApiJson ? r : new PayInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Pay\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateDefaultTaxRates(r) {\n const request = r.toApiJson ? r : new UpdateDefaultTaxRatesRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/UpdateDefaultTaxRates\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateDefaultTaxRatesResponse.fromProto(resp)));\n }\n updateLineItem(r) {\n const request = r.toApiJson ? r : new UpdateLineItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/UpdateLineItem\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateLineItemResponse.fromProto(resp)));\n }\n void(r) {\n const request = r.toApiJson ? r : new VoidInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Void\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n duplicate(r) {\n const request = r.toApiJson ? r : new DuplicateInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Duplicate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => DuplicateInvoiceResponse.fromProto(resp)));\n }\n updateBundle(r) {\n const request = r.toApiJson ? r : new UpdateBundleRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/UpdateBundle\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateBundleResponse.fromProto(resp)));\n }\n createPaymentLink(r) {\n const request = r.toApiJson ? r : new CreatePaymentLinkRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/CreatePaymentLink\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreatePaymentLinkResponse.fromProto(resp)));\n }\n getUpcomingInvoicePreview(r) {\n const request = r.toApiJson ? r : new GetUpcomingInvoicePreviewRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/GetUpcomingInvoicePreview\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetUpcomingInvoicePreviewResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function InvoiceApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || InvoiceApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InvoiceApiService,\n factory: InvoiceApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return InvoiceApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet MerchantApiService = /*#__PURE__*/(() => {\n class MerchantApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateMerchantRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n get(r) {\n const request = r.toApiJson ? r : new GetMerchantRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMerchantResponse.fromProto(resp)));\n }\n getOutstandingBalance(r) {\n const request = r.toApiJson ? r : new GetOutstandingBalanceRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetOutstandingBalance\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetOutstandingBalanceResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateMerchantRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createPaymentCard(r) {\n const request = r.toApiJson ? r : new CreatePaymentCardRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/CreatePaymentCard\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setDefaultPaymentCard(r) {\n const request = r.toApiJson ? r : new SetDefaultPaymentCardRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetDefaultPaymentCard\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listPaymentCards(r) {\n const request = r.toApiJson ? r : new ListPaymentCardsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/ListPaymentCards\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPaymentCardsResponse.fromProto(resp)));\n }\n updatePaymentCard(r) {\n const request = r.toApiJson ? r : new UpdatePaymentCardRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/UpdatePaymentCard\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getStatistics(r) {\n const request = r.toApiJson ? r : new GetStatisticsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetStatistics\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetStatisticsResponse.fromProto(resp)));\n }\n search(r) {\n const request = r.toApiJson ? r : new SearchMerchantsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/Search\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SearchMerchantsResponse.fromProto(resp)));\n }\n setAutoPostInvoices(r) {\n const request = r.toApiJson ? r : new SetAutoPostInvoicesRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetAutoPostInvoices\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setAutoChargeInvoices(r) {\n const request = r.toApiJson ? r : new SetAutoChargeInvoicesRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetAutoChargeInvoices\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setIncludeInFinancialRecords(r) {\n const request = r.toApiJson ? r : new SetIncludeInFinancialRecordsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetIncludeInFinancialRecords\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setHasAlternativePaymentMethod(r) {\n const request = r.toApiJson ? r : new SetHasAlternativePaymentMethodRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetHasAlternativePaymentMethod\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n sendSalesInvoiceEmail(r) {\n const request = r.toApiJson ? r : new SendSalesInvoiceEmailRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SendSalesInvoiceEmail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n chargeSalesInvoice(r) {\n const request = r.toApiJson ? r : new ChargeSalesInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/ChargeSalesInvoice\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n sendSalesInvoiceReceiptEmail(r) {\n const request = r.toApiJson ? r : new SendSalesInvoiceReceiptEmailRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SendSalesInvoiceReceiptEmail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createStripeExternalAccount(r) {\n const request = r.toApiJson ? r : new CreateStripeExternalAccountRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/CreateStripeExternalAccount\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listBankAccounts(r) {\n const request = r.toApiJson ? r : new ListBankAccountsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/ListBankAccounts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListBankAccountsResponse.fromProto(resp)));\n }\n setDefaultBankAccount(r) {\n const request = r.toApiJson ? r : new SetDefaultBankAccountRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetDefaultBankAccount\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteBankAccount(r) {\n const request = r.toApiJson ? r : new DeleteBankAccountRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/DeleteBankAccount\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMultiRetailConfigurations(r) {\n const request = r.toApiJson ? r : new GetMultiRetailConfigurationsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetMultiRetailConfigurations\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiRetailConfigurationsResponse.fromProto(resp)));\n }\n upsertRetailConfiguration(r) {\n const request = r.toApiJson ? r : new UpsertRetailConfigurationRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/UpsertRetailConfiguration\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n upsertDefaultRetailCustomerConfiguration(r) {\n const request = r.toApiJson ? r : new UpsertDefaultRetailCustomerConfigurationRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/UpsertDefaultRetailCustomerConfiguration\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getRetailBalance(r) {\n const request = r.toApiJson ? r : new GetRetailBalanceRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetRetailBalance\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailBalanceResponse.fromProto(resp)));\n }\n getPayoutSummary(r) {\n const request = r.toApiJson ? r : new GetPayoutSummaryRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetPayoutSummary\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPayoutSummaryResponse.fromProto(resp)));\n }\n listRetailPayouts(r) {\n const request = r.toApiJson ? r : new ListRetailPayoutsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/ListRetailPayouts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRetailPayoutsResponse.fromProto(resp)));\n }\n getRetailPayout(r) {\n const request = r.toApiJson ? r : new GetRetailPayoutRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetRetailPayout\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailPayoutResponse.fromProto(resp)));\n }\n createReportRun(r) {\n const request = r.toApiJson ? r : new CreateMerchantServicesReportRun(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/CreateReportRun\", request.toApiJson(), this.apiOptions()).pipe(map(resp => MerchantServicesReportRun.fromProto(resp)));\n }\n getReportRun(r) {\n const request = r.toApiJson ? r : new GetMerchantServicesReportRun(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetReportRun\", request.toApiJson(), this.apiOptions()).pipe(map(resp => MerchantServicesReportRun.fromProto(resp)));\n }\n getRetailAccountBalance(r) {\n const request = r.toApiJson ? r : new GetRetailAccountBalanceRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetRetailAccountBalance\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailAccountBalanceResponse.fromProto(resp)));\n }\n cancelRetailBilling(r) {\n const request = r.toApiJson ? r : new CancelRetailBillingRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/CancelRetailBilling\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setNextRetailInvoiceSequence(r) {\n const request = r.toApiJson ? r : new SetNextRetailInvoiceSequenceRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetNextRetailInvoiceSequence\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getNextRetailInvoiceSequence(r) {\n const request = r.toApiJson ? r : new GetNextRetailInvoiceSequenceRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetNextRetailInvoiceSequence\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetNextRetailInvoiceSequenceResponse.fromProto(resp)));\n }\n resetPaymentFacilitator(r) {\n const request = r.toApiJson ? r : new ResetPaymentFacilitatorRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/ResetPaymentFacilitator\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function MerchantApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MerchantApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MerchantApiService,\n factory: MerchantApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return MerchantApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PaymentMethodApiService = /*#__PURE__*/(() => {\n class PaymentMethodApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n listPaymentCards(r) {\n const request = r.toApiJson ? r : new ListPaymentCardsRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentMethodService/ListPaymentCards\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPaymentCardsResponse.fromProto(resp)));\n }\n deletePaymentCard(r) {\n const request = r.toApiJson ? r : new DeletePaymentCardRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentMethodService/DeletePaymentCard\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setDefaultPaymentMethod(r) {\n const request = r.toApiJson ? r : new SetDefaultPaymentMethodRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentMethodService/SetDefaultPaymentMethod\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListPaymentMethodsRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentMethodService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPaymentMethodsResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function PaymentMethodApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PaymentMethodApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PaymentMethodApiService,\n factory: PaymentMethodApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return PaymentMethodApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PaymentApiService = /*#__PURE__*/(() => {\n class PaymentApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListPaymentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPaymentResponse.fromProto(resp)));\n }\n getRetail(r) {\n const request = r.toApiJson ? r : new GetRetailPaymentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/GetRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailPaymentResponse.fromProto(resp)));\n }\n listRetail(r) {\n const request = r.toApiJson ? r : new ListRetailPaymentsRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/ListRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRetailPaymentsResponse.fromProto(resp)));\n }\n listRetailTransactions(r) {\n const request = r.toApiJson ? r : new ListRetailTransactionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/ListRetailTransactions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRetailTransactionsResponse.fromProto(resp)));\n }\n listRetailDisputes(r) {\n const request = r.toApiJson ? r : new ListRetailDisputesRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/ListRetailDisputes\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRetailDisputesResponse.fromProto(resp)));\n }\n getRetailDispute(r) {\n const request = r.toApiJson ? r : new GetRetailDisputeRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/GetRetailDispute\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailDisputeResponse.fromProto(resp)));\n }\n closeRetailDispute(r) {\n const request = r.toApiJson ? r : new CloseRetailDisputeRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/CloseRetailDispute\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n prepareRetail(r) {\n const request = r.toApiJson ? r : new PrepareRetailPaymentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/PrepareRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => PrepareRetailPaymentResponse.fromProto(resp)));\n }\n confirmRetail(r) {\n const request = r.toApiJson ? r : new ConfirmRetailPaymentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/ConfirmRetail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n retailStatus(r) {\n const request = r.toApiJson ? r : new RetailStatusRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/RetailStatus\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RetailStatusResponse.fromProto(resp)));\n }\n retailPaymentsEnabled(r) {\n const request = r.toApiJson ? r : new RetailPaymentsEnabledRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/RetailPaymentsEnabled\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RetailPaymentsEnabledResponse.fromProto(resp)));\n }\n configureRetailProvider(r) {\n const request = r.toApiJson ? r : new ConfigureRetailPaymentProviderRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/ConfigureRetailProvider\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ConfigureRetailPaymentProviderResponse.fromProto(resp)));\n }\n updateRetailProvider(r) {\n const request = r.toApiJson ? r : new UpdateRetailPaymentProviderRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/UpdateRetailProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getRetailProvider(r) {\n const request = r.toApiJson ? r : new GetRetailPaymentProviderRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/GetRetailProvider\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailPaymentProviderResponse.fromProto(resp)));\n }\n submitEvidence(r) {\n const request = r.toApiJson ? r : new SubmitEvidenceRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/SubmitEvidence\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getWholesaleProviderPublicKey(r) {\n const request = r.toApiJson ? r : new GetWholesaleProviderPublicKeyRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/GetWholesaleProviderPublicKey\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetWholesaleProviderPublicKeyResponse.fromProto(resp)));\n }\n refundRetail(r) {\n const request = r.toApiJson ? r : new RefundRetailPaymentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/RefundRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RefundRetailPaymentResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function PaymentApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PaymentApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PaymentApiService,\n factory: PaymentApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return PaymentApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PricingApiService = /*#__PURE__*/(() => {\n class PricingApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getMultiRetail(r) {\n const request = r.toApiJson ? r : new GetMultiRetailPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/GetMultiRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiRetailPricingResponse.fromProto(resp)));\n }\n upsertRetail(r) {\n const request = r.toApiJson ? r : new UpsertRetailPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/UpsertRetail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteRetail(r) {\n const request = r.toApiJson ? r : new DeleteRetailPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/DeleteRetail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMultiBundleRetail(r) {\n const request = r.toApiJson ? r : new GetMultiBundleRetailPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/GetMultiBundleRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiBundleRetailPricingResponse.fromProto(resp)));\n }\n getWholesaleComparison(r) {\n const request = r.toApiJson ? r : new GetWholesaleComparisonRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/GetWholesaleComparison\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetWholesaleComparisonResponse.fromProto(resp)));\n }\n setWholesaleProductStrategy(r) {\n const request = r.toApiJson ? r : new SetWholesaleProductStrategyRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/SetWholesaleProductStrategy\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setWholesaleProductVolumeCommitment(r) {\n const request = r.toApiJson ? r : new SetWholesaleProductVolumeCommitmentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/SetWholesaleProductVolumeCommitment\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getPurchaseCost(r) {\n const request = r.toApiJson ? r : new GetPurchaseCostRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/GetPurchaseCost\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPurchaseCostResponse.fromProto(resp)));\n }\n getMultiWholesaleCost(r) {\n const request = r.toApiJson ? r : new GetMultiWholesaleCostRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/GetMultiWholesaleCost\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiWholesaleCostResponse.fromProto(resp)));\n }\n upsertWholesale(r) {\n const request = r.toApiJson ? r : new UpsertWholesalePricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/UpsertWholesale\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function PricingApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PricingApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PricingApiService,\n factory: PricingApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return PricingApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ProductApiService = /*#__PURE__*/(() => {\n class ProductApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.ProductService/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.ProductService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.ProductService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function ProductApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ProductApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ProductApiService,\n factory: ProductApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ProductApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ProductSummaryApiService = /*#__PURE__*/(() => {\n class ProductSummaryApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n listSubscriptionRetentionByGroup(r) {\n const request = r.toApiJson ? r : new ListSubscriptionRetentionRequest(r);\n return this.http.post(this._host + \"/billing.v1.ProductSummaryService/ListSubscriptionRetentionByGroup\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSubscriptionRetentionByGroupResponse.fromProto(resp)));\n }\n listSubscriptionRetentionBySku(r) {\n const request = r.toApiJson ? r : new ListSubscriptionRetentionRequest(r);\n return this.http.post(this._host + \"/billing.v1.ProductSummaryService/ListSubscriptionRetentionBySKU\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSubscriptionRetentionBySKUResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function ProductSummaryApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ProductSummaryApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ProductSummaryApiService,\n factory: ProductSummaryApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ProductSummaryApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PurchaseApiService = /*#__PURE__*/(() => {\n class PurchaseApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListPurchaseRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPurchaseResponse.fromProto(resp)));\n }\n getMultiCustomerSummaries(r) {\n const request = r.toApiJson ? r : new GetMultiCustomerSummariesRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/GetMultiCustomerSummaries\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiCustomerSummariesResponse.fromProto(resp)));\n }\n listPurchaseItems(r) {\n const request = r.toApiJson ? r : new ListPurchaseItemsRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/ListPurchaseItems\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPurchaseItemsResponse.fromProto(resp)));\n }\n retry(r) {\n const request = r.toApiJson ? r : new RetryPurchaseRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/Retry\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n void(r) {\n const request = r.toApiJson ? r : new VoidPurchaseRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/Void\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n pauseDunning(r) {\n const request = r.toApiJson ? r : new PauseDunningRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/PauseDunning\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n resumeDunning(r) {\n const request = r.toApiJson ? r : new ResumeDunningRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/ResumeDunning\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n stopDunning(r) {\n const request = r.toApiJson ? r : new StopDunningRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/StopDunning\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function PurchaseApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PurchaseApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PurchaseApiService,\n factory: PurchaseApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return PurchaseApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RecurringInvoiceApiService = /*#__PURE__*/(() => {\n class RecurringInvoiceApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createRecurringInvoice(r) {\n const request = r.toApiJson ? r : new RecurringInvoice(r);\n return this.http.post(this._host + \"/billing.v1.RecurringInvoiceService/CreateRecurringInvoice\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RecurringInvoice.fromProto(resp)));\n }\n updateRecurringInvoice(r) {\n const request = r.toApiJson ? r : new UpdateRecurringInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.RecurringInvoiceService/UpdateRecurringInvoice\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RecurringInvoice.fromProto(resp)));\n }\n getRecurringInvoice(r) {\n const request = r.toApiJson ? r : new GetRecurringInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.RecurringInvoiceService/GetRecurringInvoice\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RecurringInvoice.fromProto(resp)));\n }\n listRecurringInvoices(r) {\n const request = r.toApiJson ? r : new ListRecurringInvoicesRequest(r);\n return this.http.post(this._host + \"/billing.v1.RecurringInvoiceService/ListRecurringInvoices\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRecurringInvoicesResponse.fromProto(resp)));\n }\n deleteRecurringInvoice(r) {\n const request = r.toApiJson ? r : new DeleteRecurringInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.RecurringInvoiceService/DeleteRecurringInvoice\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function RecurringInvoiceApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RecurringInvoiceApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RecurringInvoiceApiService,\n factory: RecurringInvoiceApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return RecurringInvoiceApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RefundApiService = /*#__PURE__*/(() => {\n class RefundApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateRefundRequest(r);\n return this.http.post(this._host + \"/billing.v1.RefundService/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListRefundsRequest(r);\n return this.http.post(this._host + \"/billing.v1.RefundService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRefundsResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function RefundApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RefundApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RefundApiService,\n factory: RefundApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return RefundApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RetailCustomerConfigurationApiService = /*#__PURE__*/(() => {\n class RetailCustomerConfigurationApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetRetailCustomerConfigurationRequest(r);\n return this.http.post(this._host + \"/billing.v1.RetailCustomerConfigurationService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailCustomerConfigurationResponse.fromProto(resp)));\n }\n upsert(r) {\n const request = r.toApiJson ? r : new UpsertRetailCustomerConfigurationRequest(r);\n return this.http.post(this._host + \"/billing.v1.RetailCustomerConfigurationService/Upsert\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function RetailCustomerConfigurationApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RetailCustomerConfigurationApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RetailCustomerConfigurationApiService,\n factory: RetailCustomerConfigurationApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return RetailCustomerConfigurationApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SalesCreditNoteApiService = /*#__PURE__*/(() => {\n class SalesCreditNoteApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateSalesCreditNoteRequest(r);\n return this.http.post(this._host + \"/billing.v1.SalesCreditNoteService/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListSalesCreditNoteRequest(r);\n return this.http.post(this._host + \"/billing.v1.SalesCreditNoteService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSalesCreditNoteResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function SalesCreditNoteApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesCreditNoteApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesCreditNoteApiService,\n factory: SalesCreditNoteApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return SalesCreditNoteApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SalesInvoiceApiService = /*#__PURE__*/(() => {\n class SalesInvoiceApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListSalesInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.SalesInvoiceService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSalesInvoiceResponse.fromProto(resp)));\n }\n post(r) {\n const request = r.toApiJson ? r : new PostSalesInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.SalesInvoiceService/Post\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSalesInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.SalesInvoiceService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSalesInvoiceResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function SalesInvoiceApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesInvoiceApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesInvoiceApiService,\n factory: SalesInvoiceApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return SalesInvoiceApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SubscriptionRelationshipApiService = /*#__PURE__*/(() => {\n class SubscriptionRelationshipApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n replace(r) {\n const request = r.toApiJson ? r : new ReplaceSubscriptionRelationshipsRequest(r);\n return this.http.post(this._host + \"/billing.v1.SubscriptionRelationshipService/Replace\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ReplaceSubscriptionRelationshipsResponse.fromProto(resp)));\n }\n list(r) {\n const request = r.toApiJson ? r : new ListSubscriptionRelationshipsRequest(r);\n return this.http.post(this._host + \"/billing.v1.SubscriptionRelationshipService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSubscriptionRelationshipsResponse.fromProto(resp)));\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiSubscriptionRelationshipsRequest(r);\n return this.http.post(this._host + \"/billing.v1.SubscriptionRelationshipService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiSubscriptionRelationshipsResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function SubscriptionRelationshipApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SubscriptionRelationshipApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SubscriptionRelationshipApiService,\n factory: SubscriptionRelationshipApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return SubscriptionRelationshipApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet TaxApiService = /*#__PURE__*/(() => {\n class TaxApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n calculate(r) {\n const request = r.toApiJson ? r : new CalculateTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/Calculate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CalculateTaxResponse.fromProto(resp)));\n }\n calculateLineItems(r) {\n const request = r.toApiJson ? r : new CalculateLineItemTaxesRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/CalculateLineItems\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CalculateLineItemTaxesResponse.fromProto(resp)));\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateTaxResponse.fromProto(resp)));\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiTaxResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListTaxResponse.fromProto(resp)));\n }\n archive(r) {\n const request = r.toApiJson ? r : new ArchiveTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/Archive\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n replaceTaxRule(r) {\n const request = r.toApiJson ? r : new ReplaceTaxRuleRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/ReplaceTaxRule\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ReplaceTaxRuleResponse.fromProto(resp)));\n }\n bulkReplaceTaxRules(r) {\n const request = r.toApiJson ? r : new BulkReplaceTaxRulesRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/BulkReplaceTaxRules\", request.toApiJson(), this.apiOptions()).pipe(map(resp => BulkReplaceTaxRulesResponse.fromProto(resp)));\n }\n getTaxRule(r) {\n const request = r.toApiJson ? r : new GetTaxRuleRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/GetTaxRule\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetTaxRuleResponse.fromProto(resp)));\n }\n listTaxRules(r) {\n const request = r.toApiJson ? r : new ListTaxRulesRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/ListTaxRules\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListTaxRulesResponse.fromProto(resp)));\n }\n deleteTaxRule(r) {\n const request = r.toApiJson ? r : new DeleteTaxRuleRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/DeleteTaxRule\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function TaxApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TaxApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TaxApiService,\n factory: TaxApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return TaxApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet VendorApiService = /*#__PURE__*/(() => {\n class VendorApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n generateReport(r) {\n const request = r.toApiJson ? r : new GenerateVendorReportRequest(r);\n return this.http.post(this._host + \"/billing.v1.VendorService/GenerateReport\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GenerateVendorReportResponse.fromProto(resp)));\n }\n getRevenueStats(r) {\n const request = r.toApiJson ? r : new GetRevenueStatsRequest(r);\n return this.http.post(this._host + \"/billing.v1.VendorService/GetRevenueStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRevenueStatsResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function VendorApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || VendorApiService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: VendorApiService,\n factory: VendorApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return VendorApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\n// Hardcoded conversion rate of 1.4 for our currently supported currencies (CAD and AUD)\nconst usdConversionRate = 1.4;\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, AccountBalance, AddBundleRequest, AddBundleResponse, AddCreditRequest, AddLineItemRequest, AddLineItemResponse, Adjustment, AlignmentSubscription, AppliedBundle, AppliedBundleItem, AppliedCredit, AppliedCreditNote, AppliedDiscount, AppliedFee, AppliedReferenceType, AppliedTaxRate, AppliedTo, ArchiveTaxRequest, Balance, BalanceAmount, BankAccount, BankReconciliationApiService, BillItemRequest, BillMultipleItemsRequest, BillMultipleItemsResponse, BillableItem, BillableItemCustomerAddress, BillingApiService, BillingStrategy, BulkReplaceTaxRulesRequest, BulkReplaceTaxRulesResponse, Bundle, BundleApiService, BundleItem, BundleItemPrice, BundlePricing, BundlePricingPriceAndFrequency, CalculateCreditNoteRequest, CalculateCreditNoteResponse, CalculateLineItemTaxesRequest, CalculateLineItemTaxesRequestLineItem, CalculateLineItemTaxesResponse, CalculateLineItemTaxesResponseLineItemTaxes, CalculateTaxRequest, CalculateTaxResponse, CanBillItemRequest, CanCreateSubscriptionsRequest, CanCreateSubscriptionsRequestSkusEntry, CanCreateSubscriptionsRequestSubscriptionItem, CanCreateSubscriptionsResponse, CancelRetailBillingRequest, CardType, ChangeCustomUnitPriceRequest, ChangeFrequencyRequest, ChangeRenewalDateRequest, ChargeInvoiceRequest, ChargeSalesInvoiceRequest, CloseRetailDisputeRequest, CollectionMethod, Commitment, ComponentPricing, ConfigureRetailPaymentProviderRequest, ConfigureRetailPaymentProviderResponse, ConfirmRetailPaymentRequest, ConnectStripeAccountRequest, ConnectStripeAccountResponse, Consumer, Contract, ContractApiService, ContractDocument, ContractDocumentApiService, ContractSubscriptionStatus, CreateContractRequest, CreateContractResponse, CreateCreditNoteRequest, CreateCreditNoteResponse, CreateDiscountRequest, CreateDiscountResponse, CreateInvoiceRequest, CreateInvoiceResponse, CreateMerchantRequest, CreateMerchantRequestIncludeInFinancialRecords, CreateMerchantServicesReportRun, CreateMeteredComponentRequest, CreatePaymentCardRequest, CreatePaymentLinkRequest, CreatePaymentLinkResponse, CreatePricingPlanProductRequest, CreatePricingPlanProductRequestPricingEntry, CreatePricingPlanProductResponse, CreatePricingPlanRequest, CreatePricingPlanResponse, CreateProductRequest, CreateRefundRequest, CreateSalesCreditNoteRequest, CreateStripeExternalAccountRequest, CreateSubscriptionRequest, CreateSubscriptionResponse, CreateSubscriptionsRequest, CreateSubscriptionsResponse, CreateTaxRequest, CreateTaxResponse, CreateUsageRequest, CreditApiService, CreditBalance, CreditNote, CreditNoteApiService, CreditNoteReason, CreditNoteType, CreditType, Currency, CustomerSummary, DateRange, DefaultCustomerConfiguration, DeleteBankAccountRequest, DeleteBillableItemRequest, DeleteContractDocumentRequest, DeleteInvoiceRequest, DeleteLineItemRequest, DeleteLineItemResponse, DeletePaymentCardRequest, DeletePricingPlanProductRequest, DeleteProductRequest, DeleteRecurringInvoiceRequest, DeleteRetailPricingRequest, DeleteTaxRuleRequest, Discount, DiscountApiService, DiscountType, Dispute, DisputeEvidence, DisputeEvidenceDetails, DisputeStatus, DuplicateInvoiceRequest, DuplicateInvoiceResponse, EntityType, ExpireBillableItemRequest, ExpireDiscountRequest, ExportResponse, ExportSubscriptionsRequest, Fee, FeeAmountType, FeeType, FieldMask, File, Frequency, GenerateBillableItemsCSVRequest, GenerateBillableItemsCSVResponse, GenerateVendorReportRequest, GenerateVendorReportResponse, GetBalanceRequest, GetBalanceResponse, GetBillableItemRequest, GetBillableItemResponse, GetContractRequest, GetContractResponse, GetCreditNoteRequest, GetCreditNoteResponse, GetInvoiceRequest, GetInvoiceResponse, GetMerchantRequest, GetMerchantResponse, GetMerchantServicesReportRun, GetMerchantWholesaleCurrencyRequest, GetMerchantWholesaleCurrencyResponse, GetMultiBundleRequest, GetMultiBundleResponse, GetMultiBundleResponseBundlesEntry, GetMultiBundleRetailPricingRequest, GetMultiBundleRetailPricingResponse, GetMultiBundleRetailPricingResponsePricesEntry, GetMultiContractsRequest, GetMultiContractsResponse, GetMultiContractsResponseContractsEntry, GetMultiCreditNoteRequest, GetMultiCreditNoteResponse, GetMultiCustomerSummariesRequest, GetMultiCustomerSummariesResponse, GetMultiPricingPlanProductRequest, GetMultiPricingPlanProductResponse, GetMultiPricingPlanRequest, GetMultiPricingPlanResponse, GetMultiProductPricingRequest, GetMultiProductPricingResponse, GetMultiProductPricingResponseProductPricesEntry, GetMultiProductRequest, GetMultiProductResponse, GetMultiProductResponseProductsEntry, GetMultiRetailConfigurationsRequest, GetMultiRetailConfigurationsResponse, GetMultiRetailConfigurationsResponseRetailConfigurationsEntry, GetMultiRetailPricingRequest, GetMultiRetailPricingResponse, GetMultiRetailPricingResponseProductPricesEntry, GetMultiSubscriptionRelationshipsRequest, GetMultiSubscriptionRelationshipsResponse, GetMultiSubscriptionsRequest, GetMultiSubscriptionsRequestKey, GetMultiSubscriptionsResponse, GetMultiTaxRequest, GetMultiTaxResponse, GetMultiWholesaleCostRequest, GetMultiWholesaleCostResponse, GetNextRetailInvoiceSequenceRequest, GetNextRetailInvoiceSequenceResponse, GetOutstandingBalanceRequest, GetOutstandingBalanceResponse, GetPayoutSummaryRequest, GetPayoutSummaryResponse, GetPricingPlanProductRequest, GetPricingPlanProductResponse, GetProductSummariesTotalRequest, GetProductSummariesTotalResponse, GetPurchaseCostRequest, GetPurchaseCostResponse, GetRecurringInvoiceRequest, GetRetailAccountBalanceRequest, GetRetailAccountBalanceResponse, GetRetailBalanceRequest, GetRetailBalanceResponse, GetRetailCustomerConfigurationRequest, GetRetailCustomerConfigurationResponse, GetRetailDisputeRequest, GetRetailDisputeResponse, GetRetailPaymentProviderRequest, GetRetailPaymentProviderResponse, GetRetailPaymentRequest, GetRetailPaymentResponse, GetRetailPayoutRequest, GetRetailPayoutResponse, GetRevenueStatsRequest, GetRevenueStatsResponse, GetSalesInvoiceRequest, GetSalesInvoiceResponse, GetStatisticsRequest, GetStatisticsResponse, GetTaxRuleRequest, GetTaxRuleResponse, GetUpcomingInvoicePreviewRequest, GetUpcomingInvoicePreviewResponse, GetWholesaleComparisonRequest, GetWholesaleComparisonRequestGetWholesaleComparisonFilters, GetWholesaleComparisonResponse, GetWholesaleComparisonResponseGetWholesaleComparisonResult, GetWholesaleProviderPublicKeyRequest, GetWholesaleProviderPublicKeyResponse, HostService, Interval, Invoice, InvoiceApiService, InvoiceCustomerAddress, InvoiceItem, InvoiceStatus, Item, LastPaymentStatus, LineItem, ListBankAccountsRequest, ListBankAccountsResponse, ListBillableItemsRequest, ListBillableItemsRequestFilters, ListBillableItemsResponse, ListBundlesRequest, ListBundlesRequestFilters, ListBundlesResponse, ListContractDocumentsRequest, ListContractDocumentsRequestFilters, ListContractDocumentsResponse, ListContractsRequest, ListContractsResponse, ListCreditNotesRequest, ListCreditNotesRequestFilters, ListCreditNotesResponse, ListDiscountsRequest, ListDiscountsRequestFilters, ListDiscountsResponse, ListInvoicesRequest, ListInvoicesRequestFilters, ListInvoicesRequestFiltersDateFilter, ListInvoicesRequestFiltersDateFilterDateField, ListInvoicesResponse, ListMerchantBillingReportsRequest, ListMerchantBillingReportsResponse, ListPaymentCardsRequest, ListPaymentCardsResponse, ListPaymentMethodsRequest, ListPaymentMethodsResponse, ListPaymentRequest, ListPaymentRequestListPaymentFilters, ListPaymentResponse, ListPayoutsRequest, ListPayoutsRequestFilters, ListPayoutsResponse, ListPricingPlanProductsRequest, ListPricingPlanProductsRequestListPricingPlanProductsFilters, ListPricingPlanProductsResponse, ListProductSummariesRequest, ListProductSummariesResponse, ListProductsRequest, ListProductsRequestListProductsFilters, ListProductsResponse, ListPurchaseItemsRequest, ListPurchaseItemsRequestListPurchaseItemsFilters, ListPurchaseItemsResponse, ListPurchaseRequest, ListPurchaseRequestListPurchaseBillingStrategyFilter, ListPurchaseRequestListPurchaseFilters, ListPurchaseRequestState, ListPurchaseResponse, ListRecurringInvoicesFilters, ListRecurringInvoicesFiltersDateFilter, ListRecurringInvoicesFiltersDetailedInterval, ListRecurringInvoicesRequest, ListRecurringInvoicesResponse, ListRefundsRequest, ListRefundsResponse, ListRetailDisputesRequest, ListRetailDisputesRequestListRetailDisputesFilters, ListRetailDisputesResponse, ListRetailPaymentsRequest, ListRetailPaymentsRequestListRetailPaymentsFilters, ListRetailPaymentsResponse, ListRetailPayoutsRequest, ListRetailPayoutsResponse, ListRetailTransactionsRequest, ListRetailTransactionsRequestListRetailTransactionsFilters, ListRetailTransactionsResponse, ListSalesCreditNoteRequest, ListSalesCreditNoteRequestListSalesCreditNoteFilters, ListSalesCreditNoteResponse, ListSalesInvoiceRequest, ListSalesInvoiceRequestListSalesInvoiceFilters, ListSalesInvoiceResponse, ListSubscriptionRelationshipsRequest, ListSubscriptionRelationshipsRequestFilters, ListSubscriptionRelationshipsResponse, ListSubscriptionRetentionByGroupResponse, ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup, ListSubscriptionRetentionBySKUResponse, ListSubscriptionRetentionRequest, ListSubscriptionRetentionRequestFilters, ListSubscriptionsRequest, ListSubscriptionsRequestFilters, ListSubscriptionsResponse, ListTaxRequest, ListTaxRequestFilters, ListTaxResponse, ListTaxRulesRequest, ListTaxRulesRequestFilters, ListTaxRulesResponse, Merchant, MerchantApiService, MerchantReport, MerchantReportStatus, MerchantServicesReportRun, MerchantServicesReportRunStatus, MerchantServicesReportRunType, MerchantType, MeteredComponent, Month, Note, PagedRequestOptions, PagedResponseMetadata, PauseDunningRequest, PayInvoiceRequest, Payment, PaymentACHDebit, PaymentACSSDebit, PaymentAllocationType, PaymentApiService, PaymentCard, PaymentCardCARD_TYPE, PaymentCardFUNDING_TYPE, PaymentErrorCode, PaymentFacilitatorType, PaymentIntent, PaymentIntentStatus, PaymentLinkItem, PaymentMethod, PaymentMethodApiService, PaymentMethodType, PaymentPaymentAllocation, PaymentProcessor, PaymentSource, PaymentStatus, PaymentStatuses, Payout, PayoutStatus, PayoutType, PostSalesInvoiceRequest, PrepareRetailPaymentRequest, PrepareRetailPaymentRequestOrder, PrepareRetailPaymentResponse, Pricing, PricingApiService, PricingPlan, PricingPlanProduct, PricingPlanProductPricing, PricingPlanProductPricingEntry, PricingRule, PricingRuleType, Product, ProductApiService, ProductPrices, ProductPricing, ProductPricingRule, ProductPricingType, ProductSummary, ProductSummaryApiService, ProductSummaryBillingStrategy, ProductSummaryDiscount, ProductSummaryDiscountDiscountType, ProductSummaryProductType, ProductType, Purchase, PurchaseApiService, PurchaseItem, PurchaseStatus, ReconcilePayoutRequest, ReconcilePayoutResponse, RecurringInvoice, RecurringInvoiceApiService, RecurringInvoiceBundle, RecurringInvoiceCustomerAddress, RecurringInvoiceItem, RecurringInvoiceLineItem, RecurringInvoiceStatus, ReferenceType, Refund, RefundApiService, RefundReason, RefundRetailPaymentRequest, RefundRetailPaymentResponse, RefundStatus, RelationshipType, RemoveBundleRequest, RemoveBundleResponse, RenewalState, ReplaceSubscriptionPresetsRequest, ReplaceSubscriptionPresetsResponse, ReplaceSubscriptionRelationshipsRequest, ReplaceSubscriptionRelationshipsResponse, ReplaceTaxRuleRequest, ReplaceTaxRuleResponse, ResetContractPricingRequest, ResetPaymentFacilitatorRequest, ResumeDunningRequest, RetailConfiguration, RetailCustomerConfiguration, RetailCustomerConfigurationApiService, RetailPayment, RetailPaymentACHDetails, RetailPaymentACSSDetails, RetailPaymentCardDetails, RetailPaymentPaymentMethodDetailsType, RetailPaymentReferenceType, RetailPaymentsEnabledRequest, RetailPaymentsEnabledResponse, RetailPayout, RetailRefund, RetailRefundFailureReason, RetailRefundReason, RetailRefundStatus, RetailStatusRequest, RetailStatusResponse, RetailStatusResponseVerificationError, RetailStatusResponseVerificationRequirements, RetailTransaction, RetailTransactionType, RetentionMetrics, RetryPurchaseRequest, ReverseSubscriptionRequest, SalesCreditNote, SalesCreditNoteApiService, SalesCreditNoteStatus, SalesInvoice, SalesInvoiceApiService, SalesInvoiceStatus, SalesInvoiceType, SearchMerchantsRequest, SearchMerchantsRequestSortBy, SearchMerchantsResponse, SendCreditNoteRequest, SendInvoiceRequest, SendSalesInvoiceEmailRequest, SendSalesInvoiceReceiptEmailRequest, SetAutoBillableRequest, SetAutoChargeInvoicesRequest, SetAutoPostInvoicesRequest, SetDefaultBankAccountRequest, SetDefaultPaymentCardRequest, SetDefaultPaymentMethodRequest, SetHasAlternativePaymentMethodRequest, SetIncludeInFinancialRecordsRequest, SetNextRetailInvoiceSequenceRequest, SetRenewalStartRequest, SetWholesaleProductStrategyRequest, SetWholesaleProductVolumeCommitmentRequest, SortDirection, Source, StartRevRecTemplateBackfillRequest, StopDunningRequest, SubmitEvidenceRequest, SubmitEvidenceRequestDisputeEvidence, SubscribeValidation, SubscribeValidationStatus, Subscription, SubscriptionPreset, SubscriptionProjectionFilter, SubscriptionRelationship, SubscriptionRelationshipApiService, SubscriptionStatus, TaxApiService, TaxRate, TaxRule, TaxRuleCustomer, TaxRuleCustomerCustomerAddress, TaxRuleEntityType, TaxRuleProduct, TaxRuleProductProductIdentifier, TaxRuleTaxRuleEntity, TaxRuleType, TickComponentUsageRequest, UnexpireBillableItemRequest, UpdateBundleRequest, UpdateBundleResponse, UpdateContractRequest, UpdateContractRequestMutation, UpdateContractResponse, UpdateContractSubscriptionRequest, UpdateDefaultTaxRatesRequest, UpdateDefaultTaxRatesResponse, UpdateDiscountRequest, UpdateInvoiceRequest, UpdateInvoiceResponse, UpdateLineItemRequest, UpdateLineItemResponse, UpdateMerchantRequest, UpdateMerchantRequestIncludeInFinancialRecords, UpdatePaymentCardRequest, UpdatePricingPlanProductRequest, UpdatePricingPlanProductRequestPricingEntry, UpdatePricingPlanProductResponse, UpdatePricingPlanRequest, UpdatePricingPlanResponse, UpdateProductRequest, UpdateRecurringInvoiceRequest, UpdateRetailPaymentProviderRequest, UpdateSubscriptionRequest, UpdateSubscriptionRequestSubscription, UpdateSubscriptionResponse, UpdateTaxRequest, UpsertBundleRequest, UpsertDefaultRetailCustomerConfigurationRequest, UpsertRetailConfigurationRequest, UpsertRetailCustomerConfigurationRequest, UpsertRetailPricingRequest, UpsertRetailPricingRequestPricingEntry, UpsertWholesalePricingRequest, ValidateResponse, VendorApiService, VoidInvoiceRequest, VoidPurchaseRequest, WholesaleCostItemRequest, usdConversionRate };\n","import { PaymentFacilitatorType as PaymentFacilitatorTypeApi } from '@vendasta/billing';\n\nexport enum PaymentFacilitatorType {\n NOT_SET = 'NOT_SET',\n CUSTOM_STRIPE = 'CUSTOM_STRIPE',\n STANDARD_STRIPE = 'STANDARD_STRIPE',\n}\n\nexport function paymentFacilitatorTypeFromApi(pApi: PaymentFacilitatorTypeApi): PaymentFacilitatorType {\n switch (pApi) {\n case PaymentFacilitatorTypeApi.CUSTOM_STRIPE:\n return PaymentFacilitatorType.CUSTOM_STRIPE;\n case PaymentFacilitatorTypeApi.STANDARD_STRIPE:\n return PaymentFacilitatorType.STANDARD_STRIPE;\n default:\n return PaymentFacilitatorType.NOT_SET;\n }\n}\n\nexport function paymentFacilitatorTypeToApi(p: PaymentFacilitatorType): PaymentFacilitatorTypeApi {\n switch (p) {\n case PaymentFacilitatorType.CUSTOM_STRIPE:\n return PaymentFacilitatorTypeApi.CUSTOM_STRIPE;\n case PaymentFacilitatorType.STANDARD_STRIPE:\n return PaymentFacilitatorTypeApi.STANDARD_STRIPE;\n default:\n return PaymentFacilitatorTypeApi.UNSPECIFIED;\n }\n}\n","export enum SortDirection {\n Ascending = 0,\n Descending,\n}\n","export class PagedResponse {\n results: T[];\n nextCursor: string;\n hasMore: boolean;\n\n constructor(results: T[], nextCursor: string, hasMore: boolean) {\n this.results = results || [];\n this.nextCursor = nextCursor || '';\n this.hasMore = hasMore || false;\n }\n}\n","export { SortDirection } from './sort-direction';\nexport { PagedResponse } from './paged-response';\n","import { AppliedBundle as ApiAppliedBundle } from '@vendasta/billing';\n\nexport const isAppliedBundle = (b: AppliedBundle | undefined): b is AppliedBundle => {\n return !!b;\n};\nexport interface AppliedBundle {\n bundleId?: string;\n bundleInstanceId?: string;\n name?: string;\n bundleItems?: AppliedBundleItem[];\n hideBundleItems?: boolean;\n}\n\nexport interface AppliedBundleItem {\n productId?: string;\n discountType?: string;\n discountAmount?: number;\n quantity?: number;\n}\n\nexport function convertApiAppliedBundle(ab: ApiAppliedBundle): AppliedBundle | undefined {\n if (!ab) {\n return undefined;\n }\n\n return {\n bundleId: ab.bundleId,\n bundleInstanceId: ab.bundleInstanceId,\n name: ab.name,\n hideBundleItems: ab.hideBundleItems || false,\n };\n}\n","export { AppliedBundle, AppliedBundleItem, convertApiAppliedBundle, isAppliedBundle } from './applied_bundle';\n","import { DiscountType as ApiDiscountType } from '@vendasta/billing';\n\nexport enum DiscountType {\n FIXED_AMOUNT = 'FIXED_AMOUNT',\n PERCENT_AMOUNT = 'PERCENT_AMOUNT',\n FIXED_NUMBER_OF_UNITS = 'FIXED_NUMBER_OF_UNITS',\n FIXED_AMOUNT_PER_UNIT = 'FIXED_AMOUNT_PER_UNIT',\n}\n\nexport function discountTypeFromApi(t: ApiDiscountType): DiscountType {\n switch (t) {\n case ApiDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT:\n return DiscountType.FIXED_AMOUNT_PER_UNIT;\n case ApiDiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS:\n return DiscountType.FIXED_NUMBER_OF_UNITS;\n case ApiDiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT:\n return DiscountType.PERCENT_AMOUNT;\n }\n return DiscountType.FIXED_AMOUNT;\n}\n\nexport function discountTypeToApi(t: DiscountType): ApiDiscountType {\n switch (t) {\n case DiscountType.FIXED_AMOUNT_PER_UNIT:\n return ApiDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT;\n case DiscountType.FIXED_NUMBER_OF_UNITS:\n return ApiDiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS;\n case DiscountType.PERCENT_AMOUNT:\n return ApiDiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT;\n }\n return ApiDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT;\n}\n","import { Consumer, Discount as DiscountApi } from '@vendasta/billing';\nimport { discountTypeFromApi, DiscountType } from './discount_type';\n\nexport interface Discount {\n discountId: number;\n id: string;\n discountType: DiscountType;\n amount: number;\n start?: Date;\n end?: Date;\n resetEachPeriod: boolean;\n merchantId: string;\n created?: Date;\n updated?: Date;\n SKU: string;\n description: string;\n customerId?: string;\n consumer?: Consumer;\n subscriptionId?: string;\n numberOfBillingPeriods: number;\n}\n\nexport function discountFromApi(apiDiscount: DiscountApi): Discount {\n return {\n merchantId: apiDiscount.merchantId || '',\n discountId: apiDiscount.discountId || 0,\n id: apiDiscount.id || '',\n discountType: discountTypeFromApi(apiDiscount.discountType),\n amount: apiDiscount.amount || 0,\n start: apiDiscount.start ? new Date(apiDiscount.start) : undefined,\n end: apiDiscount.end ? new Date(apiDiscount.end) : undefined,\n resetEachPeriod: apiDiscount.resetEachPeriod || false,\n created: apiDiscount.created ? new Date(apiDiscount.created) : undefined,\n updated: apiDiscount.updated ? new Date(apiDiscount.updated) : undefined,\n SKU: apiDiscount.sku || '',\n description: apiDiscount.description || '',\n customerId: apiDiscount.customerId || '',\n consumer: apiDiscount.consumer || Consumer.CONSUMER_RETAIL,\n subscriptionId: apiDiscount.subscriptionId || '',\n numberOfBillingPeriods: apiDiscount.numberOfBillingPeriods ?? 0,\n };\n}\n","import { Consumer } from '@vendasta/billing';\n\nexport enum DiscountConsumer {\n RETAIL = 'retail',\n WHOLESALE = 'reseller',\n}\n\nexport function discountConsumerToApi(dc: DiscountConsumer): Consumer {\n switch (dc) {\n case DiscountConsumer.RETAIL:\n return Consumer.CONSUMER_RETAIL;\n case DiscountConsumer.WHOLESALE:\n return Consumer.CONSUMER_WHOLESALE;\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n CreateDiscountRequest,\n DiscountApiService,\n ExpireDiscountRequest,\n ListDiscountsRequest,\n PagedRequestOptions,\n UpdateDiscountRequest,\n} from '@vendasta/billing';\nimport { Discount, discountFromApi } from './discount';\nimport { DiscountType, discountTypeToApi } from './discount_type';\nimport { ListDiscountsFilter } from './list-discount';\nimport { DiscountConsumer, discountConsumerToApi } from './discount_consumer';\n\n@Injectable({ providedIn: 'root' })\nexport class DiscountService {\n constructor(private discountApi: DiscountApiService) {}\n\n list(filters: ListDiscountsFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListDiscountsRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.discountApi.list(req).pipe(\n map((response) => {\n const discounts = (response.discounts || []).map((item) => discountFromApi(item));\n return new PagedResponse(discounts, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n create(\n merchantId: string,\n sku: string,\n discountType: DiscountType,\n amount: number,\n startDateTime: string,\n endDateTime?: string,\n resetEachPeriodFlag?: boolean,\n description?: string,\n customerId?: string,\n discountConsumer = DiscountConsumer.WHOLESALE,\n subscriptionId?: string,\n numberOfBillingPeriods?: number,\n ): Observable {\n const start = new Date(startDateTime);\n const dt = discountTypeToApi(discountType);\n const consumer = discountConsumerToApi(discountConsumer);\n\n const r = new CreateDiscountRequest({\n merchantId: merchantId,\n sku: sku,\n discountType: dt,\n amount: amount,\n start: start,\n resetEachPeriod: resetEachPeriodFlag,\n description: description,\n customerId: customerId,\n consumer: consumer,\n subscriptionId: subscriptionId,\n numberOfBillingPeriods: numberOfBillingPeriods ?? 0,\n });\n\n if (endDateTime && endDateTime !== '') {\n r.end = new Date(endDateTime);\n }\n\n return this.discountApi.create(r).pipe(map((resp) => resp.id));\n }\n\n update(\n merchantId: string,\n id: string,\n discountType: DiscountType,\n amount: number,\n startDateTime: string,\n endDateTime?: string,\n resetEachPeriodFlag?: boolean,\n description?: string,\n customerId?: string,\n subscriptionId?: string,\n numberOfBillingPeriods?: number,\n ): Observable> {\n const start = new Date(startDateTime);\n const dt = discountTypeToApi(discountType);\n\n const r = new UpdateDiscountRequest({\n merchantId: merchantId,\n id: id,\n discountType: dt,\n amount: amount,\n start: start,\n resetEachPeriod: resetEachPeriodFlag,\n description: description,\n customerId: customerId,\n subscriptionId: subscriptionId,\n numberOfBillingPeriods: numberOfBillingPeriods ?? 0,\n });\n\n if (endDateTime && endDateTime !== '') {\n r.end = new Date(endDateTime);\n }\n return this.discountApi.update(r);\n }\n\n expire(merchantId: string, id: string): Observable> {\n return this.discountApi.expire(\n new ExpireDiscountRequest({\n merchantId: merchantId,\n id: id,\n }),\n );\n }\n}\n","export { Discount } from './discount';\nexport { DiscountType } from './discount_type';\nexport { DiscountService } from './discount.service';\nexport { ListDiscountsFilter } from './list-discount';\nexport { DiscountConsumer } from './discount_consumer';\n","import { AppliedDiscountInterface, DiscountType as APIDiscountType } from '@vendasta/billing';\nimport { DiscountType } from '../discount';\n\nexport function appliedDiscountTypeFromAPI(adt: APIDiscountType | undefined): DiscountType {\n switch (adt) {\n case APIDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT:\n return DiscountType.FIXED_AMOUNT_PER_UNIT;\n case APIDiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS:\n return DiscountType.FIXED_NUMBER_OF_UNITS;\n case APIDiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT:\n return DiscountType.PERCENT_AMOUNT;\n }\n return DiscountType.FIXED_AMOUNT;\n}\n\nexport function appliedDiscountTypeToApi(adt: DiscountType): APIDiscountType {\n switch (adt) {\n case DiscountType.FIXED_AMOUNT_PER_UNIT:\n return APIDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT;\n case DiscountType.FIXED_NUMBER_OF_UNITS:\n return APIDiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS;\n case DiscountType.PERCENT_AMOUNT:\n return APIDiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT;\n }\n return APIDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT;\n}\n\nexport interface AppliedDiscount {\n type: DiscountType;\n value: number;\n totalAmount: number;\n description: string;\n referenceId: string;\n}\n\nexport function appliedDiscountFromApi(ad: AppliedDiscountInterface): AppliedDiscount {\n return {\n type: appliedDiscountTypeFromAPI(ad.type),\n value: ad.value || 0,\n totalAmount: ad.totalAmount || 0,\n description: ad.description || '',\n referenceId: ad.referenceId || '',\n };\n}\n\nexport function appliedDiscountToApi(ad: AppliedDiscount): AppliedDiscountInterface {\n return {\n type: appliedDiscountTypeToApi(ad.type),\n value: ad.value || 0,\n totalAmount: ad.totalAmount || 0,\n description: ad.description || '',\n referenceId: ad.referenceId || '',\n };\n}\n\n/** @deprecated use Discount interface from billing/discount */\nexport interface Discount {\n value: number;\n type: string;\n startDate: Date;\n id?: number;\n endDate?: Date;\n total?: number;\n}\n","export { AppliedDiscount, appliedDiscountFromApi, Discount } from './applied_discount';\n","import { BankAccount as ApiBankAccount } from '@vendasta/billing';\n\nexport interface BankAccount {\n id: string;\n accountHolderName: string;\n bankName: string;\n country: string;\n currency: string;\n routingNumber: string;\n last4: string;\n defaultForCurrency: boolean;\n}\n\nexport function bankAccountFromApi(r: ApiBankAccount): BankAccount {\n return {\n id: r.id,\n accountHolderName: r.accountHolderName,\n bankName: r.bankName,\n country: r.country,\n currency: r.currency,\n routingNumber: r.routingNumber,\n last4: r.last4,\n defaultForCurrency: r.defaultForCurrency,\n } as BankAccount;\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n BankAccount as ApiBankAccount,\n DeleteBankAccountRequest,\n ListBankAccountsRequest,\n ListBankAccountsResponse,\n MerchantApiService,\n SetDefaultBankAccountRequest,\n} from '@vendasta/billing';\nimport { BankAccount, bankAccountFromApi } from './bank_account';\n\n@Injectable({ providedIn: 'root' })\nexport class BankAccountService {\n constructor(private merchantApi: MerchantApiService) {}\n\n listBankAccounts(merchantId: string): Observable {\n return this.merchantApi\n .listBankAccounts(\n new ListBankAccountsRequest({\n merchantId,\n }),\n )\n .pipe(\n map((res: ListBankAccountsResponse) => (res && res.bankAccount ? res.bankAccount : [])),\n map((bankAccounts: ApiBankAccount[]) => {\n return bankAccounts.map((ba: ApiBankAccount) => bankAccountFromApi(ba));\n }),\n );\n }\n\n setDefaultBankAccount(merchantId: string, bankAccountId: string): Observable> {\n const request = new SetDefaultBankAccountRequest({\n merchantId,\n bankAccountId,\n });\n return this.merchantApi.setDefaultBankAccount(request);\n }\n\n deleteBankAccount(merchantId: string, bankAccountId: string): Observable> {\n const request = new DeleteBankAccountRequest({\n merchantId,\n bankAccountId,\n });\n return this.merchantApi.deleteBankAccount(request);\n }\n}\n","export { BankAccountService } from './bank-account.service';\nexport { BankAccount } from './bank_account';\nexport {\n DeleteBankAccountRequest,\n ListBankAccountsRequest,\n ListBankAccountsResponse,\n SetDefaultBankAccountRequest,\n} from '@vendasta/billing';\n","import { BillingStrategy as PricingPlanBillingStrategy } from '@vendasta/billing';\n\nexport enum BillingStrategy {\n Invalid = 'INVALID',\n EndOfPeriod = 'END_OF_PERIOD',\n StartOfPeriod = 'START_OF_PERIOD',\n Instantly = 'INSTANTLY',\n EndOfDay = 'END_OF_DAY',\n}\n\nexport function isBillingStrategyInstant(strategy: BillingStrategy): boolean {\n return strategy === BillingStrategy.Instantly || strategy === BillingStrategy.EndOfDay;\n}\n\nexport function billingStrategyFromAPI(bsAPI: PricingPlanBillingStrategy | undefined): BillingStrategy {\n switch (bsAPI) {\n case PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_PERIOD:\n return BillingStrategy.EndOfPeriod;\n case PricingPlanBillingStrategy.BILLING_STRATEGY_START_OF_PERIOD:\n return BillingStrategy.StartOfPeriod;\n case PricingPlanBillingStrategy.BILLING_STRATEGY_INSTANTLY:\n return BillingStrategy.Instantly;\n case PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_DAY:\n return BillingStrategy.EndOfDay;\n }\n return BillingStrategy.Invalid;\n}\n\nexport function billingStrategyToAPI(strategy: BillingStrategy | undefined): PricingPlanBillingStrategy {\n switch (strategy) {\n case BillingStrategy.EndOfPeriod:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_PERIOD;\n case BillingStrategy.StartOfPeriod:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_START_OF_PERIOD;\n case BillingStrategy.Instantly:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_INSTANTLY;\n case BillingStrategy.EndOfDay:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_DAY;\n }\n return PricingPlanBillingStrategy.BILLING_STRATEGY_NONE;\n}\n","import { Currency as CurrencyApi } from '@vendasta/billing';\n\nexport enum Currency {\n USD = 'USD',\n CAD = 'CAD',\n EUR = 'EUR',\n AUD = 'AUD',\n GBP = 'GBP',\n NZD = 'NZD',\n BRL = 'BRL',\n CHF = 'CHF',\n CNY = 'CNY',\n CZK = 'CZK',\n INR = 'INR',\n JPY = 'JPY',\n KHR = 'KHR',\n KRW = 'KRW',\n MXN = 'MXN',\n NOK = 'NOK',\n RUB = 'RUB',\n SEK = 'SEK',\n SGD = 'SGD',\n TRY = 'TRY',\n ZAR = 'ZAR',\n DZD = 'DZD',\n AWG = 'AWG',\n FJD = 'FJD',\n KYD = 'KYD',\n}\n\nexport function currencyFromApi(cApi: CurrencyApi | undefined): Currency {\n switch (cApi) {\n case CurrencyApi.USD:\n return Currency.USD;\n case CurrencyApi.CAD:\n return Currency.CAD;\n case CurrencyApi.EUR:\n return Currency.EUR;\n case CurrencyApi.AUD:\n return Currency.AUD;\n case CurrencyApi.GBP:\n return Currency.GBP;\n case CurrencyApi.NZD:\n return Currency.NZD;\n case CurrencyApi.BRL:\n return Currency.BRL;\n case CurrencyApi.CHF:\n return Currency.CHF;\n case CurrencyApi.CNY:\n return Currency.CNY;\n case CurrencyApi.CZK:\n return Currency.CZK;\n case CurrencyApi.INR:\n return Currency.INR;\n case CurrencyApi.JPY:\n return Currency.JPY;\n case CurrencyApi.KHR:\n return Currency.KHR;\n case CurrencyApi.KRW:\n return Currency.KRW;\n case CurrencyApi.MXN:\n return Currency.MXN;\n case CurrencyApi.NOK:\n return Currency.NOK;\n case CurrencyApi.RUB:\n return Currency.RUB;\n case CurrencyApi.SEK:\n return Currency.SEK;\n case CurrencyApi.SGD:\n return Currency.SGD;\n case CurrencyApi.TRY:\n return Currency.TRY;\n case CurrencyApi.ZAR:\n return Currency.ZAR;\n case CurrencyApi.DZD:\n return Currency.DZD;\n case CurrencyApi.AWG:\n return Currency.AWG;\n case CurrencyApi.FJD:\n return Currency.FJD;\n case CurrencyApi.KYD:\n return Currency.KYD;\n default:\n return Currency.USD;\n }\n}\n\nexport function currencyToApi(currency: Currency | undefined): CurrencyApi {\n switch (currency) {\n case Currency.USD:\n return CurrencyApi.USD;\n case Currency.CAD:\n return CurrencyApi.CAD;\n case Currency.EUR:\n return CurrencyApi.EUR;\n case Currency.AUD:\n return CurrencyApi.AUD;\n case Currency.GBP:\n return CurrencyApi.GBP;\n case Currency.NZD:\n return CurrencyApi.NZD;\n case Currency.BRL:\n return CurrencyApi.BRL;\n case Currency.CHF:\n return CurrencyApi.CHF;\n case Currency.CNY:\n return CurrencyApi.CNY;\n case Currency.CZK:\n return CurrencyApi.CZK;\n case Currency.INR:\n return CurrencyApi.INR;\n case Currency.JPY:\n return CurrencyApi.JPY;\n case Currency.KHR:\n return CurrencyApi.KHR;\n case Currency.KRW:\n return CurrencyApi.KRW;\n case Currency.MXN:\n return CurrencyApi.MXN;\n case Currency.NOK:\n return CurrencyApi.NOK;\n case Currency.RUB:\n return CurrencyApi.RUB;\n case Currency.SEK:\n return CurrencyApi.SEK;\n case Currency.SGD:\n return CurrencyApi.SGD;\n case Currency.TRY:\n return CurrencyApi.TRY;\n case Currency.ZAR:\n return CurrencyApi.ZAR;\n case Currency.DZD:\n return CurrencyApi.DZD;\n case Currency.AWG:\n return CurrencyApi.AWG;\n case Currency.FJD:\n return CurrencyApi.FJD;\n case Currency.KYD:\n return CurrencyApi.KYD;\n default:\n return CurrencyApi.USD;\n }\n}\n","import { Frequency as FrequencyApi } from '@vendasta/billing';\n\nexport enum Frequency {\n Invalid = 'INVALID',\n Monthly = 'MONTHLY',\n Yearly = 'YEARLY',\n OneTime = 'ONE_TIME',\n}\n\nexport function frequencyFromLegacyApi(fApi: string): Frequency {\n switch (fApi) {\n case 'monthly':\n return Frequency.Monthly;\n case 'yearly':\n return Frequency.Yearly;\n case 'one_time':\n return Frequency.OneTime;\n }\n return Frequency.Invalid;\n}\n\nexport function frequencyFromApi(fApi: FrequencyApi | undefined): Frequency {\n switch (fApi) {\n case FrequencyApi.MONTHLY:\n return Frequency.Monthly;\n case FrequencyApi.YEARLY:\n return Frequency.Yearly;\n case FrequencyApi.ONE_TIME:\n return Frequency.OneTime;\n }\n return Frequency.Invalid;\n}\n\nexport function frequencyToApi(frequency: Frequency | undefined): FrequencyApi {\n switch (frequency) {\n case Frequency.Monthly:\n return FrequencyApi.MONTHLY;\n case Frequency.Yearly:\n return FrequencyApi.YEARLY;\n case Frequency.OneTime:\n return FrequencyApi.ONE_TIME;\n }\n return FrequencyApi.INVALID;\n}\n","import { ProductPricingRuleInterface } from '@vendasta/billing';\n\nexport interface ProductPricingRules {\n price: number;\n minUnits: number;\n maxUnits: number;\n}\n\nexport function productPricingRulesFromApi(pprApi: ProductPricingRuleInterface[] | undefined): ProductPricingRules[] {\n return (pprApi || []).map((r) => {\n return {\n price: r.price || 0,\n minUnits: r.minUnits,\n maxUnits: r.maxUnits,\n } as ProductPricingRules;\n });\n}\n","import { ProductPricingType as ProductPricingTypeApi } from '@vendasta/billing';\n\nexport enum ProductPricingType {\n Invalid = 'INVALID',\n Standard = 'STANDARD',\n Stairstep = 'STAIRSTEP',\n Tiered = 'TIERED',\n}\n\nexport function productPricingTypeFromApi(pptApi: ProductPricingTypeApi | undefined): ProductPricingType {\n switch (pptApi) {\n case ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STANDARD:\n return ProductPricingType.Standard;\n case ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STAIRSTEP:\n return ProductPricingType.Stairstep;\n case ProductPricingTypeApi.PRODUCT_PRICING_TYPE_TIERED:\n return ProductPricingType.Tiered;\n }\n return ProductPricingType.Invalid;\n}\n\nexport function productPricingTypeToApi(ppt: ProductPricingType): ProductPricingTypeApi {\n switch (ppt) {\n case ProductPricingType.Standard:\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STANDARD;\n case ProductPricingType.Stairstep:\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STAIRSTEP;\n case ProductPricingType.Tiered:\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_TIERED;\n }\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_INVALID;\n}\n","import { CommitmentInterface } from '@vendasta/billing';\n\nexport interface Commitment {\n initial: number;\n recurring: number;\n}\n\nexport function commitmentFromAPI(comAPI: CommitmentInterface | undefined): Commitment {\n return {\n initial: comAPI?.initial || 0,\n recurring: comAPI?.recurring || 0,\n };\n}\n","import { FeeInterface as FeeProto } from '@vendasta/billing';\n\nexport interface Fee {\n amount?: number;\n amountType?: FeeAmountType;\n feeType?: FeeType;\n}\n\nexport enum FeeAmountType {\n FEE_AMOUNT_TYPE_INVALID = 0,\n FEE_AMOUNT_TYPE_FIXED = 1,\n FEE_AMOUNT_TYPE_PERCENTAGE = 2,\n}\n\nexport enum FeeType {\n FEE_TYPE_INVALID = 0,\n FEE_TYPE_MANAGEMENT = 1,\n}\n\nexport function feesFromApi(protos: FeeProto[]): Fee[] {\n if (!protos || protos.length < 1) {\n return [];\n }\n return protos.map((proto) => {\n return {\n amount: proto.amount || 0,\n amountType: proto.amountType,\n feeType: proto.feeType,\n };\n });\n}\n\nexport function feesToApi(fees: Fee[]): FeeProto[] {\n if (!fees || fees.length < 1) {\n return [];\n }\n return fees.map((fee) => {\n return {\n amount: fee.amount || 0,\n amountType: fee.amountType,\n feeType: fee.feeType,\n };\n });\n}\n","import {\n PricingPlanProduct as ApiPricingPlanProduct,\n PricingPlanProductPricing as ApiPricing,\n ProductPricingRule as ApiRule,\n} from '@vendasta/billing';\nimport { BillingStrategy, billingStrategyFromAPI } from './billing-strategy';\nimport { Commitment, commitmentFromAPI } from './commitment';\nimport { Currency } from './currency';\nimport { Frequency, frequencyFromApi, frequencyToApi } from './frequency';\nimport { ProductPricingRules, productPricingRulesFromApi } from './product-pricing-rules';\nimport { ProductPricingType, productPricingTypeFromApi, productPricingTypeToApi } from './product-pricing-type';\nimport { Fee, feesFromApi, feesToApi } from './fee';\n\nexport interface CurrencyPricingMap {\n [key: string]: PricingPlanProductPricing;\n}\n\nexport interface PricingPlanProductPricing {\n type: ProductPricingType;\n rules: ProductPricingRules[];\n setupFee: number;\n fees: Fee[];\n frequency?: Frequency;\n currencyCode?: string;\n}\n\nexport interface PricingPlanProduct {\n pricingPlanId: string;\n sku: string;\n frequency?: Frequency;\n pricing: CurrencyPricingMap;\n commitment: Commitment;\n created: Date;\n modified: Date;\n strategy: BillingStrategy;\n volumeCommitment: number;\n volumeCommitmentStartsAt?: Date;\n volumeCommitmentEndsAt?: Date;\n defaultStrategy?: BillingStrategy;\n}\n\nexport function pricingPlanProductFromApi(apiProduct: ApiPricingPlanProduct): PricingPlanProduct {\n const pricingMap: CurrencyPricingMap = {};\n for (const apiCurrency in apiProduct.pricing) {\n if (!Object.prototype.hasOwnProperty.call(apiProduct.pricing, apiCurrency)) {\n continue;\n }\n\n const pricingApi = apiProduct.pricing[apiCurrency];\n pricingMap[apiCurrency] = {\n type: productPricingTypeFromApi(pricingApi.type),\n rules: productPricingRulesFromApi(pricingApi.rules),\n setupFee: pricingApi.setupFee || 0,\n fees: feesFromApi(pricingApi.fees),\n frequency: frequencyFromApi(pricingApi.frequency),\n };\n }\n\n return {\n pricingPlanId: apiProduct.pricingPlanId,\n sku: apiProduct.sku,\n frequency: frequencyFromApi(apiProduct.frequency),\n pricing: pricingMap,\n commitment: commitmentFromAPI(apiProduct.commitment),\n created: apiProduct.created,\n modified: apiProduct.modified,\n strategy: billingStrategyFromAPI(apiProduct.strategy),\n volumeCommitment: apiProduct.volumeCommitment,\n volumeCommitmentStartsAt:\n apiProduct.volumeCommitmentStartsAt?.getTime() !== 0 ? apiProduct.volumeCommitmentStartsAt : undefined,\n volumeCommitmentEndsAt:\n apiProduct.volumeCommitmentEndsAt?.getTime() !== 0 ? apiProduct.volumeCommitmentEndsAt : undefined,\n };\n}\n\nexport function currencyPricingMapToApi(currencyPricingMap: CurrencyPricingMap | undefined): {\n [key: string]: ApiPricing;\n} {\n if (!currencyPricingMap) {\n return {};\n }\n return Object.keys(currencyPricingMap)\n .filter((c) => c in Currency)\n .reduce((apiPricingMap: { [key: string]: ApiPricing }, c: string) => {\n apiPricingMap[c] = pricingPlanProductPricingToApi(currencyPricingMap[c]);\n return apiPricingMap;\n }, {});\n}\n\nexport function productPricingRulesToApi(rules: ProductPricingRules[]): ApiRule[] {\n return rules.map((rule) => new ApiRule(rule));\n}\n\nexport function pricingPlanProductPricingToApi(pricing: PricingPlanProductPricing): ApiPricing {\n return new ApiPricing({\n type: productPricingTypeToApi(pricing.type),\n rules: productPricingRulesToApi(pricing.rules),\n setupFee: pricing.setupFee,\n fees: feesToApi(pricing.fees),\n frequency: frequencyToApi(pricing.frequency),\n currencyCode: pricing.currencyCode,\n });\n}\n","import {\n GetPurchaseCostResponse,\n ProductPricesInterface,\n ProductPricingInterface,\n PricingPlanProductPricing as ApiPricingPlanProductPricing,\n} from '@vendasta/billing';\nimport { BillingStrategy, billingStrategyFromAPI } from './billing-strategy';\nimport { Commitment, commitmentFromAPI } from './commitment';\nimport { Currency, currencyFromApi } from './currency';\nimport { Frequency, frequencyFromApi, frequencyFromLegacyApi, frequencyToApi } from './frequency';\nimport { ProductPricingRules, productPricingRulesFromApi } from './product-pricing-rules';\nimport { ProductPricingType, productPricingTypeFromApi, productPricingTypeToApi } from './product-pricing-type';\nimport { Fee, feesFromApi, feesToApi } from './fee';\nimport { productPricingRulesToApi } from './pricing-plan-product';\n\nexport interface PurchaseCost {\n billingFrequency: Frequency;\n total: number;\n subtotal: number;\n currency: Currency;\n strategy: BillingStrategy;\n commitment: Commitment;\n isStartingPrice: boolean;\n discountTotal: number;\n setupFee: number;\n}\n\nexport interface ProductPricing {\n strategy: BillingStrategy;\n pricingType: ProductPricingType;\n currency: Currency;\n frequency: Frequency;\n pricingRules: ProductPricingRules[];\n commitment: Commitment;\n volumeCommitment: number;\n isStartingPrice: boolean;\n resolvedFrom?: string;\n setupFee: number;\n fees: Fee[];\n}\n\nexport interface ProductPrices {\n sku: string;\n prices: ProductPricing[];\n}\n\nexport function purchaseCostFromAPI(pcApi: GetPurchaseCostResponse): PurchaseCost {\n const subtotal = pcApi.subtotalCost || 0;\n const discountTotal = pcApi.discountAmount || 0;\n const total = pcApi.totalCost || 0;\n const setupFee = pcApi.setupFee || 0;\n\n return {\n subtotal: subtotal,\n discountTotal: discountTotal,\n total: total,\n billingFrequency: frequencyFromLegacyApi(pcApi.billingFrequency),\n currency: currencyFromApi(pcApi.currency),\n strategy: billingStrategyFromAPI(pcApi.strategy),\n commitment: commitmentFromAPI(pcApi.commitment),\n isStartingPrice: pcApi.isStartingPrice,\n setupFee: setupFee,\n };\n}\n\nexport function productPricingFromApi(pApi: ProductPricingInterface): ProductPricing {\n return {\n strategy: billingStrategyFromAPI(pApi.strategy),\n pricingType: productPricingTypeFromApi(pApi.pricingType),\n currency: currencyFromApi(pApi.currency),\n frequency: frequencyFromApi(pApi.frequency),\n pricingRules: productPricingRulesFromApi(pApi.pricingRules),\n commitment: commitmentFromAPI(pApi.commitment),\n volumeCommitment: pApi.volumeCommitment || 0,\n isStartingPrice: pApi.isStartingPrice || false,\n resolvedFrom: pApi.resolvedFrom,\n setupFee: pApi.setupFee || 0,\n fees: feesFromApi(pApi.fees || []),\n };\n}\n\nexport function pricesFromApi(pApi: ProductPricesInterface[]): ProductPrices[] {\n return pApi?.map(\n (p) =>\n p &&\n ({\n sku: p.sku,\n prices: (p.prices || []).map((price) => price && productPricingFromApi(price)),\n } as ProductPrices),\n );\n}\n\nexport function productPricingToApiCurrencyMap(productPricing: ProductPricing): {\n [currencyCode: string]: ApiPricingPlanProductPricing;\n} {\n if (!productPricing) {\n return {};\n }\n const apiPricing = productPricingToApi(productPricing);\n return { [apiPricing.currencyCode]: apiPricing };\n}\n\nexport function productPricingToApi(productPricing: ProductPricing): ApiPricingPlanProductPricing {\n return new ApiPricingPlanProductPricing({\n type: productPricingTypeToApi(productPricing.pricingType),\n rules: productPricingRulesToApi(productPricing.pricingRules),\n setupFee: productPricing.setupFee,\n fees: feesToApi(productPricing.fees),\n frequency: frequencyToApi(productPricing.frequency),\n currencyCode: productPricing.currency,\n });\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { BillingApiService, Commitment, PricingApiService, UpsertWholesalePricingRequest } from '@vendasta/billing';\nimport { BillingStrategy, billingStrategyToAPI } from './billing-strategy';\nimport { PricingPlanProductPricing, pricingPlanProductPricingToApi } from './pricing-plan-product';\nimport { pricesFromApi, ProductPrices, PurchaseCost, purchaseCostFromAPI } from './product-pricing';\n\n@Injectable({ providedIn: 'root' })\nexport class WholesalePricingService {\n constructor(private pricingService: PricingApiService, private billingApi: BillingApiService) {}\n\n setProductBillingStrategy(merchantId: string, sku: string, billingStrategy: BillingStrategy): Observable {\n const strategy = billingStrategyToAPI(billingStrategy);\n return this.pricingService.setWholesaleProductStrategy({ merchantId, sku, strategy }).pipe(map(() => null));\n }\n\n setProductVolumeCommitment(\n merchantId: string,\n sku: string,\n volumeCommitment: number,\n volumeCommitmentStartsAt?: Date,\n volumeCommitmentEndsAt?: Date,\n ): Observable {\n return this.pricingService\n .setWholesaleProductVolumeCommitment({\n merchantId,\n sku,\n volumeCommitment,\n volumeCommitmentStartsAt: volumeCommitmentStartsAt,\n volumeCommitmentEndsAt: volumeCommitmentEndsAt,\n })\n .pipe(map(() => null));\n }\n\n getPurchaseCost(merchantId: string, sku: string, quantity: number): Observable {\n return this.pricingService\n .getPurchaseCost({ merchantId, sku, quantity })\n .pipe(map((resp) => purchaseCostFromAPI(resp)));\n }\n\n getMultiWholesalePrices(merchantId: string, skus: string[], pricingPlanId?: string): Observable {\n return this.billingApi\n .getMultiProductPricing({ merchantId, skus, pricingPlanId })\n .pipe(map((r) => pricesFromApi(r.prices)));\n }\n\n upsertPricing(\n pricingPlanId: string,\n sku: string,\n pricing: PricingPlanProductPricing[],\n termCommitment: Commitment,\n strategy: BillingStrategy,\n volumeCommitment: number,\n volumeCommitmentStartsAt?: Date,\n volumeCommitmentEndsAt?: Date,\n ): Observable> {\n const request = new UpsertWholesalePricingRequest({\n pricingPlanId,\n sku,\n pricing: (pricing || []).map((p) => pricingPlanProductPricingToApi(p)),\n strategy: billingStrategyToAPI(strategy),\n termCommitment,\n volumeCommitment,\n volumeCommitmentStartsAt,\n volumeCommitmentEndsAt,\n });\n return this.pricingService.upsertWholesale(request);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { pricesFromApi, ProductPrices, ProductPricing, productPricingToApiCurrencyMap } from './product-pricing';\nimport { PricingApiService, UpsertRetailPricingRequest } from '@vendasta/billing';\nimport { Frequency, frequencyToApi } from './frequency';\nimport { HttpResponse } from '@angular/common/http';\n\nexport class RetailPricingForSubscriptionId {\n subscriptionId: string;\n\n constructor(subscriptionId: string) {\n this.subscriptionId = subscriptionId;\n }\n}\n\nexport class RetailPricingForCustomerId {\n customerId: string;\n\n constructor(customerId: string) {\n this.customerId = customerId;\n }\n}\n\nexport class RetailPricingForGroupId {\n groupId: string;\n\n constructor(groupId: string) {\n this.groupId = groupId;\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RetailPricingService {\n constructor(private pricingApi: PricingApiService) {}\n\n getMultiRetailPrices(merchantId: string, skus: string[], groupId?: string): Observable {\n const requestGroupId: string = groupId || '';\n return this.pricingApi\n .getMultiRetail({ merchantId, skus, groupId: requestGroupId })\n .pipe(map((r) => pricesFromApi(r.prices)));\n }\n\n upsertPricing(\n merchantId: string,\n sku: string,\n frequency: Frequency,\n pricing: ProductPricing,\n identifier: RetailPricingForSubscriptionId | RetailPricingForCustomerId | RetailPricingForGroupId,\n ): Observable> {\n const req = new UpsertRetailPricingRequest({\n merchantId,\n sku,\n frequency: frequencyToApi(frequency),\n pricing: productPricingToApiCurrencyMap(pricing),\n });\n if (identifier instanceof RetailPricingForSubscriptionId) {\n req.subscriptionId = identifier.subscriptionId;\n } else if (identifier instanceof RetailPricingForCustomerId) {\n req.customerId = identifier.customerId;\n } else if (identifier instanceof RetailPricingForGroupId) {\n req.groupId = identifier.groupId;\n }\n return this.pricingApi.upsertRetail(req);\n }\n}\n","import { PricingPlanInterface as PricingPlanProto } from '@vendasta/billing';\nimport { BillingStrategy, billingStrategyFromAPI } from './billing-strategy';\n\nexport interface PricingPlan {\n id: string;\n name: string;\n subscriptionName?: string;\n defaultStrategy: BillingStrategy;\n}\n\nexport enum Distribution {\n Retail = 'Retail',\n Wholesale = 'Wholesale',\n}\n\nexport function pricingPlanFromAPI(proto: PricingPlanProto): PricingPlan {\n return {\n id: proto.id || '',\n name: proto.name || '',\n defaultStrategy: billingStrategyFromAPI(proto.defaultBillingStrategy),\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { BillingApiService, UpdatePricingPlanResponse } from '@vendasta/billing';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { BillingStrategy, billingStrategyToAPI } from './billing-strategy';\nimport { Distribution, PricingPlan, pricingPlanFromAPI } from './pricing-plan';\n\n@Injectable({ providedIn: 'root' })\nexport class PricingPlanService {\n constructor(\n private environmentService: EnvironmentService,\n private billingService: BillingApiService,\n ) {}\n\n list(distribution?: Distribution): PricingPlan[] {\n const env = this.environmentService.getEnvironment();\n switch (distribution) {\n case Distribution.Retail:\n return retailPlans.get(env) || [];\n case Distribution.Wholesale:\n return wholesalePlans.get(env) || [];\n default:\n return pricingPlans.get(env) || [];\n }\n }\n\n isDefault(pricingPlanId: string): boolean {\n const defaultPlan = this.list().find((p) => p.name === WholesalePricingPlanName.Default);\n return defaultPlan ? pricingPlanId === defaultPlan.id : false;\n }\n\n nameForId(pricingPlanId: string): string {\n return this.list().find((p) => p.id === pricingPlanId)?.name || '';\n }\n\n idForName(pricingPlanName: string): string {\n return this.list().find((p) => p.name === pricingPlanName)?.id || '';\n }\n\n idForSubscriptionName(subscriptionName: string): string {\n return this.list().find((p) => p.subscriptionName === subscriptionName)?.id || '';\n }\n\n setDefaultStrategy(pricingPlanId: string, strategy: BillingStrategy): Observable {\n const request = {\n id: pricingPlanId,\n fieldMask: {\n paths: ['default_billing_strategy'],\n },\n defaultBillingStrategy: billingStrategyToAPI(strategy),\n };\n return this.billingService.updatePricingPlan(request);\n }\n\n getMulti(pricingPlanIds: string[]): Observable {\n return this.billingService\n .getMultiPricingPlan({ pricingPlanIds })\n .pipe(map((resp) => resp.plans.map((p) => pricingPlanFromAPI(p))));\n }\n}\n\nenum RetailPricingPlanName {\n MSRP = 'MSRP',\n}\n\nconst demoRetailPricingPlans: PricingPlan[] = [\n {\n id: 'PP-5049b4b2-fe28-473f-96d6-84d4ea91ada9',\n name: RetailPricingPlanName.MSRP,\n subscriptionName: 'msrp',\n defaultStrategy: BillingStrategy.Invalid,\n },\n];\n\nconst prodRetailPricingPlans: PricingPlan[] = [\n {\n id: 'PP-148b6d8c-6222-4fce-9cd2-f0587f0db563',\n name: RetailPricingPlanName.MSRP,\n subscriptionName: 'msrp',\n defaultStrategy: BillingStrategy.Invalid,\n },\n];\n\nenum WholesalePricingPlanName {\n // Instant\n VBPFree = 'Free',\n VBPStarter = 'Starter',\n VBPBasic = 'Basic+',\n VBPProfessional = 'Professional+',\n VBPEnterprise = 'Enterprise+',\n VBPEnterprisePilot = 'Enterprise+ Pilot',\n VBP2Startup = 'Startup+',\n VBP2Essentials = 'Essentials+',\n VBP2Growth = 'Growth+',\n VBP2Scale = 'Scale+',\n\n // Invoiced\n BasicSubscription = 'Basic',\n ProfessionalSubscription = 'Professional',\n EnterpriseSubscription = 'Enterprise',\n EliteSubscription = 'Elite',\n PremiumSubscription = 'Premium (Legacy)',\n VBP2Premium = 'Premium',\n\n IndividualSubscription = 'Individual',\n TeamSubscription = 'Team',\n AdvanceSubscription = 'Advance',\n CustomSubscription = 'Custom',\n\n Essentials2022Subscription = 'Essentials',\n Professional2022Subscription = 'Professional',\n Premium2022Subscription = 'Premium',\n Custom2022Subscription = 'Custom',\n\n Starter2023Subscription = 'Starter',\n\n Starter2024Subscription = 'Starter 2024',\n Professional2024Subscription = 'Professional 2024',\n Premium2024Subscription = 'Premium 2024',\n\n Default = 'Default',\n}\n\nconst demoWholesalePricingPlans: PricingPlan[] = [\n {\n id: 'PP-587f8f25-b278-4727-b7c4-3ce60e542c8b',\n name: WholesalePricingPlanName.VBPFree,\n subscriptionName: 'free_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-a5ad2825-8225-4bbe-a868-c1b2a7d2a2e3',\n name: WholesalePricingPlanName.VBPStarter,\n subscriptionName: 'starter_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-438ccc87-eaff-4180-ad79-f5d3d51e1bc0',\n name: WholesalePricingPlanName.VBPBasic,\n subscriptionName: 'vbp_basic_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-7201f892-3d44-44b8-b9db-4b23dd34d112',\n name: WholesalePricingPlanName.VBPProfessional,\n subscriptionName: 'vbp_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-3cc1ec9f-17a8-46c8-9e79-b337e4ea651b',\n name: WholesalePricingPlanName.VBPEnterprise,\n subscriptionName: 'vbp_enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-7ffa4745-4ea1-4603-983b-81a1404faa3b',\n name: WholesalePricingPlanName.VBPEnterprisePilot,\n subscriptionName: 'vbp_enterprise_pilot_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-02895bb5-ff6b-4f37-ae1e-8473b895a59d',\n name: WholesalePricingPlanName.VBP2Startup,\n subscriptionName: 'vbp2_startup_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-c69f1724-d380-432f-8f50-5778da6ea250',\n name: WholesalePricingPlanName.VBP2Essentials,\n subscriptionName: 'vbp2_essentials_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-8abe2c53-be4a-43d5-bd2c-a8d9be1c82db',\n name: WholesalePricingPlanName.VBP2Growth,\n subscriptionName: 'vbp2_growth_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-0a872f89-e582-420a-90b0-c98e19b174a4',\n name: WholesalePricingPlanName.VBP2Scale,\n subscriptionName: 'vbp2_scale_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-7abd1cb2-317b-40d2-9fdc-d2b365d645b7',\n name: WholesalePricingPlanName.VBP2Premium,\n subscriptionName: 'vbp2_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-a7eca7c3-84fd-4fc2-86a5-87a743f6c3d1',\n name: WholesalePricingPlanName.BasicSubscription,\n subscriptionName: 'basic_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-7d0053b8-fab4-407d-ae69-33c67d5314eb',\n name: WholesalePricingPlanName.ProfessionalSubscription,\n subscriptionName: 'professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-e85cdb56-2944-4fe0-9e78-a98520eb1489',\n name: WholesalePricingPlanName.EnterpriseSubscription,\n subscriptionName: 'enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-9a0d6430-5e73-41d2-bd3d-dc3645664bb9',\n name: WholesalePricingPlanName.EliteSubscription,\n subscriptionName: 'elite_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-a03a1c1e-d03e-4c77-8132-34908012a65c',\n name: WholesalePricingPlanName.PremiumSubscription,\n subscriptionName: 'premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-6ef8b121-c6de-49c2-b24f-971cfecb5fe6',\n name: WholesalePricingPlanName.IndividualSubscription,\n subscriptionName: 'm3_solo_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-ffd605c1-feb6-4066-8dc1-ad0f1a8efb9d',\n name: WholesalePricingPlanName.TeamSubscription,\n subscriptionName: 'm3_small_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-246b1485-018c-4dc2-96c1-b6e0b2c18edb',\n name: WholesalePricingPlanName.AdvanceSubscription,\n subscriptionName: 'm3_medium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-0e9f5ea4-d6bd-4ea8-927e-de55134fa92f',\n name: WholesalePricingPlanName.CustomSubscription,\n subscriptionName: 'm3_large_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-268f67e8-1854-4cdd-97a5-4e8b2c52a957',\n name: WholesalePricingPlanName.Essentials2022Subscription,\n subscriptionName: 'vbp_2022_essentials_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-231bb4f5-ab25-4570-a342-6c2548494fbb',\n name: WholesalePricingPlanName.Professional2022Subscription,\n subscriptionName: 'vbp_2022_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-88e09af4-137f-4b5f-a860-8cfc30675dd5',\n name: WholesalePricingPlanName.Premium2022Subscription,\n subscriptionName: 'vbp_2022_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-073e3bc9-121f-4fb9-b30f-9e6e48783be8',\n name: WholesalePricingPlanName.Custom2022Subscription,\n subscriptionName: 'vbp_2022_custom_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-2559d108-f406-43f6-b04c-36463f3b1935',\n name: WholesalePricingPlanName.Starter2023Subscription,\n subscriptionName: 'vbp_2023_starter_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-965650c8-5522-47b8-a4e6-c7b199f12b0e',\n name: WholesalePricingPlanName.Starter2024Subscription,\n subscriptionName: 'vbp_2024_starter_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-62079baa-89c3-422d-853b-27640e67c457',\n name: WholesalePricingPlanName.Professional2024Subscription,\n subscriptionName: 'vbp_2024_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-35011675-48d6-4bf1-a5aa-47e344541ec3',\n name: WholesalePricingPlanName.Premium2024Subscription,\n subscriptionName: 'vbp_2024_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-cf943a15-3eea-40cf-8d3e-e7ea5a5a9817',\n name: WholesalePricingPlanName.Default,\n subscriptionName: '',\n defaultStrategy: BillingStrategy.Invalid,\n },\n];\n\nconst prodWholesalePricingPlans: PricingPlan[] = [\n {\n id: 'PP-77912c15-00af-4a56-bfc0-e8e6c27c7a53',\n name: WholesalePricingPlanName.VBPFree,\n subscriptionName: 'free_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-1cc75309-ddff-4d8b-aedf-88a7472e2b4e',\n name: WholesalePricingPlanName.VBPStarter,\n subscriptionName: 'starter_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-52f98211-bd1e-4112-88cd-e78040173198',\n name: WholesalePricingPlanName.VBPBasic,\n subscriptionName: 'vbp_basic_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-c278bcc6-bd5d-43e5-9ff5-a27e70b48ba9',\n name: WholesalePricingPlanName.VBPProfessional,\n subscriptionName: 'vbp_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-4133fc94-a58a-4fcd-91cd-9ed111182e77',\n name: WholesalePricingPlanName.VBPEnterprise,\n subscriptionName: 'vbp_enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-dbbac61e-132f-468f-aa62-7a691b59bb74',\n name: WholesalePricingPlanName.VBPEnterprisePilot,\n subscriptionName: 'vbp_enterprise_pilot_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-45f8099f-d3f3-4302-83bf-bbf64f431e31',\n name: WholesalePricingPlanName.VBP2Startup,\n subscriptionName: 'vbp2_startup_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-d44c5a8b-f3b6-4b63-b203-8b7253060984',\n name: WholesalePricingPlanName.VBP2Essentials,\n subscriptionName: 'vbp2_essentials_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-c1761320-62df-41d7-8df3-008554a4b592',\n name: WholesalePricingPlanName.VBP2Growth,\n subscriptionName: 'vbp2_growth_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-b6607aae-606f-4fd5-84e4-c48f38b59892',\n name: WholesalePricingPlanName.VBP2Scale,\n subscriptionName: 'vbp2_scale_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-7375d567-8890-4cb1-930c-5673ea89acba',\n name: WholesalePricingPlanName.VBP2Premium,\n subscriptionName: 'vbp2_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-38a06671-526b-4d28-b425-bbce3be34699',\n name: WholesalePricingPlanName.BasicSubscription,\n subscriptionName: 'basic_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-d9717300-f1c3-4471-8433-c3ac7baf003d',\n name: WholesalePricingPlanName.ProfessionalSubscription,\n subscriptionName: 'professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-f6a60130-878b-4a33-9a10-d5bdeac0cdef',\n name: WholesalePricingPlanName.EnterpriseSubscription,\n subscriptionName: 'enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-dff68124-2223-4c88-91dc-b638a3135fc5',\n name: WholesalePricingPlanName.EliteSubscription,\n subscriptionName: 'elite_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-15641015-560e-4cd7-977b-b1fc627b18d1',\n name: WholesalePricingPlanName.PremiumSubscription,\n subscriptionName: 'premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-46fe3624-0af5-4674-b612-2c39d7dc1f82',\n name: WholesalePricingPlanName.IndividualSubscription,\n subscriptionName: 'm3_solo_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-8153423f-af6e-459e-ac9b-ac10e8f789b6',\n name: WholesalePricingPlanName.TeamSubscription,\n subscriptionName: 'm3_small_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-54de0158-18c3-4dca-bcac-a26e945ac8c0',\n name: WholesalePricingPlanName.AdvanceSubscription,\n subscriptionName: 'm3_medium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-f81375af-43a0-4986-9b90-e56c67922195',\n name: WholesalePricingPlanName.CustomSubscription,\n subscriptionName: 'm3_large_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-589c64da-e354-4103-bf21-26596bf0fb66',\n name: WholesalePricingPlanName.Essentials2022Subscription,\n subscriptionName: 'vbp_2022_essentials_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-528f7285-8040-4432-a4ca-9e53e12f903c',\n name: WholesalePricingPlanName.Professional2022Subscription,\n subscriptionName: 'vbp_2022_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-aceec94d-e714-4a77-b45c-133d9ce788a6',\n name: WholesalePricingPlanName.Premium2022Subscription,\n subscriptionName: 'vbp_2022_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-0a9ff4cf-6135-4994-add3-8cd02c7da795',\n name: WholesalePricingPlanName.Custom2022Subscription,\n subscriptionName: 'vbp_2022_custom_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-c8810795-4d7c-4194-a551-e7f654fca4d7',\n name: WholesalePricingPlanName.Starter2023Subscription,\n subscriptionName: 'vbp_2023_starter_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-a8a291ad-32cf-490e-bf64-de0a1bf73caf',\n name: WholesalePricingPlanName.Starter2024Subscription,\n subscriptionName: 'vbp_2024_starter_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-d75f33d2-a518-4c46-9c44-349704bef4a9',\n name: WholesalePricingPlanName.Professional2024Subscription,\n subscriptionName: 'vbp_2024_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-3d445c79-1b71-4cc7-a3ec-83d1cfbc5d06',\n name: WholesalePricingPlanName.Premium2024Subscription,\n subscriptionName: 'vbp_2024_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-0e9ac148-a2d0-42d0-9250-8c42189bf432',\n name: WholesalePricingPlanName.Default,\n subscriptionName: '',\n defaultStrategy: BillingStrategy.Invalid,\n },\n];\n\nconst pricingPlans = new Map([\n [Environment.DEMO, [...demoWholesalePricingPlans, ...demoRetailPricingPlans]],\n [Environment.PROD, [...prodWholesalePricingPlans, ...prodRetailPricingPlans]],\n]);\n\nconst wholesalePlans = new Map([\n [Environment.DEMO, [...demoWholesalePricingPlans]],\n [Environment.PROD, [...prodWholesalePricingPlans]],\n]);\n\nconst retailPlans = new Map([\n [Environment.DEMO, [...demoRetailPricingPlans]],\n [Environment.PROD, [...prodRetailPricingPlans]],\n]);\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsibGlzdC1wcmljaW5nLXBsYW4tcHJvZHVjdC1maWx0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBMaXN0UHJpY2luZ1BsYW5Qcm9kdWN0RmlsdGVyIHtcbiAgc2t1Pzogc3RyaW5nO1xuICBwcmljaW5nUGxhbklkcz86IHN0cmluZ1tdO1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119","import { SubscriptionStatus as SubscriptionStatusApi } from '@vendasta/billing';\n\nexport enum SubscriptionStatus {\n Unset = 'Unset',\n Active = 'Active',\n Inactive = 'Inactive',\n}\n\nexport function subscriptionStatusFromApi(sApi: SubscriptionStatusApi | undefined): SubscriptionStatus {\n switch (sApi) {\n case SubscriptionStatusApi.SUBSCRIPTION_STATUS_ACTIVE:\n return SubscriptionStatus.Active;\n case SubscriptionStatusApi.SUBSCRIPTION_STATUS_EXPIRED:\n return SubscriptionStatus.Inactive;\n default:\n return SubscriptionStatus.Unset;\n }\n}\n\nexport function subscriptionStatusToApi(subscriptionStatus: SubscriptionStatus): SubscriptionStatusApi {\n switch (subscriptionStatus) {\n case SubscriptionStatus.Active:\n return SubscriptionStatusApi.SUBSCRIPTION_STATUS_ACTIVE;\n case SubscriptionStatus.Inactive:\n return SubscriptionStatusApi.SUBSCRIPTION_STATUS_EXPIRED;\n default:\n return SubscriptionStatusApi.SUBSCRIPTION_STATUS_UNSET;\n }\n}\n\nexport function isSubscriptionStatus(str: string): str is SubscriptionStatus {\n return Object.values(SubscriptionStatus).includes(str as SubscriptionStatus);\n}\n","import { Source as SubscriptionSourceApi } from '@vendasta/billing';\n\nexport enum SubscriptionSource {\n Unset = '',\n System = 'System',\n User = 'User',\n}\n\nexport function subscriptionSourceFromApi(sApi: SubscriptionSourceApi | undefined): SubscriptionSource {\n switch (sApi) {\n case SubscriptionSourceApi.SOURCE_SYSTEM:\n return SubscriptionSource.System;\n case SubscriptionSourceApi.SOURCE_USER:\n return SubscriptionSource.User;\n default:\n return SubscriptionSource.Unset;\n }\n}\n\nexport function subscriptionSourceToApi(source: SubscriptionSource): SubscriptionSourceApi {\n switch (source) {\n case SubscriptionSource.System:\n return SubscriptionSourceApi.SOURCE_SYSTEM;\n case SubscriptionSource.User:\n return SubscriptionSourceApi.SOURCE_USER;\n default:\n return SubscriptionSourceApi.SOURCE_UNSET;\n }\n}\n","export * from './billing-strategy';\nexport * from './currency';\nexport * from './frequency';\nexport * from './product-pricing-rules';\nexport * from './product-pricing-type';\nexport * from './product-pricing';\nexport * from './pricing-plan-product';\nexport * from './wholesale-pricing.service';\nexport * from './retail-pricing.service';\nexport * from './pricing-plan';\nexport * from './pricing-plan.service';\nexport * from './list-pricing-plan-product-filter';\nexport * from './status';\nexport * from './source';\nexport * from './fee';\n","export { PayoutTypeLabel, PayoutStatusType, Payout, PayoutStatusLabel, PayoutTypeType } from './payout';\nexport { BankReconciliationService } from './bank-reconciliation.service';\nexport { Subsidiary } from './subsidiary';\n","export function setTimeToNoonUTC(date: Date): Date | undefined {\n if (!date) {\n return undefined;\n }\n const utcDate = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n utcDate.setUTCHours(12, 0, 0, 0);\n return utcDate;\n}\n","import {\n BillableItem as BillableItemApi,\n BillableItemCustomerAddressInterface,\n Frequency as FrequencyApi,\n SubscriptionStatus as SubscriptionStatusApi,\n RenewalState as RenewalStateApi,\n} from '@vendasta/billing';\nimport {\n Frequency,\n frequencyFromApi,\n ProductPricing,\n productPricingFromApi,\n SubscriptionStatus,\n subscriptionStatusFromApi,\n} from '../pricing';\nimport { SubscriptionSource, subscriptionSourceFromApi } from '../pricing/source';\nimport { setTimeToNoonUTC } from '../shared/time-helper';\n\nexport interface ListBillableItemsFilter {\n skus?: string[];\n merchantId?: string;\n customerId?: string;\n}\n\nexport interface ListSubscriptionsFilter {\n skus?: string[];\n merchantId?: string;\n customerId?: string;\n searchTerm?: string;\n status?: SubscriptionStatusApi;\n expiredDateGte?: Date;\n expiredDateLte?: Date;\n frequencies?: FrequencyApi[];\n}\n\nexport interface SubscriptionsProjectionFilter {\n price?: boolean;\n}\n\nexport interface ListSubscriptionsFilterHttp {\n skus?: string[];\n merchantId?: string;\n customerId?: string;\n}\n\nexport interface CustomerAddress {\n address?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n}\n\nexport interface BillableItem {\n subscriptionId: string;\n merchantId: string;\n sku: string;\n productName: string;\n customerId: string;\n customerName: string;\n orderId: string;\n expiry?: Date;\n billingStart?: Date;\n created?: Date;\n updated?: Date;\n frequency: Frequency;\n retailFrequency: Frequency;\n nextRenewal?: Date;\n nextRetailRenewal?: Date;\n customerAddress: CustomerAddress;\n customUnitPrice: number;\n retailUnitPrice: number;\n status?: SubscriptionStatus;\n price?: ProductPricing;\n source?: SubscriptionSource;\n autoBillable: boolean;\n description?: string;\n nextServicePeriodStart?: Date;\n nextServicePeriodEnd?: Date;\n billingCycleAnchor?: Date;\n nextInvoiceDate?: Date;\n}\n\nexport enum RenewalState {\n Immediate = 'IMMEDIATE',\n Delayed = 'DELAYED',\n}\n\nfunction customerAddressFromApi(apiAddress: BillableItemCustomerAddressInterface | undefined): CustomerAddress {\n return {\n address: apiAddress?.address || '',\n city: apiAddress?.city || '',\n state: apiAddress?.state || '',\n zip: apiAddress?.zip || '',\n country: apiAddress?.country || '',\n };\n}\n\nexport function billableItemFromApi(apiItem: BillableItemApi): BillableItem {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n return {\n subscriptionId: apiItem.subscriptionId || '',\n merchantId: apiItem.merchantId || '',\n sku: apiItem.sku || '',\n productName: apiItem.productName || '',\n customerId: apiItem.customerId || '',\n customerName: apiItem.customerName || '',\n orderId: apiItem.orderId || '',\n expiry: apiItem.expiry.valueOf() !== zeroDate ? new Date(apiItem.expiry) : undefined,\n billingStart: apiItem.billingStart.valueOf() !== zeroDate ? new Date(apiItem.billingStart) : undefined,\n created: apiItem.created.valueOf() !== zeroDate ? new Date(apiItem.created) : undefined,\n updated: apiItem.updated.valueOf() !== zeroDate ? new Date(apiItem.updated) : undefined,\n frequency: frequencyFromApi(apiItem.frequency),\n retailFrequency: frequencyFromApi(apiItem.retailFrequency),\n nextRenewal: apiItem.nextRenewal.valueOf() !== zeroDate ? new Date(apiItem.nextRenewal) : undefined,\n nextRetailRenewal:\n apiItem.nextRetailRenewal.valueOf() !== zeroDate ? new Date(apiItem.nextRetailRenewal) : undefined,\n customerAddress: customerAddressFromApi(apiItem.customerAddress),\n customUnitPrice: apiItem.customUnitPrice || 0,\n retailUnitPrice: apiItem.retailUnitPrice || 0,\n status: subscriptionStatusFromApi(apiItem.status),\n price: apiItem.price ? productPricingFromApi(apiItem.price) : undefined,\n source: subscriptionSourceFromApi(apiItem.source),\n autoBillable: apiItem.autoBillable,\n description: apiItem.description || '',\n nextServicePeriodStart:\n apiItem.nextServicePeriodStart?.valueOf() !== zeroDate\n ? setTimeToNoonUTC(new Date(apiItem.nextServicePeriodStart))\n : undefined,\n nextServicePeriodEnd:\n apiItem.nextServicePeriodEnd?.valueOf() !== zeroDate\n ? setTimeToNoonUTC(new Date(apiItem.nextServicePeriodEnd))\n : undefined,\n billingCycleAnchor:\n apiItem.billingCycleAnchor?.valueOf() !== zeroDate ? new Date(apiItem.billingCycleAnchor) : undefined,\n nextInvoiceDate:\n apiItem.nextInvoiceDate && apiItem.nextInvoiceDate.valueOf() !== zeroDate\n ? new Date(apiItem.nextInvoiceDate)\n : undefined,\n };\n}\n\nexport function listSubscriptionsFiltersToHTTPJson(filters: ListBillableItemsFilter): ListSubscriptionsFilterHttp {\n return {\n merchantId: filters.merchantId,\n customerId: filters.customerId,\n skus: filters.skus,\n };\n}\n\nexport function renewalStateToApi(state: RenewalState): RenewalStateApi {\n if (state === RenewalState.Delayed) {\n return RenewalStateApi.RENEWAL_STATE_DELAYED;\n }\n return RenewalStateApi.RENEWAL_STATE_IMMEDIATE;\n}\n","export { SubscriptionService } from './billable-item.service';\nexport {\n BillableItem,\n ListBillableItemsFilter,\n ListSubscriptionsFilter,\n SubscriptionsProjectionFilter,\n RenewalState,\n renewalStateToApi,\n} from './billable-item';\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nexport function handleCsvError(error: HttpErrorResponse): Observable {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(`Server returned ${error.message}`);\n }\n\n return observableThrowError(`Unable to download csv`);\n}\n\nexport function handleFileUploadError(error: HttpErrorResponse): Observable {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(`Server returned ${error.message}`);\n }\n\n return observableThrowError(`Unable to upload file`);\n}\n","/* Api service for billing's http endpoints */\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { share, catchError } from 'rxjs/operators';\nimport { DownloadCsvRequestInterface } from './revenue.interfaces';\nimport { handleCsvError } from '../http-shared/error-handlers';\nimport { HostService } from '@vendasta/billing';\n\n@Injectable({ providedIn: 'root' })\nexport class RevenueApiService {\n constructor(private hostService: HostService, private http: HttpClient) {}\n\n downloadCsv(r: DownloadCsvRequestInterface): Observable {\n const queryParams = `?filename=${r.filename}`;\n return this.http\n .get(this.hostService.hostWithScheme + '/revenue-csv' + queryParams, this.apiOptions())\n .pipe(share(), catchError(handleCsvError));\n }\n\n private apiOptions(): { responseType: 'blob'; withCredentials: boolean } {\n return {\n responseType: 'blob',\n withCredentials: true,\n };\n }\n}\n","/* Api service for billing's http endpoints */\n\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { HostService } from '@vendasta/billing';\nimport { Observable } from 'rxjs';\nimport { catchError, share } from 'rxjs/operators';\nimport { handleCsvError } from '../http-shared/error-handlers';\nimport { DownloadMerchantReportCsvRequest } from './merchant-report.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class MerchantReportApiService {\n constructor(private hostService: HostService, private http: HttpClient) {}\n\n downloadCsv(r: DownloadMerchantReportCsvRequest): Observable {\n const queryParams = `?merchantID=${r.merchantId}&year=${r.year}&month=${r.month}`;\n return this.http\n .get(this.hostService.hostWithScheme + '/billing-report/get' + queryParams, this.apiOptions())\n .pipe(share(), catchError(handleCsvError));\n }\n\n generateCsv(r: DownloadMerchantReportCsvRequest): Observable {\n const queryParams = `?merchantID=${r.merchantId}&year=${r.year}&month=${r.month}`;\n return this.http\n .get(this.hostService.hostWithScheme + '/billing-report/generate' + queryParams, this.apiOptions())\n .pipe(share(), catchError(handleCsvError));\n }\n\n private apiOptions(): { responseType: 'blob'; withCredentials: boolean } {\n return {\n responseType: 'blob',\n withCredentials: true,\n };\n }\n}\n","import { PurchaseStatus as PurchaseStatusApi } from '@vendasta/billing';\n\nexport enum PurchaseStatus {\n Unset = 'UNSET',\n Pending = 'PENDING',\n Due = 'DUE',\n Success = 'SUCCESS',\n Dunning = 'DUNNING',\n Failed = 'FAILED',\n}\n\nexport function purchaseStatusFromApi(psApi: PurchaseStatusApi | undefined): PurchaseStatus {\n switch (psApi) {\n case PurchaseStatusApi.PURCHASE_STATUS_PENDING:\n return PurchaseStatus.Pending;\n case PurchaseStatusApi.PURCHASE_STATUS_DUE:\n return PurchaseStatus.Due;\n case PurchaseStatusApi.PURCHASE_STATUS_SUCCESS:\n return PurchaseStatus.Success;\n case PurchaseStatusApi.PURCHASE_STATUS_DUNNING:\n return PurchaseStatus.Dunning;\n case PurchaseStatusApi.PURCHASE_STATUS_FAILED:\n return PurchaseStatus.Failed;\n }\n return PurchaseStatus.Unset;\n}\n","import { AppliedDiscount, appliedDiscountFromApi } from '../applied_discount';\nimport { AppliedTaxRate } from '../invoice/invoice';\nimport { BillingStrategy, billingStrategyFromAPI, Currency, currencyFromApi } from '../pricing';\nimport {\n AppliedCreditInterface,\n AppliedTaxRateInterface,\n CreditType,\n Currency as CurrencyApi,\n PurchaseInterface,\n PurchaseItemInterface,\n} from '@vendasta/billing';\nimport { PurchaseStatus, purchaseStatusFromApi } from './purchase_status';\n\nexport interface Purchase {\n merchantId: string;\n timestamp?: Date;\n purchaseId: string;\n total: number;\n currency: Currency;\n renewal: boolean;\n items: PurchaseItem[];\n billingStrategy: BillingStrategy;\n isDunning: boolean;\n dunningAttempt: number;\n pauseDunningUntil?: Date;\n voided?: Date;\n paid: boolean;\n status: PurchaseStatus;\n creditAmount: number;\n appliedCredits: AppliedCredit[];\n taxAmount: number;\n appliedTaxRates: AppliedTaxRate[];\n}\n\nexport enum AppliedCreditType {\n CREDIT_TYPE_CREDIT_NOTE = 'Credit note',\n CREDIT_TYPE_PROMOTIONAL = 'Promotional',\n CREDIT_TYPE_UNSET = '',\n}\n\nexport interface AppliedCredit {\n appliedAmount: number;\n referenceId: string;\n referenceType: AppliedCreditType;\n}\n\nexport interface PurchaseItem {\n sku: string;\n description: string;\n amount: number;\n orderId: string;\n customerId: string;\n discountAmount: number;\n total: number;\n currency?: Currency;\n appliedDiscounts: AppliedDiscount[];\n taxAmount: number;\n appliedTaxRates: AppliedTaxRate[];\n setupFee?: number;\n feeAmount?: number;\n\n merchantId: string;\n purchaseDay: string;\n purchaseId: string;\n}\n\nexport function purchaseFromApi(pApi: PurchaseInterface): Purchase {\n return {\n merchantId: pApi.merchantId || '',\n timestamp: pApi.timestamp ? new Date(pApi.timestamp) : undefined,\n purchaseId: pApi.purchaseId || '',\n total: pApi.total || 0,\n currency: pApi.currency ? currencyFromApi(pApi.currency) : Currency.USD,\n renewal: pApi.renewal || false,\n items: pApi.items ? pApi.items.map((p) => purchaseItemFromApi(p)) : [],\n billingStrategy: billingStrategyFromAPI(pApi.billingStrategy),\n isDunning: pApi.isDunning || false,\n dunningAttempt: pApi.dunningAttempt || 0,\n pauseDunningUntil: pApi.pauseDunningUntil ? new Date(pApi.pauseDunningUntil) : undefined,\n voided: pApi.voided ? new Date(pApi.voided) : undefined,\n paid: pApi.paid || false,\n status: purchaseStatusFromApi(pApi.status),\n creditAmount: pApi.creditAmount || 0,\n appliedCredits: pApi.appliedCredits ? pApi.appliedCredits.map((ac) => appliedCreditFromAPI(ac)) : [],\n taxAmount: pApi.taxAmount || 0,\n appliedTaxRates: (pApi.appliedTaxRates || []).map((at) => appliedTaxRateFromAPI(at)),\n };\n}\n\nexport function purchaseItemFromApi(pApi: PurchaseItemInterface, currencyApi?: CurrencyApi): PurchaseItem {\n let currency;\n if (currencyApi !== undefined) {\n currency = currencyFromApi(currencyApi);\n }\n return {\n sku: pApi.sku || '',\n description: pApi.description || '',\n amount: pApi.amount || 0,\n orderId: pApi.orderId || '',\n customerId: pApi.customerId || '',\n discountAmount: pApi.discountAmount || 0,\n total: pApi.total || 0,\n currency: currency || Currency.USD,\n appliedDiscounts: pApi.appliedDiscounts ? pApi.appliedDiscounts.map((p) => appliedDiscountFromApi(p)) : [],\n merchantId: pApi.merchantId || '',\n purchaseDay: pApi.day || '',\n purchaseId: pApi.purchaseId || '',\n taxAmount: pApi.taxAmount || 0,\n appliedTaxRates: (pApi.appliedTaxRates || []).map((at) => appliedTaxRateFromAPI(at)),\n setupFee: pApi.setupFee || 0,\n feeAmount: pApi.feeAmount || 0,\n };\n}\n\nexport function appliedCreditFromAPI(ac: AppliedCreditInterface): AppliedCredit {\n return {\n appliedAmount: ac.appliedAmount || 0,\n referenceId: ac.referenceId || '',\n referenceType: appliedCreditTypeFromAPI(ac.referenceType),\n };\n}\n\nexport function appliedCreditTypeFromAPI(adt: CreditType | undefined): AppliedCreditType {\n switch (adt) {\n case CreditType.CREDIT_TYPE_CREDIT_NOTE:\n return AppliedCreditType.CREDIT_TYPE_CREDIT_NOTE;\n case CreditType.CREDIT_TYPE_PROMOTIONAL:\n return AppliedCreditType.CREDIT_TYPE_PROMOTIONAL;\n }\n return AppliedCreditType.CREDIT_TYPE_UNSET;\n}\n\nexport function appliedTaxRateFromAPI(at: AppliedTaxRateInterface): AppliedTaxRate {\n return {\n amount: at.amount || 0,\n name: at.name || '',\n percentage: at.percentage || 0,\n taxRateId: at.taxRateId || '',\n };\n}\n","import { CustomerSummaryInterface } from '@vendasta/billing';\nimport { Currency, currencyFromApi } from '../pricing';\n\nexport interface CustomerSummary {\n customerId: string;\n purchaseItemQuantity: number;\n purchaseItemTotal: number;\n currency: Currency;\n}\n\nexport function customerSummaryFromApi(csApi: CustomerSummaryInterface): CustomerSummary {\n let currency;\n if (csApi.currency !== undefined) {\n currency = currencyFromApi(csApi.currency);\n }\n return {\n customerId: csApi.customerId || '',\n purchaseItemQuantity: csApi.purchaseItemQuantity || 0,\n purchaseItemTotal: csApi.purchaseItemTotal || 0,\n currency: currency || Currency.USD,\n };\n}\n","export class Dimension {\n dimensionId: string;\n name: string;\n\n constructor(id: string) {\n this.dimensionId = id;\n this.name = id;\n }\n}\n\nexport const ChannelPartnersDiamond = new Dimension('Diamond');\nexport const ChannelPartnersPlatinum = new Dimension('Platinum');\nexport const ChannelPartnersGold = new Dimension('Gold');\nexport const ChannelPartnersSilver = new Dimension('Silver');\nexport const ChannelPartnersUnassisted = new Dimension('Unassisted');\nexport const ChannelPartnersChurned = new Dimension('Churned Partners');\nexport const ChannelPartnersPreSales = new Dimension('Pre-Sales');\nexport const ChannelPartnersUnassigned = new Dimension('Unassigned');\nexport const ChannelPartnersMedia = new Dimension('Media');\nexport const ChannelPartnersBroadcast = new Dimension('Broadcast');\nexport const ChannelPartnersISV = new Dimension('ISV');\nexport const ChannelPartnersICT = new Dimension('ICT');\nexport const ChannelPartnersFranchise = new Dimension('Franchise');\nexport const ChannelPartnersBroadly = new Dimension('Broadly');\nexport const ChannelPartnersEMEA = new Dimension('EMEA');\nexport const ChannelPartnersAgency = new Dimension('Agency');\nexport const ChannelPartnersHighVelocityExpansion = new Dimension('High Velocity Expansion');\nexport const ChannelPartnersHighVelocityAcquisition = new Dimension('High Velocity Acquisition');\n\nexport const LEGACY_DIMENSIONS = [\n ChannelPartnersDiamond,\n ChannelPartnersPlatinum,\n ChannelPartnersGold,\n ChannelPartnersSilver,\n ChannelPartnersUnassisted,\n ChannelPartnersChurned,\n ChannelPartnersPreSales,\n ChannelPartnersUnassigned,\n];\n\nexport const SERVICE_TIERS = [\n ChannelPartnersMedia,\n ChannelPartnersBroadcast,\n ChannelPartnersISV,\n ChannelPartnersICT,\n ChannelPartnersFranchise,\n ChannelPartnersBroadly,\n ChannelPartnersEMEA,\n ChannelPartnersAgency,\n ChannelPartnersHighVelocityExpansion,\n ChannelPartnersHighVelocityAcquisition,\n];\n","import { ContractInterface } from '@vendasta/billing';\nimport { Currency, currencyFromApi } from '../pricing';\nimport { Dimension } from './dimension';\n\nexport interface Contract {\n merchantId: string;\n netD: number;\n created?: Date;\n subscriptionId: string;\n dimension: Dimension;\n currency: Currency;\n signed?: Date;\n end?: Date;\n activated?: Date;\n modified?: Date;\n verified?: Date;\n status: string;\n creditLimit: number;\n pricingPlanId: string;\n}\n\nexport function contractFromApi(cApi: ContractInterface): Contract {\n return {\n merchantId: cApi.merchantId || '',\n netD: cApi.netD || 0,\n created: cApi.created || undefined,\n subscriptionId: cApi.subscriptionId || '',\n dimension: new Dimension(cApi.dimension || ''),\n currency: currencyFromApi(cApi.currency),\n signed: cApi.signed || undefined,\n end: cApi.end || undefined,\n activated: cApi.activated || undefined,\n modified: cApi.modified || undefined,\n verified: cApi.verified || undefined,\n status: cApi.status || '',\n creditLimit: cApi.creditLimit || 0,\n pricingPlanId: cApi.pricingPlanId || '',\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ContractApiService, UpdateContractRequestMutationInterface } from '@vendasta/billing';\nimport { Contract, contractFromApi } from './contract';\n\n@Injectable({ providedIn: 'root' })\nexport class ContractService {\n constructor(private api: ContractApiService) {}\n\n /**\n * Get a contract by its identifier.\n *\n * @param merchantId is the unique identifier of the merchant.\n * @return An contract observable.\n */\n public get(merchantId: string): Observable {\n return this.api.get({ merchantId }).pipe(map((c) => contractFromApi(c.contract)));\n }\n\n /**\n * Update a contract with a new value.\n *\n * @param merchantId is a string that identifies the contract to update.\n * @param mutations is a list of mutations to apply to the contract.\n * Each mutation object should only contain one value.\n * @return An observable of the update contract.\n */\n public update(merchantId: string, mutations: UpdateContractRequestMutationInterface[]): Observable {\n return this.api.update({ merchantId, mutations }).pipe(map((c) => contractFromApi(c.contract)));\n }\n}\n","import { UpdateContractRequestMutationInterface } from '@vendasta/billing';\n\nexport const setNetD = (netD: number): UpdateContractRequestMutationInterface => ({ netD });\nexport const setCurrencyCode = (currencyCode: string): UpdateContractRequestMutationInterface => ({ currencyCode });\nexport const setStatus = (status: string): UpdateContractRequestMutationInterface => ({ status });\nexport const setDimension = (dimension: string): UpdateContractRequestMutationInterface => ({ dimension });\nexport const setSigned = (signed: Date): UpdateContractRequestMutationInterface => ({ signed });\nexport const setActivated = (activated: Date): UpdateContractRequestMutationInterface => ({ activated });\nexport const setEnd = (end: Date): UpdateContractRequestMutationInterface => ({ end });\nexport const setModified = (modified: Date): UpdateContractRequestMutationInterface => ({ modified });\nexport const setCreditLimit = (creditLimit: number): UpdateContractRequestMutationInterface => ({ creditLimit });\nexport const setSubscriptionId = (subscriptionId: string): UpdateContractRequestMutationInterface => ({\n subscriptionId,\n});\n","export * from './contract.service';\nexport * from './contract';\nexport * from './dimension';\nexport * from './mutations';\nexport { UpdateContractRequestMutationInterface } from '@vendasta/billing';\n","import { ProductInterface } from '@vendasta/billing';\n\nexport interface Product {\n name: string;\n sku: string;\n iconUrl: string;\n hasPricingOverride: boolean;\n hasDiscount: boolean;\n}\n\nexport function productFromApi(apiProduct: ProductInterface): Product {\n return {\n name: apiProduct.name || '',\n sku: apiProduct.sku || '',\n iconUrl: apiProduct.iconUrl || '',\n hasPricingOverride: apiProduct.hasPricingOverride || false,\n hasDiscount: apiProduct.hasDiscount || false,\n };\n}\n","import { ListProductsRequestListProductsFiltersInterface, ProductType as ApiProductType } from '@vendasta/billing';\n\nexport interface ListProductsFilter {\n hasDiscount?: boolean;\n hasPricingOverride?: boolean;\n skus?: string[];\n productType?: ProductType[];\n}\n\nexport enum ProductType {\n Invalid,\n Standard,\n Vendasta,\n Subscription,\n Fee,\n PartnerSupportSales,\n}\n\nexport function listProductsFilterToApi(filter: ListProductsFilter): ListProductsRequestListProductsFiltersInterface {\n return {\n ...filter,\n productType: (filter.productType || []).map((pt) => productTypeToApi(pt)),\n };\n}\n\nfunction productTypeToApi(productType: ProductType): ApiProductType {\n switch (productType) {\n case ProductType.Standard:\n return ApiProductType.PRODUCT_TYPE_STANDARD_PRODUCT;\n case ProductType.Vendasta:\n return ApiProductType.PRODUCT_TYPE_VENDASTA_PRODUCT;\n case ProductType.Subscription:\n return ApiProductType.PRODUCT_TYPE_SUBSCRIPTION;\n case ProductType.Fee:\n return ApiProductType.PRODUCT_TYPE_FEE;\n case ProductType.PartnerSupportSales:\n return ApiProductType.PRODUCT_TYPE_PARTNER_SUPPORT_SALES;\n }\n return ApiProductType.PRODUCT_TYPE_INVALID;\n}\n","import { Injectable } from '@angular/core';\nimport {\n BillingApiService,\n CanCreateSubscriptionsRequest,\n CanCreateSubscriptionsRequestSubscriptionItemInterface,\n CanCreateSubscriptionsResponse,\n ChangeCustomUnitPriceRequest,\n ChangeFrequencyRequest,\n ChangeRenewalDateRequest,\n Commitment as CommitmentApi,\n Consumer,\n CreatePricingPlanProductRequest,\n CreateSubscriptionRequest,\n CreateSubscriptionResponse,\n Currency as InternalCurrency,\n DeletePricingPlanProductRequest,\n ExpireBillableItemRequest,\n ExportSubscriptionsRequest,\n FieldMask,\n GenerateVendorReportRequest,\n GetBillableItemRequest,\n GetMultiCustomerSummariesRequest,\n GetMultiProductRequest,\n GetMultiProductResponse,\n GetPricingPlanProductRequest,\n GetPurchaseCostRequest,\n GetPurchaseCostResponse,\n GetRevenueStatsRequest,\n ListBillableItemsRequest,\n ListContractsRequest,\n ListMerchantBillingReportsRequest,\n ListPricingPlanProductsRequest,\n ListProductsRequest,\n ListPurchaseItemsRequestListPurchaseItemsFilters,\n ListPurchaseRequest,\n ListSubscriptionsRequest,\n MerchantReportStatus,\n PagedRequestOptions,\n PauseDunningRequest,\n PricingApiService,\n PurchaseApiService,\n ResumeDunningRequest,\n RetryPurchaseRequest,\n SetAutoBillableRequest,\n UpdatePricingPlanProductRequest,\n UpdateSubscriptionRequest,\n UpdateSubscriptionResponse,\n VendorApiService,\n VoidPurchaseRequest,\n} from '@vendasta/billing';\nimport {\n BillingStrategy,\n billingStrategyFromAPI,\n billingStrategyToAPI,\n Currency,\n currencyToApi,\n ListPricingPlanProductFilter,\n PricingPlanProduct,\n pricingPlanProductFromApi,\n} from './pricing';\n\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport { RevenueApiService } from './revenue/revenue.service';\nimport { MerchantReportApiService } from './merchant-report/merchant-report.service';\nimport { MerchantReport } from './merchant-report/merchant-report';\nimport { HttpResponse } from '@angular/common/http';\nimport { ProductPricing, productPricingFromApi } from './pricing/product-pricing';\nimport { PagedResponse } from './core/paged-response';\nimport { Frequency, frequencyToApi } from './pricing/frequency';\nimport { Commitment } from './pricing/commitment';\nimport { CurrencyPricingMap, currencyPricingMapToApi } from './pricing/pricing-plan-product';\nimport { Purchase, purchaseFromApi, PurchaseItem, purchaseItemFromApi } from './purchase/purchase';\nimport { ListPurchaseFilter } from './purchase/list-purchases';\nimport { CustomerSummary, customerSummaryFromApi } from './customer_summary/customer-summary';\nimport { Contract, contractFromApi } from './contract';\nimport { Product, productFromApi } from './product/product';\nimport { ListProductsFilter, listProductsFilterToApi } from './product/list-products';\nimport {\n BillableItem,\n billableItemFromApi,\n ListBillableItemsFilter,\n ListSubscriptionsFilter,\n SubscriptionsProjectionFilter,\n} from './billable-item/billable-item';\nimport { CanCreateSubscriptionsItem } from './subscription';\n\nconst isCanCreateSubscriptionsRequestSubscriptionItem = (\n li: CanCreateSubscriptionsRequestSubscriptionItemInterface | undefined,\n): li is CanCreateSubscriptionsRequestSubscriptionItemInterface => {\n return !!li;\n};\n@Injectable({ providedIn: 'root' })\nexport class BillingService {\n constructor(\n private billingApi: BillingApiService,\n private revenueApi: RevenueApiService,\n private merchantReportApi: MerchantReportApiService,\n private pricingApi: PricingApiService,\n private purchaseApi: PurchaseApiService,\n private vendorApi: VendorApiService,\n ) {}\n\n /** deprecated */\n getPurchaseCost(merchantId: string, sku: string, quantity: number): Observable {\n const req = new GetPurchaseCostRequest({\n merchantId: merchantId,\n sku: sku,\n quantity: quantity,\n });\n return this.billingApi.getPurchaseCost(req).pipe(\n map((response) => {\n if (!response.currency) {\n response.currency = InternalCurrency.USD;\n }\n return response;\n }),\n );\n }\n\n /** deprecated: Use canCreateSubscriptionsWithFrequencies instead. */\n canCreateSubscriptions(\n merchantId: string,\n skus: { [sku: string]: number },\n ): Observable {\n const req = new CanCreateSubscriptionsRequest({\n merchantId: merchantId,\n skus: skus,\n });\n return this.billingApi.canCreateSubscriptions(req);\n }\n\n canCreateSubscriptionsWithFrequencies(\n merchantId: string,\n items: CanCreateSubscriptionsItem[],\n ): Observable {\n const req = new CanCreateSubscriptionsRequest({\n merchantId: merchantId,\n items: (items || [])\n .map((item) => {\n if (!item) {\n return undefined;\n }\n return {\n sku: item.sku,\n frequency: frequencyToApi(item.frequency),\n quantity: item.quantity || 0,\n } as CanCreateSubscriptionsRequestSubscriptionItemInterface;\n })\n .filter(isCanCreateSubscriptionsRequestSubscriptionItem),\n });\n return this.billingApi.canCreateSubscriptions(req);\n }\n\n downloadRevenueCsv(filename: string): Observable {\n return this.revenueApi.downloadCsv({ filename });\n }\n\n downloadBillingReportCsv(merchantId: string, year: number, month: number): Observable {\n return this.merchantReportApi.downloadCsv({ merchantId, year, month });\n }\n\n generateBillingReportCsv(merchantId: string, year: number, month: number): Observable {\n return this.merchantReportApi.generateCsv({ merchantId, year, month });\n }\n\n listMerchantBillingReports(\n merchantId: string,\n cursor: string,\n pageSize: number,\n ): Observable> {\n const req = new ListMerchantBillingReportsRequest({\n merchantId: merchantId,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listMerchantBillingReports(req).pipe(\n map((resp) => {\n const reports = (resp.reports || []).map((r) => {\n return {\n merchantId: r.merchantId,\n year: r.year,\n month: r.month,\n created: r.created,\n status: MerchantReportStatus[r.status || 0],\n } as MerchantReport;\n });\n return new PagedResponse(reports, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }),\n );\n }\n\n canBillCreateSnapshot(merchantId: string): Observable> {\n return this.billingApi.canBillItem({ merchantId: merchantId, sku: 'ST' });\n }\n\n canBillRefreshSnapshot(merchantId: string): Observable> {\n return this.billingApi.canBillItem({ merchantId: merchantId, sku: 'snapshotreportrefresh' });\n }\n\n canBillItem(merchantId: string, sku: string): Observable {\n return this.billingApi.canBillItem({ merchantId: merchantId, sku: sku }).pipe(map((response) => response.ok));\n }\n\n createPricingPlanProduct(\n pricingPlanId: string,\n sku: string,\n frequency: Frequency,\n pricing: CurrencyPricingMap,\n commitment: Commitment,\n strategy: BillingStrategy,\n volumeCommitment: number,\n volumeCommitmentStartsAt?: Date,\n volumeCommitmentEndsAt?: Date,\n ): Observable {\n const request = new CreatePricingPlanProductRequest({\n pricingPlanId,\n sku,\n volumeCommitment,\n volumeCommitmentStartsAt,\n volumeCommitmentEndsAt,\n });\n request.frequency = frequencyToApi(frequency);\n request.pricing = currencyPricingMapToApi(pricing);\n request.commitment = new CommitmentApi(commitment);\n request.strategy = billingStrategyToAPI(strategy);\n return this.billingApi.createPricingPlanProduct(request).pipe(mapTo(true));\n }\n\n updatePricingPlanProduct(\n pricingPlanId: string,\n sku: string,\n {\n frequency,\n pricing,\n commitment,\n strategy,\n volumeCommitment,\n volumeCommitmentStartsAt,\n volumeCommitmentEndsAt,\n }: {\n frequency?: Frequency;\n pricing?: CurrencyPricingMap;\n commitment?: Commitment;\n strategy?: BillingStrategy;\n volumeCommitment?: number;\n volumeCommitmentStartsAt?: Date;\n volumeCommitmentEndsAt?: Date;\n },\n ): Observable {\n const fieldMask = new FieldMask({ paths: [] });\n const request = new UpdatePricingPlanProductRequest({ pricingPlanId, sku });\n\n if (frequency !== null) {\n request.frequency = frequencyToApi(frequency);\n fieldMask.paths.push('frequency');\n }\n if (pricing !== null) {\n request.pricing = currencyPricingMapToApi(pricing);\n fieldMask.paths.push('pricing');\n }\n if (commitment !== null) {\n request.commitment = new CommitmentApi(commitment);\n fieldMask.paths.push('commitment');\n }\n if (strategy !== null) {\n request.strategy = billingStrategyToAPI(strategy);\n fieldMask.paths.push('strategy');\n }\n if (volumeCommitment !== null) {\n request.volumeCommitment = volumeCommitment || 0;\n fieldMask.paths.push('volumeCommitment');\n }\n if (volumeCommitmentStartsAt) {\n request.volumeCommitmentStartsAt = volumeCommitmentStartsAt;\n fieldMask.paths.push('volumeCommitmentStartsAt');\n }\n if (volumeCommitmentEndsAt) {\n request.volumeCommitmentEndsAt = volumeCommitmentEndsAt;\n fieldMask.paths.push('volumeCommitmentEndsAt');\n }\n return this.billingApi.updatePricingPlanProduct(request).pipe(mapTo(true));\n }\n\n deletePricingPlanProduct(pricingPlanId: string, sku: string): Observable {\n const request = new DeletePricingPlanProductRequest({ pricingPlanId, sku });\n return this.billingApi.deletePricingPlanProduct(request).pipe(mapTo(true));\n }\n\n /** deprecated - Use getMultiWholesalePrices from the WholesalePricingService */\n getMultiProductPricing(\n merchantId: string,\n skus: string[],\n pricingPlanId?: string,\n ): Observable<{ [sku: string]: ProductPricing }> {\n return this.billingApi.getMultiProductPricing({ merchantId, skus, pricingPlanId }).pipe(\n map((r) => {\n const productPricesApi = r.productPrices || {};\n const productPricings: { [key: string]: ProductPricing } = {};\n for (const k of Object.keys(productPricesApi)) {\n const productPricingResponse = productPricesApi[k];\n productPricings[k] = productPricingFromApi(productPricingResponse);\n }\n return productPricings;\n }),\n );\n }\n\n /** deprecated - Use getMultiRetailPrices from the RetailPricingService */\n getMultiRetailPricing(\n merchantId: string,\n currency: Currency,\n skus: string[],\n groupId?: string,\n ): Observable<{ [sku: string]: ProductPricing }> {\n const requestGroupId: string = groupId === undefined ? '' : groupId;\n return this.pricingApi\n .getMultiRetail({ merchantId, currency: currencyToApi(currency), skus, groupId: requestGroupId })\n .pipe(\n map((r) => {\n const retailPricesApi = r.productPrices || {};\n const retailPricings: { [key: string]: ProductPricing } = {};\n for (const k of Object.keys(retailPricesApi)) {\n const retailPricingResponse = retailPricesApi[k];\n retailPricings[k] = productPricingFromApi(retailPricingResponse);\n }\n return retailPricings;\n }),\n );\n }\n\n listPricingPlanProducts(\n filters: ListPricingPlanProductFilter,\n cursor: string,\n pageSize: number,\n ): Observable> {\n const req = new ListPricingPlanProductsRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listPricingPlanProducts(req).pipe(\n map((response) => {\n const products = (response.products || []).map((p) => pricingPlanProductFromApi(p));\n return new PagedResponse(products, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n getPricingPlanProduct(pricingPlanId: string, sku: string): Observable {\n const req = new GetPricingPlanProductRequest({ pricingPlanId, sku });\n return this.billingApi.getPricingPlanProduct(req).pipe(\n map((resp) => {\n const ppp: PricingPlanProduct = pricingPlanProductFromApi(resp.pricingPlanProduct);\n ppp.defaultStrategy = billingStrategyFromAPI(resp.pricingPlanDefaultStrategy);\n return ppp;\n }),\n );\n }\n\n listPurchases(filters: ListPurchaseFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListPurchaseRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.purchaseApi.list(req).pipe(\n map((response) => {\n const purchases = (response.purchases || []).map((purchase) => purchaseFromApi(purchase));\n return new PagedResponse(purchases, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n voidPurchase(merchantId: string, purchaseId: string, day: string): Observable {\n const req = new VoidPurchaseRequest({ purchaseId, merchantId, day });\n return this.purchaseApi.void(req).pipe(mapTo(true));\n }\n\n listPurchaseItems(\n filters: ListPurchaseItemsRequestListPurchaseItemsFilters,\n cursor: string,\n pageSize: number,\n ): Observable> {\n const req = new ListPurchaseRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.purchaseApi.listPurchaseItems(req).pipe(\n map((response) => {\n const purchaseItems = (response.purchaseItems || []).map((purchaseItem) =>\n purchaseItemFromApi(purchaseItem, response.currency),\n );\n return new PagedResponse(purchaseItems, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n retryPurchase(merchantId: string, day: string, purchaseId: string): Observable {\n const req = new RetryPurchaseRequest({\n merchantId: merchantId,\n day: day,\n purchaseId: purchaseId,\n });\n return this.purchaseApi.retry(req).pipe(map(() => true));\n }\n\n getMultiCustomerSummaries(\n merchantId: string,\n customerIds: string[],\n periodStart: Date,\n periodEnd: Date,\n ): Observable {\n const req = new GetMultiCustomerSummariesRequest({\n customerIds: customerIds,\n merchantId: merchantId,\n periodStart: periodStart,\n periodEnd: periodEnd,\n });\n return this.purchaseApi.getMultiCustomerSummaries(req).pipe(\n map((response) => {\n return (response.customerSummaries || []).map((customerSummary) => customerSummaryFromApi(customerSummary));\n }),\n );\n }\n\n getMultiContract(merchantIds: string[]): Observable<{ [sku: string]: Contract }> {\n return this.billingApi.getMultiContract({ merchantIds: merchantIds }).pipe(\n map((resp) => {\n const contractsAPI = resp.contracts || {};\n const contracts: { [key: string]: Contract } = {};\n for (const k of Object.keys(contractsAPI)) {\n const contractResponse = contractsAPI[k];\n contracts[k] = contractFromApi(contractResponse);\n }\n return contracts;\n }),\n );\n }\n\n getMerchantWholesaleCurrency(merchantId: string): Observable {\n return this.billingApi.getMerchantWholesaleCurrency({ merchantId: merchantId }).pipe(\n map((resp) => {\n return InternalCurrency[resp.currency] || 'USD';\n }),\n );\n }\n\n generateVendorReport(\n skus: string[],\n periodStart: Date,\n periodEnd: Date,\n vendorName: string,\n markAsApproved: boolean,\n ): Observable {\n const req = new GenerateVendorReportRequest({\n skus: skus,\n periodStart: periodStart,\n periodEnd: periodEnd,\n vendorName: vendorName,\n markAsApproved: markAsApproved,\n });\n return this.vendorApi.generateReport(req).pipe(map((response) => response.url));\n }\n\n getVendorStats(skus: string[], periodStart: Date, periodEnd: Date): Observable {\n const req = new GetRevenueStatsRequest({\n skus: skus,\n periodStart: periodStart,\n periodEnd: periodEnd,\n });\n return this.vendorApi.getRevenueStats(req).pipe(map((response) => response.totalRevenue || 0));\n }\n\n listContracts(cursor: string, pageSize: number): Observable> {\n const req = new ListContractsRequest({\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listContracts(req).pipe(\n map((response) => {\n const contracts = (response.contracts || []).map((c) => contractFromApi(c));\n return new PagedResponse(contracts, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n listProducts(\n merchantId: string,\n searchTerm: string,\n filters: ListProductsFilter,\n cursor: string,\n pageSize: number,\n ): Observable> {\n const apiFilters = listProductsFilterToApi(filters);\n const req = new ListProductsRequest({\n merchantId,\n searchTerm,\n filters: apiFilters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listProducts(req).pipe(\n map((response) => {\n const products = (response.products || []).map((p) => productFromApi(p));\n return new PagedResponse(products, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n getMultiProduct(skus: string[]): Observable> {\n const req = new GetMultiProductRequest({\n skus: skus,\n });\n return this.billingApi.getMultiProduct(req).pipe(\n map((response: GetMultiProductResponse) => {\n const productsMap = new Map();\n skus.forEach((sku) => {\n productsMap.set(sku, productFromApi(response.products[sku]));\n });\n return productsMap;\n }),\n );\n }\n\n getBillableItem(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n projectionFilter?: SubscriptionsProjectionFilter,\n ): Observable {\n const req = new GetBillableItemRequest({\n merchantId,\n sku,\n customerId,\n orderId,\n projectionFilter,\n });\n\n return this.billingApi.getBillableItem(req).pipe(map((response) => billableItemFromApi(response.item)));\n }\n\n expireSubscription(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n expiry: Date,\n ): Observable> {\n const req = new ExpireBillableItemRequest({\n merchantId,\n sku,\n customerId,\n orderId,\n expiry,\n });\n return this.billingApi.expireBillableItem(req);\n }\n\n unexpireSubscription(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n ): Observable> {\n const req = new ExpireBillableItemRequest({\n merchantId,\n sku,\n customerId,\n orderId,\n });\n return this.billingApi.unexpireBillableItem(req);\n }\n\n changeBillableItemFrequency(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n freq: Frequency,\n ): Observable> {\n const req = new ChangeFrequencyRequest({\n merchantId: merchantId,\n sku: sku,\n customerId: customerId,\n orderId: orderId,\n frequency: frequencyToApi(freq),\n });\n\n return this.billingApi.changeFrequency(req);\n }\n\n changeBillableItemNextRenewalDate(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n next: Date,\n ): Observable> {\n const req = new ChangeRenewalDateRequest({\n merchantId: merchantId,\n sku: sku,\n customerId: customerId,\n orderId: orderId,\n nextRenewalDate: next,\n });\n\n return this.billingApi.changeRenewalDate(req);\n }\n\n changeBillableItemCustomUnitPrice(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n amount: number,\n ): Observable> {\n const req = new ChangeCustomUnitPriceRequest({\n merchantId: merchantId,\n sku: sku,\n customerId: customerId,\n orderId: orderId,\n customUnitPrice: amount,\n });\n\n return this.billingApi.changeCustomUnitPrice(req);\n }\n\n //deprecated: use listSubscriptions\n listBillableItems(\n searchTerm: string,\n filters: ListBillableItemsFilter,\n cursor: string,\n pageSize: number,\n ): Observable> {\n const req = new ListBillableItemsRequest({\n searchTerm: searchTerm,\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listBillableItems(req).pipe(\n map((response) => {\n const items = (response.items || []).map((item) => billableItemFromApi(item));\n return new PagedResponse(items, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n listSubscriptions(\n filters: ListSubscriptionsFilter,\n cursor: string,\n pageSize: number,\n projectionFilter?: SubscriptionsProjectionFilter,\n ): Observable> {\n const req = new ListSubscriptionsRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n projectionFilter: projectionFilter,\n });\n return this.billingApi.listSubscriptions(req).pipe(\n map((response) => {\n const items = (response.subscriptions || []).map((item) => billableItemFromApi(item));\n return new PagedResponse(items, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n listRetailSubscriptions(\n filters: ListSubscriptionsFilter,\n cursor: string,\n pageSize: number,\n projectionFilter?: SubscriptionsProjectionFilter,\n ): Observable> {\n const req = new ListSubscriptionsRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n projectionFilter: projectionFilter,\n });\n return this.billingApi.listRetailSubscriptions(req).pipe(\n map((response) => {\n const items = (response.subscriptions || []).map((item) => billableItemFromApi(item));\n return new PagedResponse(items, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n startRevRecBackfillWorkflow(): Observable> {\n return this.billingApi.startRevRecTemplateBackfill({});\n }\n\n pauseDunning(merchantId: string, purchaseId: string, day: string, pauseDunningUntil: Date): Observable {\n const req = new PauseDunningRequest({ merchantId, purchaseId, day, pauseDunningUntil });\n return this.purchaseApi.pauseDunning(req).pipe(map((response) => response.ok));\n }\n\n resumeDunning(merchantId: string, purchaseId: string, day: string): Observable {\n const req = new ResumeDunningRequest({ merchantId, purchaseId, day });\n return this.purchaseApi.resumeDunning(req).pipe(map((response) => response.ok));\n }\n\n exportSubscriptions(filters: ListSubscriptionsFilter, consumer?: Consumer): Observable {\n const req = new ExportSubscriptionsRequest({\n filters: filters,\n consumer: consumer,\n });\n return this.billingApi.exportSubscriptions(req).pipe(map(() => null));\n }\n\n createSubscription(req: CreateSubscriptionRequest): Observable {\n return this.billingApi.createSubscription(req);\n }\n\n setAutoBillable(subscriptionId: string, autoBillable: boolean): Observable> {\n const req = new SetAutoBillableRequest({\n subscriptionId: subscriptionId,\n autoBillable: autoBillable,\n });\n return this.billingApi.setAutoBillable(req);\n }\n\n updateSubscription(subscription: BillableItem, fieldMask: FieldMask): Observable {\n const req = new UpdateSubscriptionRequest({\n subscription: {\n subscriptionId: subscription.subscriptionId,\n description: subscription.description,\n billingCycleAnchor: subscription.billingCycleAnchor,\n },\n fieldMask: fieldMask,\n });\n return this.billingApi.updateSubscription(req);\n }\n}\n","import { PaymentSource as PaymentSourceApi } from '@vendasta/billing';\n\nexport enum PaymentSource {\n UNSET = 'Unset',\n STRIPE = 'Stripe',\n VCASH = 'vCash',\n}\n\nexport function paymentSourceFromApi(pApi: PaymentSourceApi | undefined): PaymentSource {\n switch (pApi) {\n case PaymentSourceApi.PAYMENT_SOURCE_STRIPE:\n return PaymentSource.STRIPE;\n case PaymentSourceApi.PAYMENT_SOURCE_VCASH:\n return PaymentSource.VCASH;\n default:\n return PaymentSource.UNSET;\n }\n}\n","import { PaymentStatus as PaymentStatusApi } from '@vendasta/billing';\n\nexport enum PaymentStatus {\n Unset = 'UNSET',\n Failed = 'FAILED',\n Succeeded = 'SUCCEEDED',\n}\n\nexport function paymentStatusFromApi(psApi: PaymentStatusApi | undefined): PaymentStatus {\n switch (psApi) {\n case PaymentStatusApi.PAYMENT_STATUS_FAILED:\n return PaymentStatus.Failed;\n case PaymentStatusApi.PAYMENT_STATUS_SUCCEEDED:\n return PaymentStatus.Succeeded;\n }\n return PaymentStatus.Unset;\n}\n","import { PaymentAllocationType as PaymentAllocationTypeApi } from '@vendasta/billing';\n\nexport enum PaymentAllocationType {\n UNSET = 'UNSET',\n PURCHASE = 'PURCHASE',\n INVOICE = 'INVOICE',\n}\n\nexport function paymentAllocationTypeFromApi(pApi: PaymentAllocationTypeApi): PaymentAllocationType {\n switch (pApi) {\n case PaymentAllocationTypeApi.PAYMENT_ALLOCATION_TYPE_INVOICE:\n return PaymentAllocationType.INVOICE;\n case PaymentAllocationTypeApi.PAYMENT_ALLOCATION_TYPE_PURCHASE:\n return PaymentAllocationType.PURCHASE;\n default:\n return PaymentAllocationType.UNSET;\n }\n}\n","import { PaymentPaymentAllocationInterface, PaymentInterface } from '@vendasta/billing';\nimport { Currency, currencyFromApi } from '../pricing';\nimport { PaymentSource, paymentSourceFromApi } from './payment-source';\nimport { PaymentStatus, paymentStatusFromApi } from './payment-status';\nimport { PaymentAllocationType, paymentAllocationTypeFromApi } from './payment-allocation-type';\nimport { PaymentFacilitatorType } from './payment-facilitator-type';\n\nexport interface Intent {\n stripeClientSecret?: string;\n intentId?: string;\n}\n\nexport interface ListPaymentsFilter {\n merchantId?: string;\n allocationIds?: string[];\n start?: Date;\n end?: Date;\n}\n\nexport interface Payment {\n merchantId: string;\n created?: Date;\n currency: Currency;\n paymentSource: PaymentSource;\n allocations: PaymentAllocation[];\n total: number;\n description: string;\n externalReferenceId: string;\n status: PaymentStatus;\n}\n\nexport interface PaymentAllocation {\n referenceId: string;\n amount: number;\n type: PaymentAllocationType;\n}\n\nexport function paymentFromApi(pApi: PaymentInterface): Payment {\n return {\n merchantId: pApi.merchantId || '',\n created: pApi.created ? new Date(pApi.created) : undefined,\n currency: pApi.currency ? currencyFromApi(pApi.currency) : Currency.USD,\n paymentSource: paymentSourceFromApi(pApi.paymentSource),\n allocations: pApi.allocations ? pApi.allocations.map((p) => paymentAllocationFromApi(p)) : [],\n total: pApi.total || 0,\n description: pApi.description || '',\n externalReferenceId: pApi.externalReferenceId || '',\n status: paymentStatusFromApi(pApi.status),\n };\n}\n\nexport function paymentAllocationFromApi(pApi: PaymentPaymentAllocationInterface): PaymentAllocation {\n return {\n referenceId: pApi.referenceId || '',\n amount: pApi.amount || 0,\n type: pApi.type ? paymentAllocationTypeFromApi(pApi.type) : PaymentAllocationType.UNSET,\n };\n}\n\nexport interface RetailProvider {\n statementDescriptor: string;\n stripeConnectId: string;\n paymentFacilitatorType: PaymentFacilitatorType;\n countryCode: string;\n}\n\nexport interface DeclineReason {\n description: string;\n nextSteps: string;\n}\n\nexport const DeclineReasons: Map = new Map([\n [\n 'authentication_required',\n {\n description: 'PAYMENT_DECLINE_REASON.AUTHENTICATION_REQUIRED.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.AUTHENTICATION_REQUIRED.NEXT_STEPS',\n },\n ],\n [\n 'approve_with_id',\n {\n description: 'PAYMENT_DECLINE_REASON.APPROVE_WITH_ID.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.APPROVE_WITH_ID.NEXT_STEPS',\n },\n ],\n [\n 'call_issuer',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'card_not_supported',\n {\n description: 'PAYMENT.DECRINE_REASON.CARD_NOT_SUPPORTED.DESCRIPTION',\n nextSteps: 'PAYMENT.DECRINE_REASON.CARD_NOT_SUPPORTED.NEXT_STEPS',\n },\n ],\n [\n 'do_not_honor',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'do_not_try_again',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'duplicate_transaction',\n {\n description: 'PAYMENT_DECLINE_REASON.DUPLICATE_TRANSACTION.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.DUPLICATE_TRANSACTION.NEXT_STEPS',\n },\n ],\n [\n 'expired_card',\n {\n description: 'PAYMENT_DECLINE_REASON.EXPIRED_CARD.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.EXPIRED_CARD.NEXT_STEPS',\n },\n ],\n [\n 'fraudulent',\n {\n description: 'PAYMENT_DECLINE_REASON.FRAUDULENT.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.FRAUDULENT.NEXT_STEPS',\n },\n ],\n [\n 'generic_decline',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'incorrect_number',\n {\n description: 'PAYMENT_DECLINE_REASON.INCORRECT_NUMBER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INCORRECT_NUMBER.NEXT_STEPS',\n },\n ],\n [\n 'incorrect_cvc',\n {\n description: 'PAYMENT_DECLINE_REASON.INCORRECT_CVC.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INCORRECT_CVC.NEXT_STEPS',\n },\n ],\n [\n 'incorrect_pin',\n {\n description: 'PAYMENT_DECLINE_REASON.INCORRECT_PIN.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INCORRECT_PIN.NEXT_STEPS',\n },\n ],\n [\n 'incorrect_zip',\n {\n description: 'PAYMENT_DECLINE_REASON.INCORRECT_ZIP.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INCORRECT_ZIP.NEXT_STEPS',\n },\n ],\n [\n 'insufficient_funds',\n {\n description: 'PAYMENT_DECLINE_REASON.INSUFFICIENT_FUNDS.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INSUFFICIENT_FUNDS.NEXT_STEPS',\n },\n ],\n [\n 'invalid_account',\n {\n description: 'PAYMENT_DECLINE_REASON.INVALID_ACCOUNT.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INVALID_ACCOUNT.NEXT_STEPS',\n },\n ],\n [\n 'invalid_amount',\n {\n description: 'PAYMENT_DECLINE_REASON.INVALID_AMOUNT.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INVALID_AMOUNT.NEXT_STEPS',\n },\n ],\n [\n 'invalid_cvc',\n {\n description: 'PAYMENT_DECLINE_REASON.INVALID_CVC.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INVALID_CVC.NEXT_STEPS',\n },\n ],\n [\n 'invalid_expiry_year',\n {\n description: 'PAYMENT_DECLINE_REASON.INVALID_EXPIRY_YEAR.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INVALID_EXPIRY_YEAR.NEXT_STEPS',\n },\n ],\n [\n 'invalid_number',\n {\n description: 'PAYMENT_DECLINE_REASON.INVALID_NUMBER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INVALID_NUMBER.NEXT_STEPS',\n },\n ],\n [\n 'invalid_pin',\n {\n description: 'PAYMENT_DECLINE_REASON.INVALID_PIN.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.INVALID_PIN.NEXT_STEPS',\n },\n ],\n [\n 'issuer_not_available',\n {\n description: 'PAYMENT_DECLINE_REASON.ISSUER_NOT_AVAILABLE.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.ISSUER_NOT_AVAILABLE.NEXT_STEPS',\n },\n ],\n [\n 'lost_card',\n {\n description: 'PAYMENT_DECLINE_REASON.LOST_CARD.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.LOST_CARD.NEXT_STEPS',\n },\n ],\n [\n 'merchant_blacklist',\n {\n description: 'PAYMENT_DECLINE_REASON.MERCHANT_BLACKLIST.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.MERCHANT_BLACKLIST.NEXT_STEPS',\n },\n ],\n [\n 'new_account_information_available',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'no_action_taken',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'not_permitted',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'offline_pin_required',\n {\n description: 'PAYMENT_DECLINE_REASON.OFFLINE_PIN_REQUIRED.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.OFFLINE_PIN_REQUIRED.NEXT_STEPS',\n },\n ],\n [\n 'online_or_offline_pin_required',\n {\n description: 'PAYMENT_DECLINE_REASON.ONLINE_OR_OFFLINE_PIN_REQUIRED.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.ONLINE_OR_OFFLINE_PIN_REQUIRED.NEXT_STEPS',\n },\n ],\n [\n 'pickup_card',\n {\n description: 'PAYMENT_DECLINE_REASON.PICKUP_CARD.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.PICKUP_CARD.NEXT_STEPS',\n },\n ],\n [\n 'pin_try_exceeded',\n {\n description: 'PAYMENT_DECLINE_REASON.PIN_TRY_EXCEEDED.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.PIN_TRY_EXCEEDED.NEXT_STEPS',\n },\n ],\n [\n 'processing_error',\n {\n description: 'PAYMENT_DECLINE_REASON.PROCESSING_ERROR.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.PROCESSING_ERROR.NEXT_STEPS',\n },\n ],\n [\n 'reenter_transaction',\n {\n description: 'PAYMENT_DECLINE_REASON.REENTER_TRANSACTION.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.REENTER_TRANSACTION.NEXT_STEPS',\n },\n ],\n [\n 'restricted_card',\n {\n description: 'PAYMENT_DECLINE_REASON.RESTRICTED_CARD.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.RESTRICTED_CARD.NEXT_STEPS',\n },\n ],\n [\n 'revocation_of_all_authorizations',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'revocation_of_authorization',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'security_violation',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'service_not_allowed',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'stolen_card',\n {\n description: 'PAYMENT_DECLINE_REASON.STOLEN_CARD.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.STOLEN_CARD.NEXT_STEPS',\n },\n ],\n [\n 'stop_payment_order',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'testmode_decline',\n {\n description: 'PAYMENT_DECLINE_REASON.TESTMODE_DECLINE.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.TESTMODE_DECLINE.NEXT_STEPS',\n },\n ],\n [\n 'transaction_not_allowed',\n {\n description: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.UNKNOWN_CONTACT_ISSUER.NEXT_STEPS',\n },\n ],\n [\n 'try_again_later',\n {\n description: 'PAYMENT_DECLINE_REASON.TRY_AGAIN_LATER.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.TRY_AGAIN_LATER.NEXT_STEPS',\n },\n ],\n [\n 'withdrawal_count_limit_exceeded',\n {\n description: 'PAYMENT_DECLINE_REASON.WITHDRAWAL_COUNT_LIMIT_EXCEEDED.DESCRIPTION',\n nextSteps: 'PAYMENT_DECLINE_REASON.WITHDRAWAL_COUNT_LIMIT_EXCEEDED.NEXT_STEPS',\n },\n ],\n]);\n","export class MerchantProviderDeterminant {\n merchantId: string;\n\n constructor(merchantId: string) {\n this.merchantId = merchantId;\n }\n}\n\nexport class CountryProviderDeterminant {\n countryCode: string;\n\n constructor(countryCode: string) {\n this.countryCode = countryCode;\n }\n}\n","import { PaymentCard as ApiPaymentCard, PaymentCardCARD_TYPE, PaymentCardFUNDING_TYPE } from '@vendasta/billing';\n\nexport interface PaymentCard {\n cardType: PaymentCardTypeLabel;\n fundingType: FundingTypeLabel;\n id: string;\n lastFourDigits: string;\n expiryMonth: number;\n expiryYear: number;\n cardholderName?: string;\n address?: string;\n city?: string;\n state?: string;\n country?: string;\n zipCode?: string;\n default?: boolean;\n}\n\nexport enum FundingType {\n PREPAID = 'Pre-paid',\n DEBIT = 'Debit',\n CREDIT = 'Credit',\n UNKNOWN = 'Unknown',\n}\n\nexport interface FundingTypeLabel {\n value: string;\n id: FundingType;\n}\n\nexport enum PaymentCardType {\n AMEX = 'American Express',\n VISA = 'Visa',\n MASTERCARD = 'Mastercard',\n JCB = 'JCB',\n DINERS_CLUB = 'Diners Club',\n DISCOVER = 'Discover',\n UNKNOWN = 'Unknown',\n}\n\nexport interface PaymentCardTypeLabel {\n id: PaymentCardType;\n value: string;\n}\n\nconst unknownCardType = { id: PaymentCardType.UNKNOWN, value: 'Unknown' };\nconst paymentCardTypeLabelMap = new Map([\n [PaymentCardCARD_TYPE.AMEX, { id: PaymentCardType.AMEX, value: 'American Express' }],\n [PaymentCardCARD_TYPE.VISA, { id: PaymentCardType.VISA, value: 'Visa' }],\n [PaymentCardCARD_TYPE.MASTERCARD, { id: PaymentCardType.MASTERCARD, value: 'Mastercard' }],\n [PaymentCardCARD_TYPE.JCB, { id: PaymentCardType.JCB, value: 'JCB' }],\n [PaymentCardCARD_TYPE.DINERS_CLUB, { id: PaymentCardType.DINERS_CLUB, value: 'Diners Club' }],\n [PaymentCardCARD_TYPE.DISCOVER, { id: PaymentCardType.DISCOVER, value: 'Discover' }],\n [PaymentCardCARD_TYPE.UNKNOWN, unknownCardType],\n]);\n\nfunction convertApiPaymentCardType(t: PaymentCardCARD_TYPE): PaymentCardTypeLabel {\n return paymentCardTypeLabelMap.get(t) || unknownCardType;\n}\n\nconst unknownFundingType = { id: FundingType.UNKNOWN, value: 'Unknown' };\nconst fundingTypeLabelMap = new Map([\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_DEBIT, { id: FundingType.DEBIT, value: 'Debit' }],\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_CREDIT, { id: FundingType.CREDIT, value: 'Credit' }],\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_PREPAID, { id: FundingType.PREPAID, value: 'Pre-paid' }],\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_UNKNOWN, unknownFundingType],\n]);\n\nexport function convertApiFundingType(t: PaymentCardFUNDING_TYPE): FundingTypeLabel {\n return fundingTypeLabelMap.get(t) || unknownFundingType;\n}\n\nexport function convertApiPaymentCardDetails(c: ApiPaymentCard): PaymentCard {\n return {\n cardType: convertApiPaymentCardType(c.cardType),\n fundingType: convertApiFundingType(c.fundingType),\n id: c.cardId,\n lastFourDigits: c.lastFourDigits,\n expiryMonth: c.expiryMonth,\n expiryYear: c.expiryYear,\n cardholderName: c.cardholderName,\n address: c.address,\n city: c.city,\n state: c.state,\n country: c.country,\n zipCode: c.zipCode,\n default: c.default,\n } as PaymentCard;\n}\n","export { PaymentCardService } from './payment-card.service';\nexport { PaymentCard, PaymentCardTypeLabel, PaymentCardType, FundingTypeLabel, FundingType } from './payment-card';\n","import {\n Adjustment as AdjustmentApi,\n CardType,\n PaymentStatus as PaymentStatusApi,\n PayoutStatus as RetailPayoutStatusApi,\n PayoutType as RetailPayoutTypeApi,\n RetailPayment as RetailPaymentApi,\n RetailPaymentACHDetails,\n RetailPaymentCardDetails as RetailPaymentCardDetailsApi,\n RetailPaymentPaymentMethodDetailsType as RetailPaymentPaymentMethodDetailsTypeApi,\n RetailPaymentReferenceType as RetailPaymentReferenceTypeApi,\n RetailPayout as RetailPayoutApi,\n RetailRefund as RetailRefundApi,\n RetailRefundFailureReason as ApiFailureReason,\n RetailRefundReason as ApiRefundReason,\n RetailRefundStatus as ApiRefundStatus,\n RetailTransaction as RetailTransactionApi,\n} from '@vendasta/billing';\nimport { Dispute, disputeFromApi, DisputeStatus } from './dispute';\nimport { PaymentCardType } from '../payment-card';\nimport { PaymentFacilitatorType, paymentFacilitatorTypeFromApi } from './payment-facilitator-type';\nimport { DeclineReasons } from './payment';\n\nexport type ExtendedRetailPaymentStatus = RetailPaymentStatus | DisputeStatus;\n\nexport enum RetailPaymentStatus {\n Failed = 'Failed',\n Succeeded = 'Succeeded',\n Refunded = 'Refunded',\n PartiallyRefunded = 'Partially refunded',\n Disputed = 'Disputed',\n Pending = 'Pending',\n Unset = 'Unset',\n}\n\nexport enum RetailRefundReason {\n Unset = 'Unset',\n Duplicate = 'Duplicate',\n Fraudulent = 'Fraudulent',\n RequestedByCustomer = 'Requested by customer',\n}\n\nexport enum RetailRefundFailureReason {\n Unset = 'Unset',\n LostOrStolenCard = 'Lost or stolen card',\n ExpiredOrCanceledCard = 'Expired or canceled card',\n Unknown = 'Unknown',\n}\n\nexport enum RetailRefundStatus {\n Unset = 'Unset',\n Pending = 'Pending',\n Succeeded = 'Succeeded',\n Failed = 'Failed',\n RequiresAction = 'Requires action',\n Canceled = 'Canceled',\n}\n\nexport enum RetailPayoutStatus {\n Unset = 'Unset',\n Paid = 'Paid',\n Pending = 'Pending',\n InTransit = 'In transit',\n Canceled = 'Canceled',\n Failed = 'Failed',\n}\n\nexport enum RetailPayoutType {\n Unset = 'Unset',\n BankAccount = 'Bank Account',\n Card = 'Card',\n}\n\nexport enum RetailPaymentMethodType {\n Unset = 'unset',\n ACHDebit = 'ach_debit',\n Card = 'card',\n ACSSDebit = 'acss_debit',\n}\n\nexport enum RetailPaymentErrorCode {\n AccountClosed = 'no_account',\n InsufficientFunds = 'insufficient_funds',\n DebitNotAuthorized = 'debit_not_authorized',\n Unknown = 'unknown',\n Unset = '',\n}\n\nexport function isRefundableStatus(status: ExtendedRetailPaymentStatus): boolean {\n const refundableStatuses = [\n RetailPaymentStatus.Succeeded,\n RetailPaymentStatus.PartiallyRefunded,\n ] as ExtendedRetailPaymentStatus[];\n return refundableStatuses.includes(status);\n}\n\nexport function retailRefundReasonFromApi(r: ApiRefundReason): RetailRefundReason | undefined {\n switch (r) {\n case ApiRefundReason.RETAIL_REFUND_REASON_UNSET:\n return RetailRefundReason.Unset;\n case ApiRefundReason.RETAIL_REFUND_REASON_DUPLICATE:\n return RetailRefundReason.Duplicate;\n case ApiRefundReason.RETAIL_REFUND_REASON_FRAUDULENT:\n return RetailRefundReason.Fraudulent;\n case ApiRefundReason.RETAIL_REFUND_REASON_REQUESTED_BY_CUSTOMER:\n return RetailRefundReason.RequestedByCustomer;\n default:\n return undefined;\n }\n}\n\nexport function retailRefundReasonToApi(r: RetailRefundReason): ApiRefundReason {\n switch (r) {\n case RetailRefundReason.Duplicate:\n return ApiRefundReason.RETAIL_REFUND_REASON_DUPLICATE;\n case RetailRefundReason.Fraudulent:\n return ApiRefundReason.RETAIL_REFUND_REASON_FRAUDULENT;\n case RetailRefundReason.RequestedByCustomer:\n return ApiRefundReason.RETAIL_REFUND_REASON_REQUESTED_BY_CUSTOMER;\n default:\n return ApiRefundReason.RETAIL_REFUND_REASON_UNSET;\n }\n}\n\nexport function retailRefundFailureReasonFromApi(r: ApiFailureReason): RetailRefundFailureReason | undefined {\n switch (r) {\n case ApiFailureReason.RETAIL_REFUND_FAILURE_REASON_UNSET:\n return RetailRefundFailureReason.Unset;\n case ApiFailureReason.RETAIL_REFUND_FAILURE_REASON_LOST_OR_STOLEN_CARD:\n return RetailRefundFailureReason.LostOrStolenCard;\n case ApiFailureReason.RETAIL_REFUND_FAILURE_REASON_EXPIRED_OR_CANCELED_CARD:\n return RetailRefundFailureReason.ExpiredOrCanceledCard;\n case ApiFailureReason.RETAIL_REFUND_FAILURE_REASON_UNKNOWN:\n return RetailRefundFailureReason.Unknown;\n default:\n return undefined;\n }\n}\n\nexport function retailRefundStatusFromApi(r: ApiRefundStatus): RetailRefundStatus | undefined {\n switch (r) {\n case ApiRefundStatus.RETAIL_REFUND_STATUS_UNSET:\n return RetailRefundStatus.Unset;\n case ApiRefundStatus.RETAIL_REFUND_STATUS_PENDING:\n return RetailRefundStatus.Pending;\n case ApiRefundStatus.RETAIL_REFUND_STATUS_SUCCEEDED:\n return RetailRefundStatus.Succeeded;\n case ApiRefundStatus.RETAIL_REFUND_STATUS_FAILED:\n return RetailRefundStatus.Failed;\n case ApiRefundStatus.RETAIL_REFUND_STATUS_REQUIRES_ACTION:\n return RetailRefundStatus.RequiresAction;\n case ApiRefundStatus.RETAIL_REFUND_STATUS_CANCELED:\n return RetailRefundStatus.Canceled;\n default:\n return undefined;\n }\n}\n\nexport interface CardDetails {\n cardType: PaymentCardType;\n lastFourDigits: string;\n}\n\nexport interface PaymentMethodTypeDetails {\n lastFourDigits: string;\n}\n\nexport interface RetailRefund {\n id: string;\n amount: number;\n currency: string;\n refundReason?: RetailRefundReason;\n status?: RetailRefundStatus;\n failureReason?: RetailRefundFailureReason;\n created?: Date;\n payment?: RetailPayment;\n}\n\nexport interface RetailPayment {\n id: string;\n merchantId: string;\n created: Date;\n currencyCode: string;\n amount: number;\n referenceId: string;\n referenceType: RetailPaymentReferenceTypeApi;\n description: string;\n customerId: string;\n status?: ExtendedRetailPaymentStatus;\n failureCode: string;\n failureMessage: string;\n applicationFee: number;\n dispute?: Dispute;\n disputed: boolean;\n refunds: RetailRefund[];\n paymentMethodDetailsType: RetailPaymentMethodType;\n cardDetails?: CardDetails;\n achDetails?: PaymentMethodTypeDetails;\n acssDetails?: PaymentMethodTypeDetails;\n paymentFacilitatorFee?: number;\n paymentFacilitatorType?: PaymentFacilitatorType;\n declineReasonDescription?: string;\n declineReasonNextSteps?: string;\n}\n\nexport interface RetailPayout {\n id: string;\n arrivalDate: Date;\n amount: number;\n currencyCode: string;\n status: RetailPayoutStatus;\n type: RetailPayoutType;\n lastFourDigits: string;\n bankName: string;\n bankId: string;\n failureCode: string;\n failureMessage: string;\n}\n\nexport interface Adjustment {\n id: string;\n amount: number;\n currency: string;\n description: string;\n fee: number;\n net: number;\n refund?: RetailRefund;\n dispute?: Dispute;\n created: Date;\n}\n\nexport enum RetailTransactionType {\n payment = 'payment',\n refund = 'refund',\n}\n\nexport interface RetailTransaction {\n payment?: RetailPayment;\n refund?: RetailRefund;\n payoutFailure?: RetailPayout;\n adjustment?: Adjustment;\n}\n\nexport function retailPaymentFromApi(pApi: RetailPaymentApi): RetailPayment {\n const dispute = disputeFromApi(pApi.dispute);\n const declineReason = DeclineReasons.get(pApi.failureCode);\n\n return {\n id: pApi.id || '',\n merchantId: pApi.merchantId || '',\n created: pApi.created || null,\n currencyCode: pApi.currencyCode || '',\n amount: pApi.amount || 0.0,\n referenceId: pApi.referenceId || '',\n referenceType: pApi.referenceType,\n description: pApi.description || '',\n customerId: pApi.customerId || '',\n status: retailPaymentStatusFromApi(pApi.status, pApi.disputed, dispute),\n failureCode: pApi.failureCode,\n failureMessage: pApi.failureMessage,\n applicationFee: pApi.applicationFee,\n disputed: pApi.disputed,\n dispute: dispute,\n refunds: retailRefundsfromApi(pApi.refunds),\n cardDetails: pApi.cardDetails ? cardDetailsFromApi(pApi.cardDetails) : undefined,\n paymentMethodDetailsType: retailPaymentTypeFromApi(pApi.paymentMethodDetailsType),\n achDetails: pApi.achDebitDetails ? achDetailsFromApi(pApi.achDebitDetails) : undefined,\n acssDetails: pApi.acssDebitDetails ? acssDetailsFromApi(pApi.acssDebitDetails) : undefined,\n paymentFacilitatorFee: pApi.paymentFacilitatorFee || 0.0,\n paymentFacilitatorType: pApi.paymentFacilitatorType\n ? paymentFacilitatorTypeFromApi(pApi.paymentFacilitatorType)\n : undefined,\n declineReasonDescription: declineReason?.description,\n declineReasonNextSteps: declineReason?.nextSteps,\n };\n}\n\nexport function retailRefundsfromApi(refunds: RetailRefundApi[]): RetailRefund[] {\n return (refunds || []).map((refund: RetailRefundApi) => retailRefundFromApi(refund));\n}\n\nexport function retailRefundFromApi(refund: RetailRefundApi): RetailRefund {\n return {\n id: refund.id || '',\n amount: refund.amount || 0,\n currency: refund.currencyCode || '',\n refundReason: retailRefundReasonFromApi(refund.refundReason),\n status: retailRefundStatusFromApi(refund.status),\n failureReason: retailRefundFailureReasonFromApi(refund.failureReason),\n created: refund.created ? new Date(refund.created) : undefined,\n payment: refund.payment ? retailPaymentFromApi(refund.payment) : undefined,\n };\n}\n\nexport function retailPayoutFromApi(payout: RetailPayoutApi): RetailPayout {\n return {\n id: payout.id,\n arrivalDate: payout.arrivalDate,\n amount: payout.amount,\n currencyCode: payout.currencyCode,\n status: retailPayoutStatusFromApi(payout.status),\n type: retailPayoutTypeFromApi(payout.type),\n lastFourDigits: payout.lastFourDigits,\n bankName: payout.bankName,\n bankId: payout.bankId,\n failureCode: payout.failureCode,\n failureMessage: payout.failureMessage,\n };\n}\n\nexport function retailPayoutStatusFromApi(status: RetailPayoutStatusApi): RetailPayoutStatus {\n switch (status) {\n case RetailPayoutStatusApi.PAYOUT_STATUS_PAID:\n return RetailPayoutStatus.Paid;\n case RetailPayoutStatusApi.PAYOUT_STATUS_PENDING:\n return RetailPayoutStatus.Pending;\n case RetailPayoutStatusApi.PAYOUT_STATUS_IN_TRANSIT:\n return RetailPayoutStatus.InTransit;\n case RetailPayoutStatusApi.PAYOUT_STATUS_CANCELED:\n return RetailPayoutStatus.Canceled;\n case RetailPayoutStatusApi.PAYOUT_STATUS_FAILED:\n return RetailPayoutStatus.Failed;\n default:\n return RetailPayoutStatus.Unset;\n }\n}\n\nexport function retailPayoutTypeFromApi(t: RetailPayoutTypeApi): RetailPayoutType {\n switch (t) {\n case RetailPayoutTypeApi.PAYOUT_TYPE_BANK_ACCOUNT:\n return RetailPayoutType.BankAccount;\n case RetailPayoutTypeApi.PAYOUT_TYPE_CARD:\n return RetailPayoutType.Card;\n default:\n return RetailPayoutType.Unset;\n }\n}\n\nexport function retailPaymentTypeFromApi(t: RetailPaymentPaymentMethodDetailsTypeApi): RetailPaymentMethodType {\n switch (t) {\n case RetailPaymentPaymentMethodDetailsTypeApi.PAYMENT_METHOD_DETAILS_TYPE_CARD:\n return RetailPaymentMethodType.Card;\n case RetailPaymentPaymentMethodDetailsTypeApi.PAYMENT_METHOD_DETAILS_TYPE_ACH_DEBIT:\n return RetailPaymentMethodType.ACHDebit;\n case RetailPaymentPaymentMethodDetailsTypeApi.PAYMENT_METHOD_DETAILS_TYPE_ACSS_DEBIT:\n return RetailPaymentMethodType.ACSSDebit;\n default:\n return RetailPaymentMethodType.Unset;\n }\n}\n\nexport function adjustmentFromApi(adjustment: AdjustmentApi): Adjustment {\n return {\n amount: adjustment.amount,\n currency: adjustment.currency,\n description: adjustment.description,\n dispute: disputeFromApi(adjustment.dispute),\n fee: adjustment.fee,\n id: adjustment.id,\n net: adjustment.net,\n refund: adjustment.refund ? retailRefundFromApi(adjustment.refund) : undefined,\n created: adjustment.created,\n };\n}\n\nexport function retailTransactionFromApi(transaction: RetailTransactionApi): RetailTransaction {\n return {\n payment: transaction.payment ? retailPaymentFromApi(transaction.payment) : undefined,\n refund: transaction.refund ? retailRefundFromApi(transaction.refund) : undefined,\n payoutFailure: transaction.payoutFailure ? retailPayoutFromApi(transaction.payoutFailure) : undefined,\n adjustment: transaction.adjustment ? adjustmentFromApi(transaction.adjustment) : undefined,\n };\n}\n\nfunction cardDetailsFromApi(cardDetails: RetailPaymentCardDetailsApi): CardDetails {\n return {\n lastFourDigits: cardDetails.lastFourDigits,\n cardType: cardTypeFromApi(cardDetails.cardType),\n };\n}\n\nfunction achDetailsFromApi(achDetails: RetailPaymentACHDetails): PaymentMethodTypeDetails {\n return {\n lastFourDigits: achDetails.lastFourDigits,\n };\n}\n\nfunction acssDetailsFromApi(acssDetails: RetailPaymentACHDetails): PaymentMethodTypeDetails {\n return {\n lastFourDigits: acssDetails.lastFourDigits,\n };\n}\n\nfunction cardTypeFromApi(cardType: CardType): PaymentCardType {\n switch (cardType) {\n case CardType.CARD_TYPE_VISA:\n return PaymentCardType.VISA;\n case CardType.CARD_TYPE_MASTERCARD:\n return PaymentCardType.MASTERCARD;\n case CardType.CARD_TYPE_AMEX:\n return PaymentCardType.AMEX;\n case CardType.CARD_TYPE_DISCOVER:\n return PaymentCardType.DISCOVER;\n case CardType.CARD_TYPE_JCB:\n return PaymentCardType.JCB;\n case CardType.CARD_TYPE_DINERS_CLUB:\n return PaymentCardType.DINERS_CLUB;\n default:\n return PaymentCardType.UNKNOWN;\n }\n}\n\nexport function retailPaymentStatusFromApi(\n status: PaymentStatusApi,\n disputed: boolean,\n dispute: Dispute | undefined,\n): ExtendedRetailPaymentStatus | undefined {\n if (disputed) {\n return dispute?.status || RetailPaymentStatus.Disputed;\n }\n switch (status) {\n case PaymentStatusApi.PAYMENT_STATUS_SUCCEEDED:\n return RetailPaymentStatus.Succeeded;\n case PaymentStatusApi.PAYMENT_STATUS_FAILED:\n return RetailPaymentStatus.Failed;\n case PaymentStatusApi.PAYMENT_STATUS_REFUNDED:\n return RetailPaymentStatus.Refunded;\n case PaymentStatusApi.PAYMENT_STATUS_PARTIALLY_REFUNDED:\n return RetailPaymentStatus.PartiallyRefunded;\n case PaymentStatusApi.PAYMENT_STATUS_PENDING:\n return RetailPaymentStatus.Pending;\n default:\n return undefined;\n }\n}\n","import {\n RetailStatusResponseInterface,\n RetailStatusResponseVerificationErrorInterface,\n RetailStatusResponseVerificationRequirementsInterface,\n} from '@vendasta/billing';\n\nexport enum PaymentFacilitatorError {\n GENERIC_ERROR = 'PAYMENT_PROCESSOR_GENERIC_ERROR',\n PERMISSION_DENIED = 'PAYMENT_PROCESSOR_PERMISSION_DENIED',\n}\n\nexport interface RetailStatus {\n supportedRegion: boolean;\n canAcceptPayment: boolean;\n disabledReason?: string;\n requirements: Requirements;\n futureRequirements: Requirements;\n}\n\nexport type RetailStatusInterface = RetailStatus;\n\nexport interface Requirements {\n due: string[];\n errors: VerificationError[];\n // related to future requirements\n eventuallyDue: string[];\n // related to future requirements\n currentDeadline?: Date;\n}\n\nexport interface VerificationError {\n requirement: string;\n code: string;\n reason: string;\n}\n\nexport function isRejectedDisabledReason(disabledReason: string): boolean {\n return ['rejected.fraud', 'rejected.listed', 'rejected.other', 'rejected.terms_of_service'].includes(disabledReason);\n}\n\nfunction verificationErrorFromAPI(e: RetailStatusResponseVerificationErrorInterface): VerificationError {\n return {\n requirement: e.requirement || '',\n code: e.code || '',\n reason: e.reason || '',\n };\n}\n\nfunction requirementsFromAPI(\n requirements: RetailStatusResponseVerificationRequirementsInterface | undefined,\n): Requirements {\n if (!requirements) {\n return { due: [], errors: [], eventuallyDue: [] };\n }\n return {\n due: requirements.due || [],\n errors: (requirements.error || []).map((e) => verificationErrorFromAPI(e)),\n eventuallyDue: requirements.eventuallyDue || [],\n currentDeadline: new Date(requirements.currentDeadline || 0),\n };\n}\n\nexport function retailResponseFromAPI(proto: RetailStatusResponseInterface): RetailStatus {\n return {\n supportedRegion: proto.supportedRegion || false,\n canAcceptPayment: proto.canAcceptPayment || false,\n disabledReason: proto.disabledReason,\n requirements: requirementsFromAPI(proto.requirements),\n futureRequirements: requirementsFromAPI(proto.futureRequirements),\n };\n}\n","import { DatePipe } from '@angular/common';\nimport {\n Adjustment,\n CardDetails,\n Dispute,\n ExtendedRetailPaymentStatus,\n PaymentMethodTypeDetails,\n RetailPayment,\n RetailPaymentMethodType,\n RetailPaymentReferenceTypeEnum,\n RetailPaymentStatus,\n RetailPayout,\n RetailRefund,\n} from '..';\n\nexport enum TransactionReferenceType {\n UNSET,\n INVOICE,\n SALES_ORDER,\n REFUND_INVOICE,\n REFUND_SALES_ORDER,\n DISPUTE,\n REFUND_FAILURE,\n PAYOUT_FAILURE,\n}\n\nfunction referenceTypeFromPaymentReference(\n rp: RetailPaymentReferenceTypeEnum | undefined,\n isRefund: boolean,\n): TransactionReferenceType {\n switch (rp) {\n case RetailPaymentReferenceTypeEnum.RETAIL_PAYMENT_REFERENCE_TYPE_INVOICE:\n if (isRefund) {\n return TransactionReferenceType.REFUND_INVOICE;\n } else {\n return TransactionReferenceType.INVOICE;\n }\n case RetailPaymentReferenceTypeEnum.RETAIL_PAYMENT_REFERENCE_TYPE_SALES_ORDER:\n if (isRefund) {\n return TransactionReferenceType.REFUND_SALES_ORDER;\n } else {\n return TransactionReferenceType.SALES_ORDER;\n }\n default:\n return TransactionReferenceType.UNSET;\n }\n}\n\nexport class Transaction {\n id?: string;\n customerName?: string;\n amount?: number;\n created?: Date;\n currencyCode?: string;\n customerId?: string;\n description?: string;\n merchantId?: string;\n referenceId?: string;\n referenceType?: TransactionReferenceType;\n status?: ExtendedRetailPaymentStatus;\n failureCode?: string;\n failureMessage?: string;\n applicationFee?: number;\n paymentFacilitatorFee?: number;\n dispute?: Dispute;\n refunds?: RetailRefund[];\n paymentMethodDetailsType?: RetailPaymentMethodType;\n cardDetails?: CardDetails;\n achDetails?: PaymentMethodTypeDetails;\n acssDetails?: PaymentMethodTypeDetails;\n paymentId?: string;\n declineReasonDescription?: string;\n declineReasonNextSteps?: string;\n\n static fromRetailPayment(customerName: string, rp: RetailPayment): Transaction | null {\n if (!rp) return null;\n return {\n id: rp.id,\n customerName: customerName,\n merchantId: rp.merchantId,\n created: rp.created,\n currencyCode: rp.currencyCode,\n amount: rp.amount,\n referenceId: rp.referenceId,\n referenceType: referenceTypeFromPaymentReference(rp.referenceType, false),\n description: rp.description,\n customerId: rp.customerId,\n status: rp.status || RetailPaymentStatus.Unset,\n failureCode: rp.failureCode,\n failureMessage: rp.failureMessage,\n applicationFee: rp.applicationFee,\n paymentFacilitatorFee: rp.paymentFacilitatorFee || 0,\n dispute: rp.dispute,\n refunds: rp.refunds,\n paymentId: rp.id,\n paymentMethodDetailsType: rp.paymentMethodDetailsType,\n cardDetails: rp.cardDetails,\n achDetails: rp.achDetails,\n acssDetails: rp.acssDetails,\n declineReasonDescription: rp.declineReasonDescription,\n declineReasonNextSteps: rp.declineReasonNextSteps,\n };\n }\n\n static fromRetailRefund(customerName: string, rr: RetailRefund): Transaction | null {\n if (!rr) return null;\n return {\n id: rr.id,\n customerName: customerName,\n merchantId: rr.payment?.merchantId,\n created: rr.created,\n currencyCode: rr.currency,\n amount: -rr.amount,\n referenceId: rr.payment?.referenceId,\n referenceType: referenceTypeFromPaymentReference(rr.payment?.referenceType, true),\n description: rr.payment?.description,\n customerId: rr.payment?.customerId,\n status: rr.payment?.status,\n failureMessage: rr.failureReason,\n failureCode: '',\n applicationFee: 0,\n paymentFacilitatorFee: 0,\n paymentId: rr.payment?.id,\n cardDetails: rr.payment?.cardDetails,\n paymentMethodDetailsType: rr.payment?.paymentMethodDetailsType,\n achDetails: rr.payment?.achDetails,\n acssDetails: rr.payment?.acssDetails,\n };\n }\n\n static fromRetailPayout(rp: RetailPayout, datePipe: DatePipe): Transaction | null {\n if (!rp) return null;\n return {\n id: rp.id,\n customerName: '',\n merchantId: '',\n created: rp.arrivalDate,\n currencyCode: rp.currencyCode,\n amount: rp.amount,\n referenceId: rp.id,\n referenceType: TransactionReferenceType.PAYOUT_FAILURE,\n description: datePipe.transform(rp.arrivalDate) || '',\n customerId: '',\n status: RetailPaymentStatus.Failed,\n failureCode: rp.failureCode,\n failureMessage: rp.failureMessage,\n applicationFee: 0,\n paymentFacilitatorFee: 0,\n paymentMethodDetailsType: RetailPaymentMethodType.Unset,\n };\n }\n\n static fromAdjustment(a: Adjustment): Transaction | null {\n if (!a) return null;\n let status = RetailPaymentStatus.Failed;\n if (a.refund) {\n status = RetailPaymentStatus.Refunded;\n }\n if (a.dispute) {\n status = RetailPaymentStatus.Disputed;\n }\n return {\n amount: a.amount,\n applicationFee: a.fee,\n paymentFacilitatorFee: 0,\n paymentMethodDetailsType: RetailPaymentMethodType.Unset,\n created: a.created,\n currencyCode: a.currency,\n customerId: '',\n customerName: '',\n description: a.description,\n dispute: a.dispute,\n failureCode: '',\n failureMessage: '',\n id: a.dispute ? a.dispute.paymentId : a.id,\n merchantId: '',\n referenceId: '',\n referenceType: a.dispute\n ? TransactionReferenceType.DISPUTE\n : a.refund\n ? TransactionReferenceType.REFUND_FAILURE\n : TransactionReferenceType.UNSET,\n status: status,\n paymentId: a.dispute ? a.dispute.paymentId : a.refund ? a.refund.payment?.id : '',\n };\n }\n}\n","export * from './dispute';\nexport * from './payment';\nexport { PaymentIntentStatus } from './payment-intent';\nexport * from './payment-facilitator-type';\nexport * from './payment-source';\nexport * from './payment-status';\nexport * from './payment-allocation-type';\nexport { PaymentService } from './payment.service';\nexport * from './provider-determinant';\nexport * from './retail-payment';\nexport * from './retail-status';\nexport * from './transaction';\nexport {\n ListPaymentRequest,\n ListPaymentResponse,\n PrepareRetailPaymentRequest,\n PrepareRetailPaymentResponse,\n ListRetailPaymentsRequest,\n ListRetailPaymentsResponse,\n} from '@vendasta/billing';\n","import { Injectable } from '@angular/core';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { Observable } from 'rxjs';\nimport { CountryProviderDeterminant, MerchantProviderDeterminant, PaymentService } from './payment';\n\n// Public API Key for Live Canadian Account\nconst CA_LIVE_API_KEY = 'pk_live_Nv6bm5YyuSb2cCj1Tv2laHeV';\n// Public API Key for Test Canadian Account\nconst CA_TEST_API_KEY = 'pk_test_d7arUvYIZ2TNTwmyDQUCHqUB';\n\n@Injectable({ providedIn: 'root' })\nexport class StripeService {\n private connectPublicKey: string;\n\n constructor(private environmentService: EnvironmentService, private paymentService: PaymentService) {\n this.connectPublicKey =\n this.environmentService.getEnvironment() === Environment.PROD ? CA_LIVE_API_KEY : CA_TEST_API_KEY;\n }\n\n // returns the public API key that is to be used for Stripe Connect Account requests, which is regardless of the merchant's subsidiary and is always corresponding to Vendasta's Canadian Stripe account.\n public getConnectPublicKey(): string {\n return this.connectPublicKey;\n }\n\n // returns the public API key that is associated to the corresponding merchant's susibidiary.\n public getPublicKeyByMerchant(merchantId: string): Observable {\n return this.paymentService.getWholesaleProviderPublicKey(new MerchantProviderDeterminant(merchantId));\n }\n\n // returns the public API key that is associated to the corresponding susibidiary location.\n // this should ONLY be used in the event we do not have an existing merchant record (i.e. during platform signup)\n public getPublicKeyByCountry(countryCode: string): Observable {\n return this.paymentService.getWholesaleProviderPublicKey(new CountryProviderDeterminant(countryCode));\n }\n}\n","export { BundleItem, Bundle, Price } from './bundle';\nexport { BundleService, ListBundleFilter } from './bundle.service';\n","export { ContractDocument } from './contract-document';\nexport { ContractDocumentService } from './contract-document.service';\nexport { ListContractDocumentsFilter } from './list-contract-document';\n","export { CreditBalance } from './credit';\nexport { CreditService } from './credit.service';\n","import * as i0 from '@angular/core';\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { map, share } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ServiceProviderType = /*#__PURE__*/function (ServiceProviderType) {\n ServiceProviderType[ServiceProviderType[\"SERVICE_PROVIDER_TYPE_PRODUCT\"] = 0] = \"SERVICE_PROVIDER_TYPE_PRODUCT\";\n ServiceProviderType[ServiceProviderType[\"SERVICE_PROVIDER_TYPE_PLATFORM\"] = 1] = \"SERVICE_PROVIDER_TYPE_PLATFORM\";\n return ServiceProviderType;\n}(ServiceProviderType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ServiceContextAccount {\n static fromProto(proto) {\n let m = new ServiceContextAccount();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountId !== 'undefined') {\n toReturn['accountId'] = this.accountId;\n }\n return toReturn;\n }\n}\nclass AutoImpersonation {\n static fromProto(proto) {\n let m = new AutoImpersonation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass ServiceContextBrand {\n static fromProto(proto) {\n let m = new ServiceContextBrand();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.groupPath !== 'undefined') {\n toReturn['groupPath'] = this.groupPath;\n }\n return toReturn;\n }\n}\nclass NoImpersonation {\n static fromProto(proto) {\n let m = new NoImpersonation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass ServiceContextPartner {\n static fromProto(proto) {\n let m = new ServiceContextPartner();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass ServiceContext {\n static fromProto(proto) {\n let m = new ServiceContext();\n m = Object.assign(m, proto);\n if (proto.account) {\n m.account = ServiceContextAccount.fromProto(proto.account);\n }\n if (proto.partner) {\n m.partner = ServiceContextPartner.fromProto(proto.partner);\n }\n if (proto.superAdmin) {\n m.superAdmin = ServiceContextSuperAdmin.fromProto(proto.superAdmin);\n }\n if (proto.brand) {\n m.brand = ServiceContextBrand.fromProto(proto.brand);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.account !== 'undefined' && this.account !== null) {\n toReturn['account'] = 'toApiJson' in this.account ? this.account.toApiJson() : this.account;\n }\n if (typeof this.partner !== 'undefined' && this.partner !== null) {\n toReturn['partner'] = 'toApiJson' in this.partner ? this.partner.toApiJson() : this.partner;\n }\n if (typeof this.superAdmin !== 'undefined' && this.superAdmin !== null) {\n toReturn['superAdmin'] = 'toApiJson' in this.superAdmin ? this.superAdmin.toApiJson() : this.superAdmin;\n }\n if (typeof this.brand !== 'undefined' && this.brand !== null) {\n toReturn['brand'] = 'toApiJson' in this.brand ? this.brand.toApiJson() : this.brand;\n }\n return toReturn;\n }\n}\nclass ServiceContextSuperAdmin {\n static fromProto(proto) {\n let m = new ServiceContextSuperAdmin();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AcsUrl {\n static fromProto(proto) {\n let m = new AcsUrl();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.binding !== 'undefined') {\n toReturn['binding'] = this.binding;\n }\n if (typeof this.location !== 'undefined') {\n toReturn['location'] = this.location;\n }\n return toReturn;\n }\n}\nclass SamlServiceProviderConfig {\n static fromProto(proto) {\n let m = new SamlServiceProviderConfig();\n m = Object.assign(m, proto);\n if (proto.acsUrls) {\n m.acsUrls = proto.acsUrls.map(AcsUrl.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.entityId !== 'undefined') {\n toReturn['entityId'] = this.entityId;\n }\n if (typeof this.acsUrls !== 'undefined' && this.acsUrls !== null) {\n toReturn['acsUrls'] = 'toApiJson' in this.acsUrls ? this.acsUrls.toApiJson() : this.acsUrls;\n }\n if (typeof this.signedAuthRequest !== 'undefined') {\n toReturn['signedAuthRequest'] = this.signedAuthRequest;\n }\n if (typeof this.wantSignedAssertion !== 'undefined') {\n toReturn['wantSignedAssertion'] = this.wantSignedAssertion;\n }\n if (typeof this.wantEncryptedAssertion !== 'undefined') {\n toReturn['wantEncryptedAssertion'] = this.wantEncryptedAssertion;\n }\n if (typeof this.nameIdFormats !== 'undefined') {\n toReturn['nameIdFormats'] = this.nameIdFormats;\n }\n if (typeof this.signingCertificate !== 'undefined') {\n toReturn['signingCertificate'] = this.signingCertificate;\n }\n if (typeof this.encryptionCertificate !== 'undefined') {\n toReturn['encryptionCertificate'] = this.encryptionCertificate;\n }\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass ServiceProviderConfig {\n static fromProto(proto) {\n let m = new ServiceProviderConfig();\n m = Object.assign(m, proto);\n if (proto.serviceProviderType) {\n m.serviceProviderType = enumStringToValue$5(ServiceProviderType, proto.serviceProviderType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.entryUrl !== 'undefined') {\n toReturn['entryUrl'] = this.entryUrl;\n }\n if (typeof this.sessionUrl !== 'undefined') {\n toReturn['sessionUrl'] = this.sessionUrl;\n }\n if (typeof this.primaryDomain !== 'undefined') {\n toReturn['primaryDomain'] = this.primaryDomain;\n }\n if (typeof this.alternativeDomains !== 'undefined') {\n toReturn['alternativeDomains'] = this.alternativeDomains;\n }\n if (typeof this.ownedAndOperated !== 'undefined') {\n toReturn['ownedAndOperated'] = this.ownedAndOperated;\n }\n if (typeof this.logoutUrl !== 'undefined') {\n toReturn['logoutUrl'] = this.logoutUrl;\n }\n if (typeof this.serviceProviderType !== 'undefined') {\n toReturn['serviceProviderType'] = this.serviceProviderType;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.preApprovedScopes !== 'undefined') {\n toReturn['preApprovedScopes'] = this.preApprovedScopes;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Oauth2Config {\n static fromProto(proto) {\n let m = new Oauth2Config();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.redirectUris !== 'undefined') {\n toReturn['redirectUris'] = this.redirectUris;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.logoutUri !== 'undefined') {\n toReturn['logoutUri'] = this.logoutUri;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Scope {\n static fromProto(proto) {\n let m = new Scope();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass IdentityProviderConfiguration {\n static fromProto(proto) {\n let m = new IdentityProviderConfiguration();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.openId) {\n m.openId = OpenIDConnectConfiguration.fromProto(proto.openId);\n }\n if (proto.oauth2) {\n m.oauth2 = OAuth2Configuration.fromProto(proto.oauth2);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.openId !== 'undefined' && this.openId !== null) {\n toReturn['openId'] = 'toApiJson' in this.openId ? this.openId.toApiJson() : this.openId;\n }\n if (typeof this.oauth2 !== 'undefined' && this.oauth2 !== null) {\n toReturn['oauth2'] = 'toApiJson' in this.oauth2 ? this.oauth2.toApiJson() : this.oauth2;\n }\n return toReturn;\n }\n}\nclass OAuth2Configuration {\n static fromProto(proto) {\n let m = new OAuth2Configuration();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.authorizationEndpoint !== 'undefined') {\n toReturn['authorizationEndpoint'] = this.authorizationEndpoint;\n }\n if (typeof this.tokenEndpoint !== 'undefined') {\n toReturn['tokenEndpoint'] = this.tokenEndpoint;\n }\n if (typeof this.userinfoEndpoint !== 'undefined') {\n toReturn['userinfoEndpoint'] = this.userinfoEndpoint;\n }\n return toReturn;\n }\n}\nclass OpenIDConnectConfiguration {\n static fromProto(proto) {\n let m = new OpenIDConnectConfiguration();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.discoveryEndpoint !== 'undefined') {\n toReturn['discoveryEndpoint'] = this.discoveryEndpoint;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass GetMultiConfigResponseConfigContainer {\n static fromProto(proto) {\n let m = new GetMultiConfigResponseConfigContainer();\n m = Object.assign(m, proto);\n if (proto.config) {\n m.config = Oauth2Config.fromProto(proto.config);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n return toReturn;\n }\n}\nclass CreateConfigRequest {\n static fromProto(proto) {\n let m = new CreateConfigRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.redirectUris !== 'undefined') {\n toReturn['redirectUris'] = this.redirectUris;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.logoutUri !== 'undefined') {\n toReturn['logoutUri'] = this.logoutUri;\n }\n return toReturn;\n }\n}\nclass CreateConfigResponse {\n static fromProto(proto) {\n let m = new CreateConfigResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.clientSecret !== 'undefined') {\n toReturn['clientSecret'] = this.clientSecret;\n }\n return toReturn;\n }\n}\nclass CreateIdentityProviderConfigurationRequest {\n static fromProto(proto) {\n let m = new CreateIdentityProviderConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.openId) {\n m.openId = OpenIDConnectConfiguration.fromProto(proto.openId);\n }\n if (proto.oauth2) {\n m.oauth2 = OAuth2Configuration.fromProto(proto.oauth2);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.clientSecret !== 'undefined') {\n toReturn['clientSecret'] = this.clientSecret;\n }\n if (typeof this.openId !== 'undefined' && this.openId !== null) {\n toReturn['openId'] = 'toApiJson' in this.openId ? this.openId.toApiJson() : this.openId;\n }\n if (typeof this.oauth2 !== 'undefined' && this.oauth2 !== null) {\n toReturn['oauth2'] = 'toApiJson' in this.oauth2 ? this.oauth2.toApiJson() : this.oauth2;\n }\n return toReturn;\n }\n}\nclass CreateSamlServiceProviderConfigRequest {\n static fromProto(proto) {\n let m = new CreateSamlServiceProviderConfigRequest();\n m = Object.assign(m, proto);\n if (proto.fields) {\n m.fields = SamlServiceProviderConfig.fromProto(proto.fields);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fields !== 'undefined' && this.fields !== null) {\n toReturn['fields'] = 'toApiJson' in this.fields ? this.fields.toApiJson() : this.fields;\n }\n if (typeof this.metadataXmlString !== 'undefined') {\n toReturn['metadataXmlString'] = this.metadataXmlString;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass CreateSamlServiceProviderConfigResponse {\n static fromProto(proto) {\n let m = new CreateSamlServiceProviderConfigResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n return toReturn;\n }\n}\nclass CreateScopeRequest {\n static fromProto(proto) {\n let m = new CreateScopeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass CreateServiceProviderRequest {\n static fromProto(proto) {\n let m = new CreateServiceProviderRequest();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = ServiceProviderConfig.fromProto(proto.serviceProvider);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProvider !== 'undefined' && this.serviceProvider !== null) {\n toReturn['serviceProvider'] = 'toApiJson' in this.serviceProvider ? this.serviceProvider.toApiJson() : this.serviceProvider;\n }\n return toReturn;\n }\n}\nclass DeleteConfigRequest {\n static fromProto(proto) {\n let m = new DeleteConfigRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n return toReturn;\n }\n}\nclass DeleteIdentityProviderConfigurationRequest {\n static fromProto(proto) {\n let m = new DeleteIdentityProviderConfigurationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass DeleteSAMLServiceProviderConfigRequest {\n static fromProto(proto) {\n let m = new DeleteSAMLServiceProviderConfigRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n return toReturn;\n }\n}\nclass DeleteScopeRequest {\n static fromProto(proto) {\n let m = new DeleteScopeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scopeId !== 'undefined') {\n toReturn['scopeId'] = this.scopeId;\n }\n return toReturn;\n }\n}\nclass DeleteServiceProviderRequest {\n static fromProto(proto) {\n let m = new DeleteServiceProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass GetEntryURLRequest {\n static fromProto(proto) {\n let m = new GetEntryURLRequest();\n m = Object.assign(m, proto);\n if (proto.context) {\n m.context = ServiceContext.fromProto(proto.context);\n }\n if (proto.autoImpersonation) {\n m.autoImpersonation = AutoImpersonation.fromProto(proto.autoImpersonation);\n }\n if (proto.noImpersonation) {\n m.noImpersonation = NoImpersonation.fromProto(proto.noImpersonation);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.context !== 'undefined' && this.context !== null) {\n toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;\n }\n if (typeof this.path !== 'undefined') {\n toReturn['path'] = this.path;\n }\n if (typeof this.skipGatewayAuthentication !== 'undefined') {\n toReturn['skipGatewayAuthentication'] = this.skipGatewayAuthentication;\n }\n if (typeof this.impersonateeUserId !== 'undefined') {\n toReturn['impersonateeUserId'] = this.impersonateeUserId;\n }\n if (typeof this.autoImpersonation !== 'undefined' && this.autoImpersonation !== null) {\n toReturn['autoImpersonation'] = 'toApiJson' in this.autoImpersonation ? this.autoImpersonation.toApiJson() : this.autoImpersonation;\n }\n if (typeof this.explicitImpersonateeUserId !== 'undefined') {\n toReturn['explicitImpersonateeUserId'] = this.explicitImpersonateeUserId;\n }\n if (typeof this.noImpersonation !== 'undefined' && this.noImpersonation !== null) {\n toReturn['noImpersonation'] = 'toApiJson' in this.noImpersonation ? this.noImpersonation.toApiJson() : this.noImpersonation;\n }\n return toReturn;\n }\n}\nclass GetEntryURLResponse {\n static fromProto(proto) {\n let m = new GetEntryURLResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.entryUrl !== 'undefined') {\n toReturn['entryUrl'] = this.entryUrl;\n }\n return toReturn;\n }\n}\nclass GetEntryURLWithCodeRequest {\n static fromProto(proto) {\n let m = new GetEntryURLWithCodeRequest();\n m = Object.assign(m, proto);\n if (proto.context) {\n m.context = ServiceContext.fromProto(proto.context);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.sessionId !== 'undefined') {\n toReturn['sessionId'] = this.sessionId;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.context !== 'undefined' && this.context !== null) {\n toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;\n }\n if (typeof this.nextUrl !== 'undefined') {\n toReturn['nextUrl'] = this.nextUrl;\n }\n if (typeof this.backUrl !== 'undefined') {\n toReturn['backUrl'] = this.backUrl;\n }\n if (typeof this.backUrlText !== 'undefined') {\n toReturn['backUrlText'] = this.backUrlText;\n }\n if (typeof this.federatedIdentityProvider !== 'undefined') {\n toReturn['federatedIdentityProvider'] = this.federatedIdentityProvider;\n }\n if (typeof this.impersonatorUserId !== 'undefined') {\n toReturn['impersonatorUserId'] = this.impersonatorUserId;\n }\n return toReturn;\n }\n}\nclass GetEntryURLWithCodeResponse {\n static fromProto(proto) {\n let m = new GetEntryURLWithCodeResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.entryUrl !== 'undefined') {\n toReturn['entryUrl'] = this.entryUrl;\n }\n return toReturn;\n }\n}\nclass GetIdentityProviderConfigurationRequest {\n static fromProto(proto) {\n let m = new GetIdentityProviderConfigurationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass GetIdentityProviderConfigurationResponse {\n static fromProto(proto) {\n let m = new GetIdentityProviderConfigurationResponse();\n m = Object.assign(m, proto);\n if (proto.configuration) {\n m.configuration = IdentityProviderConfiguration.fromProto(proto.configuration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.configuration !== 'undefined' && this.configuration !== null) {\n toReturn['configuration'] = 'toApiJson' in this.configuration ? this.configuration.toApiJson() : this.configuration;\n }\n return toReturn;\n }\n}\nclass GetLogoutURLRequest {\n static fromProto(proto) {\n let m = new GetLogoutURLRequest();\n m = Object.assign(m, proto);\n if (proto.context) {\n m.context = ServiceContext.fromProto(proto.context);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sessionId !== 'undefined') {\n toReturn['sessionId'] = this.sessionId;\n }\n if (typeof this.context !== 'undefined' && this.context !== null) {\n toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass GetLogoutURLResponse {\n static fromProto(proto) {\n let m = new GetLogoutURLResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.logoutUrl !== 'undefined') {\n toReturn['logoutUrl'] = this.logoutUrl;\n }\n return toReturn;\n }\n}\nclass GetMultiConfigRequest {\n static fromProto(proto) {\n let m = new GetMultiConfigRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientIds !== 'undefined') {\n toReturn['clientIds'] = this.clientIds;\n }\n return toReturn;\n }\n}\nclass GetMultiConfigResponse {\n static fromProto(proto) {\n let m = new GetMultiConfigResponse();\n m = Object.assign(m, proto);\n if (proto.configs) {\n m.configs = proto.configs.map(GetMultiConfigResponseConfigContainer.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.configs !== 'undefined' && this.configs !== null) {\n toReturn['configs'] = 'toApiJson' in this.configs ? this.configs.toApiJson() : this.configs;\n }\n return toReturn;\n }\n}\nclass GetMultiEntryURLRequest {\n static fromProto(proto) {\n let m = new GetMultiEntryURLRequest();\n m = Object.assign(m, proto);\n if (proto.context) {\n m.context = ServiceContext.fromProto(proto.context);\n }\n if (proto.autoImpersonation) {\n m.autoImpersonation = AutoImpersonation.fromProto(proto.autoImpersonation);\n }\n if (proto.noImpersonation) {\n m.noImpersonation = NoImpersonation.fromProto(proto.noImpersonation);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderIds !== 'undefined') {\n toReturn['serviceProviderIds'] = this.serviceProviderIds;\n }\n if (typeof this.context !== 'undefined' && this.context !== null) {\n toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;\n }\n if (typeof this.impersonateeUserId !== 'undefined') {\n toReturn['impersonateeUserId'] = this.impersonateeUserId;\n }\n if (typeof this.autoImpersonation !== 'undefined' && this.autoImpersonation !== null) {\n toReturn['autoImpersonation'] = 'toApiJson' in this.autoImpersonation ? this.autoImpersonation.toApiJson() : this.autoImpersonation;\n }\n if (typeof this.explicitImpersonateeUserId !== 'undefined') {\n toReturn['explicitImpersonateeUserId'] = this.explicitImpersonateeUserId;\n }\n if (typeof this.noImpersonation !== 'undefined' && this.noImpersonation !== null) {\n toReturn['noImpersonation'] = 'toApiJson' in this.noImpersonation ? this.noImpersonation.toApiJson() : this.noImpersonation;\n }\n return toReturn;\n }\n}\nclass GetMultiEntryURLResponse {\n static fromProto(proto) {\n let m = new GetMultiEntryURLResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.entryUrls !== 'undefined') {\n toReturn['entryUrls'] = this.entryUrls;\n }\n return toReturn;\n }\n}\nclass GetMultiScopeRequest {\n static fromProto(proto) {\n let m = new GetMultiScopeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scopeIds !== 'undefined') {\n toReturn['scopeIds'] = this.scopeIds;\n }\n return toReturn;\n }\n}\nclass GetMultiScopeResponse {\n static fromProto(proto) {\n let m = new GetMultiScopeResponse();\n m = Object.assign(m, proto);\n if (proto.scopes) {\n m.scopes = proto.scopes.map(GetMultiScopeResponseScopeContainer.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scopes !== 'undefined' && this.scopes !== null) {\n toReturn['scopes'] = 'toApiJson' in this.scopes ? this.scopes.toApiJson() : this.scopes;\n }\n return toReturn;\n }\n}\nclass GetSAMLIdentityProviderMetadataRequest {\n static fromProto(proto) {\n let m = new GetSAMLIdentityProviderMetadataRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n return toReturn;\n }\n}\nclass GetSAMLIdentityProviderMetadataResponse {\n static fromProto(proto) {\n let m = new GetSAMLIdentityProviderMetadataResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.metadata !== 'undefined') {\n toReturn['metadata'] = this.metadata;\n }\n return toReturn;\n }\n}\nclass GetServiceProviderRequest {\n static fromProto(proto) {\n let m = new GetServiceProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass GetServiceProviderResponse {\n static fromProto(proto) {\n let m = new GetServiceProviderResponse();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = ServiceProviderConfig.fromProto(proto.serviceProvider);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProvider !== 'undefined' && this.serviceProvider !== null) {\n toReturn['serviceProvider'] = 'toApiJson' in this.serviceProvider ? this.serviceProvider.toApiJson() : this.serviceProvider;\n }\n return toReturn;\n }\n}\nclass GetSessionTransferURLRequest {\n static fromProto(proto) {\n let m = new GetSessionTransferURLRequest();\n m = Object.assign(m, proto);\n if (proto.context) {\n m.context = ServiceContext.fromProto(proto.context);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.context !== 'undefined' && this.context !== null) {\n toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;\n }\n return toReturn;\n }\n}\nclass GetSessionTransferURLResponse {\n static fromProto(proto) {\n let m = new GetSessionTransferURLResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sessionTransferUrl !== 'undefined') {\n toReturn['sessionTransferUrl'] = this.sessionTransferUrl;\n }\n return toReturn;\n }\n}\nclass HasCustomIdentityProviderRequest {\n static fromProto(proto) {\n let m = new HasCustomIdentityProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass HasCustomIdentityProviderResponse {\n static fromProto(proto) {\n let m = new HasCustomIdentityProviderResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hasCustomIdp !== 'undefined') {\n toReturn['hasCustomIdp'] = this.hasCustomIdp;\n }\n return toReturn;\n }\n}\nclass ListConfigsRequest {\n static fromProto(proto) {\n let m = new ListConfigsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n return toReturn;\n }\n}\nclass ListConfigsResponse {\n static fromProto(proto) {\n let m = new ListConfigsResponse();\n m = Object.assign(m, proto);\n if (proto.clientConfigurations) {\n m.clientConfigurations = proto.clientConfigurations.map(Oauth2Config.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientConfigurations !== 'undefined' && this.clientConfigurations !== null) {\n toReturn['clientConfigurations'] = 'toApiJson' in this.clientConfigurations ? this.clientConfigurations.toApiJson() : this.clientConfigurations;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass ListSAMLServiceProviderConfigsRequest {\n static fromProto(proto) {\n let m = new ListSAMLServiceProviderConfigsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n return toReturn;\n }\n}\nclass ListSAMLServiceProviderConfigsResponse {\n static fromProto(proto) {\n let m = new ListSAMLServiceProviderConfigsResponse();\n m = Object.assign(m, proto);\n if (proto.serviceProviderConfigs) {\n m.serviceProviderConfigs = proto.serviceProviderConfigs.map(SamlServiceProviderConfig.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderConfigs !== 'undefined' && this.serviceProviderConfigs !== null) {\n toReturn['serviceProviderConfigs'] = 'toApiJson' in this.serviceProviderConfigs ? this.serviceProviderConfigs.toApiJson() : this.serviceProviderConfigs;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass ListScopesRequest {\n static fromProto(proto) {\n let m = new ListScopesRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n return toReturn;\n }\n}\nclass ListScopesResponse {\n static fromProto(proto) {\n let m = new ListScopesResponse();\n m = Object.assign(m, proto);\n if (proto.scopes) {\n m.scopes = proto.scopes.map(Scope.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scopes !== 'undefined' && this.scopes !== null) {\n toReturn['scopes'] = 'toApiJson' in this.scopes ? this.scopes.toApiJson() : this.scopes;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass ListServiceProvidersRequest {\n static fromProto(proto) {\n let m = new ListServiceProvidersRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n return toReturn;\n }\n}\nclass ListServiceProvidersResponse {\n static fromProto(proto) {\n let m = new ListServiceProvidersResponse();\n m = Object.assign(m, proto);\n if (proto.serviceProviders) {\n m.serviceProviders = proto.serviceProviders.map(ServiceProviderConfig.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviders !== 'undefined' && this.serviceProviders !== null) {\n toReturn['serviceProviders'] = 'toApiJson' in this.serviceProviders ? this.serviceProviders.toApiJson() : this.serviceProviders;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass LogoutRequest {\n static fromProto(proto) {\n let m = new LogoutRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sessionId !== 'undefined') {\n toReturn['sessionId'] = this.sessionId;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n return toReturn;\n }\n}\nclass UpdateIdentityProviderConfigurationRequestMutation {\n static fromProto(proto) {\n let m = new UpdateIdentityProviderConfigurationRequestMutation();\n m = Object.assign(m, proto);\n if (proto.openId) {\n m.openId = UpdateIdentityProviderConfigurationRequestMutationOpenIDConnectConfigurationMutation.fromProto(proto.openId);\n }\n if (proto.replaceOpenId) {\n m.replaceOpenId = OpenIDConnectConfiguration.fromProto(proto.replaceOpenId);\n }\n if (proto.oauth2) {\n m.oauth2 = UpdateIdentityProviderConfigurationRequestMutationOAuth2ConfigurationMutation.fromProto(proto.oauth2);\n }\n if (proto.replaceOauth2) {\n m.replaceOauth2 = OAuth2Configuration.fromProto(proto.replaceOauth2);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.clientSecret !== 'undefined') {\n toReturn['clientSecret'] = this.clientSecret;\n }\n if (typeof this.openId !== 'undefined' && this.openId !== null) {\n toReturn['openId'] = 'toApiJson' in this.openId ? this.openId.toApiJson() : this.openId;\n }\n if (typeof this.replaceOpenId !== 'undefined' && this.replaceOpenId !== null) {\n toReturn['replaceOpenId'] = 'toApiJson' in this.replaceOpenId ? this.replaceOpenId.toApiJson() : this.replaceOpenId;\n }\n if (typeof this.oauth2 !== 'undefined' && this.oauth2 !== null) {\n toReturn['oauth2'] = 'toApiJson' in this.oauth2 ? this.oauth2.toApiJson() : this.oauth2;\n }\n if (typeof this.replaceOauth2 !== 'undefined' && this.replaceOauth2 !== null) {\n toReturn['replaceOauth2'] = 'toApiJson' in this.replaceOauth2 ? this.replaceOauth2.toApiJson() : this.replaceOauth2;\n }\n return toReturn;\n }\n}\nclass UpdateConfigRequestMutation {\n static fromProto(proto) {\n let m = new UpdateConfigRequestMutation();\n m = Object.assign(m, proto);\n if (proto.redirectUris) {\n m.redirectUris = UpdateConfigRequestMutationRepeatedStringMutation.fromProto(proto.redirectUris);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.redirectUris !== 'undefined' && this.redirectUris !== null) {\n toReturn['redirectUris'] = 'toApiJson' in this.redirectUris ? this.redirectUris.toApiJson() : this.redirectUris;\n }\n if (typeof this.logoutUri !== 'undefined') {\n toReturn['logoutUri'] = this.logoutUri;\n }\n return toReturn;\n }\n}\nclass UpdateServiceProviderRequestMutation {\n static fromProto(proto) {\n let m = new UpdateServiceProviderRequestMutation();\n m = Object.assign(m, proto);\n if (proto.alternativeDomains) {\n m.alternativeDomains = UpdateServiceProviderRequestMutationRepeatedStringMutation.fromProto(proto.alternativeDomains);\n }\n if (proto.serviceProviderType) {\n m.serviceProviderType = enumStringToValue$1(ServiceProviderType, proto.serviceProviderType);\n }\n if (proto.preApprovedScopes) {\n m.preApprovedScopes = UpdateServiceProviderRequestMutationRepeatedStringMutation.fromProto(proto.preApprovedScopes);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.entryUrl !== 'undefined') {\n toReturn['entryUrl'] = this.entryUrl;\n }\n if (typeof this.sessionUrl !== 'undefined') {\n toReturn['sessionUrl'] = this.sessionUrl;\n }\n if (typeof this.primaryDomain !== 'undefined') {\n toReturn['primaryDomain'] = this.primaryDomain;\n }\n if (typeof this.alternativeDomains !== 'undefined' && this.alternativeDomains !== null) {\n toReturn['alternativeDomains'] = 'toApiJson' in this.alternativeDomains ? this.alternativeDomains.toApiJson() : this.alternativeDomains;\n }\n if (typeof this.ownedAndOperated !== 'undefined') {\n toReturn['ownedAndOperated'] = this.ownedAndOperated;\n }\n if (typeof this.logoutUrl !== 'undefined') {\n toReturn['logoutUrl'] = this.logoutUrl;\n }\n if (typeof this.serviceProviderType !== 'undefined') {\n toReturn['serviceProviderType'] = this.serviceProviderType;\n }\n if (typeof this.preApprovedScopes !== 'undefined' && this.preApprovedScopes !== null) {\n toReturn['preApprovedScopes'] = 'toApiJson' in this.preApprovedScopes ? this.preApprovedScopes.toApiJson() : this.preApprovedScopes;\n }\n return toReturn;\n }\n}\nclass UpdateScopeRequestMutation {\n static fromProto(proto) {\n let m = new UpdateScopeRequestMutation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass UpdateIdentityProviderConfigurationRequestMutationOAuth2ConfigurationMutation {\n static fromProto(proto) {\n let m = new UpdateIdentityProviderConfigurationRequestMutationOAuth2ConfigurationMutation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.authorizationEndpoint !== 'undefined') {\n toReturn['authorizationEndpoint'] = this.authorizationEndpoint;\n }\n if (typeof this.tokenEndpoint !== 'undefined') {\n toReturn['tokenEndpoint'] = this.tokenEndpoint;\n }\n if (typeof this.userinfoEndpoint !== 'undefined') {\n toReturn['userinfoEndpoint'] = this.userinfoEndpoint;\n }\n return toReturn;\n }\n}\nclass UpdateIdentityProviderConfigurationRequestMutationOpenIDConnectConfigurationMutation {\n static fromProto(proto) {\n let m = new UpdateIdentityProviderConfigurationRequestMutationOpenIDConnectConfigurationMutation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.discoveryEndpoint !== 'undefined') {\n toReturn['discoveryEndpoint'] = this.discoveryEndpoint;\n }\n return toReturn;\n }\n}\nclass RegenerateSAMLServiceProviderConfigCertificateRequest {\n static fromProto(proto) {\n let m = new RegenerateSAMLServiceProviderConfigCertificateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n return toReturn;\n }\n}\nclass RegenerateSAMLServiceProviderConfigCertificateResponse {\n static fromProto(proto) {\n let m = new RegenerateSAMLServiceProviderConfigCertificateResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.certificate !== 'undefined') {\n toReturn['certificate'] = this.certificate;\n }\n return toReturn;\n }\n}\nclass UpdateConfigRequestMutationRepeatedStringMutation {\n static fromProto(proto) {\n let m = new UpdateConfigRequestMutationRepeatedStringMutation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.repeatedString !== 'undefined') {\n toReturn['repeatedString'] = this.repeatedString;\n }\n return toReturn;\n }\n}\nclass UpdateServiceProviderRequestMutationRepeatedStringMutation {\n static fromProto(proto) {\n let m = new UpdateServiceProviderRequestMutationRepeatedStringMutation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.repeatedString !== 'undefined') {\n toReturn['repeatedString'] = this.repeatedString;\n }\n return toReturn;\n }\n}\nclass RevokeGrantRequest {\n static fromProto(proto) {\n let m = new RevokeGrantRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.scopeIds !== 'undefined') {\n toReturn['scopeIds'] = this.scopeIds;\n }\n return toReturn;\n }\n}\nclass GetMultiScopeResponseScopeContainer {\n static fromProto(proto) {\n let m = new GetMultiScopeResponseScopeContainer();\n m = Object.assign(m, proto);\n if (proto.scope) {\n m.scope = Scope.fromProto(proto.scope);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined' && this.scope !== null) {\n toReturn['scope'] = 'toApiJson' in this.scope ? this.scope.toApiJson() : this.scope;\n }\n return toReturn;\n }\n}\nclass UpdateConfigRequest {\n static fromProto(proto) {\n let m = new UpdateConfigRequest();\n m = Object.assign(m, proto);\n if (proto.mutations) {\n m.mutations = proto.mutations.map(UpdateConfigRequestMutation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {\n toReturn['mutations'] = 'toApiJson' in this.mutations ? this.mutations.toApiJson() : this.mutations;\n }\n return toReturn;\n }\n}\nclass UpdateIdentityProviderConfigurationRequest {\n static fromProto(proto) {\n let m = new UpdateIdentityProviderConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.mutations) {\n m.mutations = proto.mutations.map(UpdateIdentityProviderConfigurationRequestMutation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {\n toReturn['mutations'] = 'toApiJson' in this.mutations ? this.mutations.toApiJson() : this.mutations;\n }\n return toReturn;\n }\n}\nclass UpdateSAMLServiceProviderConfigRequest {\n static fromProto(proto) {\n let m = new UpdateSAMLServiceProviderConfigRequest();\n m = Object.assign(m, proto);\n if (proto.fields) {\n m.fields = SamlServiceProviderConfig.fromProto(proto.fields);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fields !== 'undefined' && this.fields !== null) {\n toReturn['fields'] = 'toApiJson' in this.fields ? this.fields.toApiJson() : this.fields;\n }\n if (typeof this.metadataXmlString !== 'undefined') {\n toReturn['metadataXmlString'] = this.metadataXmlString;\n }\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n return toReturn;\n }\n}\nclass UpdateScopeRequest {\n static fromProto(proto) {\n let m = new UpdateScopeRequest();\n m = Object.assign(m, proto);\n if (proto.mutations) {\n m.mutations = proto.mutations.map(UpdateScopeRequestMutation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scopeId !== 'undefined') {\n toReturn['scopeId'] = this.scopeId;\n }\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {\n toReturn['mutations'] = 'toApiJson' in this.mutations ? this.mutations.toApiJson() : this.mutations;\n }\n return toReturn;\n }\n}\nclass UpdateServiceProviderRequest {\n static fromProto(proto) {\n let m = new UpdateServiceProviderRequest();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = ServiceProviderConfig.fromProto(proto.serviceProvider);\n }\n if (proto.mutations) {\n m.mutations = proto.mutations.map(UpdateServiceProviderRequestMutation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProvider !== 'undefined' && this.serviceProvider !== null) {\n toReturn['serviceProvider'] = 'toApiJson' in this.serviceProvider ? this.serviceProvider.toApiJson() : this.serviceProvider;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {\n toReturn['mutations'] = 'toApiJson' in this.mutations ? this.mutations.toApiJson() : this.mutations;\n }\n return toReturn;\n }\n}\nclass ConsumeSingleUseTokenRequest {\n static fromProto(proto) {\n let m = new ConsumeSingleUseTokenRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.userID !== 'undefined') {\n toReturn['userID'] = this.userID;\n }\n if (typeof this.otp !== 'undefined') {\n toReturn['otp'] = this.otp;\n }\n if (typeof this.nextUrl !== 'undefined') {\n toReturn['nextUrl'] = this.nextUrl;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': '',\n 'test': '',\n 'demo': 'sso-api-demo.apigateway.co',\n 'prod': 'sso-api-prod.apigateway.co',\n 'production': 'sso-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ConsentApiService = /*#__PURE__*/(() => {\n class ConsentApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n revokeGrant(r) {\n const request = r.toApiJson ? r : new RevokeGrantRequest(r);\n return this.http.post(this._host + \"/sso.v1.Consent/RevokeGrant\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n ConsentApiService.ɵfac = function ConsentApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ConsentApiService)();\n };\n ConsentApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ConsentApiService,\n factory: ConsentApiService.ɵfac,\n providedIn: 'root'\n });\n return ConsentApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ConsentAdminApiService = /*#__PURE__*/(() => {\n class ConsentAdminApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createScope(r) {\n const request = r.toApiJson ? r : new CreateScopeRequest(r);\n return this.http.post(this._host + \"/sso.v1.ConsentAdmin/CreateScope\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateScope(r) {\n const request = r.toApiJson ? r : new UpdateScopeRequest(r);\n return this.http.post(this._host + \"/sso.v1.ConsentAdmin/UpdateScope\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMultiScope(r) {\n const request = r.toApiJson ? r : new GetMultiScopeRequest(r);\n return this.http.post(this._host + \"/sso.v1.ConsentAdmin/GetMultiScope\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiScopeResponse.fromProto(resp)));\n }\n listScopes(r) {\n const request = r.toApiJson ? r : new ListScopesRequest(r);\n return this.http.post(this._host + \"/sso.v1.ConsentAdmin/ListScopes\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListScopesResponse.fromProto(resp)));\n }\n deleteScope(r) {\n const request = r.toApiJson ? r : new DeleteScopeRequest(r);\n return this.http.post(this._host + \"/sso.v1.ConsentAdmin/DeleteScope\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n ConsentAdminApiService.ɵfac = function ConsentAdminApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ConsentAdminApiService)();\n };\n ConsentAdminApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ConsentAdminApiService,\n factory: ConsentAdminApiService.ɵfac,\n providedIn: 'root'\n });\n return ConsentAdminApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet IdentityProviderApiService = /*#__PURE__*/(() => {\n class IdentityProviderApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getEntryUrl(r) {\n const request = r.toApiJson ? r : new GetEntryURLRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProvider/GetEntryURL\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEntryURLResponse.fromProto(resp)));\n }\n getMultiEntryUrl(r) {\n const request = r.toApiJson ? r : new GetMultiEntryURLRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProvider/GetMultiEntryURL\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiEntryURLResponse.fromProto(resp)));\n }\n getEntryUrlWithCode(r) {\n const request = r.toApiJson ? r : new GetEntryURLWithCodeRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProvider/GetEntryURLWithCode\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEntryURLWithCodeResponse.fromProto(resp)));\n }\n logout(r) {\n const request = r.toApiJson ? r : new LogoutRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProvider/Logout\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n consumeSingleUseToken(r) {\n const toApiJson = r.toApiJson;\n const request = typeof toApiJson !== 'undefined' ? r : new ConsumeSingleUseTokenRequest(r);\n const params = new URLSearchParams();\n const apiJson = request.toApiJson();\n for (const key in apiJson) {\n if (!apiJson.hasOwnProperty(key)) {\n continue;\n }\n const value = apiJson[key];\n if (value === null) {\n continue;\n }\n params.append(key, value);\n }\n window.location.href = `${this._host}/single-use-token?${params.toString()}`;\n }\n }\n IdentityProviderApiService.ɵfac = function IdentityProviderApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IdentityProviderApiService)();\n };\n IdentityProviderApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: IdentityProviderApiService,\n factory: IdentityProviderApiService.ɵfac,\n providedIn: 'root'\n });\n return IdentityProviderApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet IdentityProviderAdminApiService = /*#__PURE__*/(() => {\n class IdentityProviderAdminApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createIdentityProvider(r) {\n const request = r.toApiJson ? r : new CreateIdentityProviderConfigurationRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProviderAdmin/CreateIdentityProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateIdentityProvider(r) {\n const request = r.toApiJson ? r : new UpdateIdentityProviderConfigurationRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProviderAdmin/UpdateIdentityProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getIdentityProvider(r) {\n const request = r.toApiJson ? r : new GetIdentityProviderConfigurationRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProviderAdmin/GetIdentityProvider\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetIdentityProviderConfigurationResponse.fromProto(resp)));\n }\n deleteIdentityProvider(r) {\n const request = r.toApiJson ? r : new DeleteIdentityProviderConfigurationRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProviderAdmin/DeleteIdentityProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n hasCustomIdentityProvider(r) {\n const request = r.toApiJson ? r : new HasCustomIdentityProviderRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProviderAdmin/HasCustomIdentityProvider\", request.toApiJson(), this.apiOptions()).pipe(map(resp => HasCustomIdentityProviderResponse.fromProto(resp)));\n }\n }\n IdentityProviderAdminApiService.ɵfac = function IdentityProviderAdminApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IdentityProviderAdminApiService)();\n };\n IdentityProviderAdminApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: IdentityProviderAdminApiService,\n factory: IdentityProviderAdminApiService.ɵfac,\n providedIn: 'root'\n });\n return IdentityProviderAdminApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ServiceProviderApiService = /*#__PURE__*/(() => {\n class ServiceProviderApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getSessionTransferUrl(r) {\n const request = r.toApiJson ? r : new GetSessionTransferURLRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProvider/GetSessionTransferURL\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSessionTransferURLResponse.fromProto(resp)));\n }\n getLogoutUrl(r) {\n const request = r.toApiJson ? r : new GetLogoutURLRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProvider/GetLogoutURL\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetLogoutURLResponse.fromProto(resp)));\n }\n }\n ServiceProviderApiService.ɵfac = function ServiceProviderApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ServiceProviderApiService)();\n };\n ServiceProviderApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ServiceProviderApiService,\n factory: ServiceProviderApiService.ɵfac,\n providedIn: 'root'\n });\n return ServiceProviderApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ServiceProviderAdminApiService = /*#__PURE__*/(() => {\n class ServiceProviderAdminApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createServiceProvider(r) {\n const request = r.toApiJson ? r : new CreateServiceProviderRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/CreateServiceProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getServiceProvider(r) {\n const request = r.toApiJson ? r : new GetServiceProviderRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/GetServiceProvider\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetServiceProviderResponse.fromProto(resp)));\n }\n updateServiceProvider(r) {\n const request = r.toApiJson ? r : new UpdateServiceProviderRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/UpdateServiceProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteServiceProvider(r) {\n const request = r.toApiJson ? r : new DeleteServiceProviderRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/DeleteServiceProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listServiceProviders(r) {\n const request = r.toApiJson ? r : new ListServiceProvidersRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/ListServiceProviders\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListServiceProvidersResponse.fromProto(resp)));\n }\n createConfig(r) {\n const request = r.toApiJson ? r : new CreateConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/CreateConfig\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateConfigResponse.fromProto(resp)));\n }\n getMultiConfig(r) {\n const request = r.toApiJson ? r : new GetMultiConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/GetMultiConfig\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiConfigResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteConfig(r) {\n const request = r.toApiJson ? r : new DeleteConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/DeleteConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listConfigs(r) {\n const request = r.toApiJson ? r : new ListConfigsRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/ListConfigs\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListConfigsResponse.fromProto(resp)));\n }\n createSamlServiceProviderConfig(r) {\n const request = r.toApiJson ? r : new CreateSamlServiceProviderConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/CreateSamlServiceProviderConfig\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateSamlServiceProviderConfigResponse.fromProto(resp)));\n }\n getSamlIdentityProviderMetadata(r) {\n const request = r.toApiJson ? r : new GetSAMLIdentityProviderMetadataRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/GetSAMLIdentityProviderMetadata\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSAMLIdentityProviderMetadataResponse.fromProto(resp)));\n }\n updateSamlServiceProviderConfig(r) {\n const request = r.toApiJson ? r : new UpdateSAMLServiceProviderConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/UpdateSAMLServiceProviderConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listSamlServiceProviderConfigs(r) {\n const request = r.toApiJson ? r : new ListSAMLServiceProviderConfigsRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/ListSAMLServiceProviderConfigs\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSAMLServiceProviderConfigsResponse.fromProto(resp)));\n }\n regenerateSamlServiceProviderConfigCertificate(r) {\n const request = r.toApiJson ? r : new RegenerateSAMLServiceProviderConfigCertificateRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/RegenerateSAMLServiceProviderConfigCertificate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RegenerateSAMLServiceProviderConfigCertificateResponse.fromProto(resp)));\n }\n deleteSamlServiceProviderConfig(r) {\n const request = r.toApiJson ? r : new DeleteSAMLServiceProviderConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/DeleteSAMLServiceProviderConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n ServiceProviderAdminApiService.ɵfac = function ServiceProviderAdminApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ServiceProviderAdminApiService)();\n };\n ServiceProviderAdminApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ServiceProviderAdminApiService,\n factory: ServiceProviderAdminApiService.ɵfac,\n providedIn: 'root'\n });\n return ServiceProviderAdminApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\nconst ImpersonationTypeNone = 'none';\nconst ImpersonationTypeAuto = 'auto';\nconst serviceGatewayPath = \"/service-gateway\";\nlet SSOService = /*#__PURE__*/(() => {\n class SSOService {\n constructor(identityProviderApiService, consentAdminApiService, serviceProviderApiService, hostService) {\n this.identityProviderApiService = identityProviderApiService;\n this.consentAdminApiService = consentAdminApiService;\n this.serviceProviderApiService = serviceProviderApiService;\n this.hostService = hostService;\n }\n getEntryUrl(serviceProviderId, context, options = {}) {\n const request = new GetEntryURLRequest({\n serviceProviderId: serviceProviderId,\n context: context,\n skipGatewayAuthentication: options.skipGatewayAuthentication,\n path: options.path\n });\n switch (options.impersonation) {\n case 'none':\n request.noImpersonation = new NoImpersonation();\n break;\n case 'auto':\n request.autoImpersonation = new AutoImpersonation();\n break;\n // Use the proto/server default.\n case undefined:\n break;\n case null:\n break;\n default:\n request.explicitImpersonateeUserId = options.impersonation;\n break;\n }\n return this.identityProviderApiService.getEntryUrl(request).pipe(map(resp => resp.entryUrl), share());\n }\n getMultiEntryUrl(serviceProviderIds, context, options = {}) {\n const request = new GetMultiEntryURLRequest({\n serviceProviderIds: serviceProviderIds,\n context: context\n });\n switch (options.impersonation) {\n case 'none':\n request.noImpersonation = new NoImpersonation();\n break;\n case 'auto':\n request.autoImpersonation = new AutoImpersonation();\n break;\n // Use the proto/server default.\n case undefined:\n break;\n case null:\n break;\n default:\n request.explicitImpersonateeUserId = options.impersonation;\n break;\n }\n return this.identityProviderApiService.getMultiEntryUrl(request).pipe(map(resp => resp.entryUrls || []), share());\n }\n getMultiScope(scopeIds) {\n const request = new GetMultiScopeRequest({\n scopeIds: scopeIds\n });\n return this.consentAdminApiService.getMultiScope(request).pipe(map(resp => resp.scopes));\n }\n getSessionTransferURL(serviceProviderId, context) {\n const request = new GetSessionTransferURLRequest({\n serviceProviderId: serviceProviderId,\n context: context\n });\n return this.serviceProviderApiService.getSessionTransferUrl(request);\n }\n consumeSingleUseToken(userID, otp, nextUrl) {\n const request = new ConsumeSingleUseTokenRequest({\n userID: userID,\n otp: otp,\n nextUrl: nextUrl\n });\n this.identityProviderApiService.consumeSingleUseToken(request);\n }\n getServiceGatewayURLForAccount(serviceProviderID, accountID, nextPath) {\n const host = this.hostService.hostWithScheme;\n const query = new URLSearchParams({\n serviceProviderId: serviceProviderID,\n account_id: accountID\n });\n if (nextPath) {\n query.set(\"path\", nextPath);\n }\n return host + serviceGatewayPath + \"?\" + query.toString();\n }\n getServiceGatewayURLForGroupPath(serviceProviderID, groupPath, nextPath) {\n const host = this.hostService.hostWithScheme;\n const query = new URLSearchParams({\n serviceProviderId: serviceProviderID,\n group_path: groupPath\n });\n if (nextPath) {\n query.set(\"path\", nextPath);\n }\n return host + serviceGatewayPath + \"?\" + query.toString();\n }\n }\n SSOService.ɵfac = function SSOService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SSOService)(i0.ɵɵinject(IdentityProviderApiService), i0.ɵɵinject(ConsentAdminApiService), i0.ɵɵinject(ServiceProviderApiService), i0.ɵɵinject(HostService));\n };\n SSOService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SSOService,\n factory: SSOService.ɵfac,\n providedIn: 'root'\n });\n return SSOService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction newAccountServiceContext(accountId) {\n return new ServiceContext({\n account: new ServiceContextAccount({\n accountId: accountId\n })\n });\n}\nfunction newPartnerServiceContext(partnerId) {\n return new ServiceContext({\n partner: new ServiceContextPartner({\n partnerId: partnerId\n })\n });\n}\nfunction newSuperAdminServiceContext() {\n return new ServiceContext({\n superAdmin: new ServiceContextSuperAdmin()\n });\n}\n\n// DEPRECATED, use ServiceContextPartner\nconst Partner = ServiceContextPartner;\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, AcsUrl, AutoImpersonation, ConsentAdminApiService, ConsentApiService, ConsumeSingleUseTokenRequest, CreateConfigRequest, CreateConfigResponse, CreateIdentityProviderConfigurationRequest, CreateSamlServiceProviderConfigRequest, CreateSamlServiceProviderConfigResponse, CreateScopeRequest, CreateServiceProviderRequest, DeleteConfigRequest, DeleteIdentityProviderConfigurationRequest, DeleteSAMLServiceProviderConfigRequest, DeleteScopeRequest, DeleteServiceProviderRequest, FieldMask, GetEntryURLRequest, GetEntryURLResponse, GetEntryURLWithCodeRequest, GetEntryURLWithCodeResponse, GetIdentityProviderConfigurationRequest, GetIdentityProviderConfigurationResponse, GetLogoutURLRequest, GetLogoutURLResponse, GetMultiConfigRequest, GetMultiConfigResponse, GetMultiConfigResponseConfigContainer, GetMultiEntryURLRequest, GetMultiEntryURLResponse, GetMultiScopeRequest, GetMultiScopeResponse, GetMultiScopeResponseScopeContainer, GetSAMLIdentityProviderMetadataRequest, GetSAMLIdentityProviderMetadataResponse, GetServiceProviderRequest, GetServiceProviderResponse, GetSessionTransferURLRequest, GetSessionTransferURLResponse, HasCustomIdentityProviderRequest, HasCustomIdentityProviderResponse, HostService, IdentityProviderAdminApiService, IdentityProviderApiService, IdentityProviderConfiguration, ListConfigsRequest, ListConfigsResponse, ListSAMLServiceProviderConfigsRequest, ListSAMLServiceProviderConfigsResponse, ListScopesRequest, ListScopesResponse, ListServiceProvidersRequest, ListServiceProvidersResponse, LogoutRequest, NoImpersonation, OAuth2Configuration, Oauth2Config, OpenIDConnectConfiguration, Partner, RegenerateSAMLServiceProviderConfigCertificateRequest, RegenerateSAMLServiceProviderConfigCertificateResponse, RevokeGrantRequest, SSOService, SamlServiceProviderConfig, Scope, ServiceContext, ServiceContextAccount, ServiceContextBrand, ServiceContextPartner, ServiceContextSuperAdmin, ServiceProviderAdminApiService, ServiceProviderApiService, ServiceProviderConfig, ServiceProviderType, UpdateConfigRequest, UpdateConfigRequestMutation, UpdateConfigRequestMutationRepeatedStringMutation, UpdateIdentityProviderConfigurationRequest, UpdateIdentityProviderConfigurationRequestMutation, UpdateIdentityProviderConfigurationRequestMutationOAuth2ConfigurationMutation, UpdateIdentityProviderConfigurationRequestMutationOpenIDConnectConfigurationMutation, UpdateSAMLServiceProviderConfigRequest, UpdateScopeRequest, UpdateScopeRequestMutation, UpdateServiceProviderRequest, UpdateServiceProviderRequestMutation, UpdateServiceProviderRequestMutationRepeatedStringMutation, newAccountServiceContext, newPartnerServiceContext, newSuperAdminServiceContext };\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Owner = /*#__PURE__*/function (Owner) {\n Owner[Owner[\"OWNER_NOT_SPECIFIED\"] = 0] = \"OWNER_NOT_SPECIFIED\";\n Owner[Owner[\"OWNER_SOCIAL_MARKETING\"] = 1] = \"OWNER_SOCIAL_MARKETING\";\n Owner[Owner[\"OWNER_CUSTOMER_VOICE\"] = 2] = \"OWNER_CUSTOMER_VOICE\";\n Owner[Owner[\"OWNER_CORE_SERVICES\"] = 3] = \"OWNER_CORE_SERVICES\";\n Owner[Owner[\"OWNER_EMAIL_VERIFICATION\"] = 4] = \"OWNER_EMAIL_VERIFICATION\";\n Owner[Owner[\"OWNER_SMB_REFERRAL\"] = 5] = \"OWNER_SMB_REFERRAL\";\n Owner[Owner[\"OWNER_UNTRACKED\"] = 6] = \"OWNER_UNTRACKED\";\n Owner[Owner[\"OWNER_INBOX_BUSINESS\"] = 7] = \"OWNER_INBOX_BUSINESS\";\n Owner[Owner[\"OWNER_REPUTATION_MANAGEMENT\"] = 8] = \"OWNER_REPUTATION_MANAGEMENT\";\n return Owner;\n}(Owner || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar SortDirection = /*#__PURE__*/function (SortDirection) {\n SortDirection[SortDirection[\"SORT_DIRECTION_DESCENDING\"] = 0] = \"SORT_DIRECTION_DESCENDING\";\n SortDirection[SortDirection[\"SORT_DIRECTION_ASCENDING\"] = 1] = \"SORT_DIRECTION_ASCENDING\";\n return SortDirection;\n}(SortDirection || {});\nvar SortField = /*#__PURE__*/function (SortField) {\n SortField[SortField[\"SORT_FIELD_CREATED\"] = 0] = \"SORT_FIELD_CREATED\";\n SortField[SortField[\"SORT_FIELD_LONGURL\"] = 1] = \"SORT_FIELD_LONGURL\";\n SortField[SortField[\"SORT_FIELD_FACEBOOK\"] = 2] = \"SORT_FIELD_FACEBOOK\";\n SortField[SortField[\"SORT_FIELD_TWITTER\"] = 3] = \"SORT_FIELD_TWITTER\";\n SortField[SortField[\"SORT_FIELD_LINKEDIN\"] = 4] = \"SORT_FIELD_LINKEDIN\";\n SortField[SortField[\"SORT_FIELD_GOOGLE\"] = 5] = \"SORT_FIELD_GOOGLE\";\n SortField[SortField[\"SORT_FIELD_OTHER\"] = 6] = \"SORT_FIELD_OTHER\";\n SortField[SortField[\"SORT_FIELD_TOTAL\"] = 7] = \"SORT_FIELD_TOTAL\";\n return SortField;\n}(SortField || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Link {\n static fromProto(proto) {\n let m = new Link();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.owner) {\n m.owner = enumStringToValue$2(Owner, proto.owner);\n }\n if (proto.hidden) {\n m.hidden = new Date(proto.hidden);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.shortCode !== 'undefined') {\n toReturn['shortCode'] = this.shortCode;\n }\n if (typeof this.longUrl !== 'undefined') {\n toReturn['longUrl'] = this.longUrl;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.owner !== 'undefined') {\n toReturn['owner'] = this.owner;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.hidden !== 'undefined' && this.hidden !== null) {\n toReturn['hidden'] = 'toApiJson' in this.hidden ? this.hidden.toApiJson() : this.hidden;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateLinkRequest {\n static fromProto(proto) {\n let m = new CreateLinkRequest();\n m = Object.assign(m, proto);\n if (proto.owner) {\n m.owner = enumStringToValue$1(Owner, proto.owner);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.linkUrl !== 'undefined') {\n toReturn['linkUrl'] = this.linkUrl;\n }\n if (typeof this.owner !== 'undefined') {\n toReturn['owner'] = this.owner;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.hidden !== 'undefined') {\n toReturn['hidden'] = this.hidden;\n }\n if (typeof this.sensitiveUrl !== 'undefined') {\n toReturn['sensitiveUrl'] = this.sensitiveUrl;\n }\n return toReturn;\n }\n}\nclass CreateLinkResponse {\n static fromProto(proto) {\n let m = new CreateLinkResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.shortCode !== 'undefined') {\n toReturn['shortCode'] = this.shortCode;\n }\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n return toReturn;\n }\n}\nclass GetLinkRequest {\n static fromProto(proto) {\n let m = new GetLinkRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.shortCode !== 'undefined') {\n toReturn['shortCode'] = this.shortCode;\n }\n return toReturn;\n }\n}\nclass GetLinkResponse {\n static fromProto(proto) {\n let m = new GetLinkResponse();\n m = Object.assign(m, proto);\n if (proto.link) {\n m.link = Link.fromProto(proto.link);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.link !== 'undefined' && this.link !== null) {\n toReturn['link'] = 'toApiJson' in this.link ? this.link.toApiJson() : this.link;\n }\n return toReturn;\n }\n}\nclass GetMultiLinkMetricsRequest {\n static fromProto(proto) {\n let m = new GetMultiLinkMetricsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.shortCode !== 'undefined') {\n toReturn['shortCode'] = this.shortCode;\n }\n return toReturn;\n }\n}\nclass GetMultiLinkMetricsResponse {\n static fromProto(proto) {\n let m = new GetMultiLinkMetricsResponse();\n m = Object.assign(m, proto);\n if (proto.linkMetrics) {\n m.linkMetrics = proto.linkMetrics.map(LinkMetrics.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.linkMetrics !== 'undefined' && this.linkMetrics !== null) {\n toReturn['linkMetrics'] = 'toApiJson' in this.linkMetrics ? this.linkMetrics.toApiJson() : this.linkMetrics;\n }\n return toReturn;\n }\n}\nclass LinkMetrics {\n static fromProto(proto) {\n let m = new LinkMetrics();\n m = Object.assign(m, proto);\n if (proto.totalHits) {\n m.totalHits = parseInt(proto.totalHits, 10);\n }\n if (proto.referers) {\n m.referers = Object.keys(proto.referers).reduce((obj, k) => {\n obj[k] = parseInt(proto.referers[k], 10);\n return obj;\n }, {});\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.totalHits !== 'undefined') {\n toReturn['totalHits'] = this.totalHits;\n }\n if (typeof this.referers !== 'undefined' && this.referers !== null) {\n toReturn['referers'] = 'toApiJson' in this.referers ? this.referers.toApiJson() : this.referers;\n }\n if (typeof this.shortCode !== 'undefined') {\n toReturn['shortCode'] = this.shortCode;\n }\n if (typeof this.longUrl !== 'undefined') {\n toReturn['longUrl'] = this.longUrl;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass ListAllLinkMetricsRequest {\n static fromProto(proto) {\n let m = new ListAllLinkMetricsRequest();\n m = Object.assign(m, proto);\n if (proto.sortField) {\n m.sortField = enumStringToValue$1(SortField, proto.sortField);\n }\n if (proto.sortDirection) {\n m.sortDirection = enumStringToValue$1(SortDirection, proto.sortDirection);\n }\n if (proto.owner) {\n m.owner = enumStringToValue$1(Owner, proto.owner);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.sortField !== 'undefined') {\n toReturn['sortField'] = this.sortField;\n }\n if (typeof this.filterTerm !== 'undefined') {\n toReturn['filterTerm'] = this.filterTerm;\n }\n if (typeof this.sortDirection !== 'undefined') {\n toReturn['sortDirection'] = this.sortDirection;\n }\n if (typeof this.owner !== 'undefined') {\n toReturn['owner'] = this.owner;\n }\n return toReturn;\n }\n}\nclass ListAllLinkMetricsResponse {\n static fromProto(proto) {\n let m = new ListAllLinkMetricsResponse();\n m = Object.assign(m, proto);\n if (proto.linkMetrics) {\n m.linkMetrics = proto.linkMetrics.map(LinkMetrics.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.linkMetrics !== 'undefined' && this.linkMetrics !== null) {\n toReturn['linkMetrics'] = 'toApiJson' in this.linkMetrics ? this.linkMetrics.toApiJson() : this.linkMetrics;\n }\n return toReturn;\n }\n}\nclass ListLinksRequest {\n static fromProto(proto) {\n let m = new ListLinksRequest();\n m = Object.assign(m, proto);\n if (proto.options) {\n m.options = PagedRequestOptions.fromProto(proto.options);\n }\n if (proto.owner) {\n m.owner = enumStringToValue$1(Owner, proto.owner);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.options !== 'undefined' && this.options !== null) {\n toReturn['options'] = 'toApiJson' in this.options ? this.options.toApiJson() : this.options;\n }\n if (typeof this.owner !== 'undefined') {\n toReturn['owner'] = this.owner;\n }\n return toReturn;\n }\n}\nclass ListLinksResponse {\n static fromProto(proto) {\n let m = new ListLinksResponse();\n m = Object.assign(m, proto);\n if (proto.link) {\n m.link = proto.link.map(Link.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.link !== 'undefined' && this.link !== null) {\n toReturn['link'] = 'toApiJson' in this.link ? this.link.toApiJson() : this.link;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass LinkMetricsReferersEntry {\n static fromProto(proto) {\n let m = new LinkMetricsReferersEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass SetLinkHideStatusesRequest {\n static fromProto(proto) {\n let m = new SetLinkHideStatusesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.shortCodes !== 'undefined') {\n toReturn['shortCodes'] = this.shortCodes;\n }\n if (typeof this.hidden !== 'undefined') {\n toReturn['hidden'] = this.hidden;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass HeaderValues {\n static fromProto(proto) {\n let m = new HeaderValues();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.values !== 'undefined') {\n toReturn['values'] = this.values;\n }\n return toReturn;\n }\n}\nclass VisitHeadersEntry {\n static fromProto(proto) {\n let m = new VisitHeadersEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = HeaderValues.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass Visit {\n static fromProto(proto) {\n let m = new Visit();\n m = Object.assign(m, proto);\n if (proto.headers) {\n m.headers = Object.keys(proto.headers).reduce((obj, k) => {\n obj[k] = HeaderValues.fromProto(proto.headers[k]);\n return obj;\n }, {});\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n if (proto.link) {\n m.link = Link.fromProto(proto.link);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.headers !== 'undefined' && this.headers !== null) {\n toReturn['headers'] = 'toApiJson' in this.headers ? this.headers.toApiJson() : this.headers;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.sessionId !== 'undefined') {\n toReturn['sessionId'] = this.sessionId;\n }\n if (typeof this.link !== 'undefined' && this.link !== null) {\n toReturn['link'] = 'toApiJson' in this.link ? this.link.toApiJson() : this.link;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'url-shortener-api.vendasta-local.com',\n 'test': '',\n 'demo': 'url-shortener-api-demo.apigateway.co',\n 'prod': 'url-shortener-api-prod.apigateway.co',\n 'production': 'url-shortener-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet UrlShortenerApiService = /*#__PURE__*/(() => {\n class UrlShortenerApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createLink(r) {\n const request = r.toApiJson ? r : new CreateLinkRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/CreateLink\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateLinkResponse.fromProto(resp)));\n }\n getLink(r) {\n const request = r.toApiJson ? r : new GetLinkRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/GetLink\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetLinkResponse.fromProto(resp)));\n }\n listLinks(r) {\n const request = r.toApiJson ? r : new ListLinksRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/ListLinks\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListLinksResponse.fromProto(resp)));\n }\n getMultiLinkMetrics(r) {\n const request = r.toApiJson ? r : new GetMultiLinkMetricsRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/GetMultiLinkMetrics\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiLinkMetricsResponse.fromProto(resp)));\n }\n listAllLinkMetrics(r) {\n const request = r.toApiJson ? r : new ListAllLinkMetricsRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/ListAllLinkMetrics\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListAllLinkMetricsResponse.fromProto(resp)));\n }\n setLinkHideStatuses(r) {\n const request = r.toApiJson ? r : new SetLinkHideStatusesRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/SetLinkHideStatuses\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n UrlShortenerApiService.ɵfac = function UrlShortenerApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || UrlShortenerApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n UrlShortenerApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UrlShortenerApiService,\n factory: UrlShortenerApiService.ɵfac,\n providedIn: 'root'\n });\n return UrlShortenerApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet UrlShortenerService = /*#__PURE__*/(() => {\n class UrlShortenerService {\n constructor(api) {\n this.api = api;\n }\n getLink(shortCode) {\n const req = new GetLinkRequest({\n shortCode: shortCode\n });\n return this.api.getLink(req).pipe(map(resp => resp.link));\n }\n createLink(businessId, linkUrl, owner, description, hidden) {\n const req = new CreateLinkRequest({\n businessId: businessId,\n linkUrl: linkUrl,\n owner: owner,\n description: description,\n hidden: hidden\n });\n return this.api.createLink(req);\n }\n listLinks(businessId, cursor, pageSize, owner) {\n const req = new ListLinksRequest({\n businessId: businessId,\n owner: owner,\n options: new PagedRequestOptions({\n cursor: cursor,\n pageSize: pageSize\n })\n });\n return this.api.listLinks(req).pipe(map(resp => new PagedResponse(resp.link, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore)));\n }\n listLinkMetrics(businessId, sortField, filterTerm, sortDirection, owner) {\n const body = {\n businessId: businessId,\n sortField: sortField,\n filterTerm: filterTerm,\n sortDirection: sortDirection,\n owner: owner\n };\n const req = new ListAllLinkMetricsRequest(body);\n return this.api.listAllLinkMetrics(req).pipe(map(resp => resp.linkMetrics));\n }\n setLinkHideStatuses(businessId, shortCodes, hidden) {\n const req = new SetLinkHideStatusesRequest({\n businessId: businessId,\n shortCodes: shortCodes,\n hidden: hidden\n });\n return this.api.setLinkHideStatuses(req).pipe(map(res => res.status === 200));\n }\n }\n UrlShortenerService.ɵfac = function UrlShortenerService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || UrlShortenerService)(i0.ɵɵinject(UrlShortenerApiService));\n };\n UrlShortenerService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UrlShortenerService,\n factory: UrlShortenerService.ɵfac,\n providedIn: 'root'\n });\n return UrlShortenerService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass PagedResponse {\n constructor(results, nextCursor, hasMore) {\n this.results = results;\n this.nextCursor = nextCursor;\n this.hasMore = hasMore;\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CreateLinkResponse, Link, LinkMetrics, Owner, PagedResponse, SortDirection, SortField, UrlShortenerService };\n","import {\n PaymentMethodType as PaymentMethodTypeApi,\n RetailCustomerConfiguration as ApiRetailCustomerConfiguration,\n} from '@vendasta/billing';\nimport { RetailConfiguration } from '../merchant';\n\nexport interface RetailCustomerConfiguration {\n merchantId: string;\n customerId: string;\n contactId: string;\n additionalContactIds?: string[];\n autoGenerateRetailSubscriptions?: boolean;\n autoPost?: boolean;\n autoGenerate?: boolean;\n useTemplateInvoice?: boolean;\n collectionMethod?: CollectionMethod;\n invoiceDay?: number;\n netD?: number;\n memo?: string;\n paymentMethodTypes?: PaymentMethodType[];\n}\n\nexport enum CollectionMethod {\n UNSET = '',\n MANUAL_COLLECTION = 'Manual Collection',\n CHARGE_AUTOMATICALLY = 'Charge Automatically',\n SEND_EMAIL = 'Send Email',\n}\n\nexport enum CollectionMethodAPI {\n UNSET = '',\n MANUAL_COLLECTION = 'manual-collection',\n CHARGE_AUTOMATICALLY = 'charge-automatically',\n SEND_EMAIL = 'send-email',\n}\n\nexport enum PaymentMethodType {\n ACH_DEBIT = 'ACH',\n CARD = 'Card',\n ACSS_DEBIT = 'ACSS',\n UNSET = 'Unset',\n}\n\nexport function collectionMethodToApi(m: CollectionMethod | undefined | string): string {\n switch (m) {\n case CollectionMethod.MANUAL_COLLECTION:\n return CollectionMethodAPI.MANUAL_COLLECTION;\n case CollectionMethod.CHARGE_AUTOMATICALLY:\n return CollectionMethodAPI.CHARGE_AUTOMATICALLY;\n case CollectionMethod.SEND_EMAIL:\n return CollectionMethodAPI.SEND_EMAIL;\n default:\n return CollectionMethodAPI.UNSET;\n }\n}\n\nexport function collectionMethodFromApi(m: string): CollectionMethod {\n switch (m) {\n case CollectionMethodAPI.MANUAL_COLLECTION:\n return CollectionMethod.MANUAL_COLLECTION;\n case CollectionMethodAPI.CHARGE_AUTOMATICALLY:\n return CollectionMethod.CHARGE_AUTOMATICALLY;\n case CollectionMethodAPI.SEND_EMAIL:\n return CollectionMethod.SEND_EMAIL;\n default:\n return CollectionMethod.UNSET;\n }\n}\n\nexport function retailCustomerConfigurationFromApi(\n config: ApiRetailCustomerConfiguration,\n): RetailCustomerConfiguration {\n return {\n merchantId: config.merchantId || '',\n customerId: config.customerId || '',\n contactId: config.contactId || '',\n additionalContactIds: config.additionalContactIds ?? [],\n autoGenerateRetailSubscriptions: config.autoGenerateRetailSubscriptions || false,\n autoPost: config.autoPost || false,\n autoGenerate: config.autoGenerate || false,\n useTemplateInvoice: config.useTemplateInvoice || false,\n collectionMethod: collectionMethodFromApi(config.collectionMethod),\n invoiceDay: config.invoiceDay || 0,\n netD: config.netD || 7,\n memo: config.memo || '',\n paymentMethodTypes: paymentTypesFromApi(config.paymentMethodTypes),\n };\n}\n\nfunction paymentTypeFromApi(t: PaymentMethodTypeApi): PaymentMethodType {\n switch (t) {\n case PaymentMethodTypeApi.PAYMENT_METHOD_TYPE_CARD:\n return PaymentMethodType.CARD;\n case PaymentMethodTypeApi.PAYMENT_METHOD_TYPE_ACH_DEBIT:\n return PaymentMethodType.ACH_DEBIT;\n case PaymentMethodTypeApi.PAYMENT_METHOD_TYPE_ACSS_DEBIT:\n return PaymentMethodType.ACSS_DEBIT;\n default:\n return PaymentMethodType.UNSET;\n }\n}\n\nexport function paymentTypesFromApi(t: PaymentMethodTypeApi[]): PaymentMethodType[] {\n return t?.map(paymentTypeFromApi) || [];\n}\n\nfunction paymentMethodTypeToApi(t: PaymentMethodType): PaymentMethodTypeApi {\n switch (t) {\n case PaymentMethodType.CARD:\n return PaymentMethodTypeApi.PAYMENT_METHOD_TYPE_CARD;\n case PaymentMethodType.ACH_DEBIT:\n return PaymentMethodTypeApi.PAYMENT_METHOD_TYPE_ACH_DEBIT;\n case PaymentMethodType.ACSS_DEBIT:\n return PaymentMethodTypeApi.PAYMENT_METHOD_TYPE_ACSS_DEBIT;\n default:\n return PaymentMethodTypeApi.PAYMENT_METHOD_TYPE_UNSET;\n }\n}\n\nexport function paymentMethodTypesToApi(t: PaymentMethodType[]): PaymentMethodTypeApi[] {\n return t?.map(paymentMethodTypeToApi) || [];\n}\n\nexport function convertRetailConfigurationToRetailCustomerConfiguration(\n retailConfig: RetailConfiguration,\n customerId: string,\n contactId: string,\n): RetailCustomerConfiguration {\n return {\n merchantId: retailConfig.merchantId,\n customerId: customerId,\n contactId: contactId,\n autoGenerateRetailSubscriptions: retailConfig.defaultCustomerConfiguration?.autoGenerateRetailSubscriptions,\n autoPost:\n retailConfig.defaultCustomerConfiguration?.collectionMethod === CollectionMethod.SEND_EMAIL ||\n retailConfig.defaultCustomerConfiguration?.collectionMethod === CollectionMethod.CHARGE_AUTOMATICALLY,\n autoGenerate: retailConfig.defaultCustomerConfiguration?.collectionMethod !== CollectionMethod.UNSET,\n collectionMethod: retailConfig.defaultCustomerConfiguration?.collectionMethod,\n invoiceDay: retailConfig.defaultCustomerConfiguration?.invoiceDay,\n netD: retailConfig.defaultCustomerConfiguration?.netD,\n memo: retailConfig.defaultCustomerConfiguration?.memo,\n };\n}\n","import { Injectable } from '@angular/core';\nimport {\n GetRetailCustomerConfigurationRequest,\n GetRetailCustomerConfigurationResponse,\n RetailCustomerConfigurationApiService,\n UpsertRetailCustomerConfigurationRequest,\n UpsertRetailCustomerConfigurationRequestInterface,\n} from '@vendasta/billing';\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport {\n collectionMethodToApi,\n RetailCustomerConfiguration,\n retailCustomerConfigurationFromApi,\n} from './retail-customer-configuration';\n\n@Injectable({ providedIn: 'root' })\nexport class RetailCustomerConfigurationService {\n constructor(private configApiService: RetailCustomerConfigurationApiService) {}\n\n get(merchantId: string, customerId: string): Observable {\n const req = new GetRetailCustomerConfigurationRequest({\n merchantId,\n customerId,\n });\n return this.configApiService\n .get(req)\n .pipe(\n map((resp: GetRetailCustomerConfigurationResponse) => retailCustomerConfigurationFromApi(resp.configuration)),\n );\n }\n\n upsert(req: UpsertRetailCustomerConfigurationRequestInterface): Observable {\n return this.configApiService\n .upsert(\n new UpsertRetailCustomerConfigurationRequest({\n ...req,\n collectionMethod: collectionMethodToApi(req.collectionMethod),\n paymentMethodTypes: req.paymentMethodTypes,\n }),\n )\n .pipe(mapTo(null));\n }\n}\n","export { RetailCustomerConfigurationService } from './retail-customer-configuration.service';\nexport * from './retail-customer-configuration';\n","import { NoteInterface as ApiNote } from '@vendasta/billing';\nimport { Note } from '../invoice/invoice';\n\nexport function convertAPINote(note: ApiNote): Note {\n return note ? { message: note.message ?? '' } : { message: '' };\n}\n\nexport const isNote = (n: Note | undefined): n is Note => {\n return n ? !!n.message : false;\n};\n","import { TaxRateInterface } from '@vendasta/billing';\n\nexport const isTaxRate = (tr: TaxRate | undefined): tr is TaxRate => {\n return !!tr;\n};\n\nexport interface TaxRate {\n id?: string;\n merchantId?: string;\n countryCode?: string;\n stateCode?: string;\n name?: string;\n description?: string;\n percentage?: number;\n accountingSystemId?: string;\n}\n\nexport function taxRateFromApi(apiTaxRate: TaxRateInterface): TaxRate {\n return {\n id: apiTaxRate.id || '',\n merchantId: apiTaxRate.merchantId || '',\n countryCode: apiTaxRate.countryCode || '',\n stateCode: apiTaxRate.stateCode || '',\n name: apiTaxRate.name || '',\n description: apiTaxRate.description || '',\n percentage: apiTaxRate.percentage || 0.0,\n accountingSystemId: apiTaxRate.accountingSystemId || '',\n };\n}\n\nexport function taxRateToApi(apiTaxRate: TaxRate): TaxRateInterface {\n return {\n id: apiTaxRate.id || '',\n merchantId: apiTaxRate.merchantId || '',\n countryCode: apiTaxRate.countryCode || '',\n stateCode: apiTaxRate.stateCode || '',\n name: apiTaxRate.name || '',\n description: apiTaxRate.description || '',\n percentage: apiTaxRate.percentage || 0.0,\n accountingSystemId: apiTaxRate.accountingSystemId || '',\n };\n}\n\nexport interface ListTaxRateFilter {\n merchantId?: string;\n includeArchived?: boolean;\n countryCode?: string;\n stateCode?: string;\n name?: string;\n}\n\nexport interface CalculateTaxResponse {\n taxableAmount: number;\n taxRates: TaxRate[];\n}\n\nexport interface LineItem {\n sku: string;\n amount: number;\n}\n\nexport interface LineItemTaxes extends LineItem {\n taxRateIds?: string[];\n}\n\nexport interface AppliedTax {\n amount: number;\n taxRateId: string;\n name: string;\n percentage: number;\n description: string;\n}\n\nexport interface CalculateLineItemsTaxResponse {\n appliedTaxes: AppliedTax[];\n lineItemTaxes: LineItemTaxes[];\n totalTaxableAmount: number;\n taxRates: TaxRate[];\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n ArchiveTaxRequest,\n CalculateLineItemTaxesRequest,\n CalculateTaxRequest,\n CreateTaxRequest,\n GetMultiTaxRequest,\n ListTaxRequest,\n PagedRequestOptions,\n TaxApiService,\n UpdateTaxRequest,\n CalculateLineItemTaxesResponse,\n CreateTaxResponse,\n} from '@vendasta/billing';\nimport {\n CalculateLineItemsTaxResponse,\n CalculateTaxResponse,\n ListTaxRateFilter,\n TaxRate,\n taxRateFromApi,\n LineItem,\n} from './tax-rate';\n\n@Injectable({ providedIn: 'root' })\nexport class TaxRateService {\n constructor(private taxRateApi: TaxApiService) {}\n\n // NOTE: use calculateLineItems for more accurate precision\n calculate(merchantId: string, customerId: string, amount: number): Observable {\n const r = new CalculateTaxRequest({\n merchantId: merchantId,\n customerId: customerId,\n amount: amount,\n });\n return this.taxRateApi.calculate(r).pipe(\n map((response) => {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n return {\n taxableAmount: response.taxableAmount || 0,\n taxRates: taxRates,\n };\n }),\n );\n }\n\n // calculateLineItems calculates tax per line item and in total with a precision of 4 decimal places\n calculateLineItems(\n merchantId: string,\n customerId: string,\n lineItems: LineItem[],\n ): Observable {\n const r = new CalculateLineItemTaxesRequest({\n merchantId: merchantId,\n customerId: customerId,\n lineItems: lineItems,\n });\n return this.taxRateApi.calculateLineItems(r).pipe(\n map((response) => {\n return this.buildCalculateLineItemsTaxResponse(response);\n }),\n catchError(() => {\n return of({} as CalculateLineItemsTaxResponse);\n }),\n );\n }\n\n private buildCalculateLineItemsTaxResponse(response: CalculateLineItemTaxesResponse): CalculateLineItemsTaxResponse {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n const lineItemTaxes = (response.lineItemTaxes || []).map((item) => {\n return {\n sku: item.sku,\n amount: item.taxableAmount || 0,\n taxRateIds: item.taxRateIds || [],\n };\n });\n return {\n appliedTaxes: response.appliedTaxes || [],\n lineItemTaxes: lineItemTaxes,\n totalTaxableAmount: response.totalTaxableAmount || 0,\n taxRates: taxRates,\n };\n }\n\n create(\n merchantId: string,\n countryCode: string,\n stateCode: string,\n name: string,\n description: string,\n percentage: number,\n accountingSystemId: string,\n ): Observable {\n const r = new CreateTaxRequest({\n merchantId: merchantId,\n countryCode: countryCode,\n stateCode: stateCode,\n name: name,\n description: description,\n percentage: percentage,\n accountingSystemId: accountingSystemId,\n });\n\n return this.taxRateApi.create(r);\n }\n\n update(\n merchantId: string,\n id: string,\n countryCode: string,\n stateCode: string,\n name: string,\n description: string,\n percentage: number,\n accountingSystemId: string,\n ): Observable> {\n const r = new UpdateTaxRequest({\n merchantId: merchantId,\n id: id,\n countryCode: countryCode,\n stateCode: stateCode,\n name: name,\n description: description,\n percentage: percentage,\n accountingSystemId: accountingSystemId,\n });\n\n return this.taxRateApi.update(r);\n }\n\n list(filters: ListTaxRateFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListTaxRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.taxRateApi.list(req).pipe(\n map((response) => {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n return new PagedResponse(taxRates, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n getMulti(merchantId: string, ids: string[]): Observable {\n const req = new GetMultiTaxRequest({\n merchantId: merchantId,\n ids: ids,\n });\n return this.taxRateApi.getMulti(req).pipe(\n map((response) => {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n return taxRates;\n }),\n );\n }\n\n archive(merchantId: string, id: string): Observable> {\n const req = new ArchiveTaxRequest({\n merchantId,\n id,\n });\n return this.taxRateApi.archive(req);\n }\n}\n","export {\n CalculateTaxResponse,\n ListTaxRateFilter,\n TaxRate,\n isTaxRate,\n CalculateLineItemsTaxResponse,\n LineItemTaxes,\n LineItem,\n AppliedTax,\n} from './tax-rate';\nexport {\n TaxRule,\n ListTaxRulesFilter,\n TaxRuleEntityType,\n CustomerEntity,\n CustomerAddress,\n TaxRuleEntity,\n ProductEntity,\n ProductType as TaxRuleProductType,\n TaxRuleType,\n} from './tax-rule';\nexport { TaxRateService } from './tax-rate.service';\nexport { TaxRuleService } from './tax-rule.service';\n","import {\n AppliedCreditNoteInterface as ApiAppliedCreditNote,\n AppliedTaxRateInterface as ApiAppliedTaxRate,\n Invoice as ApiInvoice,\n InvoiceCustomerAddress as ApiInvoiceCustomerAddress,\n InvoiceItem as ApiInvoiceItem,\n InvoiceStatus as ApiInvoiceStatus,\n InvoiceStatus as InternalInvoiceStatus,\n LastPaymentStatus as ApiLastPaymentStatus,\n ListInvoicesRequestFilters,\n ListInvoicesRequestFiltersDateFilterDateField,\n TaxRateInterface as ApiTaxRate,\n} from '@vendasta/billing';\nimport { AppliedBundle, convertApiAppliedBundle, isAppliedBundle } from '../applied_bundle';\nimport { AppliedDiscount, appliedDiscountFromApi } from '../applied_discount';\nimport { convertAPINote, isNote } from '../note/note';\nimport { Currency, currencyFromApi } from '../pricing';\nimport {\n CollectionMethod,\n collectionMethodFromApi,\n PaymentMethodType,\n paymentTypesFromApi,\n} from '../retail-customer-configuration';\nimport { isTaxRate, TaxRate } from '../tax-rate';\nimport { ListInvoicesFilter } from './list-invoice';\nimport { convertApiCreditNoteType, CreditNoteType } from '../credit-note/credit-note';\nimport { setTimeToNoonUTC } from '../shared/time-helper';\n\nexport enum InvoicePDFType {\n INVOICE = 'invoice',\n RECEIPT = 'receipt',\n}\n\nexport enum InvoiceStatus {\n DRAFT = 'Draft',\n DUE = 'Due',\n PAID = 'Paid',\n VOID = 'Void',\n}\n\nexport enum LastPaymentStatus {\n SUCCESS = 'Success',\n PENDING = 'Pending',\n FAILED = 'Failed',\n}\n\nexport enum InvoiceDateField {\n CREATED = 'Created',\n ISSUED = 'Issued',\n}\n\nexport enum InvoiceOrigin {\n MANUAL = 'Manual',\n SALES_ORDER = 'Sales Order',\n RENEWAL = 'Renewal',\n TEMPLATE = 'Template',\n UNSET = 'Unset',\n}\n\nexport enum InvoiceOriginAPI {\n MANUAL = 'manual',\n SALES_ORDER = 'sales-order',\n RENEWAL = 'renewal',\n TEMPLATE = 'template',\n}\n\nconst isInvoiceItem = (ii: InvoiceItem | undefined): ii is InvoiceItem => {\n return !!ii;\n};\n\nexport interface InvoiceItem {\n id: string;\n sku: string;\n amount: number;\n quantity: number;\n description: string;\n subtotal: number;\n total: number;\n appliedTaxes?: AppliedTaxRate[];\n appliedDiscounts?: AppliedDiscount[];\n taxRates: TaxRate[];\n // DEPRECATED: a bundle is now represented as single item on the invoice rather than it being comprised of all individual products within said bundle.\n // New invoices will not be created with a bundle ID or bundle instance ID, however, we still need to support the fields to maintain the legacy bundle view so that we do not\n // break the historical representation of past invoices.\n bundleId: string;\n // DEPRECATED\n bundleInstanceId?: string;\n servicePeriodStart?: Date;\n servicePeriodEnd?: Date;\n}\n\nexport const isInvoice = (i: Invoice | undefined): i is Invoice => {\n return !!i;\n};\n\nexport interface AppliedCreditNote {\n creditNoteId?: string;\n amount?: number;\n creditNoteType?: CreditNoteType;\n number?: string;\n}\n\nexport interface Invoice {\n id: string;\n number: string;\n customerId: string;\n customerName: string;\n contactId: string;\n status: InvoiceStatus;\n subtotal: number;\n discountTotal: number;\n total: number;\n amountOwing: number;\n amountPaid: number;\n // calculated from appliedCreditNotes\n adjustedAmountAfterCreditRefund?: number;\n paid?: Date;\n issued?: Date;\n due?: Date;\n created?: Date;\n updated?: Date;\n voided?: Date;\n autoAdvance?: Date;\n items: InvoiceItem[];\n currency: Currency;\n orderId: string;\n appliedTaxes: AppliedTaxRate[];\n defaultTaxRates: TaxRate[];\n // DEPRECATED: a bundle is now represented as single item on the invoice rather than it being comprised of all individual products within said bundle.\n // New invoices will not have applied bundles, however, we still need to support the field to maintain the legacy bundle view so that we do not\n // break the historical representation of past invoices.\n appliedBundles: AppliedBundle[];\n origin: InvoiceOrigin;\n collectionMethod: CollectionMethod;\n memo: string;\n defaultPaymentMethod: string;\n customerAddress: InvoiceCustomerAddress;\n externalCustomerIdentifier: string;\n notes: Note[];\n additionalContactIds?: string[];\n paymentMethodTypes: PaymentMethodType[];\n lastPaymentStatus: LastPaymentStatus;\n appliedCreditNotes: AppliedCreditNote[];\n}\n\nexport interface Note {\n message: string;\n}\n\nexport const isAppliedTaxRate = (tr: AppliedTaxRate | undefined): tr is AppliedTaxRate => {\n return !!tr;\n};\n\nexport interface AppliedTaxRate {\n amount?: number;\n taxRateId?: string;\n percentage?: number;\n name?: string;\n description?: string;\n}\n\nfunction convertApiStatus(s: ApiInvoiceStatus): InvoiceStatus {\n switch (s) {\n case ApiInvoiceStatus.DUE:\n return InvoiceStatus.DUE;\n case ApiInvoiceStatus.PAID:\n return InvoiceStatus.PAID;\n case ApiInvoiceStatus.VOID:\n return InvoiceStatus.VOID;\n default:\n return InvoiceStatus.DRAFT;\n }\n}\n\nfunction invoiceStatusToApi(status: InvoiceStatus): InternalInvoiceStatus {\n switch (status) {\n case InvoiceStatus.DUE:\n return InternalInvoiceStatus.DUE;\n case InvoiceStatus.PAID:\n return InternalInvoiceStatus.PAID;\n case InvoiceStatus.VOID:\n return InternalInvoiceStatus.VOID;\n default:\n return InternalInvoiceStatus.DRAFT;\n }\n}\n\nfunction lastPaymentStatusToApi(status: LastPaymentStatus): ApiLastPaymentStatus {\n switch (status) {\n case LastPaymentStatus.SUCCESS:\n return ApiLastPaymentStatus.PAYMENT_SUCCESS;\n case LastPaymentStatus.PENDING:\n return ApiLastPaymentStatus.PAYMENT_PENDING;\n case LastPaymentStatus.FAILED:\n return ApiLastPaymentStatus.PAYMENT_FAILED;\n default:\n return ApiLastPaymentStatus.PAYMENT_UNSET;\n }\n}\n\nfunction invoiceDateFilterFieldToApi(dateField: InvoiceDateField): ListInvoicesRequestFiltersDateFilterDateField {\n switch (dateField) {\n case InvoiceDateField.ISSUED:\n return ListInvoicesRequestFiltersDateFilterDateField.ISSUED;\n default:\n return ListInvoicesRequestFiltersDateFilterDateField.CREATED;\n }\n}\n\nfunction convertApiOrigin(s: string): InvoiceOrigin {\n switch (s) {\n case InvoiceOriginAPI.MANUAL:\n return InvoiceOrigin.MANUAL;\n case InvoiceOriginAPI.SALES_ORDER:\n return InvoiceOrigin.SALES_ORDER;\n case InvoiceOriginAPI.RENEWAL:\n return InvoiceOrigin.RENEWAL;\n case InvoiceOriginAPI.TEMPLATE:\n return InvoiceOrigin.TEMPLATE;\n default:\n return InvoiceOrigin.UNSET;\n }\n}\n\nexport function convertApiAppliedTaxRate(at: ApiAppliedTaxRate): AppliedTaxRate {\n return {\n amount: at.amount || 0,\n taxRateId: at.taxRateId || '',\n percentage: at.percentage || 0,\n name: at.name || '',\n description: at.description || '',\n };\n}\n\nexport function convertAppliedTaxRate(at: AppliedTaxRate): ApiAppliedTaxRate {\n return {\n amount: at.amount || 0,\n taxRateId: at.taxRateId || '',\n name: at.name,\n percentage: at.percentage,\n description: at.description,\n };\n}\n\nexport function convertApiTaxRate(tr: ApiTaxRate): TaxRate | undefined {\n if (!tr) {\n return undefined;\n }\n return {\n id: tr.id || '',\n name: tr.name || '',\n description: tr.description || '',\n percentage: tr.percentage || 0,\n };\n}\n\nexport function convertTaxRate(tr: TaxRate): ApiTaxRate {\n return {\n id: tr.id,\n name: tr.name,\n description: tr.description,\n percentage: tr.percentage,\n };\n}\n\nexport interface InvoiceCustomerAddress {\n address?: string;\n address2?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n}\n\nfunction convertApiCustomerAddress(ca: ApiInvoiceCustomerAddress): InvoiceCustomerAddress {\n return {\n address: ca?.address || '',\n address2: ca?.address2 || '',\n city: ca?.city || '',\n state: ca?.state || '',\n zip: ca?.zip || '',\n country: ca?.country || '',\n };\n}\n\nexport function convertApiInvoiceItem(ii: ApiInvoiceItem): InvoiceItem | undefined {\n if (!ii) {\n return undefined;\n }\n\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n const appliedTaxes: AppliedTaxRate[] = (ii.appliedTaxes || [])\n .map((at) => convertApiAppliedTaxRate(at))\n .filter(isAppliedTaxRate);\n const taxRates: TaxRate[] = (ii.taxRates || []).map((tr) => convertApiTaxRate(tr)).filter(isTaxRate);\n const appliedDiscounts: AppliedDiscount[] = (ii.discounts || []).map((ad) => appliedDiscountFromApi(ad));\n\n return {\n id: ii.id || '',\n sku: ii.sku || '',\n amount: ii.amount || 0,\n quantity: ii.quantity || 0,\n description: ii.description || '',\n subtotal: ii.subtotal || 0,\n total: ii.total || 0,\n appliedDiscounts: appliedDiscounts || [],\n appliedTaxes: appliedTaxes || [],\n taxRates: taxRates || [],\n bundleId: ii.bundleId || '',\n bundleInstanceId: ii.bundleInstanceId || '',\n servicePeriodStart:\n !!ii.servicePeriodStart && ii.servicePeriodStart.valueOf() !== zeroDate\n ? setTimeToNoonUTC(ii.servicePeriodStart)\n : undefined,\n servicePeriodEnd:\n !!ii.servicePeriodEnd && ii.servicePeriodEnd.valueOf() !== zeroDate\n ? setTimeToNoonUTC(ii.servicePeriodEnd)\n : undefined,\n };\n}\n\nfunction convertApiLastPaymentStatus(s: ApiLastPaymentStatus): LastPaymentStatus {\n switch (s) {\n case ApiLastPaymentStatus.PAYMENT_SUCCESS:\n return LastPaymentStatus.SUCCESS;\n case ApiLastPaymentStatus.PAYMENT_PENDING:\n return LastPaymentStatus.PENDING;\n case ApiLastPaymentStatus.PAYMENT_FAILED:\n return LastPaymentStatus.FAILED;\n default:\n return '' as LastPaymentStatus;\n }\n}\n\nfunction convertApiAppliedCreditNotes(appliedCreditNotes: ApiAppliedCreditNote[]): AppliedCreditNote[] {\n return appliedCreditNotes?.map(\n (acn) =>\n ({\n creditNoteId: acn.creditNoteId,\n amount: acn.amount,\n creditNoteType: convertApiCreditNoteType(acn.creditNoteType),\n number: acn.creditNoteNumber,\n }) as AppliedCreditNote,\n );\n}\n\nexport function convertApiInvoice(i: ApiInvoice): Invoice {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n const invoiceItems: InvoiceItem[] = (i.items || []).map((ii) => convertApiInvoiceItem(ii)).filter(isInvoiceItem);\n const appliedTaxes: AppliedTaxRate[] = (i.appliedTaxes || [])\n .map((at) => convertApiAppliedTaxRate(at))\n .filter(isAppliedTaxRate);\n const taxRates: TaxRate[] = (i.defaultTaxRates || []).map((tr) => convertApiTaxRate(tr)).filter(isTaxRate);\n const appliedBundles: AppliedBundle[] = (i.appliedBundles || [])\n .map((at) => convertApiAppliedBundle(at))\n .filter(isAppliedBundle);\n const notes: Note[] = (i.notes || []).map((n) => convertAPINote(n)).filter(isNote);\n\n return {\n id: i.id || '',\n number: i.number || '',\n customerId: i.customerId || '',\n customerName: i.customerName || '',\n contactId: i.contactId || '',\n status: convertApiStatus(i.status),\n subtotal: i.subtotal || 0,\n amountPaid: i.amountPaid || 0,\n amountOwing: i.amountOwing || 0,\n total: i.total || 0,\n discountTotal: i.amountDiscount || 0,\n paid: i.paid && i.paid.valueOf() !== zeroDate ? i.paid : undefined,\n issued: i.issued && i.issued.valueOf() !== zeroDate ? i.issued : undefined,\n due: i.due && i.due.valueOf() !== zeroDate ? i.due : undefined,\n voided: i.voided && i.voided.valueOf() !== zeroDate ? i.voided : undefined,\n created: i.created.valueOf() !== zeroDate ? i.created : undefined,\n updated: i.updated.valueOf() !== zeroDate ? i.updated : undefined,\n autoAdvance: i.autoAdvance.valueOf() !== zeroDate ? i.autoAdvance : undefined,\n items: invoiceItems || [],\n currency: currencyFromApi(i.currency),\n orderId: i.orderId || '',\n appliedTaxes: appliedTaxes || [],\n defaultTaxRates: taxRates || [],\n appliedBundles: appliedBundles || [],\n origin: convertApiOrigin(i.origin),\n collectionMethod: collectionMethodFromApi(i.collectionMethod),\n memo: i.memo || '',\n defaultPaymentMethod: i.defaultPaymentMethod || '',\n customerAddress: convertApiCustomerAddress(i.customerAddress),\n externalCustomerIdentifier: i.externalCustomerIdentifier || '',\n notes: notes || [],\n additionalContactIds: i.additionalContactIds || [],\n paymentMethodTypes: paymentTypesFromApi(i.paymentMethodTypes),\n lastPaymentStatus: convertApiLastPaymentStatus(i.lastPaymentStatus),\n appliedCreditNotes: convertApiAppliedCreditNotes(i.appliedCreditNotes),\n };\n}\n\nexport function listInvoiceFiltersToApi(filters: ListInvoicesFilter): ListInvoicesRequestFilters {\n return new ListInvoicesRequestFilters({\n ...filters,\n statuses: (filters.statuses || []).map((s: InvoiceStatus) => invoiceStatusToApi(s)),\n lastPaymentStatuses: (filters.lastPaymentStatuses || []).map((s: LastPaymentStatus) => lastPaymentStatusToApi(s)),\n origins: filters.origins,\n collectionMethods: filters.collectionMethods,\n dateFilter: {\n dateGte: filters.dateFilter?.dateGte,\n dateLte: filters.dateFilter?.dateLte,\n dateField: filters.dateFilter?.dateField ? invoiceDateFilterFieldToApi(filters.dateFilter.dateField) : undefined,\n },\n });\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n AddBundleRequest,\n AddBundleResponse,\n AddLineItemRequest,\n AddLineItemResponse,\n ChargeInvoiceRequest,\n CreateInvoiceRequest,\n CreateInvoiceResponse,\n CreatePaymentLinkRequest,\n CreatePaymentLinkResponse,\n DeleteInvoiceRequest,\n DeleteLineItemRequest,\n DeleteLineItemResponse,\n DuplicateInvoiceRequest,\n DuplicateInvoiceResponse,\n FieldMask,\n GetInvoiceRequest,\n GetInvoiceResponse,\n GetUpcomingInvoicePreviewRequest,\n GetUpcomingInvoicePreviewResponse,\n HostService,\n Invoice as ApiInvoice,\n InvoiceApiService,\n ListInvoicesRequest,\n PagedRequestOptions,\n PayInvoiceRequest,\n PaymentLinkItem,\n RemoveBundleRequest,\n RemoveBundleResponse,\n SendInvoiceRequest,\n UpdateBundleRequest,\n UpdateBundleResponse,\n UpdateDefaultTaxRatesRequest,\n UpdateDefaultTaxRatesResponse,\n UpdateInvoiceRequest,\n UpdateInvoiceResponse,\n UpdateLineItemRequest,\n UpdateLineItemResponse,\n VoidInvoiceRequest,\n} from '@vendasta/billing';\nimport { newPartnerServiceContext, SSOService } from '@vendasta/sso';\nimport { Owner, UrlShortenerService } from '@vendasta/url-shortener';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, share, switchMap, take } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n CollectionMethod,\n collectionMethodToApi,\n PaymentMethodType,\n paymentMethodTypesToApi,\n} from '../retail-customer-configuration';\nimport { convertApiInvoice, Invoice, InvoicePDFType, isInvoice, listInvoiceFiltersToApi } from './invoice';\nimport { ListInvoicesFilter } from './list-invoice';\nimport { AppliedDiscount } from '../applied_discount';\nimport { appliedDiscountToApi } from '../applied_discount/applied_discount';\n\n@Injectable({ providedIn: 'root' })\nexport class InvoiceService {\n constructor(\n private hostService: HostService,\n private http: HttpClient,\n private invoiceApiService: InvoiceApiService,\n private ssoService: SSOService,\n private urlShortenerService: UrlShortenerService,\n ) {}\n\n addBundle(merchantId: string, invoiceId: string, bundleId: string): Observable {\n return this.invoiceApiService\n .addBundle(\n new AddBundleRequest({\n merchantId,\n invoiceId,\n bundleId,\n }),\n )\n .pipe(map((res: AddBundleResponse) => convertApiInvoice(res.invoice)));\n }\n\n addLineItem(\n merchantId: string,\n invoiceId: string,\n sku: string,\n amount: number,\n quantity: number,\n description: string,\n taxRates: string[],\n appliedDiscounts?: AppliedDiscount[],\n servicePeriodStart?: Date,\n servicePeriodEnd?: Date,\n ): Observable {\n return this.invoiceApiService\n .addLineItem(\n new AddLineItemRequest({\n merchantId,\n invoiceId,\n sku,\n amount,\n quantity,\n description,\n taxRates,\n discounts: (appliedDiscounts || []).map((d) => appliedDiscountToApi(d)),\n servicePeriodStart,\n servicePeriodEnd,\n }),\n )\n .pipe(map((res: AddLineItemResponse) => convertApiInvoice(res.invoice)));\n }\n\n charge(\n merchantId: string,\n customerId: string,\n invoiceId: string,\n paymentMethodId: string,\n ): Observable> {\n return this.invoiceApiService.charge(\n new ChargeInvoiceRequest({\n merchantId,\n customerId,\n invoiceId,\n paymentMethodId,\n }),\n );\n }\n\n create(merchantId: string, customerId: string, orderId?: string, currencyCode?: string): Observable {\n return this.invoiceApiService\n .create(\n new CreateInvoiceRequest({\n merchantId: merchantId,\n customerId: customerId,\n orderId: orderId,\n currencyCode: currencyCode,\n }),\n )\n .pipe(map((res: CreateInvoiceResponse) => (res ? res.invoiceId : '')));\n }\n\n createPaymentLink(\n merchantId: string,\n customerId: string,\n lineItems: PaymentLinkItem[],\n currencyCode = '',\n due?: Date,\n ): Observable {\n return this.invoiceApiService\n .createPaymentLink(\n new CreatePaymentLinkRequest({\n merchantId: merchantId,\n customerId: customerId,\n lineItems: lineItems,\n currencyCode: currencyCode,\n due: due,\n }),\n )\n .pipe(map((res: CreatePaymentLinkResponse) => (res ? res.invoiceId : '')));\n }\n\n delete(merchantId: string, invoiceId: string): Observable> {\n return this.invoiceApiService.delete(\n new DeleteInvoiceRequest({\n merchantId,\n invoiceId,\n }),\n );\n }\n\n deleteLineItem(merchantId: string, invoiceId: string, id: string): Observable {\n return this.invoiceApiService\n .deleteLineItem(\n new DeleteLineItemRequest({\n merchantId,\n invoiceId,\n id,\n }),\n )\n .pipe(map((res: DeleteLineItemResponse) => convertApiInvoice(res.invoice)));\n }\n\n exportCSV(merchantId: string, filters?: ListInvoicesFilter): Observable {\n const url = `${this.hostService.hostWithScheme}/invoice/export`;\n return this.http\n .post(\n url,\n {\n merchant_id: merchantId,\n filters: filters,\n },\n {\n observe: 'body',\n responseType: 'blob',\n withCredentials: true,\n },\n )\n .pipe(share());\n }\n\n generatePDF(merchantId: string, invoiceId: string, documentType: InvoicePDFType): Observable {\n const url = `${this.hostService.hostWithScheme}/invoice/generate-pdf`;\n return this.http\n .post(\n url,\n {\n merchant_id: merchantId,\n invoice_id: invoiceId,\n document_type: documentType,\n },\n {\n observe: 'body',\n responseType: 'blob',\n },\n )\n .pipe(share());\n }\n\n get(merchantId: string, invoiceId: string): Observable {\n return this.invoiceApiService\n .get(\n new GetInvoiceRequest({\n merchantId,\n invoiceId,\n }),\n )\n .pipe(map((res: GetInvoiceResponse) => convertApiInvoice(res.invoice)));\n }\n\n list(filters: ListInvoicesFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListInvoicesRequest({\n filters: listInvoiceFiltersToApi(filters),\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.invoiceApiService.list(req).pipe(\n map((response) => {\n const invoices = (response.invoices || []).map((item) => convertApiInvoice(item)).filter(isInvoice);\n return new PagedResponse(invoices, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n pay(merchantId: string, invoiceId: string, reason: string): Observable> {\n return this.invoiceApiService.pay(\n new PayInvoiceRequest({\n merchantId,\n invoiceId,\n reason,\n }),\n );\n }\n\n preview(merchantId: string, invoiceId: string): Observable {\n const url = `${this.hostService.hostWithScheme}/retail-invoice/preview`;\n return this.http.post(\n url,\n {\n merchant_id: merchantId,\n invoice_id: invoiceId,\n },\n {\n responseType: 'text',\n withCredentials: true,\n },\n );\n }\n\n getUpcomingPreview(merchantId: string, customerId: string, invoiceDate?: Date): Observable {\n return this.invoiceApiService\n .getUpcomingInvoicePreview(\n new GetUpcomingInvoicePreviewRequest({\n merchantId,\n customerId,\n invoiceDate,\n }),\n )\n .pipe(map((res: GetUpcomingInvoicePreviewResponse) => convertApiInvoice(res.invoice)));\n }\n\n removeBundle(\n merchantId: string,\n invoiceId: string,\n bundleId: string,\n bundleInstanceId?: string,\n ): Observable {\n return this.invoiceApiService\n .removeBundle(\n new RemoveBundleRequest({\n merchantId,\n invoiceId,\n bundleId,\n bundleInstanceId,\n }),\n )\n .pipe(map((res: RemoveBundleResponse) => convertApiInvoice(res.invoice)));\n }\n\n send(merchantId: string, invoiceId: string, emailAddresses: string[]): Observable> {\n return this.invoiceApiService.send(\n new SendInvoiceRequest({\n merchantId,\n invoiceId,\n emailAddresses,\n }),\n );\n }\n\n updateBundle(\n merchantId: string,\n invoiceId: string,\n bundleId: string,\n hideBundleItems: boolean,\n bundleInstanceId?: string,\n ): Observable {\n return this.invoiceApiService\n .updateBundle(\n new UpdateBundleRequest({\n merchantId,\n invoiceId,\n bundleId,\n hideBundleItems,\n bundleInstanceId,\n }),\n )\n .pipe(map((res: UpdateBundleResponse) => convertApiInvoice(res.invoice)));\n }\n\n updateDueDate(merchantId: string, id: string, due: Date): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n due,\n });\n\n const fm = new FieldMask({\n paths: ['due'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateIssuedDate(merchantId: string, id: string, issued: Date): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n issued,\n });\n\n const fm = new FieldMask({\n paths: ['issued'],\n });\n return this.update(pbInvoice, fm);\n }\n\n updateContact(merchantId: string, id: string, contactId: string): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n contactId,\n });\n\n const fm = new FieldMask({\n paths: ['contactId'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateAdditionalContacts(merchantId: string, id: string, additionalContactIds: string[]): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n additionalContactIds,\n });\n\n const fm = new FieldMask({\n paths: ['additionalContactIds'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateCollectionMethod(merchantId: string, id: string, collectionMethod: CollectionMethod): Observable {\n const apiCollectionMethod = collectionMethodToApi(collectionMethod);\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n collectionMethod: apiCollectionMethod,\n });\n\n const fm = new FieldMask({\n paths: ['collectionMethod'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateMemo(merchantId: string, id: string, memo: string): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n memo,\n });\n\n const fm = new FieldMask({\n paths: ['memo'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updatePaymentMethodTypes(\n merchantId: string,\n id: string,\n paymentMethodTypes: PaymentMethodType[],\n ): Observable {\n const apiPaymentMethodTypes = paymentMethodTypesToApi(paymentMethodTypes);\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n paymentMethodTypes: apiPaymentMethodTypes,\n });\n\n const fm = new FieldMask({\n paths: ['paymentMethodTypes'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateDefaultPaymentMethod(merchantId: string, id: string, defaultPaymentMethod: string): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n defaultPaymentMethod,\n });\n\n const fm = new FieldMask({\n paths: ['defaultPaymentMethod'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateDefaultTaxes(merchantId: string, invoiceId: string, taxRateIds: string[]): Observable {\n return this.invoiceApiService\n .updateDefaultTaxRates(\n new UpdateDefaultTaxRatesRequest({\n merchantId,\n invoiceId,\n taxRateIds,\n }),\n )\n .pipe(map((res: UpdateDefaultTaxRatesResponse) => convertApiInvoice(res.invoice)));\n }\n\n updateLineItem(\n merchantId: string,\n invoiceId: string,\n id: string,\n sku: string,\n amount: number,\n quantity: number,\n description: string,\n taxRates: string[],\n appliedDiscounts?: AppliedDiscount[],\n servicePeriodStart?: Date,\n servicePeriodEnd?: Date,\n fieldMask?: FieldMask,\n ): Observable {\n return this.invoiceApiService\n .updateLineItem(\n new UpdateLineItemRequest({\n merchantId,\n invoiceId,\n id,\n sku,\n amount,\n quantity,\n description,\n taxRates,\n discounts: (appliedDiscounts || []).map((d) => appliedDiscountToApi(d)),\n servicePeriodStart,\n servicePeriodEnd,\n fieldMask,\n }),\n )\n .pipe(map((res: UpdateLineItemResponse) => convertApiInvoice(res.invoice)));\n }\n\n private update(invoice: ApiInvoice, mask: FieldMask): Observable {\n return this.invoiceApiService\n .update(\n new UpdateInvoiceRequest({\n invoice: invoice,\n fieldMask: mask,\n }),\n )\n .pipe(map((res: UpdateInvoiceResponse) => convertApiInvoice(res.invoice)));\n }\n\n void(merchantId: string, invoiceId: string, reason: string): Observable> {\n return this.invoiceApiService.void(\n new VoidInvoiceRequest({\n merchantId,\n invoiceId,\n reason,\n }),\n );\n }\n\n duplicate(merchantId: string, invoiceId: string): Observable {\n return this.invoiceApiService\n .duplicate(\n new DuplicateInvoiceRequest({\n merchantId,\n invoiceId,\n }),\n )\n .pipe(map((res: DuplicateInvoiceResponse) => (res ? res.invoiceId : '')));\n }\n\n generateShortLink(merchantId: string, invoiceId: string): Observable {\n return this.ssoService\n .getEntryUrl('VBC', newPartnerServiceContext(merchantId), {\n path: `/invoice/${merchantId}/${invoiceId}`,\n skipGatewayAuthentication: true,\n })\n .pipe(\n switchMap((url) => {\n return this.urlShortenerService.createLink('', url, Owner.OWNER_UNTRACKED, '', false).pipe(\n catchError(() => of(null)),\n map((result) => {\n if (!result) {\n return url;\n }\n return `https://${result.domain}${result.shortCode}`;\n }),\n );\n }),\n catchError(() => {\n throw new Error('failed to generate short link');\n }),\n take(1),\n );\n }\n}\n","export {\n ListRecurringInvoicesByMerchantID,\n ListRecurringInvoicesByCustomerID,\n RecurringInvoice,\n CreateRecurringInvoiceRequest,\n RecurringInvoiceLineItem,\n RecurringInvoiceBundle,\n ListRecurringInvoicesFilters,\n ListRecurringInvoicesDetailedInterval,\n} from './recurring-invoice';\nexport { RecurringInvoiceStatus } from './status';\nexport { Interval } from './interval';\nexport { PaymentProcessor } from './payment-processor';\nexport { RecurringInvoiceService } from './recurring-invoice.service';\n","export { InvoiceService } from './invoice.service';\nexport {\n AppliedCreditNote,\n InvoiceStatus,\n Invoice,\n InvoiceItem,\n InvoiceOrigin,\n InvoiceOriginAPI,\n AppliedTaxRate,\n InvoiceDateField,\n isInvoice,\n isAppliedTaxRate,\n InvoicePDFType,\n LastPaymentStatus,\n Note,\n} from './invoice';\nexport { ListInvoicesFilter, ListInvoicesDateFilter } from './list-invoice';\nexport { invoiceFromRecurringInvoice } from './adapters';\n","import { AppliedTaxRate, isAppliedTaxRate, Note } from '../invoice';\nimport { Currency, currencyFromApi, currencyToApi } from '../pricing';\nimport { isTaxRate, TaxRate } from '../tax-rate';\nimport {\n CreditNoteInterface as ApiCreditNote,\n CreditNoteReason as ApiCreditNoteReason,\n AppliedReferenceType as ApiCreditNoteAppliedReferenceType,\n AppliedToInterface as ApiCreditNoteAppliedTo,\n LineItemInterface as ApiCreditNoteLineItem,\n CreditNoteInterface,\n CreditNoteType as ApiCreditNoteType,\n} from '@vendasta/billing';\nimport { convertAPINote, isNote } from '../note/note';\nimport { convertApiAppliedTaxRate, convertApiTaxRate, convertAppliedTaxRate, convertTaxRate } from '../invoice/invoice';\n\nexport interface CreditNote {\n id?: string;\n merchantId: string;\n number?: string;\n customerId: string;\n subtotal?: number;\n total?: number;\n created?: Date;\n updated?: Date;\n items: CreditNoteLineItem[];\n currency: Currency;\n amountTax?: number;\n appliedTaxes?: AppliedTaxRate[];\n customerName: string;\n contactId: string;\n memo: string;\n notes: Note[];\n additionalContactIds: string[];\n reason: CreditNoteReason;\n appliedTo: CreditNoteAppliedTo[];\n}\n\nexport interface CreditNoteLineItem {\n id: string;\n sku: string;\n amount: number;\n quantity: number;\n description: string;\n total: number;\n appliedTaxes: AppliedTaxRate[];\n taxRates: TaxRate[];\n subtotal: number;\n}\n\nexport interface CreditNoteAppliedTo {\n referenceId: string;\n referenceType: CreditNoteAppliedReferenceType;\n referenceNumber?: string;\n amount: number;\n shouldRefund?: boolean;\n}\n\nexport enum CreditNoteReason {\n UNSPECIFIED = 'Unspecified',\n DUPLICATE_CHARGE = 'Duplicate Charge',\n PRODUCT_UNSATISFACTORY = 'Product Unsatisfactory',\n ORDER_CHANGE = 'Order Change',\n OTHER = 'Other',\n}\n\nexport enum CreditNoteAppliedReferenceType {\n UNSPECIFIED = 'Unspecified',\n INVOICE = 'Invoice',\n}\n\nexport enum CreditNoteType {\n UNSPECIFIED = 'Unspecified',\n PRE_PAYMENT = 'pre_payment',\n POST_PAYMENT = 'post_payment',\n}\n\nexport function creditNoteFromApi(apiCreditNote: ApiCreditNote): CreditNote {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n\n const lineItems: CreditNoteLineItem[] = (apiCreditNote.items || [])\n .map((item) => convertApiCreditNoteLineItem(item))\n .filter(isCreditNoteLineItem);\n const appliedTaxes: AppliedTaxRate[] = (apiCreditNote.appliedTaxes || [])\n .map((at) => convertApiAppliedTaxRate(at))\n .filter(isAppliedTaxRate);\n const notes: Note[] = (apiCreditNote.notes || []).map((n) => convertAPINote(n)).filter(isNote);\n\n return {\n id: apiCreditNote.id,\n merchantId: apiCreditNote.merchantId ?? '',\n number: apiCreditNote.number,\n customerId: apiCreditNote.customerId ?? '',\n subtotal: apiCreditNote.subtotal ?? 0,\n total: apiCreditNote.total ?? 0,\n items: lineItems,\n currency: currencyFromApi(apiCreditNote.currency),\n amountTax: apiCreditNote.amountTax ?? 0,\n appliedTaxes: appliedTaxes,\n customerName: apiCreditNote.customerName ?? '',\n contactId: apiCreditNote.contactId ?? '',\n memo: apiCreditNote.memo ?? '',\n notes: notes,\n additionalContactIds: apiCreditNote.additionalContactIds ?? [],\n reason: convertApiCreditNoteReason(apiCreditNote.reason),\n appliedTo: convertApiCreditNoteAppliedTo(apiCreditNote.appliedTo ?? []),\n created:\n apiCreditNote.created && apiCreditNote.created?.valueOf() !== zeroDate\n ? new Date(apiCreditNote.created)\n : undefined,\n updated:\n apiCreditNote.updated && apiCreditNote.updated?.valueOf() !== zeroDate\n ? new Date(apiCreditNote.updated)\n : undefined,\n };\n}\n\nexport function creditNoteToApi(creditNote: CreditNote): CreditNoteInterface {\n return {\n merchantId: creditNote.merchantId,\n customerId: creditNote.customerId,\n items: lineItemsToApi(creditNote.items),\n currency: currencyToApi(creditNote.currency),\n customerName: creditNote.customerName,\n contactId: creditNote.contactId,\n memo: creditNote.memo,\n notes: creditNote.notes,\n additionalContactIds: creditNote.additionalContactIds,\n reason: creditNoteReasonToApi(creditNote.reason),\n appliedTo: appliedToToApi(creditNote.appliedTo),\n };\n}\n\nfunction lineItemsToApi(lineItems: CreditNoteLineItem[]): ApiCreditNoteLineItem[] {\n return lineItems.map((lineItem) => ({\n id: lineItem.id,\n sku: lineItem.sku,\n amount: lineItem.amount,\n quantity: lineItem.quantity,\n description: lineItem.description,\n total: lineItem.total,\n appliedTaxes: (lineItem.appliedTaxes || []).map(convertAppliedTaxRate)?.filter?.(Boolean),\n taxRates: lineItem.taxRates?.map(convertTaxRate),\n subtotal: lineItem.subtotal,\n }));\n}\n\nfunction creditNoteReasonToApi(reason: CreditNoteReason): ApiCreditNoteReason {\n switch (reason) {\n case CreditNoteReason.DUPLICATE_CHARGE:\n return ApiCreditNoteReason.CREDIT_NOTE_REASON_DUPLICATE_CHARGE;\n case CreditNoteReason.PRODUCT_UNSATISFACTORY:\n return ApiCreditNoteReason.CREDIT_NOTE_REASON_PRODUCT_UNSATISFACTORY;\n case CreditNoteReason.ORDER_CHANGE:\n return ApiCreditNoteReason.CREDIT_NOTE_REASON_ORDER_CHANGE;\n case CreditNoteReason.OTHER:\n return ApiCreditNoteReason.CREDIT_NOTE_REASON_OTHER;\n default:\n return ApiCreditNoteReason.CREDIT_NOTE_REASON_UNSPECIFIED;\n }\n}\n\nfunction appliedToToApi(appliedTo: CreditNoteAppliedTo[]): ApiCreditNoteAppliedTo[] {\n return appliedTo?.map((a) => ({\n amount: a.amount,\n referenceId: a.referenceId,\n referenceType: appliedReferenceTypeToApi(a.referenceType),\n shouldRefund: a.shouldRefund,\n }));\n}\n\nfunction appliedReferenceTypeToApi(referenceType: CreditNoteAppliedReferenceType): ApiCreditNoteAppliedReferenceType {\n switch (referenceType) {\n case CreditNoteAppliedReferenceType.INVOICE:\n return ApiCreditNoteAppliedReferenceType.APPLIED_REFERENCE_TYPE_INVOICE;\n default:\n return ApiCreditNoteAppliedReferenceType.APPLIED_REFERENCE_TYPE_UNSPECIFIED;\n }\n}\n\nexport function convertApiCreditNoteType(creditNoteType: ApiCreditNoteType | undefined): CreditNoteType {\n switch (creditNoteType) {\n case ApiCreditNoteType.CREDIT_NOTE_PRE_PAYMENT:\n return CreditNoteType.PRE_PAYMENT;\n case ApiCreditNoteType.CREDIT_NOTE_POST_PAYMENT:\n return CreditNoteType.POST_PAYMENT;\n default:\n return CreditNoteType.UNSPECIFIED;\n }\n}\n\nconst isCreditNoteLineItem = (lineItem: CreditNoteLineItem | undefined): lineItem is CreditNoteLineItem => {\n return !!lineItem;\n};\n\nexport function convertApiCreditNoteLineItem(lineItem: ApiCreditNoteLineItem): CreditNoteLineItem | undefined {\n if (!lineItem) {\n return undefined;\n }\n\n const appliedTaxes: AppliedTaxRate[] = (lineItem.appliedTaxes || [])\n .map((at) => convertApiAppliedTaxRate(at))\n .filter(isAppliedTaxRate);\n const taxRates: TaxRate[] = (lineItem.taxRates || []).map((tr) => convertApiTaxRate(tr)).filter(isTaxRate);\n\n return {\n id: lineItem.id || '',\n sku: lineItem.sku || '',\n amount: lineItem.amount || 0,\n quantity: lineItem.quantity || 0,\n description: lineItem.description || '',\n subtotal: lineItem.subtotal || 0,\n total: lineItem.total || 0,\n appliedTaxes: appliedTaxes || [],\n taxRates: taxRates || [],\n };\n}\n\nfunction convertApiCreditNoteReason(r?: ApiCreditNoteReason): CreditNoteReason {\n switch (r) {\n case ApiCreditNoteReason.CREDIT_NOTE_REASON_DUPLICATE_CHARGE:\n return CreditNoteReason.DUPLICATE_CHARGE;\n case ApiCreditNoteReason.CREDIT_NOTE_REASON_PRODUCT_UNSATISFACTORY:\n return CreditNoteReason.PRODUCT_UNSATISFACTORY;\n case ApiCreditNoteReason.CREDIT_NOTE_REASON_ORDER_CHANGE:\n return CreditNoteReason.ORDER_CHANGE;\n case ApiCreditNoteReason.CREDIT_NOTE_REASON_OTHER:\n return CreditNoteReason.OTHER;\n default:\n return CreditNoteReason.UNSPECIFIED;\n }\n}\n\nfunction convertApiCreditNoteAppliedTo(r: ApiCreditNoteAppliedTo[]): CreditNoteAppliedTo[] {\n const applied: CreditNoteAppliedTo[] = [];\n r?.forEach((a) => {\n const appliedTo = {\n amount: a.amount || 0,\n referenceId: a.referenceId || '',\n referenceNumber: a.referenceNumber,\n referenceType: convertApiCreditNoteAppliedReferenceType(a.referenceType),\n };\n applied.push(appliedTo);\n });\n\n return applied;\n}\n\nfunction convertApiCreditNoteAppliedReferenceType(\n r: ApiCreditNoteAppliedReferenceType | undefined,\n): CreditNoteAppliedReferenceType {\n switch (r) {\n case ApiCreditNoteAppliedReferenceType.APPLIED_REFERENCE_TYPE_INVOICE:\n return CreditNoteAppliedReferenceType.INVOICE;\n default:\n return CreditNoteAppliedReferenceType.UNSPECIFIED;\n }\n}\n","export {\n CreditNote,\n CreditNoteLineItem,\n CreditNoteAppliedTo,\n CreditNoteReason,\n CreditNoteAppliedReferenceType,\n CreditNoteType,\n} from './credit-note';\nexport { FetchCreditNotesFilter } from './list-credit-note';\nexport { CreditNoteService } from './credit-note.service';\n","import { Merchant as ApiMerchant } from '@vendasta/billing';\n\nexport interface Merchant {\n merchantId: string;\n address: string;\n city: string;\n state: string;\n country: string;\n zipCode: string;\n emailAddress: string;\n phoneNumber: string;\n contactName: string;\n companyName: string;\n autoPostInvoices: boolean;\n autoChargeInvoices: boolean;\n includeInFinancialRecords: boolean;\n additionalEmailAddresses: string[];\n stripeConnectId: string;\n}\n\nexport function MerchantFromAPI(proto: ApiMerchant): Merchant {\n return {\n merchantId: proto.merchantId,\n address: proto.address,\n city: proto.city,\n state: proto.state,\n country: proto.country,\n zipCode: proto.zipCode,\n emailAddress: proto.emailAddress,\n phoneNumber: proto.phoneNumber,\n contactName: proto.contactName,\n companyName: proto.companyName,\n autoPostInvoices: proto.autoPostInvoices,\n autoChargeInvoices: proto.autoChargeInvoices,\n includeInFinancialRecords: proto.includeInFinancialRecords,\n additionalEmailAddresses: proto.additionalEmailAddresses || [],\n stripeConnectId: proto.stripeAccountId,\n };\n}\n","import { GetPayoutSummaryResponse } from '@vendasta/billing';\n\nexport enum PayoutInterval {\n Daily = 'daily',\n Weekly = 'weekly',\n Monthly = 'monthly',\n Unknown = 'unknown',\n}\n\nexport interface PayoutSummary {\n nextInTransitPayout?: Date;\n balances: PayoutBalance[];\n payoutInterval?: PayoutInterval;\n payoutDelayDays: number;\n}\n\nexport interface PayoutBalance {\n currencyCode: string;\n futurePayouts: number;\n inTransit: number;\n}\n\nexport function payoutSummaryFromAPI(proto: GetPayoutSummaryResponse): PayoutSummary {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n return {\n nextInTransitPayout:\n proto.nextInTransitPayoutExpectedDate.valueOf() !== zeroDate ? proto.nextInTransitPayoutExpectedDate : undefined,\n payoutInterval: payoutIntervalFromAPI(proto.payoutInterval),\n payoutDelayDays: proto.payoutDelayDays,\n balances: (proto.balances || []).map((balance) => ({\n currencyCode: balance.currencyCode,\n amount: balance.amount || 0,\n futurePayouts: balance.futurePayouts || 0,\n inTransit: balance.inTransit || 0,\n })),\n };\n}\n\nexport function payoutIntervalFromAPI(proto: string): PayoutInterval | undefined {\n switch (proto) {\n case 'daily':\n return PayoutInterval.Daily;\n case 'weekly':\n return PayoutInterval.Weekly;\n case 'monthly':\n return PayoutInterval.Monthly;\n default:\n return undefined;\n }\n}\n","import {\n DefaultCustomerConfiguration as ApiDefaultCustomerConfiguration,\n DefaultCustomerConfigurationInterface,\n RetailConfiguration as ApiRetailConfiguration,\n} from '@vendasta/billing';\nimport { CollectionMethod, collectionMethodFromApi, collectionMethodToApi } from '../retail-customer-configuration';\n\nexport interface RetailConfiguration {\n merchantId: string;\n retailGroupId: string;\n currencyCode: string;\n currencyConversionRate: number;\n defaultCustomerConfiguration?: DefaultCustomerConfiguration;\n}\n\nexport interface DefaultCustomerConfiguration {\n generateMethod: GenerateMethod;\n collectionMethod: CollectionMethod;\n invoiceDay: number;\n netD: number;\n memo: string;\n autoGenerateRetailSubscriptions: boolean;\n}\n\nexport enum GenerateMethod {\n UNSET = 'Unset',\n SUBSCRIPTION = 'Subscription',\n TEMPLATE = 'Template',\n}\n\nexport function generateMethodToApi(m: GenerateMethod | undefined): string {\n switch (m) {\n case GenerateMethod.SUBSCRIPTION:\n return 'subscription';\n case GenerateMethod.TEMPLATE:\n return 'template';\n default:\n return '';\n }\n}\n\nexport function generateMethodFromApi(m: string): GenerateMethod {\n switch (m) {\n case 'subscription':\n return GenerateMethod.SUBSCRIPTION;\n case 'template':\n return GenerateMethod.TEMPLATE;\n default:\n return GenerateMethod.UNSET;\n }\n}\n\nexport function retailConfigurationFromApi(proto: ApiRetailConfiguration): RetailConfiguration {\n return {\n merchantId: proto.merchantId,\n retailGroupId: proto.retailGroupId,\n currencyCode: proto.currencyCode,\n currencyConversionRate: proto.currencyConversionRate || 0,\n defaultCustomerConfiguration: defaultCustomerConfigurationFromApi(proto.defaultCustomerConfiguration),\n };\n}\n\nexport function defaultCustomerConfigurationFromApi(\n proto: ApiDefaultCustomerConfiguration,\n): DefaultCustomerConfiguration | undefined {\n if (!proto) {\n return undefined;\n }\n const collectionMethod = collectionMethodFromApi(proto.collectionMethod);\n return {\n generateMethod: generateMethodFromApi(proto.generateMethod),\n collectionMethod: collectionMethod,\n invoiceDay: proto.invoiceDay || 0,\n netD: proto.netD || 7,\n memo: proto.memo || '',\n autoGenerateRetailSubscriptions: proto.autoGenerateRetailSubscriptions ?? false,\n };\n}\n\nexport function defaultCustomerConfigurationToApi(\n c: Partial | undefined,\n): DefaultCustomerConfigurationInterface | undefined {\n if (!c) {\n return undefined;\n }\n return pluckUndefined({\n generateMethod: generateMethodToApi(c.generateMethod),\n collectionMethod: collectionMethodToApi(c.collectionMethod),\n invoiceDay: c.invoiceDay,\n netD: c.netD,\n memo: c.memo,\n autoGenerateRetailSubscriptions: c.autoGenerateRetailSubscriptions,\n });\n}\n\n// pluckUndefined removes all properties that are undefined from o\nfunction pluckUndefined(o: Partial>): Required> {\n for (const key in o) {\n if (o[key] === undefined) {\n delete o[key];\n }\n }\n return o;\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError, map, share } from 'rxjs/operators';\nimport { PagedResponse, SortDirection } from '../core';\nimport { handleCsvError } from '../http-shared/error-handlers';\nimport { currencyFromApi } from '../pricing';\nimport {\n AccountBalance,\n CreateStripeExternalAccountRequest,\n GetMerchantRequest,\n GetMultiRetailConfigurationsRequest,\n GetMultiRetailConfigurationsResponse,\n GetOutstandingBalanceRequest,\n GetPayoutSummaryRequest,\n GetRetailPayoutRequest,\n GetStatisticsRequest,\n GetStatisticsResponse,\n HostService,\n ListRetailPayoutsRequest,\n ListRetailPayoutsResponse,\n MerchantApiService,\n MerchantServicesReportRun,\n MerchantServicesReportRunType,\n MerchantType,\n PagedRequestOptions,\n PagedRequestOptionsInterface,\n SearchMerchantsRequestSortBy,\n SortDirection as SortDirectionApi,\n UpsertDefaultRetailCustomerConfigurationRequest,\n UpsertRetailConfigurationRequest,\n} from '@vendasta/billing';\nimport { Balance } from './balance';\nimport { Merchant, MerchantFromAPI } from './merchant';\nimport { DownloadMerchantsCsvRequest } from './merchant.interface';\nimport { PayoutSummary, payoutSummaryFromAPI } from './payout-summary';\nimport {\n DefaultCustomerConfiguration,\n defaultCustomerConfigurationToApi,\n RetailConfiguration,\n retailConfigurationFromApi,\n} from './retail-configuration';\nimport { RetailPayout, retailPayoutFromApi } from '../payment';\n\n/**\n * @enum SortMerchantsBy\n * Names should match corresponding field in Merchant interface.\n * Values should match ../_internal/enums/SortBy\n */\nexport enum SortMerchantsBy {\n merchantId = 0,\n companyName,\n contactName,\n emailAddress,\n country,\n state,\n created,\n updated,\n}\n\nexport interface NextInvoiceSequence {\n nextRetailInvoiceSequence: number;\n nextInvoiceNumber: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MerchantService {\n constructor(\n private merchantApi: MerchantApiService,\n private hostService: HostService,\n private http: HttpClient,\n ) {}\n\n get(merchantId: string): Observable {\n const req = new GetMerchantRequest({ merchantId });\n return this.merchantApi.get(req).pipe(map((resp) => MerchantFromAPI(resp.merchant)));\n }\n\n create(\n merchantId: string,\n address: string,\n city: string,\n state: string,\n country: string,\n zipCode: string,\n emailAddress: string,\n phoneNumber: string,\n contactName: string,\n companyName: string,\n additionalEmailAddresses?: string[],\n merchantType?: MerchantType,\n ): Observable {\n return this.merchantApi\n .create({\n merchantId,\n address,\n city,\n state,\n country,\n zipCode,\n emailAddress,\n phoneNumber,\n contactName,\n companyName,\n additionalEmailAddresses,\n merchantType,\n })\n .pipe(map(() => true));\n }\n\n update(\n merchantId: string,\n address: string,\n city: string,\n state: string,\n country: string,\n zipCode: string,\n emailAddress: string,\n phoneNumber: string,\n contactName: string,\n companyName: string,\n additionalEmailAddresses?: string[],\n ): Observable {\n return this.merchantApi\n .update({\n merchantId,\n address,\n city,\n state,\n country,\n zipCode,\n emailAddress,\n phoneNumber,\n contactName,\n companyName,\n additionalEmailAddresses,\n })\n .pipe(map(() => true));\n }\n\n getOutstandingBalance(merchantId: string): Observable {\n const req = new GetOutstandingBalanceRequest({ merchantId });\n return this.merchantApi.getOutstandingBalance(req).pipe(\n map((r) => ({\n outstanding: r.outstandingBalance || 0,\n currency: currencyFromApi(r.currency),\n })),\n );\n }\n\n getStatistics(merchantId: string): Observable {\n const req = new GetStatisticsRequest({ merchantId });\n return this.merchantApi.getStatistics(req);\n }\n\n private sortMerchantByToApi(sortBy: SortMerchantsBy): SearchMerchantsRequestSortBy {\n switch (sortBy) {\n case SortMerchantsBy.merchantId:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID;\n case SortMerchantsBy.companyName:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_COMPANY_NAME;\n case SortMerchantsBy.contactName:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_CONTACT_NAME;\n case SortMerchantsBy.emailAddress:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_EMAIL_ADDRESS;\n case SortMerchantsBy.country:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_COUNTRY;\n case SortMerchantsBy.state:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_STATE;\n case SortMerchantsBy.updated:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_UPDATED;\n case SortMerchantsBy.created:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_CREATED;\n default:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID;\n }\n }\n\n private sortDirectionToApi(sortDirection: SortDirection): SortDirectionApi {\n switch (sortDirection) {\n case SortDirection.Ascending:\n return SortDirectionApi.SORT_DIRECTION_ASCENDING;\n case SortDirection.Descending:\n return SortDirectionApi.SORT_DIRECTION_DESCENDING;\n default:\n return SortDirectionApi.SORT_DIRECTION_ASCENDING;\n }\n }\n\n search(\n searchTerm: string,\n sortBy: SortMerchantsBy,\n sortDirection: SortDirection,\n pagingOptions: PagedRequestOptionsInterface,\n ): Observable> {\n return this.merchantApi\n .search({\n searchTerm: searchTerm,\n sortBy: this.sortMerchantByToApi(sortBy),\n sortDirection: this.sortDirectionToApi(sortDirection),\n pagingOptions: new PagedRequestOptions(pagingOptions),\n })\n .pipe(\n map(\n (r) =>\n new PagedResponse(\n r.merchants.map((m) => MerchantFromAPI(m)),\n r.pagingMetadata.nextCursor,\n r.pagingMetadata.hasMore,\n ),\n ),\n );\n }\n\n setAutoPostInvoices(merchantId: string, autoPostInvoices: boolean): Observable {\n return this.merchantApi\n .setAutoPostInvoices({\n merchantId: merchantId,\n shouldAutoPostInvoices: autoPostInvoices,\n })\n .pipe(map(() => true));\n }\n\n setAutoChargeInvoices(merchantId: string, autoChargeInvoices: boolean): Observable {\n return this.merchantApi\n .setAutoChargeInvoices({\n merchantId,\n autoChargeInvoices,\n })\n .pipe(map(() => true));\n }\n\n downloadCsv(r: DownloadMerchantsCsvRequest): Observable {\n const queryParams = `?filename=${r.filename}`;\n return this.http\n .get(this.hostService.hostWithScheme + '/merchants-csv' + queryParams, this.apiOptions())\n .pipe(catchError(handleCsvError));\n }\n\n setIncludeInFinancialRecords(merchantId: string, includeInFinancialRecords: boolean): Observable {\n return this.merchantApi\n .setIncludeInFinancialRecords({\n merchantId: merchantId,\n includeInFinancialRecords: includeInFinancialRecords,\n })\n .pipe(map((response) => response.ok));\n }\n\n sendSalesInvoiceEmail(merchantId: string, invoiceId: string): Observable {\n return this.merchantApi\n .sendSalesInvoiceEmail({\n merchantId: merchantId,\n invoiceId: invoiceId,\n })\n .pipe(map(() => true));\n }\n\n chargeSalesInvoice(merchantId: string, invoiceId: string, amount: number): Observable {\n return this.merchantApi\n .chargeSalesInvoice({\n merchantId,\n invoiceId,\n amount,\n })\n .pipe(map(() => true));\n }\n\n sendSalesInvoiceReceiptEmail(merchantId: string, invoiceId: string): Observable {\n return this.merchantApi\n .sendSalesInvoiceReceiptEmail({\n merchantId: merchantId,\n invoiceId: invoiceId,\n })\n .pipe(map(() => true));\n }\n\n private apiOptions(): { responseType: 'blob'; withCredentials: boolean } {\n return {\n responseType: 'blob',\n withCredentials: true,\n };\n }\n\n createExternalAccount(merchantId: string, stripeToken: string): Observable {\n return this.merchantApi\n .createStripeExternalAccount(\n new CreateStripeExternalAccountRequest({\n merchantId,\n stripeToken,\n }),\n )\n .pipe(map(() => true));\n }\n\n generateAccountBalanceReport(merchantId: string): Observable {\n const queryParams = `?merchantID=${merchantId}`;\n return this.http\n .get(this.hostService.hostWithScheme + '/merchant-balance-details-report' + queryParams, this.apiOptions())\n .pipe(share(), catchError(handleCsvError));\n }\n\n getMultiRetailConfigurations(\n merchantId: string,\n retailGroupIds: string[],\n ): Observable> {\n const request = new GetMultiRetailConfigurationsRequest({\n merchantId,\n retailGroupIds,\n });\n return this.merchantApi.getMultiRetailConfigurations(request).pipe(\n map((resp: GetMultiRetailConfigurationsResponse) => {\n const configMap = new Map();\n retailGroupIds.forEach((groupId) => {\n configMap.set(groupId, retailConfigurationFromApi(resp.retailConfigurations[groupId]));\n });\n return configMap;\n }),\n );\n }\n\n upsertRetailConfiguration(\n merchantId: string,\n retailGroupId: string,\n currencyCode: string,\n currencyConversionRate?: number,\n ): Observable {\n const request = new UpsertRetailConfigurationRequest({\n merchantId,\n retailGroupId,\n currencyCode,\n currencyConversionRate,\n });\n return this.merchantApi.upsertRetailConfiguration(request).pipe(map(() => null));\n }\n\n getPayoutSummary(merchantId: string): Observable {\n return this.merchantApi\n .getPayoutSummary(\n new GetPayoutSummaryRequest({\n merchantId,\n }),\n )\n .pipe(map((resp) => payoutSummaryFromAPI(resp)));\n }\n\n getRetailPayout(merchantId: string, payoutId: string): Observable {\n return this.merchantApi\n .getRetailPayout(\n new GetRetailPayoutRequest({\n merchantId,\n payoutId,\n }),\n )\n .pipe(map((resp) => retailPayoutFromApi(resp.payout)));\n }\n\n listRetailPayouts(merchantId: string, cursor = '', pageSize = 10): Observable> {\n return this.merchantApi\n .listRetailPayouts(\n new ListRetailPayoutsRequest({\n merchantId: merchantId,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n }),\n )\n .pipe(\n map((resp: ListRetailPayoutsResponse) => {\n const retailPayouts = (resp.payouts || []).map((payout) => retailPayoutFromApi(payout));\n return new PagedResponse(retailPayouts, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }),\n );\n }\n\n /**\n * Updates the default retail customer configuration for a given merchant and group ID\n * @param merchantId - the merchant to update for\n * @param retailGroupId - the group ID to update for\n * @param defaultCustomerConfiguration - the default customer configuration to apply. If `null`, the merchant/group will have no defaults\n */\n upsertDefaultRetailCustomerConfiguration(\n merchantId: string,\n retailGroupId: string,\n defaultCustomerConfiguration?: Partial,\n ): Observable> {\n return this.merchantApi.upsertDefaultRetailCustomerConfiguration(\n new UpsertDefaultRetailCustomerConfigurationRequest({\n merchantId,\n retailGroupId,\n defaultCustomerConfiguration: defaultCustomerConfigurationToApi(defaultCustomerConfiguration),\n fieldMask: { paths: Object.keys(defaultCustomerConfiguration || {}) },\n }),\n );\n }\n\n /**\n * Creates a new report run for a merchant.\n *\n * @param merchantId is the id of the merchant to create the report for.\n * @param reportType is the type of report to generate\n * @param intervalStart is the starting time for entities in the report.\n * @param intervalEnd is the end range for entities in the report.\n * @param currencyCode fill filter results down to a specific currency. This is optional.\n */\n createReportRun(\n merchantId: string,\n reportType: MerchantServicesReportRunType,\n intervalStart: Date,\n intervalEnd: Date,\n currencyCode?: string,\n ): Observable {\n return this.merchantApi.createReportRun({\n merchantId,\n reportType,\n intervalStart,\n intervalEnd,\n currencyCode,\n });\n }\n\n /**\n * Get a report run by its identifier.\n *\n * @param id is the id of the report run.\n */\n getReportRun(id: string): Observable {\n return this.merchantApi.getReportRun({ id });\n }\n\n /**\n * Gets the data from a report run\n *\n * @param id is the id of the report run.\n */\n getReport(id: string): Observable {\n return this.http\n .get(this.hostService.hostWithScheme + `/merchant-services/reports/${id}`, this.apiOptions())\n .pipe(catchError(handleCsvError));\n }\n\n getRetailAccountBalance(merchantId: string): Observable {\n return this.merchantApi.getRetailAccountBalance({ merchantId }).pipe(map((resp) => resp.balance));\n }\n\n setNextRetailInvoiceSequence(merchantId: string, nextRetailInvoiceSequence: number): Observable {\n return this.merchantApi\n .setNextRetailInvoiceSequence({\n merchantId,\n nextRetailInvoiceSequence,\n })\n .pipe(map(() => null));\n }\n\n getNextRetailInvoiceSequence(merchantId: string): Observable {\n return this.merchantApi\n .getNextRetailInvoiceSequence({\n merchantId,\n })\n .pipe(\n map((resp) => {\n return {\n nextRetailInvoiceSequence: resp.nextRetailInvoiceSequence,\n nextInvoiceNumber: resp.nextInvoiceNumber,\n };\n }),\n );\n }\n\n resetPaymentFacilitator(merchantId: string): Observable {\n return this.merchantApi\n .resetPaymentFacilitator({\n merchantId,\n })\n .pipe(map(() => null));\n }\n}\n","export {\n PayoutStatus,\n MerchantServicesReportRun,\n MerchantServicesReportRunType,\n MerchantServicesReportRunStatus,\n} from '@vendasta/billing';\nexport { Balance } from './balance';\nexport { Merchant } from './merchant';\nexport { DownloadMerchantsCsvRequest } from './merchant.interface';\nexport { MerchantService, SortMerchantsBy, NextInvoiceSequence } from './merchant.service';\nexport { PayoutBalance, PayoutInterval, PayoutSummary } from './payout-summary';\nexport { RetailConfiguration, DefaultCustomerConfiguration, GenerateMethod } from './retail-configuration';\n","export { MerchantReport } from './merchant-report';\nexport { MerchantReportStatus } from './merchant-report-status';\nexport { MerchantReportApiService } from './merchant-report.service';\nexport { DownloadMerchantReportCsvRequest } from './merchant-report.interfaces';\n","import { PaymentCard } from '../payment-card';\nimport { PaymentMethod as PaymentMethodAPI, PaymentMethodType as PaymentMethodTypeAPI } from '@vendasta/billing';\nimport { PaymentMethodType } from '../retail-customer-configuration';\nimport { convertApiPaymentCardDetails } from '../payment-card/payment-card';\n\nexport interface PaymentACHDebit {\n lastFourDigits: string;\n id: string;\n}\n\nexport interface PaymentACSSDebit {\n lastFourDigits: string;\n id: string;\n}\n\nexport type PaymentMethodDetails = PaymentCard | PaymentACHDebit | PaymentACSSDebit;\n\nexport interface PaymentMethod {\n type: PaymentMethodType;\n details?: PaymentMethodDetails;\n default: boolean;\n expired: boolean;\n}\n\nfunction isCardExpired(expiryYear: number, expiryMonth: number): boolean {\n if (!expiryYear || !expiryMonth) {\n return false;\n }\n const now = new Date();\n const currentYear = now.getFullYear();\n const currentMonth = now.getMonth() + 1;\n return expiryYear < currentYear || (expiryYear === currentYear && expiryMonth < currentMonth);\n}\n\nexport function convertPaymentMethodFromApi(paymentMethod: PaymentMethodAPI): PaymentMethod {\n switch (paymentMethod.type) {\n case PaymentMethodTypeAPI.PAYMENT_METHOD_TYPE_CARD: {\n const details = paymentMethod.card ? convertApiPaymentCardDetails(paymentMethod.card) : undefined;\n return {\n type: PaymentMethodType.CARD,\n details,\n default: paymentMethod.default || false,\n expired: details ? isCardExpired(details.expiryYear, details.expiryMonth) : false,\n };\n }\n case PaymentMethodTypeAPI.PAYMENT_METHOD_TYPE_ACH_DEBIT: {\n return {\n type: PaymentMethodType.ACH_DEBIT,\n details: paymentMethod.achDebit,\n default: paymentMethod.default || false,\n expired: false,\n };\n }\n case PaymentMethodTypeAPI.PAYMENT_METHOD_TYPE_ACSS_DEBIT: {\n return {\n type: PaymentMethodType.ACSS_DEBIT,\n details: paymentMethod.acssDebit,\n default: paymentMethod.default || false,\n expired: false,\n };\n }\n default:\n return {\n type: PaymentMethodType.UNSET,\n default: paymentMethod.default || false,\n expired: false,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport {\n DeletePaymentCardRequest,\n ListPaymentCardsRequest,\n ListPaymentCardsResponse,\n ListPaymentMethodsRequest,\n ListPaymentMethodsResponse,\n PaymentMethodApiService,\n SetDefaultPaymentMethodRequest,\n} from '@vendasta/billing';\nimport { PaymentMethod, convertPaymentMethodFromApi } from './payment-method';\nimport { convertApiPaymentCardDetails, PaymentCard } from '../payment-card/payment-card';\n@Injectable({ providedIn: 'root' })\nexport class PaymentMethodService {\n constructor(private apiService: PaymentMethodApiService) {}\n\n /**\n * Returns a list of credit cards for a customer\n * @deprecated Use list() to list all supported payment method types\n */\n listPaymentCards(merchantId: string, customerId: string): Observable {\n const req = new ListPaymentCardsRequest({\n merchantId,\n customerId,\n });\n return this.apiService.listPaymentCards(req).pipe(\n map((resp: ListPaymentCardsResponse) => {\n return (resp && resp.paymentCard ? resp.paymentCard : []).map((c) => convertApiPaymentCardDetails(c));\n }),\n );\n }\n\n list(merchantId: string, customerId: string): Observable {\n const req = new ListPaymentMethodsRequest({\n merchantId,\n customerId,\n });\n return this.apiService.list(req).pipe(\n map((resp: ListPaymentMethodsResponse) => {\n return (resp?.paymentMethods || []).map((m) => convertPaymentMethodFromApi(m));\n }),\n );\n }\n\n deletePaymentMethod(merchantId: string, id: string): Observable {\n const req = new DeletePaymentCardRequest({\n merchantId,\n cardId: id,\n });\n return this.apiService.deletePaymentCard(req).pipe(mapTo(true));\n }\n\n setDefaultPaymentCard(merchantId: string, customerId: string, paymentMethodId: string): Observable {\n const req = new SetDefaultPaymentMethodRequest({\n merchantId,\n customerId,\n paymentMethodId,\n });\n return this.apiService.setDefaultPaymentMethod(req).pipe(mapTo(true));\n }\n}\n","export { PaymentMethodService } from './payment-method.service';\nexport { PaymentMethod, PaymentMethodDetails, PaymentACHDebit, PaymentACSSDebit } from './payment-method';\n","export * from './list-products';\nexport * from './product';\n","import {\n RetentionMetrics as RetentionMetricsApi,\n ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup as RetentionMetricsByGroupApi,\n} from '@vendasta/billing';\n\nexport interface RetentionMetrics {\n sku: string;\n productName: string;\n startingCount: number;\n activations: number;\n deactivations: number;\n churn: number;\n retention: number;\n}\n\nexport interface RetentionMetricsByGroup {\n groupID: string;\n metrics: RetentionMetrics[];\n}\n\nexport interface ListSubscriptionRetentionFilters {\n start?: Date;\n end?: Date;\n}\n\nexport function subscriptionMetricFromAPI(mApi: RetentionMetricsApi): RetentionMetrics {\n return {\n sku: mApi.sku || '',\n productName: mApi.productName || '',\n startingCount: mApi.startingCount || 0,\n activations: mApi.activations || 0,\n deactivations: mApi.deactivations || 0,\n churn: mApi.churn || 0.0,\n retention: mApi.retention || 0.0,\n };\n}\n\nexport function subscriptionMetricByGroupFromAPI(mApi: RetentionMetricsByGroupApi): RetentionMetricsByGroup {\n const metrics = (mApi.subscriptionMetrics || []).map((metric) => subscriptionMetricFromAPI(metric));\n return {\n groupID: mApi.groupId || '',\n metrics: metrics || [],\n };\n}\n","export * from './subscription-retention';\nexport { ProductSummaryService } from './product-summary.service';\n","export { ListPurchaseFilter } from './list-purchases';\nexport * from './purchase';\nexport { PurchaseService } from './purchase.service';\nexport * from './purchase_status';\n","import {\n ReferenceType as ApiReferenceType,\n RefundInterface,\n RefundReason as ApiReason,\n RefundStatus as ApiStatus,\n} from '@vendasta/billing';\n\nexport interface Refund {\n merchantId: string;\n chargeId: string;\n refundId: string;\n amount: number;\n reason: RefundReason;\n status: RefundStatus;\n created?: Date;\n updated?: Date;\n referenceType: ReferenceType;\n referenceId: string;\n description: string;\n}\n\nexport enum RefundReason {\n REQUESTED_BY_CUSTOMER = 'Requested by Customer',\n DUPLICATE = 'Duplicate',\n FRAUDULENT = 'Fraudulent',\n UNKNOWN = 'Unknown',\n}\n\nexport enum RefundStatus {\n SUCCEEDED = 'Succeeded',\n FAILED = 'Failed',\n PENDING = 'Pending',\n UNKNOWN = 'Unknown',\n}\n\nexport enum ReferenceType {\n PURCHASE = 'Purchase',\n PURCHASE_ITEM = 'Purchase Item',\n INVOICE = 'Invoice',\n UNKNOWN = 'Unknown',\n}\n\nexport function reasonToApi(r: RefundReason): ApiReason {\n switch (r) {\n case RefundReason.REQUESTED_BY_CUSTOMER:\n return ApiReason.REQUESTED_BY_CUSTOMER;\n case RefundReason.FRAUDULENT:\n return ApiReason.FRAUDULENT;\n case RefundReason.DUPLICATE:\n return ApiReason.DUPLICATE;\n default:\n return ApiReason.DUPLICATE;\n }\n}\n\nexport function reasonFromApi(r: ApiReason | undefined): RefundReason {\n switch (r) {\n case ApiReason.DUPLICATE:\n return RefundReason.DUPLICATE;\n case ApiReason.REQUESTED_BY_CUSTOMER:\n return RefundReason.REQUESTED_BY_CUSTOMER;\n case ApiReason.FRAUDULENT:\n return RefundReason.FRAUDULENT;\n default:\n return RefundReason.REQUESTED_BY_CUSTOMER;\n }\n}\n\nexport function statusFromApi(r: ApiStatus | undefined): RefundStatus {\n switch (r) {\n case ApiStatus.SUCCEEDED:\n return RefundStatus.SUCCEEDED;\n case ApiStatus.FAILED:\n return RefundStatus.FAILED;\n case ApiStatus.PENDING:\n return RefundStatus.PENDING;\n default:\n return RefundStatus.SUCCEEDED;\n }\n}\n\nexport function referenceFromApi(r: ApiReferenceType | undefined): ReferenceType {\n switch (r) {\n case ApiReferenceType.PURCHASE:\n return ReferenceType.PURCHASE;\n case ApiReferenceType.PURCHASE_ITEM:\n return ReferenceType.PURCHASE_ITEM;\n case ApiReferenceType.INVOICE:\n return ReferenceType.INVOICE;\n default:\n return ReferenceType.PURCHASE;\n }\n}\n\nexport function refundFromApi(refund: RefundInterface): Refund {\n return {\n merchantId: refund.merchantId || '',\n chargeId: refund.chargeId || '',\n refundId: refund.refundId || '',\n amount: refund.amount || 0,\n reason: reasonFromApi(refund.reason || undefined),\n status: statusFromApi(refund.status),\n created: refund.created ? new Date(refund.created) : undefined,\n updated: refund.updated ? new Date(refund.updated) : undefined,\n referenceType: referenceFromApi(refund.referenceType),\n referenceId: refund.referenceId || '',\n description: refund.description || '',\n };\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError as observableThrowError } from 'rxjs';\nimport { catchError, map, mapTo } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport { CreateRefundRequest, ListRefundsRequest, RefundApiService } from '@vendasta/billing';\nimport { reasonToApi, Refund, refundFromApi, RefundReason } from './refund';\n\n@Injectable({ providedIn: 'root' })\nexport class RefundService {\n constructor(private refundApiService: RefundApiService) {}\n\n create(\n merchantId: string,\n chargeId: string,\n amount: number,\n reason: RefundReason,\n description: string,\n ): Observable {\n const request = new CreateRefundRequest({\n merchantId: merchantId,\n paymentId: chargeId,\n amount: amount,\n reason: reasonToApi(reason),\n description: description,\n });\n return this.refundApiService.create(request).pipe(catchError(this.handleError), mapTo(null));\n }\n\n list(merchantId: string, paymentIds: string[], cursor: string, pageSize: number): Observable> {\n const req = new ListRefundsRequest({\n paymentIds: paymentIds,\n cursor: cursor,\n pageSize: pageSize,\n merchantId: merchantId,\n });\n return this.refundApiService.list(req).pipe(\n map((response) => {\n const refunds = (response.refunds || []).map((item) => refundFromApi(item));\n return new PagedResponse(refunds, response.nextCursor, response.hasMore);\n }),\n );\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(`Server returned ${error.message}`);\n }\n\n return observableThrowError(`Unable to issue a refund`);\n }\n}\n","export * from './refund.service';\nexport * from './refund';\n","export { RevenueApiService } from './revenue.service';\nexport { DownloadCsvRequestInterface } from './revenue.interfaces';\n","export { SalesCreditNote, ListFilters, SalesCreditNoteStatus } from './sales-credit-note';\nexport { SalesCreditNoteService } from './sales-credit-note.service';\n","export {\n SalesInvoice,\n ListSalesInvoicesFilters,\n SalesInvoiceStatus,\n SalesInvoiceType,\n PaymentStatusType,\n} from './sales-invoice';\nexport { SalesInvoiceService } from './sales-invoice.service';\n","export const SNAPSHOT_REPORT_SKU = 'ST';\nexport const SNAPSHOT_REPORT_REFRESH_SKU = 'snapshotreportrefresh';\nexport const REPUTATION_MANGEMENT_SKU = 'RM';\n","export { StripeFileService } from './stripe-file.service';\nexport { FileData } from './file';\nexport { FilePurpose } from './purpose';\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc0l0ZW0gfSBmcm9tICcuL2Nhbi1jcmVhdGUtc3Vic2NyaXB0aW9ucy1pdGVtJztcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Interval } from './recurring_invoice/';\n\n@Injectable()\nexport class IntervalMappingService {\n private translatedIntervalMap: { [k: string]: string | any } = {\n [Interval.DAY]: {\n '=1': this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.DAY'),\n other: this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.DAYS'),\n },\n [Interval.WEEK]: {\n '=1': this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.WEEK'),\n other: this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.WEEKS'),\n },\n [Interval.MONTH]: {\n '=1': this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.MONTH'),\n other: this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.MONTHS'),\n },\n [Interval.YEAR]: {\n '=1': this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.YEAR'),\n other: this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.YEARS'),\n },\n };\n\n constructor(private translateService: TranslateService) {}\n\n public get intervalMapping(): { [k: string]: string } {\n return this.translatedIntervalMap;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface Market {\n name: string;\n market_id: string;\n}\n\nexport interface MarketsService {\n markets$: Observable;\n}\n\nexport const BILLING_MARKETS_SERVICE = new InjectionToken(\n '[Billing Market Service]: Markets are required to hydrate market information in billing components',\n);\n\nexport const CHANGE_INVOICE_DATE_ON_SAME_DAY_ERROR = 'nextRenewal cannot be edited if the current invoice day is today';\n","{\n \"PAYMENT_DECLINE_REASON\": {\n \"AUTHENTICATION_REQUIRED\": {\n \"DESCRIPTION\": \"The card was declined as the transaction requires authentication.\",\n \"NEXT_STEPS\": \"The customer should try again and authenticate their card when prompted during the transaction.\"\n },\n \"APPROVE_WITH_ID\": {\n \"DESCRIPTION\": \"The payment cannot be authorized.\",\n \"NEXT_STEPS\": \"The payment should be attempted again. If it still cannot be processed, the customer needs to contact their card issuer.\"\n },\n \"CARD_NOT_SUPPORTED\": {\n \"DESCRIPTION\": \"The card does not support the specified currency.\",\n \"NEXT_STEPS\": \"The customer needs to check with the issuer whether the card can be used for the type of currency specified.\"\n },\n \"DUPLICATE_TRANSACTION\": {\n \"DESCRIPTION\": \"A transaction with identical amount and credit card information was submitted very recently.\",\n \"NEXT_STEPS\": \"Check to see if a recent payment already exists.\"\n },\n \"EXPIRED_CARD\": {\n \"DESCRIPTION\": \"The card has expired.\",\n \"NEXT_STEPS\": \"The customer should use another card.\"\n },\n \"FRAUDULENT\": {\n \"DESCRIPTION\": \"The payment has been declined as the payment facilitator suspects it is fraudulent.\",\n \"NEXT_STEPS\": \"Do not report more detailed information to your customer. Instead, present it as you would a generic decline.\"\n },\n \"INCORRECT_NUMBER\": {\n \"DESCRIPTION\": \"The card number is incorrect.\",\n \"NEXT_STEPS\": \"The customer should try again using the correct card number.\"\n },\n \"INCORRECT_CVC\": {\n \"DESCRIPTION\": \"The CVC number is incorrect.\",\n \"NEXT_STEPS\": \"The customer should try again using the correct CVC.\"\n },\n \"INCORRECT_PIN\": {\n \"DESCRIPTION\": \"The PIN entered is incorrect. This decline code only applies to payments made with a card reader.\",\n \"NEXT_STEPS\": \"The customer should try again using the correct PIN.\"\n },\n \"INCORRECT_ZIP\": {\n \"DESCRIPTION\": \"The ZIP/postal code is incorrect.\",\n \"NEXT_STEPS\": \"The customer should try again using the correct ZIP/postal code.\"\n },\n \"INSUFFICIENT_FUNDS\": {\n \"DESCRIPTION\": \"The card has insufficient funds to complete the purchase.\",\n \"NEXT_STEPS\": \"The customer should use an alternative payment method.\"\n },\n \"INVALID_ACCOUNT\": {\n \"DESCRIPTION\": \"The card, or account the card is connected to, is invalid.\",\n \"NEXT_STEPS\": \"The customer needs to contact their card issuer for more information.\"\n },\n \"INVALID_AMOUNT\": {\n \"DESCRIPTION\": \"The payment amount is invalid, or exceeds the amount that is allowed.\",\n \"NEXT_STEPS\": \"If the amount appears to be correct, the customer needs to check with their card issuer that they can make purchases of that amount.\"\n },\n \"INVALID_CVC\": {\n \"DESCRIPTION\": \"The CVC number is incorrect.\",\n \"NEXT_STEPS\": \"The customer should try again using the correct CVC.\"\n },\n \"INVALID_EXPIRY_YEAR\": {\n \"DESCRIPTION\": \"The expiration date is invalid.\",\n \"NEXT_STEPS\": \"The customer should try again using the correct expiration date.\"\n },\n \"INVALID_NUMBER\": {\n \"DESCRIPTION\": \"The card number is invalid.\",\n \"NEXT_STEPS\": \"The customer should try again using the correct card number.\"\n },\n \"INVALID_PIN\": {\n \"DESCRIPTION\": \"The PIN entered is incorrect. This decline code only applies to payments made with a card reader.\",\n \"NEXT_STEPS\": \"The customer should try again using the correct PIN.\"\n },\n \"ISSUER_NOT_AVAILABLE\": {\n \"DESCRIPTION\": \"The card issuer could not be reached, so the payment could not be authorized.\",\n \"NEXT_STEPS\": \"The payment should be attempted again. If it still cannot be processed, the customer needs to contact their card issuer.\"\n },\n \"LOST_CARD\": {\n \"DESCRIPTION\": \"The payment has been declined because the card is reported lost.\",\n \"NEXT_STEPS\": \"The specific reason for the decline should not be reported to the customer. Instead, it needs to be presented as a generic decline.\"\n },\n \"MERCHANT_BLACKLIST\": {\n \"DESCRIPTION\": \"The payment has been declined because it matches a value on the payment facilitator's block list.\",\n \"NEXT_STEPS\": \"Do not report more detailed information to your customer. Instead, present it as you would a generic decline.\"\n },\n \"OFFLINE_PIN_REQUIRED\": {\n \"DESCRIPTION\": \"The card has been declined as it requires a PIN.\",\n \"NEXT_STEPS\": \"The customer should try again by inserting their card and entering a PIN.\"\n },\n \"ONLINE_OR_OFFLINE_PIN_REQUIRED\": {\n \"DESCRIPTION\": \"The card has been declined as it requires a PIN.\",\n \"NEXT_STEPS\": \"If the card reader supports Online PIN, the customer should be prompted for a PIN without a new transaction being created. If the card reader does not support Online PIN, the customer should try again by inserting their card and entering a PIN.\"\n },\n \"PICKUP_CARD\": {\n \"DESCRIPTION\": \"The card cannot be used to make this payment (it is possible it has been reported lost or stolen).\",\n \"NEXT_STEPS\": \"The customer should contact their card issuer for more information.\"\n },\n \"PIN_TRY_EXCEEDED\": {\n \"DESCRIPTION\": \"The allowable number of PIN tries has been exceeded.\",\n \"NEXT_STEPS\": \"The customer must use another card or method of payment\"\n },\n \"PROCESSING_ERROR\": {\n \"DESCRIPTION\": \"An error occurred while processing the card.\",\n \"NEXT_STEPS\": \"The payment should be attempted again. If it still cannot be processed, try again later.\"\n },\n \"REENTER_TRANSACTION\": {\n \"DESCRIPTION\": \"The payment could not be processed by the issuer for an unknown reason.\",\n \"NEXT_STEPS\": \"The payment should be attempted again. If it still cannot be processed, the customer needs to contact their card issuer.\"\n },\n \"RESTRICTED_CARD\": {\n \"DESCRIPTION\": \"The card cannot be used to make this payment (it is possible it has been reported lost or stolen).\",\n \"NEXT_STEPS\": \"The customer should contact their card issuer for more information.\"\n },\n \"STOLEN_CARD\": {\n \"DESCRIPTION\": \"The payment has been declined because the card is reported stolen.\",\n \"NEXT_STEPS\": \"The specific reason for the decline should not be reported to the customer. Instead, it needs to be presented as a generic decline.\"\n },\n \"TESTMODE_DECLINE\": {\n \"DESCRIPTION\": \"A payment facilitator test card number was used.\",\n \"NEXT_STEPS\": \"A genuine card must be used to make a payment.\"\n },\n \"TRY_AGAIN_LATER\": {\n \"DESCRIPTION\": \"The card has been declined for an unknown reason.\",\n \"NEXT_STEPS\": \"Ask the customer to attempt the payment again. If subsequent payments are declined, the customer should contact their card issuer for more information.\"\n },\n \"WITHDRAWAL_COUNT_LIMIT_EXCEEDED\": {\n \"DESCRIPTION\": \"The customer has exceeded the balance or credit limit available on their card.\",\n \"NEXT_STEPS\": \"The customer should use an alternative payment method.\"\n },\n \"UNKNOWN_CONTACT_ISSUER\": {\n \"DESCRIPTION\": \"The card has been declined for an unknown reason.\",\n \"NEXT_STEPS\": \"The customer needs to contact their card issuer for more information.\"\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport En from '../assets/i18n/en_devel.json';\n\n@NgModule({\n imports: [\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'common/billing',\n baseTranslation: En,\n }),\n ],\n})\nexport class BillingI18nModule {}\n","export * from './billing-i18n.module';\n","export {\n BillingStrategy as PricingPlanBillingStrategy,\n Frequency as GeneratedFrequency,\n ListPurchaseItemsRequestListPurchaseItemsFilters as ListPurchaseItemsFilters,\n ListPurchaseRequestState as State,\n PaymentCardCARD_TYPE as CARD_TYPE,\n ProductSummaryBillingStrategy as ProductSummaryBillingStrategy,\n ProductSummaryProductType as ProductType,\n PurchaseStatus as PurchaseStatusEnum,\n ReferenceType as ReferenceTypeEnum,\n RefundReason as RefundReasonEnum,\n RefundStatus as RefundStatusEnum,\n RetailPaymentReferenceType as RetailPaymentReferenceTypeEnum,\n RetailStatusResponseInterface as RetailStatus,\n BillingApiService,\n CanCreateSubscriptionsResponse,\n ListBillableItemsRequestFilters,\n MerchantApiService,\n ProductSummary,\n RefundApiService,\n SubscribeValidationStatus,\n ValidateResponse,\n CreateMerchantRequest,\n CreatePaymentCardRequest,\n GetMerchantRequest,\n ListPaymentCardsRequest,\n ListPaymentCardsResponse,\n UpdateMerchantRequest,\n UpdatePaymentCardRequest,\n ListContractDocumentsRequest,\n ListContractDocumentsResponse,\n DeleteContractDocumentRequest,\n GetMultiContractsRequest,\n GetMultiContractsResponse,\n ListContractsRequest,\n ListContractsResponse,\n ResetContractPricingRequest,\n GetBalanceRequest,\n GetBalanceResponse,\n CreateDiscountRequest,\n ExpireDiscountRequest,\n ListDiscountsRequest,\n ListDiscountsResponse,\n AddLineItemRequest,\n AddLineItemResponse,\n CreateInvoiceRequest,\n CreateInvoiceResponse,\n DeleteInvoiceRequest,\n DeleteLineItemRequest,\n DeleteLineItemResponse,\n GetInvoiceRequest,\n GetInvoiceResponse,\n ListInvoicesRequest,\n ListInvoicesResponse,\n SendInvoiceRequest,\n UpdateInvoiceRequest,\n UpdateInvoiceResponse,\n UpdateLineItemRequest,\n UpdateLineItemResponse,\n PayInvoiceRequest,\n VoidInvoiceRequest,\n ListMerchantBillingReportsRequest,\n ListMerchantBillingReportsResponse,\n ConnectStripeAccountRequest,\n ConnectStripeAccountResponse,\n GetMerchantResponse,\n GetOutstandingBalanceRequest,\n GetOutstandingBalanceResponse,\n SearchMerchantsRequest,\n SearchMerchantsResponse,\n SetAutoChargeInvoicesRequest,\n SetAutoPostInvoicesRequest,\n SetDefaultPaymentCardRequest,\n SetHasAlternativePaymentMethodRequest,\n SetIncludeInFinancialRecordsRequest,\n CreateProductRequest,\n DeleteProductRequest,\n GetMultiProductRequest,\n GetMultiProductResponse,\n ListProductsRequest,\n ListProductsResponse,\n UpdateProductRequest,\n ListPurchaseRequest,\n ListPurchaseResponse,\n ListPurchaseItemsRequest,\n ListPurchaseItemsResponse,\n RetryPurchaseRequest,\n VoidPurchaseRequest,\n CreateRefundRequest,\n ListRefundsRequest,\n ListRefundsResponse,\n ListSalesCreditNoteRequest,\n ListSalesCreditNoteResponse,\n CreateTaxRequest,\n GetMultiTaxRequest,\n GetMultiTaxResponse,\n ListTaxRequest,\n ListTaxResponse,\n UpdateTaxRequest,\n ListDiscountsRequestFiltersInterface,\n UpdateMerchantRequestInterface,\n ListPaymentCardsRequestInterface,\n CreateMerchantRequestInterface,\n ProductSummaryInterface,\n GetProductSummariesTotalRequestInterface,\n GetPurchaseCostResponse,\n ValidateResponseInterface,\n ListProductSummariesRequestInterface,\n CanCreateSubscriptionsRequestInterface,\n GetMerchantResponseInterface,\n MerchantInterface,\n CreatePaymentCardRequestInterface,\n UpdatePaymentCardRequestInterface,\n TaxRateInterface,\n ListProductSummariesResponse,\n CanCreateSubscriptionsRequest,\n CreateSubscriptionRequest,\n CreateSubscriptionResponse,\n ListProductSummariesRequest,\n PaymentCardInterface,\n Commitment,\n AccountBalance,\n BalanceAmount,\n usdConversionRate,\n SubscriptionStatus as SubscriptionStatusEnum,\n Source as SubscriptionSourceEnum,\n Consumer,\n FieldMask,\n CreateTaxResponse,\n} from '@vendasta/billing';\nexport * from './applied_bundle';\nexport { AppliedDiscount, appliedDiscountFromApi, Discount as LegacyDiscount } from './applied_discount';\nexport * from './bank_account';\nexport * from './bank_reconciliation';\nexport * from './billable-item';\nexport { BillingHostService } from './billing-host.service';\nexport { BillingService } from './billing.service';\nexport { StripeService } from './stripe.service';\nexport * from './bundle';\nexport * from './contract';\nexport * from './contract-document';\nexport * from './core';\nexport * from './credit';\nexport * from './credit-note';\nexport * from './discount';\nexport * from './invoice';\nexport * from './merchant';\nexport * from './merchant-report';\nexport * from './payment';\nexport * from './payment-card';\nexport * from './payment-method';\nexport * from './pricing';\nexport * from './product';\nexport * from './product-summary';\nexport * from './purchase';\nexport * from './refund';\nexport * from './retail-customer-configuration';\nexport * from './recurring_invoice';\nexport * from './revenue';\nexport * from './sales-credit-note';\nexport * from './sales-invoice';\nexport * from './sku';\nexport * from './stripe-file';\nexport * from './subscription';\nexport * from './tax-rate';\nexport * from './interval-mapping.service';\nexport * from './constants';\nexport * from './i18n';\n","import {\n Dispute as DisputeApi,\n DisputeEvidence as DisputeEvidenceApi,\n DisputeEvidenceDetails as DisputeEvidenceDetailsApi,\n DisputeStatus as DisputeStatusApi,\n File as FileApi,\n} from '@vendasta/billing';\nimport { isEqual } from 'date-fns';\nimport { RetailPaymentReferenceTypeEnum } from '..';\n\nexport enum DisputeStatus {\n WARNING_NEEDS_RESPONSE = 'Inquiry needs response',\n WARNING_UNDER_REVIEW = 'Inquiry under review',\n WARNING_CLOSED = 'Inquiry closed',\n NEEDS_RESPONSE = 'Dispute needs response',\n UNDER_REVIEW = 'Dispute under review',\n CHARGE_REFUNDED = 'Charge refunded',\n LOST = 'Dispute lost',\n WON = 'Dispute won',\n UNKNOWN = 'Unknown',\n}\n\nexport interface Dispute {\n id: string;\n paymentId: string;\n status?: DisputeStatus;\n amount: number;\n created: Date;\n currencyCode: string;\n evidence?: DisputeEvidence;\n evidenceDetails?: DisputeEvidenceDetails;\n isChargeRefundable: boolean;\n reason: string;\n fee: number;\n feeCurrencyCode: string;\n referenceId?: string;\n referenceType?: RetailPaymentReferenceTypeEnum;\n description?: string;\n customerId?: string;\n customerName?: string;\n}\n\nexport interface DisputeEvidence {\n customerCommunication?: File;\n customerSignature?: File;\n shippingDocumentation?: File;\n receipt?: File;\n uncategorizedFile?: File;\n billingAddress: string;\n customerEmailAddress: string;\n customerName: string;\n productDescription: string;\n}\n\nexport interface DisputeEvidenceRequest {\n billingAddress?: string;\n customerEmailAddress?: string;\n customerName?: string;\n productDescription?: string;\n customerSignatureFileId?: string;\n customerCommunicationFileId?: string;\n receiptFileId?: string;\n shippingDocumentationFileId?: string;\n uncategorizedFileId?: string;\n}\n\nexport interface File {\n created: Date;\n id: string;\n filename: string;\n url: string;\n}\n\nexport interface DisputeEvidenceDetails {\n dueBy?: Date;\n hasEvidence: boolean;\n pastDue: boolean;\n submissionCount: number;\n}\n\nexport function disputeFromApi(dispute: DisputeApi): Dispute | undefined {\n if (!dispute) {\n return undefined;\n }\n return {\n id: dispute.id || '',\n paymentId: dispute.paymentId || '',\n status: disputeStatusFromApi(dispute.status),\n amount: dispute.amount || 0,\n created: dispute.created,\n currencyCode: dispute.currencyCode,\n evidence: disputeEvidenceFromApi(dispute.evidence),\n evidenceDetails: disputeEvidenceDetailsFromApi(dispute.evidenceDetails),\n isChargeRefundable: dispute.isChargeRefundable || false,\n reason: dispute.reason || '',\n fee: dispute.fee,\n feeCurrencyCode: dispute.feeCurrencyCode,\n referenceId: dispute.paymentReferenceId || '',\n referenceType: dispute.paymentReferenceType || RetailPaymentReferenceTypeEnum.RETAIL_PAYMENT_REFERENCE_TYPE_UNSET,\n customerId: dispute.customerId || '',\n description: dispute.paymentDescription || '',\n };\n}\n\nfunction disputeEvidenceFromApi(evidence: DisputeEvidenceApi): DisputeEvidence | undefined {\n if (!evidence) {\n return undefined;\n }\n return {\n customerCommunication: fileFromApi(evidence.customerCommunication),\n customerSignature: fileFromApi(evidence.customerSignature),\n shippingDocumentation: fileFromApi(evidence.shippingDocumentation),\n receipt: fileFromApi(evidence.receipt),\n uncategorizedFile: fileFromApi(evidence.uncategorizedFile),\n billingAddress: evidence.billingAddress || '',\n customerEmailAddress: evidence.customerEmailAddress || '',\n customerName: evidence.customerName || '',\n productDescription: evidence.productDescription || '',\n };\n}\n\nfunction fileFromApi(file: FileApi): File | undefined {\n if (!file) {\n return undefined;\n }\n return {\n id: file.id || '',\n created: file.created,\n filename: file.filename || '',\n url: file.url || '',\n };\n}\n\nfunction disputeEvidenceDetailsFromApi(evidence: DisputeEvidenceDetailsApi): DisputeEvidenceDetails | undefined {\n if (!evidence) {\n return undefined;\n }\n const zeroDate = new Date(+0);\n return {\n dueBy: isEqual(evidence.dueBy, zeroDate) ? undefined : evidence.dueBy,\n hasEvidence: evidence.hasEvidence,\n pastDue: evidence.pastDue,\n submissionCount: evidence.submissionCount,\n };\n}\n\nexport function disputeStatusFromApi(status: DisputeStatusApi): DisputeStatus | undefined {\n switch (status) {\n case DisputeStatusApi.DISPUTE_STATUS_WARNING_NEEDS_RESPONSE:\n return DisputeStatus.WARNING_NEEDS_RESPONSE;\n case DisputeStatusApi.DISPUTE_STATUS_WARNING_UNDER_REVIEW:\n return DisputeStatus.WARNING_UNDER_REVIEW;\n case DisputeStatusApi.DISPUTE_STATUS_WARNING_CLOSED:\n return DisputeStatus.WARNING_CLOSED;\n case DisputeStatusApi.DISPUTE_STATUS_NEEDS_RESPONSE:\n return DisputeStatus.NEEDS_RESPONSE;\n case DisputeStatusApi.DISPUTE_STATUS_UNDER_REVIEW:\n return DisputeStatus.UNDER_REVIEW;\n case DisputeStatusApi.DISPUTE_STATUS_CHARGE_REFUNDED:\n return DisputeStatus.CHARGE_REFUNDED;\n case DisputeStatusApi.DISPUTE_STATUS_LOST:\n return DisputeStatus.LOST;\n case DisputeStatusApi.DISPUTE_STATUS_WON:\n return DisputeStatus.WON;\n default:\n return undefined;\n }\n}\n\nexport function disputeStatusToApi(status: DisputeStatus | undefined): DisputeStatusApi | undefined {\n switch (status) {\n case DisputeStatus.WARNING_NEEDS_RESPONSE:\n return DisputeStatusApi.DISPUTE_STATUS_WARNING_NEEDS_RESPONSE;\n case DisputeStatus.WARNING_UNDER_REVIEW:\n return DisputeStatusApi.DISPUTE_STATUS_WARNING_UNDER_REVIEW;\n case DisputeStatus.WARNING_CLOSED:\n return DisputeStatusApi.DISPUTE_STATUS_WARNING_CLOSED;\n case DisputeStatus.NEEDS_RESPONSE:\n return DisputeStatusApi.DISPUTE_STATUS_NEEDS_RESPONSE;\n case DisputeStatus.UNDER_REVIEW:\n return DisputeStatusApi.DISPUTE_STATUS_UNDER_REVIEW;\n case DisputeStatus.CHARGE_REFUNDED:\n return DisputeStatusApi.DISPUTE_STATUS_CHARGE_REFUNDED;\n case DisputeStatus.LOST:\n return DisputeStatusApi.DISPUTE_STATUS_LOST;\n case DisputeStatus.WON:\n return DisputeStatusApi.DISPUTE_STATUS_WON;\n default:\n return undefined;\n }\n}\n\nexport function isDisputeStatus(str: string): str is DisputeStatus {\n return Object.values(DisputeStatus).includes(str as DisputeStatus);\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n GetWholesaleProviderPublicKeyRequest,\n ListPaymentRequest,\n ListRetailDisputesRequest,\n ListRetailDisputesRequestListRetailDisputesFilters,\n ListRetailDisputesResponse,\n ListRetailPaymentsRequest,\n ListRetailPaymentsRequestListRetailPaymentsFilters,\n ListRetailPaymentsResponse,\n ListRetailTransactionsRequest,\n ListRetailTransactionsRequestListRetailTransactionsFilters,\n ListRetailTransactionsResponse,\n PagedRequestOptions,\n PaymentApiService,\n PrepareRetailPaymentRequest,\n RetailPaymentsEnabledRequest,\n RetailStatusRequest,\n RetailStatusResponse,\n RetailTransactionType,\n} from '@vendasta/billing';\nimport { Dispute, DisputeEvidenceRequest, disputeFromApi } from './dispute';\nimport { Intent, ListPaymentsFilter, Payment, paymentFromApi, RetailProvider } from './payment';\nimport {\n RetailPayment,\n retailPaymentFromApi,\n RetailRefundReason,\n retailRefundReasonToApi,\n RetailTransaction,\n retailTransactionFromApi,\n} from './retail-payment';\nimport { retailResponseFromAPI, RetailStatus } from './retail-status';\nimport { CountryProviderDeterminant, MerchantProviderDeterminant } from './provider-determinant';\nimport {\n PaymentFacilitatorType,\n paymentFacilitatorTypeFromApi,\n paymentFacilitatorTypeToApi,\n} from './payment-facilitator-type';\nimport { DisputeStatus as DisputeStatusApi } from '@vendasta/billing/lib/_internal/enums/payment.enum';\n\n@Injectable({ providedIn: 'root' })\nexport class PaymentService {\n constructor(private paymentApi: PaymentApiService) {}\n\n listPayments(filters: ListPaymentsFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListPaymentRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.paymentApi.list(req).pipe(\n map((response) => {\n const payments = (response.payments || []).map((payment) => paymentFromApi(payment));\n return new PagedResponse(payments, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n prepareRetailPayment(merchantId: string, customerId: string): Observable {\n const req = new PrepareRetailPaymentRequest({\n merchantId: merchantId,\n customerId: customerId,\n });\n return this.paymentApi.prepareRetail(req).pipe(\n map((response) => {\n return {\n stripeClientSecret: response.stripeClientSecret,\n intentId: response.intentId,\n };\n }),\n );\n }\n\n getRetail(merchantId: string, paymentId: string): Observable {\n return this.paymentApi\n .getRetail({\n merchantId: merchantId,\n paymentId: paymentId,\n })\n .pipe(map((resp) => retailPaymentFromApi(resp.payment)));\n }\n\n listRetail(\n merchantId: string,\n cursor = '',\n pageSize = 10,\n payoutId?: string,\n customerId?: string,\n createdDateGte?: Date,\n createdDateLte?: Date,\n ): Observable> {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n const filters: ListRetailPaymentsRequestListRetailPaymentsFilters =\n new ListRetailPaymentsRequestListRetailPaymentsFilters({\n payoutId: payoutId || '',\n });\n if (!!createdDateGte && createdDateGte.valueOf() !== zeroDate) {\n filters.createdDateGte = createdDateGte;\n }\n if (!!createdDateLte && createdDateLte.valueOf() !== zeroDate) {\n filters.createdDateLte = createdDateLte;\n }\n return this.paymentApi\n .listRetail(\n new ListRetailPaymentsRequest({\n merchantId: merchantId,\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n }),\n )\n .pipe(\n map((resp: ListRetailPaymentsResponse) => {\n const retailPayments = (resp.payments || []).map((payment) => retailPaymentFromApi(payment));\n return new PagedResponse(retailPayments, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }),\n );\n }\n\n listRetailTransactions(\n merchantId: string,\n cursor = '',\n pageSize = 10,\n payoutId?: string,\n createdDateGte?: Date,\n createdDateLte?: Date,\n paymentsOnly?: boolean,\n customerId?: string,\n invoiceId?: string,\n ): Observable> {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n const filters: ListRetailTransactionsRequestListRetailTransactionsFilters =\n new ListRetailTransactionsRequestListRetailTransactionsFilters({\n payoutId: payoutId || '',\n });\n if (!!createdDateGte && createdDateGte.valueOf() !== zeroDate) {\n filters.createdDateGte = createdDateGte;\n }\n if (!!createdDateLte && createdDateLte.valueOf() !== zeroDate) {\n filters.createdDateLte = createdDateLte;\n }\n if (paymentsOnly === undefined || paymentsOnly) {\n filters.type = RetailTransactionType.RETAIL_TRANSACTION_TYPE_PAYMENT;\n }\n if (customerId) {\n filters.customerId = customerId;\n }\n if (invoiceId) {\n filters.invoiceId = invoiceId;\n }\n return this.paymentApi\n .listRetailTransactions(\n new ListRetailTransactionsRequest({\n merchantId: merchantId,\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n }),\n )\n .pipe(\n map((resp: ListRetailTransactionsResponse) => {\n const retailTransactions = (resp.transactions || []).map((transaction) =>\n retailTransactionFromApi(transaction),\n );\n return new PagedResponse(retailTransactions, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }),\n );\n }\n\n getRetailDispute(merchantId: string, disputeId: string): Observable {\n return this.paymentApi\n .getRetailDispute({\n merchantId: merchantId,\n disputeId: disputeId,\n })\n .pipe(map((resp) => disputeFromApi(resp.dispute)));\n }\n\n listRetailDisputes(\n merchantId: string,\n cursor = '',\n pageSize = 10,\n status?: DisputeStatusApi,\n ): Observable> {\n const filters = new ListRetailDisputesRequestListRetailDisputesFilters({\n status: status,\n });\n return this.paymentApi\n .listRetailDisputes(\n new ListRetailDisputesRequest({\n merchantId: merchantId,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n filters: filters,\n }),\n )\n .pipe(\n map((resp: ListRetailDisputesResponse) => {\n const retailPayments = (resp?.disputes || []).map((d) => disputeFromApi(d));\n return new PagedResponse(\n retailPayments,\n resp?.pagingMetadata.nextCursor || '',\n resp?.pagingMetadata.hasMore || false,\n );\n }),\n );\n }\n\n retailStatus(merchantId: string): Observable {\n const req = new RetailStatusRequest({ merchantId });\n return this.paymentApi.retailStatus(req).pipe(map((r: RetailStatusResponse) => retailResponseFromAPI(r)));\n }\n\n retailPaymentsEnabled(merchantId: string): Observable {\n const req = new RetailPaymentsEnabledRequest({ merchantId });\n return this.paymentApi.retailPaymentsEnabled(req).pipe(map((resp) => resp.enabled));\n }\n\n configureRetailProvider(\n merchantId: string,\n successUrl: string,\n failureUrl: string,\n pft?: PaymentFacilitatorType,\n ): Observable {\n const paymentFacilitatorType = paymentFacilitatorTypeToApi(pft || PaymentFacilitatorType.NOT_SET);\n return this.paymentApi\n .configureRetailProvider({\n merchantId,\n successUrl,\n failureUrl,\n paymentFacilitatorType,\n })\n .pipe(map((resp) => resp.stripeUrl));\n }\n\n getRetailProvider(merchantId: string): Observable {\n return this.paymentApi.getRetailProvider({ merchantId }).pipe(\n map((resp) => {\n return {\n statementDescriptor: resp.statementDescriptor,\n stripeConnectId: resp.stripeConnectId,\n paymentFacilitatorType: paymentFacilitatorTypeFromApi(resp.paymentFacilitatorType),\n countryCode: resp.countryCode,\n };\n }),\n );\n }\n\n updateRetailProvider(merchantId: string, statementDescriptor: string): Observable {\n return this.paymentApi.updateRetailProvider({ merchantId, statementDescriptor }).pipe(mapTo(null));\n }\n\n submitEvidence(\n merchantId: string,\n disputeId: string,\n paymentId: string,\n submit: boolean,\n evidence?: DisputeEvidenceRequest,\n ): Observable {\n return this.paymentApi\n .submitEvidence({\n merchantId: merchantId,\n disputeId: disputeId,\n paymentId: paymentId,\n evidence: {\n billingAddress: evidence?.billingAddress,\n customerEmailAddress: evidence?.customerEmailAddress,\n customerName: evidence?.customerName,\n productDescription: evidence?.productDescription,\n customerSignatureFileId: evidence?.customerSignatureFileId,\n customerCommunicationFileId: evidence?.customerCommunicationFileId,\n receiptFileId: evidence?.receiptFileId,\n shippingDocumentationFileId: evidence?.shippingDocumentationFileId,\n uncategorizedFileId: evidence?.uncategorizedFileId,\n },\n submit: submit,\n })\n .pipe(mapTo(null));\n }\n\n closeDispute(merchantId: string, disputeId: string): Observable {\n return this.paymentApi\n .closeRetailDispute({\n merchantId: merchantId,\n disputeId: disputeId,\n })\n .pipe(mapTo(null));\n }\n\n getWholesaleProviderPublicKey(\n determinant: MerchantProviderDeterminant | CountryProviderDeterminant,\n ): Observable {\n let request: GetWholesaleProviderPublicKeyRequest;\n if (determinant instanceof MerchantProviderDeterminant) {\n request = new GetWholesaleProviderPublicKeyRequest({ merchantId: determinant.merchantId });\n } else {\n request = new GetWholesaleProviderPublicKeyRequest({ countryCode: determinant.countryCode });\n }\n return this.paymentApi.getWholesaleProviderPublicKey(request).pipe(map((resp) => resp.publcApiKey));\n }\n\n refundRetail(\n merchantId: string,\n paymentId: string,\n amount: number,\n reason: RetailRefundReason,\n ): Observable {\n return this.paymentApi\n .refundRetail({ merchantId, paymentId, amount, reason: retailRefundReasonToApi(reason) })\n .pipe(map((resp) => retailPaymentFromApi(resp.payment)));\n }\n}\n","export * from './lib';\n","import { CurrencyPipe, DecimalPipe, TitleCasePipe } from '@angular/common';\n\nexport type Currency =\n | 'AUD'\n | 'BRL'\n | 'CHF'\n | 'CNY'\n | 'CAD'\n | 'CZK'\n | 'EUR'\n | 'GBP'\n | 'HKD'\n | 'INR'\n | 'JPY'\n | 'KHR'\n | 'KRW'\n | 'MXN'\n | 'NOK'\n | 'NZD'\n | 'RUB'\n | 'SEK'\n | 'SGD'\n | 'TRY'\n | 'USD'\n | 'ZAR';\n\nexport type BillingFrequency = 'daily' | 'weekly' | 'monthly' | 'yearly' | 'once' | 'other';\n\nexport enum MarketplaceBillingFrequency {\n OneTime = 'One Time',\n Yearly = 'Yearly',\n Monthly = 'Monthly',\n}\n\nexport function formatDisplayPrice(\n value: any,\n currency: Currency | string,\n billingFrequency?: BillingFrequency | MarketplaceBillingFrequency,\n isCents = true,\n translateZero = true,\n displaySymbol: 'code' | 'symbol' | 'symbol-narrow' | string | boolean = true,\n isStartingPrice = false,\n): string {\n let price = 'Contact Sales';\n let display: string;\n let priceFormatFunc = defaultFormatFunc;\n\n if (typeof displaySymbol === 'string') {\n display = displaySymbol;\n } else {\n display = displaySymbol === true ? 'symbol' : 'code';\n }\n\n switch (currency) {\n case 'CZK':\n display = displaySymbol ? 'symbol-narrow' : 'code';\n priceFormatFunc = CZKFormatFunc;\n break;\n }\n\n if (value) {\n if (isCents) {\n value = convertCentsToDollars(Number(value));\n }\n price = priceFormatFunc(value, currency, display);\n if (billingFrequency) {\n price = `${price} ${formatBillingFrequency(billingFrequency)}`;\n }\n if (isStartingPrice) {\n price = `Starting at ${price}`;\n }\n }\n\n if (translateZero) {\n if (value < 0) {\n return 'Contact Sales';\n }\n if (value === 0) {\n return 'Free';\n }\n }\n if (value === 0) {\n return priceFormatFunc(value, currency, display);\n }\n\n return price;\n}\n\nexport function convertCentsToDollars(centValue: number): number {\n if (!centValue) {\n return centValue;\n }\n\n if (!Number.isInteger(centValue)) {\n centValue = Number(centValue);\n centValue = Math.round(centValue);\n }\n return centValue / 100;\n}\n\nexport function convertDollarsToCents(dollarValue: number): string {\n return ((dollarValue || 0) / 100).toFixed(2);\n}\n\nexport function formatBillingFrequency(value?: string): string {\n let returnValue = '';\n if (value) {\n switch (value.toLowerCase()) {\n case 'once':\n case 'one time':\n returnValue = 'One Time';\n break;\n default:\n returnValue = new TitleCasePipe().transform(value);\n }\n }\n return returnValue;\n}\n\nfunction defaultFormatFunc(value: string, currency: string, display: string): string {\n if (!currency) {\n return new DecimalPipe('en-US').transform(value, '1.2-2') ?? '';\n } else {\n return new CurrencyPipe('en-US').transform(value, currency, display, '1.2-2') ?? '';\n }\n}\n\nfunction CZKFormatFunc(value: string, currency: string, display: string): string {\n const price = (new DecimalPipe('en-US').transform(value, '1.0-2') ?? '').replace('.', ',');\n const currencySymbol = (new CurrencyPipe('en-US').transform(1, currency, display, '0.0') ?? '').split('1')[0];\n return `${price} ${currencySymbol} bez DPH`;\n}\n","export const removeGoogleTranslatedContent = (content: string) => {\n if (content && content.includes('(Translated by Google)')) {\n const translatedRegex = /(\\n*)\\(Translated by Google\\)[\\s\\S]*?(?:\\(Original\\)\\n?|$)/gi;\n content = content.replace(translatedRegex, '');\n }\n return content;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { removeGoogleTranslatedContent } from './remove-google-translated-content';\n\n@Pipe({\n name: 'removeGoogleTranslatedContent',\n standalone: false,\n})\nexport class RemoveGoogleTranslatedContentPipe implements PipeTransform {\n transform(content: string, options?: { hideEnglishTranslations?: boolean }): string {\n if (options && options.hideEnglishTranslations) {\n return removeGoogleTranslatedContent(content);\n }\n\n return content;\n }\n}\n","import { CurrencyPipe, DecimalPipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\nimport { BillingFrequency, Currency, MarketplaceBillingFrequency } from './display.price';\n\n@Injectable()\nexport class DisplayPriceService {\n constructor(private translateService: TranslateService) {}\n\n public formatDisplayPrice(\n value: any,\n currency: Currency | string,\n billingFrequency?: BillingFrequency | MarketplaceBillingFrequency,\n isCents = true,\n translateZero = true,\n displaySymbol = true,\n isStartingPrice = false,\n ): Observable {\n let display: 'code' | 'symbol' | 'symbol-narrow' | boolean = displaySymbol === true ? 'symbol' : 'code';\n let priceFormatFunc: (value: number, currency: string, display: string) => Observable =\n this.defaultFormatFunc.bind(this);\n\n switch (currency) {\n case 'CZK':\n display = displaySymbol ? 'symbol-narrow' : 'code';\n priceFormatFunc = this.CZKFormatFunc.bind(this);\n break;\n }\n if (value && value > 0) {\n let price = Number(value);\n if (isCents) {\n price = this.convertCentsToDollars(price);\n }\n return priceFormatFunc(price, currency, display).pipe(\n switchMap((formattedPrice: string) => {\n if (billingFrequency) {\n return this.formatBillingFrequency(billingFrequency, formattedPrice);\n }\n return of(formattedPrice);\n }),\n switchMap((formattedPrice: string) => {\n if (isStartingPrice) {\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.STARTING_AT_PRICE', {\n price: formattedPrice,\n });\n }\n return of(formattedPrice);\n }),\n );\n }\n if (translateZero) {\n if (value < 0) {\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.CONTACT_SALES');\n }\n if (value === 0) {\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.FREE');\n }\n }\n if (value === 0) {\n return priceFormatFunc(value, currency, display);\n }\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.CONTACT_SALES');\n }\n\n private convertCentsToDollars(centValue: number): number {\n if (!centValue) {\n return centValue;\n }\n\n if (!Number.isInteger(centValue)) {\n centValue = Number(centValue);\n centValue = Math.round(centValue);\n }\n return centValue / 100;\n }\n\n public formatBillingFrequency(frequency: string, price?: string): Observable {\n let returnValue!: Observable;\n if (frequency) {\n switch (frequency.toLowerCase()) {\n case 'once':\n case 'one time':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.ONE_TIME');\n break;\n case 'daily':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.DAILY');\n break;\n case 'weekly':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.WEEKLY');\n break;\n case 'monthly':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.MONTHLY');\n break;\n case 'yearly':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.YEARLY');\n break;\n case 'other':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.OTHER');\n break;\n default:\n returnValue = of(frequency);\n }\n }\n if (price) {\n return returnValue.pipe(map((v) => `${price} ${v}`)) ?? of('');\n }\n return returnValue;\n }\n\n private defaultFormatFunc(value: number, currency: string, display: string): Observable {\n if (!currency) {\n return of(new DecimalPipe('en-US').transform(value, '1.2-2') ?? '');\n } else {\n return of(new CurrencyPipe('en-US').transform(value, currency, display, '1.2-2') ?? '');\n }\n }\n\n private CZKFormatFunc(value: number, currency: string, display: string): Observable {\n const price = (new DecimalPipe('en-US').transform(value, '1.0-2') ?? '').replace('.', ',');\n const currencySymbol = (new CurrencyPipe('en-US').transform(1, currency, display, '0.0') ?? '').split('1')[0];\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICE_CURRENCY_EXC_VAT', {\n price: price,\n currencySymbol: currencySymbol,\n });\n }\n\n public getSetupFeeString(): Observable {\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.SETUP_FEE');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { BillingFrequency, Currency } from './display.price';\nimport { DisplayPriceService } from './display-price.service';\n\n@Pipe({\n name: 'price$',\n standalone: false,\n})\nexport class DisplayPricePipe implements PipeTransform {\n constructor(private displayPriceService: DisplayPriceService) {}\n transform(\n value: any,\n currency: Currency | string,\n billingFrequency?: BillingFrequency,\n isCents = true,\n translateZero = true,\n displaySymbol = true,\n isStartingPrice = false,\n ): Observable {\n return this.displayPriceService.formatDisplayPrice(\n value,\n currency,\n billingFrequency,\n isCents,\n translateZero,\n displaySymbol,\n isStartingPrice,\n );\n }\n}\n\n@Pipe({\n name: 'billingFrequency$',\n standalone: false,\n})\nexport class BillingFrequencyPipe implements PipeTransform {\n constructor(private displayPriceService: DisplayPriceService) {}\n transform(frequency: string, price?: string): Observable {\n return this.displayPriceService.formatBillingFrequency(frequency, price);\n }\n}\n","{\n \"FRONTEND\": {\n \"CORE\": {\n \"SHARED\": {\n \"DISPLAY_PRICE\": {\n \"CONTACT_SALES\": \"Contact Sales\",\n \"PRICE_CURRENCY_EXC_VAT\": \"{{price}} {{currencySymbol}} exc. VAT\",\n \"FREE\": \"Free\",\n \"STARTING_AT_PRICE\": \"Starting at {{price}}\",\n \"SETUP_FEE\": \"Setup fee\",\n \"PRICING_FREQUENCIES\": {\n \"OTHER\": \"Other\",\n \"ONE_TIME\": \"One Time\",\n \"DAILY\": \"Daily\",\n \"WEEKLY\": \"Weekly\",\n \"MONTH\": \"month\",\n \"MONTHLY\": \"Monthly\",\n \"YEAR\": \"year\",\n \"YEARLY\": \"Yearly\"\n }\n }\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DisplayPriceService } from './display-price.service';\nimport { BillingFrequencyPipe, DisplayPricePipe } from './display-price.pipe';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from './assets/i18n/en.json';\nimport { RemoveGoogleTranslatedContentPipe } from './remove-google-translated-content.pipe';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'frontend/core-shared',\n baseTranslation: baseTranslation,\n }),\n ],\n exports: [DisplayPricePipe, BillingFrequencyPipe, RemoveGoogleTranslatedContentPipe],\n declarations: [DisplayPricePipe, BillingFrequencyPipe, RemoveGoogleTranslatedContentPipe],\n providers: [DisplayPriceService],\n})\nexport class CoreSharedModule {}\n","export var AndroidSettings = /*#__PURE__*/function (AndroidSettings) {\n /**\r\n * Show settings for accessibility modules\r\n */\n AndroidSettings[\"Accessibility\"] = \"accessibility\";\n /**\r\n * Show add account screen for creating a new account\r\n */\n AndroidSettings[\"Account\"] = \"account\";\n /**\r\n * Show settings to allow entering/exiting airplane mode\r\n */\n AndroidSettings[\"AirplaneMode\"] = \"airplane_mode\";\n /**\r\n * Show settings to allow configuration of APNs\r\n */\n AndroidSettings[\"Apn\"] = \"apn\";\n /**\r\n * Show screen of details about a particular application\r\n */\n AndroidSettings[\"ApplicationDetails\"] = \"application_details\";\n /**\r\n * Show settings to allow configuration of application development-related settings\r\n */\n AndroidSettings[\"ApplicationDevelopment\"] = \"application_development\";\n /**\r\n * Show settings to allow configuration of application-related settings\r\n */\n AndroidSettings[\"Application\"] = \"application\";\n /**\r\n * Show settings to allow configuration of application-specific notifications\r\n */\n AndroidSettings[\"AppNotification\"] = \"app_notification\";\n /**\r\n * Show screen for controlling which apps can ignore battery optimizations\r\n */\n AndroidSettings[\"BatteryOptimization\"] = \"battery_optimization\";\n /**\r\n * Show settings to allow configuration of Bluetooth\r\n */\n AndroidSettings[\"Bluetooth\"] = \"bluetooth\";\n /**\r\n * Show settings for video captioning\r\n */\n AndroidSettings[\"Captioning\"] = \"captioning\";\n /**\r\n * Show settings to allow configuration of cast endpoints\r\n */\n AndroidSettings[\"Cast\"] = \"cast\";\n /**\r\n * Show settings for selection of 2G/3G/4G\r\n */\n AndroidSettings[\"DataRoaming\"] = \"data_roaming\";\n /**\r\n * Show settings to allow configuration of date and time\r\n */\n AndroidSettings[\"Date\"] = \"date\";\n /**\r\n * Show settings to allow configuration of display\r\n */\n AndroidSettings[\"Display\"] = \"display\";\n /**\r\n * Show Daydream settings\r\n */\n AndroidSettings[\"Dream\"] = \"dream\";\n /**\r\n * Show Home selection settings\r\n */\n AndroidSettings[\"Home\"] = \"home\";\n /**\r\n * Show settings to configure input methods, in particular allowing the user to enable input methods\r\n */\n AndroidSettings[\"Keyboard\"] = \"keyboard\";\n /**\r\n * Show settings to enable/disable input method subtypes\r\n */\n AndroidSettings[\"KeyboardSubType\"] = \"keyboard_subtype\";\n /**\r\n * Show settings to allow configuration of locale\r\n */\n AndroidSettings[\"Locale\"] = \"locale\";\n /**\r\n * Show settings to allow configuration of current location sources\r\n */\n AndroidSettings[\"Location\"] = \"location\";\n /**\r\n * Show settings to manage installed applications\r\n */\n AndroidSettings[\"ManageApplications\"] = \"manage_applications\";\n /**\r\n * Show settings to manage all applications\r\n */\n AndroidSettings[\"ManageAllApplications\"] = \"manage_all_applications\";\n /**\r\n * Show settings for memory card storage\r\n */\n AndroidSettings[\"MemoryCard\"] = \"memory_card\";\n /**\r\n * Show settings for selecting the network operator\r\n */\n AndroidSettings[\"Network\"] = \"network\";\n /**\r\n * Show NFC Sharing settings\r\n */\n AndroidSettings[\"NfcSharing\"] = \"nfcsharing\";\n /**\r\n * Show NFC Tap & Pay settings\r\n */\n AndroidSettings[\"NfcPayment\"] = \"nfc_payment\";\n /**\r\n * Show NFC settings\r\n */\n AndroidSettings[\"NfcSettings\"] = \"nfc_settings\";\n /**\r\n * Show the top level print settings\r\n */\n AndroidSettings[\"Print\"] = \"print\";\n /**\r\n * Show settings to allow configuration of privacy options\r\n */\n AndroidSettings[\"Privacy\"] = \"privacy\";\n /**\r\n * Show settings to allow configuration of quick launch shortcuts\r\n */\n AndroidSettings[\"QuickLaunch\"] = \"quick_launch\";\n /**\r\n * Show settings for global search\r\n */\n AndroidSettings[\"Search\"] = \"search\";\n /**\r\n * Show settings to allow configuration of security and location privacy\r\n */\n AndroidSettings[\"Security\"] = \"security\";\n /**\r\n * Show system settings\r\n */\n AndroidSettings[\"Settings\"] = \"settings\";\n /**\r\n * Show the regulatory information screen for the device\r\n */\n AndroidSettings[\"ShowRegulatoryInfo\"] = \"show_regulatory_info\";\n /**\r\n * Show settings to a llow configuration of sound and volume\r\n */\n AndroidSettings[\"Sound\"] = \"sound\";\n /**\r\n * Show settings for internal storage\r\n */\n AndroidSettings[\"Storage\"] = \"storage\";\n /**\r\n * Show settings to allow configuration of sync settings\r\n */\n AndroidSettings[\"Sync\"] = \"sync\";\n /**\r\n * Show settings to control access to usage information\r\n */\n AndroidSettings[\"Usage\"] = \"usage\";\n /**\r\n * Show settings to manage the user input dictionary\r\n */\n AndroidSettings[\"UserDictionary\"] = \"user_dictionary\";\n /**\r\n * Show settings to configure input methods, in particular allowing the user to enable input methods\r\n */\n AndroidSettings[\"VoiceInput\"] = \"voice_input\";\n /**\r\n * Show settings to allow configuration of Wi-Fi\r\n */\n AndroidSettings[\"Wifi\"] = \"wifi\";\n /**\r\n * Show settings to allow configuration of a static IP address for Wi-Fi\r\n */\n AndroidSettings[\"WifiIp\"] = \"wifi_ip\";\n /**\r\n * Show settings to allow configuration of wireless controls such as Wi-Fi, Bluetooth and Mobile networks\r\n */\n AndroidSettings[\"Wireless\"] = \"wireless\";\n return AndroidSettings;\n}(AndroidSettings || {});\nexport var IOSSettings = /*#__PURE__*/function (IOSSettings) {\n /**\r\n * Settings > About page\r\n */\n IOSSettings[\"About\"] = \"about\";\n /**\r\n * Opens your app-specific settings screen. Note that this is the only officially supported settings screen by Apple.\r\n */\n IOSSettings[\"App\"] = \"app\";\n /**\r\n * Used to set if and when the screen should be automatically locked.\r\n */\n IOSSettings[\"AutoLock\"] = \"autoLock\";\n /**\r\n * Bluetooth settings. Allows the users to enable/disable bluetooth and to search for devices.\r\n */\n IOSSettings[\"Bluetooth\"] = \"bluetooth\";\n /**\r\n * Date and time settings.\r\n */\n IOSSettings[\"DateTime\"] = \"dateTime\";\n /**\r\n * FaceTime settings.\r\n */\n IOSSettings[\"FaceTime\"] = \"facetime\";\n /**\r\n * Opens iOS general settings screen.\r\n */\n IOSSettings[\"General\"] = \"general\";\n /**\r\n * Keyboard settings.\r\n */\n IOSSettings[\"Keyboard\"] = \"keyboard\";\n /**\r\n * iCloud settings.\r\n */\n IOSSettings[\"ICloud\"] = \"iCloud\";\n /**\r\n * iCloud Storage and Backup settings.\r\n */\n IOSSettings[\"ICloudStorageBackup\"] = \"iCloudStorageBackup\";\n /**\r\n * Language and region settings.\r\n */\n IOSSettings[\"International\"] = \"international\";\n /**\r\n * Show settings to allow configuration of current location sources\r\n */\n IOSSettings[\"LocationServices\"] = \"locationServices\";\n /**\r\n * Music settings.\r\n */\n IOSSettings[\"Music\"] = \"music\";\n /**\r\n * Notes settings.\r\n */\n IOSSettings[\"Notes\"] = \"notes\";\n /**\r\n * Notifications settings.\r\n */\n IOSSettings[\"Notifications\"] = \"notifications\";\n /**\r\n * Phone settings.\r\n */\n IOSSettings[\"Phone\"] = \"phone\";\n /**\r\n * Photos settings.\r\n */\n IOSSettings[\"Photos\"] = \"photos\";\n /**\r\n * Allows the user to manage configuration profiles that are installed on the phone.\r\n */\n IOSSettings[\"ManagedConfigurationList\"] = \"managedConfigurationList\";\n /**\r\n * Screen where the user can reset the phone to factory settings.\r\n */\n IOSSettings[\"Reset\"] = \"reset\";\n /**\r\n * Ringtone settings.\r\n */\n IOSSettings[\"Ringtone\"] = \"ringtone\";\n /**\r\n * Used to set phone volume, vibration settings, etc.\r\n */\n IOSSettings[\"Sounds\"] = \"sounds\";\n /**\r\n * Software update screen.\r\n */\n IOSSettings[\"SoftwareUpdate\"] = \"softwareUpdate\";\n /**\r\n * Store settings.\r\n */\n IOSSettings[\"Store\"] = \"store\";\n /**\r\n * Tracking settings.\r\n */\n IOSSettings[\"Tracking\"] = \"tracking\";\n /**\r\n * Wallpaper settings.\r\n */\n IOSSettings[\"Wallpaper\"] = \"wallpaper\";\n /**\r\n * WiFi settings.\r\n */\n IOSSettings[\"WiFi\"] = \"wifi\";\n /**\r\n * Tethering settings (used to create a hotspot with mobile data).\r\n */\n IOSSettings[\"Tethering\"] = \"tethering\";\n /**\r\n * Do Not Disturb settings.\r\n */\n IOSSettings[\"DoNotDisturb\"] = \"doNotDisturb\";\n /**\r\n * Touch id passcode settings.\r\n */\n IOSSettings[\"TouchIdPasscode\"] = \"touchIdPasscode\";\n /**\r\n * Screen Time settings.\r\n */\n IOSSettings[\"ScreenTime\"] = \"screenTime\";\n /**\r\n * Accessibility settings.\r\n */\n IOSSettings[\"Accessibility\"] = \"accessibility\";\n return IOSSettings;\n}(IOSSettings || {});\n\n","import { registerPlugin } from '@capacitor/core';\nconst NativeSettings = registerPlugin('NativeSettings', {\n web: () => import('./web').then(m => new m.NativeSettingsWeb())\n});\nexport * from './definitions';\nexport { NativeSettings };\n","import { Capacitor } from '@capacitor/core';\nimport { PushNotifications } from '@capacitor/push-notifications';\nimport { NativeSettings, AndroidSettings, IOSSettings } from 'capacitor-native-settings';\n\nexport async function pushNotificationsEnabled(): Promise {\n if (!Capacitor.isNativePlatform()) {\n return false;\n }\n const result = await PushNotifications.checkPermissions();\n return result.receive === 'granted';\n}\n\nexport async function registerForPushNotifications(): Promise {\n if (!Capacitor.isNativePlatform()) {\n return;\n }\n const result = await PushNotifications.requestPermissions();\n if (result.receive === 'granted') {\n await PushNotifications.register();\n }\n}\n\nexport async function openAppNotificationSettings(): Promise {\n if (!Capacitor.isNativePlatform()) {\n return;\n }\n await NativeSettings.open({\n optionAndroid: AndroidSettings.AppNotification,\n optionIOS: IOSSettings.App,\n });\n}\n","export * from '@firebase/messaging';\n","import { getMessaging, getToken } from 'firebase/messaging';\n\nexport const firebaseConfig = {\n apiKey: 'AIzaSyDYM8fWhLEDk7LXA8t0HxJF7sihxULk4B4',\n authDomain: 'notifications-realtime.firebaseapp.com',\n databaseURL: 'https://notifications-realtime.firebaseio.com',\n projectId: 'notifications-realtime',\n storageBucket: 'notifications-realtime.firebasestorage.app',\n messagingSenderId: '120235207080',\n appId: '1:120235207080:web:4f881618452c14f6c2d59d',\n vapidKey: 'BMr3lKukl4SQpfYgPbskQcoessL0aNgXdXBsSDi-8gcxNYks59kdBBq4AjioKWA_NaWqatpNHv0589lbIxj9i5E',\n};\n\nexport async function requestPermissions(): Promise {\n await Notification.requestPermission();\n}\n\nexport async function getPWAToken(vapidKey: string, swRegistration: ServiceWorkerRegistration): Promise {\n const messaging = getMessaging();\n return getToken(messaging, { vapidKey: vapidKey, serviceWorkerRegistration: swRegistration });\n}\n","import { Directive } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n NG_VALIDATORS,\n UntypedFormControl,\n ValidationErrors,\n ValidatorFn,\n Validator as ValidatorType,\n} from '@angular/forms';\n\nconst PRICE_REGEX = /^\\d{0,8}(\\.\\d{1,2})?$/;\nconst URL_REGEX = /^((https?:\\/\\/)?([\\w-]+(\\.[\\w-]+)+|localhost)\\.?(:\\d+)?((\\/)?\\S*)?)$/i;\nconst SUBDOMAIN_REGEX = /(^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$)/;\nconst MARKET_ID_REGEX = /(^[a-z0-9-]*$)/;\nconst EMAIL_REGEX =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n// Following regex matches North American, South African, UK, and Australian phone numbers, with some support for extensions\nconst PHONE_NUMBER_REGEX =\n /(^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$)|(^(((\\+44\\s?\\d{4}|\\(?0\\d{4}\\)?)\\s?\\d{3}\\s?\\d{3})|((\\+44\\s?\\d{3}|\\(?0\\d{3}\\)?)\\s?\\d{3}\\s?\\d{4})|((\\+44\\s?\\d{2}|\\(?0\\d{2}\\)?)\\s?\\d{4}\\s?\\d{4}))(\\s?#(\\d{4}|\\d{3}))?$)|(^(\\+\\d{2}[ -]{0,1}){0,1}(((\\({0,1}[ -]{0,1})0{0,1}\\){0,1}[2|3|7|8]{1}\\){0,1}[ -]*(\\d{4}[ -]{0,1}\\d{4}))|(1[ -]{0,1}(300|800|900|902)[ -]{0,1}((\\d{6})|(\\d{3}[ -]{0,1}\\d{3})))|(13[ -]{0,1}([\\d -]{5})|((\\({0,1}[ -]{0,1})0{0,1}\\){0,1}4{1}[\\d -]{8,10})))$)|((\\(0\\d\\d\\)\\s\\d{3}[\\s-]+\\d{4})|(0\\d\\d[\\s-]+\\d{3}[\\s-]+\\d{4})|(0\\d{9})|(\\+\\d\\d\\s?[(\\s]\\d\\d[)\\s]\\s?\\d{3}[\\s-]?\\d{4}))/;\n\ninterface PostalCodeRegexMap {\n [key: string]: RegExp;\n}\n\nconst DYNAMIC_CONTENT_ERROR = { invalidDynamicComponent: true };\n\nconst POSTAL_CODE_REGEXES: PostalCodeRegexMap = {\n CA: /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z][\\s-]?\\d[ABCEGHJ-NPRSTV-Z]\\d$/,\n US: /^[0-9]{5}(?:-[0-9]{4})?$/,\n};\n\n/**\n * import from https://github.com/ReactiveX/rxjs/blob/5.5.8/src/util/isNumeric.ts\n */\nconst isArray = Array.isArray || ((x: any): x is T[] => x && typeof x.length === 'number');\n\nfunction isNumeric(val: any): val is number {\n return !isArray(val) && val - parseFloat(val) + 1 >= 0;\n}\n\nexport class Validator {\n static URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX = /(\\{\\{.*?\\}\\})|(\\b((?:https?:\\/\\/|mailto:)[^\\s]+)\\b)/i;\n private static DYNAMIC_CONTENT_REGEX = /^\\{\\{\\s*([a-zA-Z]+)(?:\\s*\\['([^']+)'(?:\\s*,\\s*'([^']+)')*\\])?\\s*}}$/i;\n static HEX_COLOR_REGEX = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n\n static isPrice(control: UntypedFormControl): any {\n if (control.value && typeof control.value === 'string' && control.value.match(PRICE_REGEX)) {\n return null;\n } else if (\n control.value &&\n typeof control.value === 'number' &&\n parseFloat((control.value * 100).toFixed(2)) % 1 === 0\n ) {\n // modulus with floating point bases is broken\n return null;\n } else if (!control.value) {\n return null;\n } else {\n return { invalidPrice: true };\n }\n }\n\n static isUrl(control: UntypedFormControl): any {\n if (control.value && control.value.match(URL_REGEX)) {\n return null;\n } else if (control.value) {\n return { invalidUrl: true };\n }\n }\n\n static isEmailList(control: FormControl): any {\n if (control.value) {\n const emails = control.value\n .toString()\n .split(/[,;]+/)\n .map((email) => email.trim());\n const invalidEmails = emails.filter((email) => !email.match(EMAIL_REGEX));\n if (invalidEmails.length) {\n return { invalidEmail: true };\n }\n }\n }\n\n static isEmail(control: AbstractControl): ValidationErrors | null {\n if (control.value && typeof control.value == 'string' && control.value.match(EMAIL_REGEX)) {\n return null;\n } else if (control.value) {\n return { invalidEmail: true };\n }\n return null;\n }\n\n static isPhoneNumber(control: UntypedFormControl): any {\n if (control.value && control.value.match(PHONE_NUMBER_REGEX)) {\n return null;\n } else if (control.value) {\n return { invalidPhoneNumber: true };\n }\n }\n\n // Validation is currently limited to US and Canada. Add more countries to regex map as needed.\n static isValidPostalCode(countryCode: string): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n const countryRegex = POSTAL_CODE_REGEXES[countryCode.toUpperCase()];\n // If the country code is not in our regex map, return valid\n if (!countryRegex) {\n return null;\n }\n // Validate the postal code against the regex for the given country\n if (value && !countryRegex.test(value)) {\n return { invalidPostalCode: true };\n }\n return null;\n };\n }\n\n static isInRange(lower: number, upper: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!isNumeric(value) || (lower !== null && Number(value) < lower) || (upper !== null && Number(value) > upper)) {\n return { outOfRange: true };\n }\n return null;\n };\n }\n\n static isValidMarketId(control: UntypedFormControl): ValidationErrors | null {\n if (control.value && control.value.match(MARKET_ID_REGEX)) {\n return null;\n } else if (control.value) {\n return { invalidMarketId: true };\n }\n return null;\n }\n\n static isMinimumLength(minimumLength: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value && control.value.length >= minimumLength) {\n return null;\n } else if (control.value) {\n return { minlength: true };\n }\n return null;\n };\n }\n\n static isValidSubdomain(control: UntypedFormControl): any {\n if (control.value && control.value.match(SUBDOMAIN_REGEX)) {\n return null;\n } else if (control.value) {\n return { invalidSubdomain: true };\n }\n }\n\n static containsValidDynamicContent(control: FormControl): ValidationErrors | null {\n if (!control.value) return null; // No dynamic content to validate\n\n let dynamicContent = '';\n for (const p of control.value) {\n if (dynamicContent === '' || dynamicContent === '{') {\n if (p === '{') {\n dynamicContent += p;\n } else {\n dynamicContent = '';\n }\n } else if (p === '}' && dynamicContent[dynamicContent.length - 1] === '}') {\n dynamicContent += p;\n if (dynamicContent.search(Validator.DYNAMIC_CONTENT_REGEX) === -1) {\n return DYNAMIC_CONTENT_ERROR;\n }\n dynamicContent = '';\n } else {\n dynamicContent += p;\n }\n }\n if (dynamicContent !== '') {\n return DYNAMIC_CONTENT_ERROR;\n }\n return null;\n }\n\n static errorMessage(validatorName: string, validatorValue?: any): string {\n const config: Record = {\n required: 'Required',\n minlength: `Minimum length ${validatorValue.requiredLength}`,\n invalidPrice: `Invalid price`,\n outOfRange: `Out of range`,\n invalidEmail: 'Invalid Email',\n invalidPhoneNumber: 'Invalid Phone Number',\n invalidZipCode: 'Invalid Zip/Postal Code',\n invalidSubdomain: 'Invalid Subdomain',\n };\n\n return config[validatorName];\n }\n\n static isGreaterThanZero = () => {\n return (control: UntypedFormControl) => {\n if (control.value <= 0) {\n return { isLessThanOrEqualToZero: true };\n }\n return null;\n };\n };\n\n static isValidDate(control: UntypedFormControl): any {\n if (!control.value || isNaN(Date.parse(control.value))) {\n return { invalidDate: true };\n }\n return null;\n }\n}\n\n@Directive({\n selector: '[sharedContainsValidDynamicContent]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ContainsValidDynamicContentDirective, multi: true }],\n standalone: false,\n})\nexport class ContainsValidDynamicContentDirective implements ValidatorType {\n validate(control: AbstractControl): ValidationErrors | null {\n return Validator.containsValidDynamicContent(control as UntypedFormControl);\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nconst googleErrorDetailsBadRequestType = 'type.googleapis.com/google.rpc.BadRequest';\n\nexport interface FieldViolation {\n field: string;\n description: string;\n}\nexport function getFieldViolationsFromError(err: HttpErrorResponse): FieldViolation[] {\n if (!err?.error?.details || !Array.isArray(err.error.details)) {\n return [];\n }\n return err.error.details\n .filter((detail: Record) => detail['@type'] === googleErrorDetailsBadRequestType)\n .reduce((acc: FieldViolation[], curr: { fieldViolations: FieldViolation[] }) => {\n const fieldViolations = curr?.fieldViolations.map((fv: FieldViolation) => ({\n field: fv.field,\n description: fv.description,\n }));\n acc.push(...fieldViolations);\n return acc;\n }, []);\n}\n","/**\n * @deprecated: Use ProductPricingType instead\n **/\nexport enum BillingModel {\n Standard = 'Standard',\n Stairstep = 'Stairstep',\n Tiered = 'Tiered',\n}\n","import {\n Currency,\n Discount,\n Frequency,\n ProductPricing,\n ProductPricingRules,\n ProductPricingType,\n} from '@galaxy/billing';\nimport { MarketplaceBillingFrequency } from '../display.price';\nimport { BillingModel } from './billing-model';\nimport { ProductCategory } from './product-category';\n\n/**\n * @deprecated: Combine Product and ProductPricing from billing instead.\n **/\nexport interface BilledProduct {\n productName: string;\n productId: string;\n billingModel: BillingModel;\n price: number;\n notes: (Discount | BundledProduct)[];\n iconURL: string;\n currency: Currency;\n billingFrequency: MarketplaceBillingFrequency;\n pricingTiers: PricingTier[];\n productCategory: ProductCategory;\n count?: number;\n commitment?: Commitment;\n setupFee: number;\n}\n\n/**\n * @deprecated: Use PricingRule instead\n **/\nexport interface PricingTier {\n rangeMin: number;\n rangeMax: number;\n price: number;\n isStartingPrice?: boolean;\n}\n\n/**\n * @deprecated: Use pricing's Commitment instead\n **/\nexport interface Commitment {\n initial: number;\n recurring: number;\n}\n\nexport interface BundledProduct {\n productName: string;\n}\n\nexport function pricingTypeToBillingModel(pricingType: ProductPricingType): BillingModel {\n switch (pricingType) {\n case ProductPricingType.Stairstep:\n return BillingModel.Stairstep;\n case ProductPricingType.Tiered:\n return BillingModel.Tiered;\n case ProductPricingType.Standard:\n return BillingModel.Standard;\n }\n return BillingModel.Standard;\n}\n\nexport function pricingRulesToTiers(rules: ProductPricingRules[]): PricingTier[] {\n return rules.map((r) => {\n return {\n rangeMin: r.minUnits,\n rangeMax: r.maxUnits,\n price: r.price || 0,\n };\n });\n}\n\nexport function mapFrequency(frequency: Frequency): MarketplaceBillingFrequency {\n switch (frequency) {\n case Frequency.OneTime:\n return MarketplaceBillingFrequency.OneTime;\n case Frequency.Monthly:\n return MarketplaceBillingFrequency.Monthly;\n case Frequency.Yearly:\n return MarketplaceBillingFrequency.Yearly;\n }\n return undefined as unknown as MarketplaceBillingFrequency;\n}\n\nexport function buildBilledProductFromProductPricingAndAddon(\n addon: { productName: string; addonId: string; productIcon: string },\n productPricing: ProductPricing,\n): BilledProduct {\n return {\n productName: addon.productName,\n productId: addon.addonId,\n billingModel: pricingTypeToBillingModel(productPricing.pricingType),\n price: undefined as unknown as number,\n notes: [],\n iconURL: addon.productIcon,\n currency: productPricing.currency,\n billingFrequency: mapFrequency(productPricing.frequency),\n pricingTiers: pricingRulesToTiers(productPricing.pricingRules),\n productCategory: undefined as unknown as ProductCategory,\n commitment: productPricing.commitment,\n setupFee: productPricing.setupFee,\n };\n}\n","export * from './billed-product';\nexport { ProductCategory } from './product-category';\nexport * from './billing-model';\n","export const removeRouterOutletsFromUrl = (url: string): string => {\n return url.replace(/\\(.*?\\)/g, '');\n};\n","export { DisplayPricePipe, BillingFrequencyPipe } from './display-price.pipe';\nexport {\n formatDisplayPrice,\n Currency,\n BillingFrequency,\n MarketplaceBillingFrequency,\n formatBillingFrequency,\n convertCentsToDollars,\n} from './display.price';\nexport { USD, CAD, Currency as CurrencyEnum } from './currency';\nexport { MONTHLY, ONE_TIME, YEARLY, Frequency as FrequencyEnum } from './frequency';\nexport { CoreSharedModule } from './shared.module';\nexport { DisplayPriceService } from './display-price.service';\nexport { Validator } from './validator';\nexport { FieldViolation, getFieldViolationsFromError } from './verrors';\nexport * from './contract-pricing';\nexport * from './url-helper';\nexport { ContainsValidDynamicContentDirective } from './validator';\nexport { removeGoogleTranslatedContent } from './remove-google-translated-content';\nexport * from './mobile';\nexport * from './pwa';\n","export * from './lib';\n"],"mappings":"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CACElB,YAAa,qDACbkB,UAAW,oDACZ,EAEH,CACE,cACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,qBACA,CACElB,YAAa,wDACbkB,UAAW,uDACZ,EAEH,CACE,eACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,mBACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,wBACA,CACElB,YAAa,2DACbkB,UAAW,0DACZ,EAEH,CACE,eACA,CACElB,YAAa,kDACbkB,UAAW,iDACZ,EAEH,CACE,aACA,CACElB,YAAa,gDACbkB,UAAW,+CACZ,EAEH,CACE,kBACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,mBACA,CACElB,YAAa,sDACbkB,UAAW,qDACZ,EAEH,CACE,gBACA,CACElB,YAAa,mDACbkB,UAAW,kDACZ,EAEH,CACE,gBACA,CACElB,YAAa,mDACbkB,UAAW,kDACZ,EAEH,CACE,gBACA,CACElB,YAAa,mDACbkB,UAAW,kDACZ,EAEH,CACE,qBACA,CACElB,YAAa,wDACbkB,UAAW,uDACZ,EAEH,CACE,kBACA,CACElB,YAAa,qDACbkB,UAAW,oDACZ,EAEH,CACE,iBACA,CACElB,YAAa,oDACbkB,UAAW,mDACZ,EAEH,CACE,cACA,CACElB,YAAa,iDACbkB,UAAW,gDACZ,EAEH,CACE,sBACA,CACElB,YAAa,yDACbkB,UAAW,wDACZ,EAEH,CACE,iBACA,CACElB,YAAa,oDACbkB,UAAW,mDACZ,EAEH,CACE,cACA,CACElB,YAAa,iDACbkB,UAAW,gDACZ,EAEH,CACE,uBACA,CACElB,YAAa,0DACbkB,UAAW,yDACZ,EAEH,CACE,YACA,CACElB,YAAa,+CACbkB,UAAW,8CACZ,EAEH,CACE,qBACA,CACElB,YAAa,wDACbkB,UAAW,uDACZ,EAEH,CACE,oCACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,kBACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,gBACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,uBACA,CACElB,YAAa,0DACbkB,UAAW,yDACZ,EAEH,CACE,iCACA,CACElB,YAAa,oEACbkB,UAAW,mEACZ,EAEH,CACE,cACA,CACElB,YAAa,iDACbkB,UAAW,gDACZ,EAEH,CACE,mBACA,CACElB,YAAa,sDACbkB,UAAW,qDACZ,EAEH,CACE,mBACA,CACElB,YAAa,sDACbkB,UAAW,qDACZ,EAEH,CACE,sBACA,CACElB,YAAa,yDACbkB,UAAW,wDACZ,EAEH,CACE,kBACA,CACElB,YAAa,qDACbkB,UAAW,oDACZ,EAEH,CACE,mCACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,8BACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,qBACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,sBACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,cACA,CACElB,YAAa,iDACbkB,UAAW,gDACZ,EAEH,CACE,qBACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,mBACA,CACElB,YAAa,sDACbkB,UAAW,qDACZ,EAEH,CACE,0BACA,CACElB,YAAa,4DACbkB,UAAW,2DACZ,EAEH,CACE,kBACA,CACElB,YAAa,qDACbkB,UAAW,oDACZ,EAEH,CACE,kCACA,CACElB,YAAa,qEACbkB,UAAW,oEACZ,CACF,CACF,IC5XD,IAAaC,GAQAC,GARbC,GAAAC,EAAA,KAAaH,GAAP,KAAkC,CAGtCI,YAAYC,EAAkB,CAC5B,KAAKA,WAAaA,CACpB,GAGWJ,GAAP,KAAiC,CAGrCG,YAAYE,EAAmB,CAC7B,KAAKA,YAAcA,CACrB,KC2CF,SAASC,GAA0BC,EAAuB,CACxD,OAAOC,GAAwBC,IAAIF,CAAC,GAAKG,EAC3C,CAUM,SAAUC,GAAsBJ,EAA0B,CAC9D,OAAOK,GAAoBH,IAAIF,CAAC,GAAKM,EACvC,CAEM,SAAUC,GAA6BC,EAAiB,CAC5D,MAAO,CACLC,SAAUV,GAA0BS,EAAEC,QAAQ,EAC9CC,YAAaN,GAAsBI,EAAEE,WAAW,EAChDC,GAAIH,EAAEI,OACNC,eAAgBL,EAAEK,eAClBC,YAAaN,EAAEM,YACfC,WAAYP,EAAEO,WACdC,eAAgBR,EAAEQ,eAClBC,QAAST,EAAES,QACXC,KAAMV,EAAEU,KACRC,MAAOX,EAAEW,MACTC,QAASZ,EAAEY,QACXC,QAASb,EAAEa,QACXC,QAASd,EAAEc,QAEf,CAxFA,IAkBYC,GAYAC,EAeNrB,GACAF,GAcAK,GACAD,GA7DNoB,GAAAC,EAAA,KAAAC,IAkBYJ,GAAZ,SAAYA,EAAW,CACrBA,OAAAA,EAAA,QAAA,WACAA,EAAA,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,QAAA,UAJUA,CAKZ,EALYA,IAAW,CAAA,CAAA,EAYXC,EAAZ,SAAYA,EAAe,CACzBA,OAAAA,EAAA,KAAA,mBACAA,EAAA,KAAA,OACAA,EAAA,WAAA,aACAA,EAAA,IAAA,MACAA,EAAA,YAAA,cACAA,EAAA,SAAA,WACAA,EAAA,QAAA,UAPUA,CAQZ,EARYA,GAAe,CAAA,CAAA,EAerBrB,GAAkB,CAAEQ,GAAIa,EAAgBI,QAASC,MAAO,SAAS,EACjE5B,GAA0B,IAAI6B,IAAgD,CAClF,CAACC,GAAqBC,KAAM,CAAErB,GAAIa,EAAgBQ,KAAMH,MAAO,kBAAkB,CAAE,EACnF,CAACE,GAAqBE,KAAM,CAAEtB,GAAIa,EAAgBS,KAAMJ,MAAO,MAAM,CAAE,EACvE,CAACE,GAAqBG,WAAY,CAAEvB,GAAIa,EAAgBU,WAAYL,MAAO,YAAY,CAAE,EACzF,CAACE,GAAqBI,IAAK,CAAExB,GAAIa,EAAgBW,IAAKN,MAAO,KAAK,CAAE,EACpE,CAACE,GAAqBK,YAAa,CAAEzB,GAAIa,EAAgBY,YAAaP,MAAO,aAAa,CAAE,EAC5F,CAACE,GAAqBM,SAAU,CAAE1B,GAAIa,EAAgBa,SAAUR,MAAO,UAAU,CAAE,EACnF,CAACE,GAAqBH,QAASzB,EAAe,CAAC,CAChD,EAMKG,GAAqB,CAAEK,GAAIY,GAAYK,QAASC,MAAO,SAAS,EAChExB,GAAsB,IAAIyB,IAA+C,CAC7E,CAACQ,GAAwBC,mBAAoB,CAAE5B,GAAIY,GAAYiB,MAAOX,MAAO,OAAO,CAAE,EACtF,CAACS,GAAwBG,oBAAqB,CAAE9B,GAAIY,GAAYmB,OAAQb,MAAO,QAAQ,CAAE,EACzF,CAACS,GAAwBK,qBAAsB,CAAEhC,GAAIY,GAAYqB,QAASf,MAAO,UAAU,CAAE,EAC7F,CAACS,GAAwBO,qBAAsBvC,EAAkB,CAAC,CACnE,IClED,IAAAwC,GAAAC,EAAA,KACAD,OCuFM,SAAUE,GAAmBC,EAAmC,CAKpE,MAJ2B,CACzBC,EAAoBC,UACpBD,EAAoBE,iBAAiB,EAEbC,SAASJ,CAAM,CAC3C,CAEM,SAAUK,GAA0BC,EAAkB,CAC1D,OAAQA,EAAC,CACP,KAAKC,GAAgBC,2BACnB,OAAOC,GAAmBC,MAC5B,KAAKH,GAAgBI,+BACnB,OAAOF,GAAmBG,UAC5B,KAAKL,GAAgBM,gCACnB,OAAOJ,GAAmBK,WAC5B,KAAKP,GAAgBQ,2CACnB,OAAON,GAAmBO,oBAC5B,QACE,MACJ,CACF,CAEM,SAAUC,GAAwBX,EAAqB,CAC3D,OAAQA,EAAC,CACP,KAAKG,GAAmBG,UACtB,OAAOL,GAAgBI,+BACzB,KAAKF,GAAmBK,WACtB,OAAOP,GAAgBM,gCACzB,KAAKJ,GAAmBO,oBACtB,OAAOT,GAAgBQ,2CACzB,QACE,OAAOR,GAAgBC,0BAC3B,CACF,CAEM,SAAUU,GAAiCZ,EAAmB,CAClE,OAAQA,EAAC,CACP,KAAKa,GAAiBC,mCACpB,OAAOC,GAA0BX,MACnC,KAAKS,GAAiBG,iDACpB,OAAOD,GAA0BE,iBACnC,KAAKJ,GAAiBK,sDACpB,OAAOH,GAA0BI,sBACnC,KAAKN,GAAiBO,qCACpB,OAAOL,GAA0BM,QACnC,QACE,MACJ,CACF,CAEM,SAAUC,GAA0BtB,EAAkB,CAC1D,OAAQA,EAAC,CACP,KAAKuB,GAAgBC,2BACnB,OAAOC,GAAmBrB,MAC5B,KAAKmB,GAAgBG,6BACnB,OAAOD,GAAmBE,QAC5B,KAAKJ,GAAgBK,+BACnB,OAAOH,GAAmB7B,UAC5B,KAAK2B,GAAgBM,4BACnB,OAAOJ,GAAmBK,OAC5B,KAAKP,GAAgBQ,qCACnB,OAAON,GAAmBO,eAC5B,KAAKT,GAAgBU,8BACnB,OAAOR,GAAmBS,SAC5B,QACE,MACJ,CACF,CAuFM,SAAUC,GAAqBC,EAAsB,CACzD,IAAMC,EAAUC,GAAeF,EAAKC,OAAO,EACrCE,EAAgBC,GAAeC,IAAIL,EAAKM,WAAW,EAEzD,MAAO,CACLC,GAAIP,EAAKO,IAAM,GACfC,WAAYR,EAAKQ,YAAc,GAC/BC,QAAST,EAAKS,SAAW,KACzBC,aAAcV,EAAKU,cAAgB,GACnCC,OAAQX,EAAKW,QAAU,EACvBC,YAAaZ,EAAKY,aAAe,GACjCC,cAAeb,EAAKa,cACpBC,YAAad,EAAKc,aAAe,GACjCC,WAAYf,EAAKe,YAAc,GAC/BzD,OAAQ0D,GAA2BhB,EAAK1C,OAAQ0C,EAAKiB,SAAUhB,CAAO,EACtEK,YAAaN,EAAKM,YAClBY,eAAgBlB,EAAKkB,eACrBC,eAAgBnB,EAAKmB,eACrBF,SAAUjB,EAAKiB,SACfhB,QAASA,EACTmB,QAASC,GAAqBrB,EAAKoB,OAAO,EAC1CE,YAAatB,EAAKsB,YAAcC,GAAmBvB,EAAKsB,WAAW,EAAIE,OACvEC,yBAA0BC,GAAyB1B,EAAKyB,wBAAwB,EAChFE,WAAY3B,EAAK4B,gBAAkBC,GAAkB7B,EAAK4B,eAAe,EAAIJ,OAC7EM,YAAa9B,EAAK+B,iBAAmBC,GAAmBhC,EAAK+B,gBAAgB,EAAIP,OACjFS,sBAAuBjC,EAAKiC,uBAAyB,EACrDC,uBAAwBlC,EAAKkC,uBACzBC,GAA8BnC,EAAKkC,sBAAsB,EACzDV,OACJY,yBAA0BjC,GAAeW,YACzCuB,uBAAwBlC,GAAemC,UAE3C,CAEM,SAAUjB,GAAqBD,EAA0B,CAC7D,OAAQA,GAAW,CAAA,GAAImB,IAAKC,GAA4BC,GAAoBD,CAAM,CAAC,CACrF,CAEM,SAAUC,GAAoBD,EAAuB,CACzD,MAAO,CACLjC,GAAIiC,EAAOjC,IAAM,GACjBI,OAAQ6B,EAAO7B,QAAU,EACzB+B,SAAUF,EAAO9B,cAAgB,GACjCiC,aAAchF,GAA0B6E,EAAOG,YAAY,EAC3DrF,OAAQ4B,GAA0BsD,EAAOlF,MAAM,EAC/CsF,cAAepE,GAAiCgE,EAAOI,aAAa,EACpEnC,QAAS+B,EAAO/B,QAAU,IAAIoC,KAAKL,EAAO/B,OAAO,EAAIe,OACrDsB,QAASN,EAAOM,QAAU/C,GAAqByC,EAAOM,OAAO,EAAItB,OAErE,CAEM,SAAUuB,GAAoBC,EAAuB,CACzD,MAAO,CACLzC,GAAIyC,EAAOzC,GACX0C,YAAaD,EAAOC,YACpBtC,OAAQqC,EAAOrC,OACfD,aAAcsC,EAAOtC,aACrBpD,OAAQ4F,GAA0BF,EAAO1F,MAAM,EAC/C6F,KAAMC,GAAwBJ,EAAOG,IAAI,EACzCE,eAAgBL,EAAOK,eACvBC,SAAUN,EAAOM,SACjBC,OAAQP,EAAOO,OACfjD,YAAa0C,EAAO1C,YACpBY,eAAgB8B,EAAO9B,eAE3B,CAEM,SAAUgC,GAA0B5F,EAA6B,CACrE,OAAQA,EAAM,CACZ,KAAKkG,GAAsBC,mBACzB,OAAOC,GAAmBC,KAC5B,KAAKH,GAAsBI,sBACzB,OAAOF,GAAmBnE,QAC5B,KAAKiE,GAAsBK,yBACzB,OAAOH,GAAmBI,UAC5B,KAAKN,GAAsBO,uBACzB,OAAOL,GAAmB5D,SAC5B,KAAK0D,GAAsBQ,qBACzB,OAAON,GAAmBhE,OAC5B,QACE,OAAOgE,GAAmB1F,KAC9B,CACF,CAEM,SAAUoF,GAAwBa,EAAsB,CAC5D,OAAQA,EAAC,CACP,KAAKC,GAAoBC,yBACvB,OAAOC,GAAiBC,YAC1B,KAAKH,GAAoBI,iBACvB,OAAOF,GAAiBG,KAC1B,QACE,OAAOH,GAAiBpG,KAC5B,CACF,CAEM,SAAU0D,GAAyBuC,EAA2C,CAClF,OAAQA,EAAC,CACP,KAAKO,GAAyCC,iCAC5C,OAAOC,GAAwBH,KACjC,KAAKC,GAAyCG,sCAC5C,OAAOD,GAAwBE,SACjC,KAAKJ,GAAyCK,uCAC5C,OAAOH,GAAwBI,UACjC,QACE,OAAOJ,GAAwB1G,KACnC,CACF,CAEM,SAAU+G,GAAkBC,EAAyB,CACzD,MAAO,CACLrE,OAAQqE,EAAWrE,OACnB+B,SAAUsC,EAAWtC,SACrB5B,YAAakE,EAAWlE,YACxBb,QAASC,GAAe8E,EAAW/E,OAAO,EAC1CgF,IAAKD,EAAWC,IAChB1E,GAAIyE,EAAWzE,GACf2E,IAAKF,EAAWE,IAChB1C,OAAQwC,EAAWxC,OAASC,GAAoBuC,EAAWxC,MAAM,EAAIhB,OACrEf,QAASuE,EAAWvE,QAExB,CAEM,SAAU0E,GAAyBC,EAAiC,CACxE,MAAO,CACLtC,QAASsC,EAAYtC,QAAU/C,GAAqBqF,EAAYtC,OAAO,EAAItB,OAC3EgB,OAAQ4C,EAAY5C,OAASC,GAAoB2C,EAAY5C,MAAM,EAAIhB,OACvE6D,cAAeD,EAAYC,cAAgBtC,GAAoBqC,EAAYC,aAAa,EAAI7D,OAC5FwD,WAAYI,EAAYJ,WAAaD,GAAkBK,EAAYJ,UAAU,EAAIxD,OAErF,CAEA,SAASD,GAAmBD,EAAwC,CAClE,MAAO,CACL+B,eAAgB/B,EAAY+B,eAC5BiC,SAAUC,GAAgBjE,EAAYgE,QAAQ,EAElD,CAEA,SAASzD,GAAkBF,EAAmC,CAC5D,MAAO,CACL0B,eAAgB1B,EAAW0B,eAE/B,CAEA,SAASrB,GAAmBF,EAAoC,CAC9D,MAAO,CACLuB,eAAgBvB,EAAYuB,eAEhC,CAEA,SAASkC,GAAgBD,EAAkB,CACzC,OAAQA,EAAQ,CACd,KAAKE,GAASC,eACZ,OAAOC,EAAgBC,KACzB,KAAKH,GAASI,qBACZ,OAAOF,EAAgBG,WACzB,KAAKL,GAASM,eACZ,OAAOJ,EAAgBK,KACzB,KAAKP,GAASQ,mBACZ,OAAON,EAAgBO,SACzB,KAAKT,GAASU,cACZ,OAAOR,EAAgBS,IACzB,KAAKX,GAASY,sBACZ,OAAOV,EAAgBW,YACzB,QACE,OAAOX,EAAgBY,OAC3B,CACF,CAEM,SAAUtF,GACd1D,EACA2D,EACAhB,EAA4B,CAE5B,GAAIgB,EACF,OAAOhB,GAAS3C,QAAUC,EAAoBgJ,SAEhD,OAAQjJ,EAAM,CACZ,KAAKkJ,GAAiBC,yBACpB,OAAOlJ,EAAoBC,UAC7B,KAAKgJ,GAAiBE,sBACpB,OAAOnJ,EAAoBmC,OAC7B,KAAK8G,GAAiBG,wBACpB,OAAOpJ,EAAoBqJ,SAC7B,KAAKJ,GAAiBK,kCACpB,OAAOtJ,EAAoBE,kBAC7B,KAAK+I,GAAiBM,uBACpB,OAAOvJ,EAAoBgC,QAC7B,QACE,MACJ,CACF,CAlbA,IAyBYhC,EAUAQ,GAOAY,GAOAU,GASAqE,GASAU,GAMAM,GAzEZqC,GAAAC,EAAA,KAAAC,IAkBAC,KACAC,KACAC,KACAC,KAIY9J,EAAZ,SAAYA,EAAmB,CAC7BA,OAAAA,EAAA,OAAA,SACAA,EAAA,UAAA,YACAA,EAAA,SAAA,WACAA,EAAA,kBAAA,qBACAA,EAAA,SAAA,WACAA,EAAA,QAAA,UACAA,EAAA,MAAA,QAPUA,CAQZ,EARYA,GAAmB,CAAA,CAAA,EAUnBQ,GAAZ,SAAYA,EAAkB,CAC5BA,OAAAA,EAAA,MAAA,QACAA,EAAA,UAAA,YACAA,EAAA,WAAA,aACAA,EAAA,oBAAA,wBAJUA,CAKZ,EALYA,IAAkB,CAAA,CAAA,EAOlBY,GAAZ,SAAYA,EAAyB,CACnCA,OAAAA,EAAA,MAAA,QACAA,EAAA,iBAAA,sBACAA,EAAA,sBAAA,2BACAA,EAAA,QAAA,UAJUA,CAKZ,EALYA,IAAyB,CAAA,CAAA,EAOzBU,GAAZ,SAAYA,EAAkB,CAC5BA,OAAAA,EAAA,MAAA,QACAA,EAAA,QAAA,UACAA,EAAA,UAAA,YACAA,EAAA,OAAA,SACAA,EAAA,eAAA,kBACAA,EAAA,SAAA,WANUA,CAOZ,EAPYA,IAAkB,CAAA,CAAA,EASlBqE,GAAZ,SAAYA,EAAkB,CAC5BA,OAAAA,EAAA,MAAA,QACAA,EAAA,KAAA,OACAA,EAAA,QAAA,UACAA,EAAA,UAAA,aACAA,EAAA,SAAA,WACAA,EAAA,OAAA,SANUA,CAOZ,EAPYA,IAAkB,CAAA,CAAA,EASlBU,GAAZ,SAAYA,EAAgB,CAC1BA,OAAAA,EAAA,MAAA,QACAA,EAAA,YAAA,eACAA,EAAA,KAAA,OAHUA,CAIZ,EAJYA,IAAgB,CAAA,CAAA,EAMhBM,GAAZ,SAAYA,EAAuB,CACjCA,OAAAA,EAAA,MAAA,QACAA,EAAA,SAAA,YACAA,EAAA,KAAA,OACAA,EAAA,UAAA,aAJUA,CAKZ,EALYA,IAAuB,CAAA,CAAA,ICjCnC,SAAS4C,GAAyBC,EAAiD,CACjF,MAAO,CACLC,YAAaD,EAAEC,aAAe,GAC9BC,KAAMF,EAAEE,MAAQ,GAChBC,OAAQH,EAAEG,QAAU,GAExB,CAEA,SAASC,GACPC,EAA+E,CAE/E,OAAKA,EAGE,CACLC,IAAKD,EAAaC,KAAO,CAAA,EACzBC,QAASF,EAAaG,OAAS,CAAA,GAAIC,IAAKT,GAAMD,GAAyBC,CAAC,CAAC,EACzEU,cAAeL,EAAaK,eAAiB,CAAA,EAC7CC,gBAAiB,IAAIC,KAAKP,EAAaM,iBAAmB,CAAC,GANpD,CAAEL,IAAK,CAAA,EAAIC,OAAQ,CAAA,EAAIG,cAAe,CAAA,CAAE,CAQnD,CAEM,SAAUG,GAAsBC,EAAoC,CACxE,MAAO,CACLC,gBAAiBD,EAAMC,iBAAmB,GAC1CC,iBAAkBF,EAAME,kBAAoB,GAC5CC,eAAgBH,EAAMG,eACtBZ,aAAcD,GAAoBU,EAAMT,YAAY,EACpDa,mBAAoBd,GAAoBU,EAAMI,kBAAkB,EAEpE,CAhEA,IAAAC,GAAAC,EAAA,QCoBA,SAASC,GACPC,EACAC,EAAiB,CAEjB,OAAQD,EAAE,CACR,KAAKE,GAA+BC,sCAClC,OAAIF,EACKG,GAAyBC,eAEzBD,GAAyBE,QAEpC,KAAKJ,GAA+BK,0CAClC,OAAIN,EACKG,GAAyBI,mBAEzBJ,GAAyBK,YAEpC,QACE,OAAOL,GAAyBM,KACpC,CACF,CA7CA,IAcYN,GAiCCO,GA/CbC,GAAAC,EAAA,KAAAC,KAcYV,GAAZ,SAAYA,EAAwB,CAClCA,OAAAA,EAAAA,EAAA,MAAA,CAAA,EAAA,QACAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,YAAA,CAAA,EAAA,cACAA,EAAAA,EAAA,eAAA,CAAA,EAAA,iBACAA,EAAAA,EAAA,mBAAA,CAAA,EAAA,qBACAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,eAAA,CAAA,EAAA,iBACAA,EAAAA,EAAA,eAAA,CAAA,EAAA,iBARUA,CASZ,EATYA,IAAwB,CAAA,CAAA,EAiCvBO,GAAP,KAAkB,CA0BtB,OAAOI,kBAAkBC,EAAsBhB,EAAiB,CAC9D,OAAKA,EACE,CACLiB,GAAIjB,EAAGiB,GACPD,aAAcA,EACdE,WAAYlB,EAAGkB,WACfC,QAASnB,EAAGmB,QACZC,aAAcpB,EAAGoB,aACjBC,OAAQrB,EAAGqB,OACXC,YAAatB,EAAGsB,YAChBC,cAAexB,GAAkCC,EAAGuB,cAAe,EAAK,EACxEC,YAAaxB,EAAGwB,YAChBC,WAAYzB,EAAGyB,WACfC,OAAQ1B,EAAG0B,QAAUC,EAAoBC,MACzCC,YAAa7B,EAAG6B,YAChBC,eAAgB9B,EAAG8B,eACnBC,eAAgB/B,EAAG+B,eACnBC,sBAAuBhC,EAAGgC,uBAAyB,EACnDC,QAASjC,EAAGiC,QACZC,QAASlC,EAAGkC,QACZC,UAAWnC,EAAGiB,GACdmB,yBAA0BpC,EAAGoC,yBAC7BC,YAAarC,EAAGqC,YAChBC,WAAYtC,EAAGsC,WACfC,YAAavC,EAAGuC,YAChBC,yBAA0BxC,EAAGwC,yBAC7BC,uBAAwBzC,EAAGyC,wBAzBb,IA2BlB,CAEA,OAAOC,iBAAiB1B,EAAsB2B,EAAgB,CAC5D,OAAKA,EACE,CACL1B,GAAI0B,EAAG1B,GACPD,aAAcA,EACdE,WAAYyB,EAAGC,SAAS1B,WACxBC,QAASwB,EAAGxB,QACZC,aAAcuB,EAAGE,SACjBxB,OAAQ,CAACsB,EAAGtB,OACZC,YAAaqB,EAAGC,SAAStB,YACzBC,cAAexB,GAAkC4C,EAAGC,SAASrB,cAAe,EAAI,EAChFC,YAAamB,EAAGC,SAASpB,YACzBC,WAAYkB,EAAGC,SAASnB,WACxBC,OAAQiB,EAAGC,SAASlB,OACpBI,eAAgBa,EAAGG,cACnBjB,YAAa,GACbE,eAAgB,EAChBC,sBAAuB,EACvBG,UAAWQ,EAAGC,SAAS3B,GACvBoB,YAAaM,EAAGC,SAASP,YACzBD,yBAA0BO,EAAGC,SAASR,yBACtCE,WAAYK,EAAGC,SAASN,WACxBC,YAAaI,EAAGC,SAASL,aArBX,IAuBlB,CAEA,OAAOQ,iBAAiB/C,EAAkBgD,EAAkB,CAC1D,OAAKhD,EACE,CACLiB,GAAIjB,EAAGiB,GACPD,aAAc,GACdE,WAAY,GACZC,QAASnB,EAAGiD,YACZ7B,aAAcpB,EAAGoB,aACjBC,OAAQrB,EAAGqB,OACXC,YAAatB,EAAGiB,GAChBM,cAAenB,GAAyB8C,eACxC1B,YAAawB,EAASG,UAAUnD,EAAGiD,WAAW,GAAK,GACnDxB,WAAY,GACZC,OAAQC,EAAoByB,OAC5BvB,YAAa7B,EAAG6B,YAChBC,eAAgB9B,EAAG8B,eACnBC,eAAgB,EAChBC,sBAAuB,EACvBI,yBAA0BiB,GAAwBzB,OAjBpC,IAmBlB,CAEA,OAAO0B,eAAeC,EAAa,CACjC,GAAI,CAACA,EAAG,OAAO,KACf,IAAI7B,EAASC,EAAoByB,OACjC,OAAIG,EAAEC,SACJ9B,EAASC,EAAoB8B,UAE3BF,EAAEtB,UACJP,EAASC,EAAoB+B,UAExB,CACLrC,OAAQkC,EAAElC,OACVU,eAAgBwB,EAAEI,IAClB3B,sBAAuB,EACvBI,yBAA0BiB,GAAwBzB,MAClDT,QAASoC,EAAEpC,QACXC,aAAcmC,EAAEV,SAChBpB,WAAY,GACZT,aAAc,GACdQ,YAAa+B,EAAE/B,YACfS,QAASsB,EAAEtB,QACXJ,YAAa,GACbC,eAAgB,GAChBb,GAAIsC,EAAEtB,QAAUsB,EAAEtB,QAAQE,UAAYoB,EAAEtC,GACxCC,WAAY,GACZI,YAAa,GACbC,cAAegC,EAAEtB,QACb7B,GAAyBwD,QACzBL,EAAEC,OACApD,GAAyByD,eACzBzD,GAAyBM,MAC/BgB,OAAQA,EACRS,UAAWoB,EAAEtB,QAAUsB,EAAEtB,QAAQE,UAAYoB,EAAEC,OAASD,EAAEC,OAAOZ,SAAS3B,GAAK,GAEnF,KCzLF,IAAA6C,GAAAC,EAAA,KAAAC,KACAF,KAEAG,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCXA,IAMMC,GAEAC,GAGOC,GAXbC,GAAAC,EAAA,KACAC,KAEAC,mBAGMN,GAAkB,mCAElBC,GAAkB,mCAGXC,IAAa,IAAA,CAApB,MAAOA,CAAa,CAGxBK,YAAoBC,EAAgDC,EAA8B,CAA9E,KAAAD,mBAAAA,EAAgD,KAAAC,eAAAA,EAClE,KAAKC,iBACH,KAAKF,mBAAmBG,eAAc,IAAOC,GAAYC,KAAOb,GAAkBC,EACtF,CAGOa,qBAAmB,CACxB,OAAO,KAAKJ,gBACd,CAGOK,uBAAuBC,EAAkB,CAC9C,OAAO,KAAKP,eAAeQ,8BAA8B,IAAIC,GAA4BF,CAAU,CAAC,CACtG,CAIOG,sBAAsBC,EAAmB,CAC9C,OAAO,KAAKX,eAAeQ,8BAA8B,IAAII,GAA2BD,CAAW,CAAC,CACtG,iDAtBWlB,GAAaoB,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,iCAAbtB,EAAauB,QAAbvB,EAAawB,UAAAC,WADA,MAAM,CAAA,CAAA,SACnBzB,CAAa,GAAA,ICV1B,IAAA0B,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCwrFA,SAASC,GAAyBC,EAAW,CAC3C,OAAO,IAAIC,GAAe,CACxB,QAAS,IAAIC,GAAsB,CACjC,UAAWF,CACb,CAAC,CACH,CAAC,CACH,CACA,SAASG,GAAyBC,EAAW,CAC3C,OAAO,IAAIH,GAAe,CACxB,QAAS,IAAII,GAAsB,CACjC,UAAWD,CACb,CAAC,CACH,CAAC,CACH,CAtsFA,IA0DMF,GAoBAI,GAiBAC,GAoBAC,GAiBAH,GAoBAJ,GAyCAQ,GAgNAC,GAiTAC,GA6GAC,GAwCAC,GAkDAC,GAoBAC,GAkDAC,GA+DAC,GA6BAC,GA+DAC,GA4CAC,GAoBAC,GAoBAC,GA0GAC,GA0BAC,GAmLAC,GA0BAC,GAoFAC,GAqJAC,GA+KAC,GAwGAC,GA0DAC,GA4DAC,GACAC,GAOFC,GAwEAC,GAiEAC,GAyIAC,GAwKEC,GACFC,GAxkFJC,GAAAC,EAAA,KAAAC,IACAA,IACAC,KACAC,IAuDM1C,GAAN,MAAM2C,CAAsB,CAC1B,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM3C,GAAN,MAAM4C,CAAkB,CACtB,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACMzC,GAAN,MAAM4C,CAAoB,CACxB,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMzC,GAAN,MAAM4C,CAAgB,CACpB,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACM3C,GAAN,MAAMgD,CAAsB,CAC1B,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMhD,GAAN,MAAMqD,CAAe,CACnB,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU7C,GAAsB,UAAU4C,EAAM,OAAO,GAEvDA,EAAM,UACRC,EAAE,QAAU1C,GAAsB,UAAUyC,EAAM,OAAO,GAEvDA,EAAM,aACRC,EAAE,WAAatC,GAAyB,UAAUqC,EAAM,UAAU,GAEhEA,EAAM,QACRC,EAAE,MAAQxC,GAAoB,UAAUuC,EAAM,KAAK,GAE9CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMxC,GAAN,MAAM8C,CAAyB,CAC7B,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EAgMMtC,GAAN,MAAM8C,CAAM,CACV,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EA4QMtC,GAAN,MAAM8C,CAAmB,CACvB,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EAoFMrC,GAAN,MAAM8C,CAAmB,CACvB,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAqBMpC,GAAN,MAAM8C,CAAmB,CACvB,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9C,GAAe,UAAU6C,EAAM,OAAO,GAEhDA,EAAM,oBACRC,EAAE,kBAAoBzC,GAAkB,UAAUwC,EAAM,iBAAiB,GAEvEA,EAAM,kBACRC,EAAE,gBAAkBvC,GAAgB,UAAUsC,EAAM,eAAe,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,0BAA8B,MAC5CA,EAAS,0BAA+B,KAAK,2BAE3C,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,2BAA+B,MAC7CA,EAAS,2BAAgC,KAAK,4BAE5C,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACMnC,GAAN,MAAM8C,CAAoB,CACxB,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMlC,GAAN,MAAM8C,CAA2B,CAC/B,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9C,GAAe,UAAU6C,EAAM,OAAO,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,0BAA8B,MAC5CA,EAAS,0BAA+B,KAAK,2BAE3C,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACMjC,GAAN,MAAM8C,CAA4B,CAChC,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EA4CMhC,GAAN,MAAM8C,CAAoB,CACxB,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9C,GAAe,UAAU6C,EAAM,OAAO,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EACM/B,GAAN,MAAM8C,CAAqB,CACzB,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EA4CM9B,GAAN,MAAM8C,CAAwB,CAC5B,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9C,GAAe,UAAU6C,EAAM,OAAO,GAEhDA,EAAM,oBACRC,EAAE,kBAAoBzC,GAAkB,UAAUwC,EAAM,iBAAiB,GAEvEA,EAAM,kBACRC,EAAE,gBAAkBvC,GAAgB,UAAUsC,EAAM,eAAe,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,2BAA+B,MAC7CA,EAAS,2BAAgC,KAAK,4BAE5C,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACM7B,GAAN,MAAM8C,CAAyB,CAC7B,OAAO,UAAUpB,EAAO,CACtB,IAAIC,EAAI,IAAImB,EACZ,OAAAnB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM5B,GAAN,MAAM8C,CAAqB,CACzB,OAAO,UAAUrB,EAAO,CACtB,IAAIC,EAAI,IAAIoB,EACZ,OAAApB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM3B,GAAN,MAAM8C,CAAsB,CAC1B,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIjB,GAAoC,SAAS,GAEpEkB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EAoFM1B,GAAN,MAAM8C,CAA6B,CACjC,OAAO,UAAUvB,EAAO,CACtB,IAAIC,EAAI,IAAIsB,EACZ,OAAAtB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9C,GAAe,UAAU6C,EAAM,OAAO,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMzB,GAAN,MAAM8C,CAA8B,CAClC,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EAgKMxB,GAAN,MAAM8C,CAAkB,CACtB,OAAO,UAAUzB,EAAO,CACtB,IAAIC,EAAI,IAAIwB,EACZ,OAAAxB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMvB,GAAN,MAAM8C,CAAmB,CACvB,OAAO,UAAU1B,EAAO,CACtB,IAAIC,EAAI,IAAIyB,EACZ,OAAAzB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIpC,GAAM,SAAS,GAEtCqC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAwDMtB,GAAN,MAAM8C,CAAc,CAClB,OAAO,UAAU3B,EAAO,CACtB,IAAIC,EAAI,IAAI0B,EACZ,OAAA1B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EA+HMrB,GAAN,MAAM8C,CAA2B,CAC/B,OAAO,UAAU5B,EAAO,CACtB,IAAIC,EAAI,IAAI2B,EACZ,OAAA3B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EAyJMpB,GAAN,MAAM8C,CAAoC,CACxC,OAAO,UAAU7B,EAAO,CACtB,IAAIC,EAAI,IAAI4B,EACZ,OAAA5B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQrC,GAAM,UAAUoC,EAAM,KAAK,GAEhCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EAkFMnB,GAAN,MAAM8C,CAAmB,CACvB,OAAO,UAAU9B,EAAO,CACtB,IAAIC,EAAI,IAAI6B,EACZ,OAAA7B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIlB,GAA2B,SAAS,GAEjEmB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EAiCMlB,GAAN,MAAM8C,CAA6B,CACjC,OAAO,UAAU/B,EAAO,CACtB,IAAIC,EAAI,IAAI8B,EACZ,OAAA9B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAmCMjB,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,GACT,KAAQ,GACR,KAAQ,6BACR,KAAQ,6BACR,WAAc,4BAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6B4C,EAAmB,CACjE,OAAO,IAAKA,GAAqB5C,EACnC,EACAA,EAAY,WAA0B6C,EAAmB,CACvD,MAAO7C,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAsDCC,IAAuC,IAAM,CAC/C,MAAMA,CAAuB,CAC3B,aAAc,CACZ,KAAK,YAAc6C,EAAO9C,EAAW,EACrC,KAAK,KAAO8C,EAAOC,CAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,YAAYC,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxE,GAAmBwE,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACvF,KAAK,WAAW,GADuE,CAE1F,QAAS,UACX,EAAC,CACH,CACA,YAAYH,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrD,GAAmBqD,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACvF,KAAK,WAAW,GADuE,CAE1F,QAAS,UACX,EAAC,CACH,CACA,cAAcH,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9D,GAAqB8D,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQlE,GAAsB,UAAUkE,CAAI,CAAC,CAAC,CAC1K,CACA,WAAWL,EAAG,CACZ,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1D,GAAkB0D,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ9D,GAAmB,UAAU8D,CAAI,CAAC,CAAC,CACpK,CACA,YAAYL,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvE,GAAmBuE,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACvF,KAAK,WAAW,GADuE,CAE1F,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAnD,EAAuB,UAAO,SAAwC2C,EAAmB,CACvF,OAAO,IAAKA,GAAqB3C,EACnC,EACAA,EAAuB,WAA0B4C,EAAmB,CAClE,MAAO5C,EACP,QAASA,EAAuB,UAChC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAA2C,IAAM,CACnD,MAAMA,CAA2B,CAC/B,aAAc,CACZ,KAAK,YAAc4C,EAAO9C,EAAW,EACrC,KAAK,KAAO8C,EAAOC,CAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,YAAYC,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItE,GAAmBsE,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uCAAwCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1E,GAAoB,UAAU0E,CAAI,CAAC,CAAC,CAC1K,CACA,iBAAiBL,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhE,GAAwBgE,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQpE,GAAyB,UAAUoE,CAAI,CAAC,CAAC,CACpL,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpE,GAA2BoE,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQxE,GAA4B,UAAUwE,CAAI,CAAC,CAAC,CAC1L,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxD,GAAcwD,CAAC,EACrD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACtF,KAAK,WAAW,GADsE,CAEzF,QAAS,UACX,EAAC,CACH,CACA,sBAAsBH,EAAG,CAEvB,IAAMC,EAAU,OADED,EAAE,UACiB,IAAcA,EAAI,IAAIpD,GAA6BoD,CAAC,EACnFM,EAAS,IAAI,gBACbC,EAAUN,EAAQ,UAAU,EAClC,QAAWO,KAAOD,EAAS,CACzB,GAAI,CAACA,EAAQ,eAAeC,CAAG,EAC7B,SAEF,IAAMC,EAAQF,EAAQC,CAAG,EACrBC,IAAU,MAGdH,EAAO,OAAOE,EAAKC,CAAK,CAC1B,CACA,OAAO,SAAS,KAAO,GAAG,KAAK,KAAK,qBAAqBH,EAAO,SAAS,CAAC,EAC5E,CACF,CACA,OAAArD,EAA2B,UAAO,SAA4C0C,EAAmB,CAC/F,OAAO,IAAKA,GAAqB1C,EACnC,EACAA,EAA2B,WAA0B2C,EAAmB,CACtE,MAAO3C,EACP,QAASA,EAA2B,UACpC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EA4ECC,IAA0C,IAAM,CAClD,MAAMA,CAA0B,CAC9B,aAAc,CACZ,KAAK,YAAc2C,EAAO9C,EAAW,EACrC,KAAK,KAAO8C,EAAOC,CAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,sBAAsBC,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5D,GAA6B4D,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQhE,GAA8B,UAAUgE,CAAI,CAAC,CAAC,CAC7L,CACA,aAAaL,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlE,GAAoBkE,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uCAAwCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQtE,GAAqB,UAAUsE,CAAI,CAAC,CAAC,CAC3K,CACF,CACA,OAAAnD,EAA0B,UAAO,SAA2CyC,EAAmB,CAC7F,OAAO,IAAKA,GAAqBzC,EACnC,EACAA,EAA0B,WAA0B0C,EAAmB,CACrE,MAAO1C,EACP,QAASA,EAA0B,UACnC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAuIGC,GAAqB,mBACvBC,IAA2B,IAAM,CACnC,MAAMA,CAAW,CACf,YAAYsD,EAA4BC,EAAwBC,EAA2BC,EAAa,CACtG,KAAK,2BAA6BH,EAClC,KAAK,uBAAyBC,EAC9B,KAAK,0BAA4BC,EACjC,KAAK,YAAcC,CACrB,CACA,YAAYC,EAAmBC,EAASC,EAAU,CAAC,EAAG,CACpD,IAAMf,EAAU,IAAIvE,GAAmB,CACrC,kBAAmBoF,EACnB,QAASC,EACT,0BAA2BC,EAAQ,0BACnC,KAAMA,EAAQ,IAChB,CAAC,EACD,OAAQA,EAAQ,cAAe,CAC7B,IAAK,OACHf,EAAQ,gBAAkB,IAAI5E,GAC9B,MACF,IAAK,OACH4E,EAAQ,kBAAoB,IAAI9E,GAChC,MAEF,KAAK,OACH,MACF,KAAK,KACH,MACF,QACE8E,EAAQ,2BAA6Be,EAAQ,cAC7C,KACJ,CACA,OAAO,KAAK,2BAA2B,YAAYf,CAAO,EAAE,KAAKG,EAAIC,GAAQA,EAAK,QAAQ,EAAGY,GAAM,CAAC,CACtG,CACA,iBAAiBC,EAAoBH,EAASC,EAAU,CAAC,EAAG,CAC1D,IAAMf,EAAU,IAAIjE,GAAwB,CAC1C,mBAAoBkF,EACpB,QAASH,CACX,CAAC,EACD,OAAQC,EAAQ,cAAe,CAC7B,IAAK,OACHf,EAAQ,gBAAkB,IAAI5E,GAC9B,MACF,IAAK,OACH4E,EAAQ,kBAAoB,IAAI9E,GAChC,MAEF,KAAK,OACH,MACF,KAAK,KACH,MACF,QACE8E,EAAQ,2BAA6Be,EAAQ,cAC7C,KACJ,CACA,OAAO,KAAK,2BAA2B,iBAAiBf,CAAO,EAAE,KAAKG,EAAIC,GAAQA,EAAK,WAAa,CAAC,CAAC,EAAGY,GAAM,CAAC,CAClH,CACA,cAAcE,EAAU,CACtB,IAAMlB,EAAU,IAAI/D,GAAqB,CACvC,SAAUiF,CACZ,CAAC,EACD,OAAO,KAAK,uBAAuB,cAAclB,CAAO,EAAE,KAAKG,EAAIC,GAAQA,EAAK,MAAM,CAAC,CACzF,CACA,sBAAsBS,EAAmBC,EAAS,CAChD,IAAMd,EAAU,IAAI7D,GAA6B,CAC/C,kBAAmB0E,EACnB,QAASC,CACX,CAAC,EACD,OAAO,KAAK,0BAA0B,sBAAsBd,CAAO,CACrE,CACA,sBAAsBmB,EAAQC,EAAKC,EAAS,CAC1C,IAAMrB,EAAU,IAAIrD,GAA6B,CAC/C,OAAQwE,EACR,IAAKC,EACL,QAASC,CACX,CAAC,EACD,KAAK,2BAA2B,sBAAsBrB,CAAO,CAC/D,CACA,+BAA+BsB,EAAmBC,EAAWC,EAAU,CACrE,IAAMC,EAAO,KAAK,YAAY,eACxBC,EAAQ,IAAI,gBAAgB,CAChC,kBAAmBJ,EACnB,WAAYC,CACd,CAAC,EACD,OAAIC,GACFE,EAAM,IAAI,OAAQF,CAAQ,EAErBC,EAAOvE,GAAqB,IAAMwE,EAAM,SAAS,CAC1D,CACA,iCAAiCJ,EAAmBK,EAAWH,EAAU,CACvE,IAAMC,EAAO,KAAK,YAAY,eACxBC,EAAQ,IAAI,gBAAgB,CAChC,kBAAmBJ,EACnB,WAAYK,CACd,CAAC,EACD,OAAIH,GACFE,EAAM,IAAI,OAAQF,CAAQ,EAErBC,EAAOvE,GAAqB,IAAMwE,EAAM,SAAS,CAC1D,CACF,CACA,OAAAvE,EAAW,UAAO,SAA4BuC,EAAmB,CAC/D,OAAO,IAAKA,GAAqBvC,GAAeyE,EAAS5E,EAA0B,EAAM4E,EAAS7E,EAAsB,EAAM6E,EAAS3E,EAAyB,EAAM2E,EAAS9E,EAAW,CAAC,CAC7L,EACAK,EAAW,WAA0BwC,EAAmB,CACtD,MAAOxC,EACP,QAASA,EAAW,UACpB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,IChoFH,SAAS0E,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAgDA,SAASC,GAAoBF,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA/GA,IAYIE,GAkBAC,GAKAC,GAwBEC,GAqDAC,GAsCAC,GAuBAC,GAoBAC,GAuBAC,GAoBAC,GAuBAC,GA+CAC,GAyCAC,GAuBAC,GAgCAC,GA6BAC,GA0BAC,GAiDAC,GAiJAC,GACAC,GAOFC,GA6BAC,GAwDAC,GAiEEC,GAzyBNC,GAAAC,EAAA,KAAAC,IAEAC,IACAC,KACAA,KAQI5B,GAAqB,SAAUA,EAAO,CACxC,OAAAA,EAAMA,EAAM,oBAAyB,CAAC,EAAI,sBAC1CA,EAAMA,EAAM,uBAA4B,CAAC,EAAI,yBAC7CA,EAAMA,EAAM,qBAA0B,CAAC,EAAI,uBAC3CA,EAAMA,EAAM,oBAAyB,CAAC,EAAI,sBAC1CA,EAAMA,EAAM,yBAA8B,CAAC,EAAI,2BAC/CA,EAAMA,EAAM,mBAAwB,CAAC,EAAI,qBACzCA,EAAMA,EAAM,gBAAqB,CAAC,EAAI,kBACtCA,EAAMA,EAAM,qBAA0B,CAAC,EAAI,uBAC3CA,EAAMA,EAAM,4BAAiC,CAAC,EAAI,8BAC3CA,CACT,EAAEA,IAAS,CAAC,CAAC,EAOTC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,0BAA+B,CAAC,EAAI,4BAChEA,EAAcA,EAAc,yBAA8B,CAAC,EAAI,2BACxDA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAAyB,SAAUA,EAAW,CAChD,OAAAA,EAAUA,EAAU,mBAAwB,CAAC,EAAI,qBACjDA,EAAUA,EAAU,mBAAwB,CAAC,EAAI,qBACjDA,EAAUA,EAAU,oBAAyB,CAAC,EAAI,sBAClDA,EAAUA,EAAU,mBAAwB,CAAC,EAAI,qBACjDA,EAAUA,EAAU,oBAAyB,CAAC,EAAI,sBAClDA,EAAUA,EAAU,kBAAuB,CAAC,EAAI,oBAChDA,EAAUA,EAAU,iBAAsB,CAAC,EAAI,mBAC/CA,EAAUA,EAAU,iBAAsB,CAAC,EAAI,mBACxCA,CACT,EAAEA,IAAa,CAAC,CAAC,EAcXC,GAAN,MAAM0B,CAAK,CACT,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,QACRC,EAAE,MAAQnC,GAAoBI,GAAO8B,EAAM,KAAK,GAE9CA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE3BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EAOM7B,GAAN,MAAM8B,CAAkB,CACtB,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQhC,GAAoBC,GAAO8B,EAAM,KAAK,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACM5B,GAAN,MAAM8B,CAAmB,CACvB,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM3B,GAAN,MAAM8B,CAAe,CACnB,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM1B,GAAN,MAAM8B,CAAgB,CACpB,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO5B,GAAK,UAAU2B,EAAM,IAAI,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMzB,GAAN,MAAM8B,CAA2B,CAC/B,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMxB,GAAN,MAAM8B,CAA4B,CAChC,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIpB,GAAY,SAAS,GAEtDqB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMvB,GAAN,MAAM8B,CAAY,CAChB,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,WACRC,EAAE,SAAW,OAAO,KAAKD,EAAM,QAAQ,EAAE,OAAO,CAACW,EAAKC,KACpDD,EAAIC,CAAC,EAAI,SAASZ,EAAM,SAASY,CAAC,EAAG,EAAE,EAChCD,GACN,CAAC,CAAC,GAEHX,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMtB,GAAN,MAAMgC,CAA0B,CAC9B,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYhC,GAAoBG,GAAW4B,EAAM,SAAS,GAE1DA,EAAM,gBACRC,EAAE,cAAgBhC,GAAoBE,GAAe6B,EAAM,aAAa,GAEtEA,EAAM,QACRC,EAAE,MAAQhC,GAAoBC,GAAO8B,EAAM,KAAK,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMrB,GAAN,MAAMgC,CAA2B,CAC/B,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIpB,GAAY,SAAS,GAEtDqB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMpB,GAAN,MAAMgC,CAAiB,CACrB,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhB,GAAoB,UAAUe,EAAM,OAAO,GAErDA,EAAM,QACRC,EAAE,MAAQhC,GAAoBC,GAAO8B,EAAM,KAAK,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMnB,GAAN,MAAMgC,CAAkB,CACtB,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAI3B,GAAK,SAAS,GAEpC2B,EAAM,iBACRC,EAAE,eAAiBf,GAAsB,UAAUc,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMlB,GAAN,MAAMgC,CAAoB,CACxB,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMjB,GAAN,MAAMgC,CAAsB,CAC1B,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EA2BMhB,GAAN,MAAMgC,CAA2B,CAC/B,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EAwHMf,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,uCACT,KAAQ,GACR,KAAQ,uCACR,KAAQ,uCACR,WAAc,sCAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6B8B,EAAmB,CACjE,OAAO,IAAKA,GAAqB9B,EACnC,EACAA,EAAY,WAA0B+B,EAAmB,CACvD,MAAO/B,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAAuC,IAAM,CAC/C,MAAMA,CAAuB,CAC3B,YAAY+B,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,WAAWC,EAAG,CACZ,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInD,GAAkBmD,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQrD,GAAmB,UAAUqD,CAAI,CAAC,CAAC,CAC9K,CACA,QAAQH,EAAG,CACT,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjD,GAAeiD,CAAC,EACtD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnD,GAAgB,UAAUmD,CAAI,CAAC,CAAC,CACxK,CACA,UAAUH,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1C,GAAiB0C,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ5C,GAAkB,UAAU4C,CAAI,CAAC,CAAC,CAC5K,CACA,oBAAoBH,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/C,GAA2B+C,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjD,GAA4B,UAAUiD,CAAI,CAAC,CAAC,CAChM,CACA,mBAAmBH,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5C,GAA0B4C,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ9C,GAA2B,UAAU8C,CAAI,CAAC,CAAC,CAC9L,CACA,oBAAoBH,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItC,GAA2BsC,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAGG,EAAAC,EAAA,GACzG,KAAK,WAAW,GADyF,CAE5G,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAvC,EAAuB,UAAO,SAAwC6B,EAAmB,CACvF,OAAO,IAAKA,GAAqB7B,GAA2BwC,EAAYC,CAAU,EAAMD,EAASzC,EAAW,CAAC,CAC/G,EACAC,EAAuB,WAA0B8B,EAAmB,CAClE,MAAO9B,EACP,QAASA,EAAuB,UAChC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,IAAoC,IAAM,CAC5C,MAAMA,CAAoB,CACxB,YAAYyC,EAAK,CACf,KAAK,IAAMA,CACb,CACA,QAAQC,EAAW,CACjB,IAAMC,EAAM,IAAI3D,GAAe,CAC7B,UAAW0D,CACb,CAAC,EACD,OAAO,KAAK,IAAI,QAAQC,CAAG,EAAE,KAAKR,EAAIC,GAAQA,EAAK,IAAI,CAAC,CAC1D,CACA,WAAWQ,EAAYC,EAASC,EAAOC,EAAaC,EAAQ,CAC1D,IAAML,EAAM,IAAI7D,GAAkB,CAChC,WAAY8D,EACZ,QAASC,EACT,MAAOC,EACP,YAAaC,EACb,OAAQC,CACV,CAAC,EACD,OAAO,KAAK,IAAI,WAAWL,CAAG,CAChC,CACA,UAAUC,EAAYK,EAAQC,EAAUJ,EAAO,CAC7C,IAAMH,EAAM,IAAIpD,GAAiB,CAC/B,WAAYqD,EACZ,MAAOE,EACP,QAAS,IAAIrD,GAAoB,CAC/B,OAAQwD,EACR,SAAUC,CACZ,CAAC,CACH,CAAC,EACD,OAAO,KAAK,IAAI,UAAUP,CAAG,EAAE,KAAKR,EAAIC,GAAQ,IAAInC,GAAcmC,EAAK,KAAMA,EAAK,eAAe,WAAYA,EAAK,eAAe,OAAO,CAAC,CAAC,CAC5I,CACA,gBAAgBQ,EAAYO,EAAWC,EAAYC,EAAeP,EAAO,CACvE,IAAMQ,EAAO,CACX,WAAYV,EACZ,UAAWO,EACX,WAAYC,EACZ,cAAeC,EACf,MAAOP,CACT,EACMH,EAAM,IAAItD,GAA0BiE,CAAI,EAC9C,OAAO,KAAK,IAAI,mBAAmBX,CAAG,EAAE,KAAKR,EAAIC,GAAQA,EAAK,WAAW,CAAC,CAC5E,CACA,oBAAoBQ,EAAYW,EAAYP,EAAQ,CAClD,IAAML,EAAM,IAAIhD,GAA2B,CACzC,WAAYiD,EACZ,WAAYW,EACZ,OAAQP,CACV,CAAC,EACD,OAAO,KAAK,IAAI,oBAAoBL,CAAG,EAAE,KAAKR,EAAIqB,GAAOA,EAAI,SAAW,GAAG,CAAC,CAC9E,CACF,CACA,OAAAxD,EAAoB,UAAO,SAAqC4B,EAAmB,CACjF,OAAO,IAAKA,GAAqB5B,GAAwBuC,EAASxC,EAAsB,CAAC,CAC3F,EACAC,EAAoB,WAA0B6B,EAAmB,CAC/D,MAAO7B,EACP,QAASA,EAAoB,UAC7B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAIGC,GAAN,KAAoB,CAClB,YAAYwD,EAASC,EAAYC,EAAS,CACxC,KAAK,QAAUF,EACf,KAAK,WAAaC,EAClB,KAAK,QAAUC,CACjB,CACF,ICpwBM,SAAUC,GAAsBC,EAAwC,CAC5E,OAAQA,EAAC,CACP,KAAKC,GAAiBC,kBACpB,OAAOC,GAAoBD,kBAC7B,KAAKD,GAAiBG,qBACpB,OAAOD,GAAoBC,qBAC7B,KAAKH,GAAiBI,WACpB,OAAOF,GAAoBE,WAC7B,QACE,OAAOF,GAAoBG,KAC/B,CACF,CAEM,SAAUC,GAAwBP,EAAS,CAC/C,OAAQA,EAAC,CACP,KAAKG,GAAoBD,kBACvB,OAAOD,GAAiBC,kBAC1B,KAAKC,GAAoBC,qBACvB,OAAOH,GAAiBG,qBAC1B,KAAKD,GAAoBE,WACvB,OAAOJ,GAAiBI,WAC1B,QACE,OAAOJ,GAAiBK,KAC5B,CACF,CAEM,SAAUE,GACdC,EAAsC,CAEtC,MAAO,CACLC,WAAYD,EAAOC,YAAc,GACjCC,WAAYF,EAAOE,YAAc,GACjCC,UAAWH,EAAOG,WAAa,GAC/BC,qBAAsBJ,EAAOI,sBAAwB,CAAA,EACrDC,gCAAiCL,EAAOK,iCAAmC,GAC3EC,SAAUN,EAAOM,UAAY,GAC7BC,aAAcP,EAAOO,cAAgB,GACrCC,mBAAoBR,EAAOQ,oBAAsB,GACjDC,iBAAkBX,GAAwBE,EAAOS,gBAAgB,EACjEC,WAAYV,EAAOU,YAAc,EACjCC,KAAMX,EAAOW,MAAQ,EACrBC,KAAMZ,EAAOY,MAAQ,GACrBC,mBAAoBC,GAAoBd,EAAOa,kBAAkB,EAErE,CAEA,SAASE,GAAmBC,EAAuB,CACjD,OAAQA,EAAC,CACP,KAAKC,EAAqBC,yBACxB,OAAOC,GAAkBC,KAC3B,KAAKH,EAAqBI,8BACxB,OAAOF,GAAkBG,UAC3B,KAAKL,EAAqBM,+BACxB,OAAOJ,GAAkBK,WAC3B,QACE,OAAOL,GAAkBtB,KAC7B,CACF,CAEM,SAAUiB,GAAoBE,EAAyB,CAC3D,OAAOA,GAAGS,IAAIV,EAAkB,GAAK,CAAA,CACvC,CAEA,SAASW,GAAuBV,EAAoB,CAClD,OAAQA,EAAC,CACP,KAAKG,GAAkBC,KACrB,OAAOH,EAAqBC,yBAC9B,KAAKC,GAAkBG,UACrB,OAAOL,EAAqBI,8BAC9B,KAAKF,GAAkBK,WACrB,OAAOP,EAAqBM,+BAC9B,QACE,OAAON,EAAqBU,yBAChC,CACF,CAEM,SAAUC,GAAwBZ,EAAsB,CAC5D,OAAOA,GAAGS,IAAIC,EAAsB,GAAK,CAAA,CAC3C,CAzHA,IAsBYlC,GAOAE,GAOAyB,GApCZU,GAAAC,EAAA,KAAAC,IAsBYvC,GAAZ,SAAYA,EAAgB,CAC1BA,OAAAA,EAAA,MAAA,GACAA,EAAA,kBAAA,oBACAA,EAAA,qBAAA,uBACAA,EAAA,WAAA,aAJUA,CAKZ,EALYA,IAAgB,CAAA,CAAA,EAOhBE,GAAZ,SAAYA,EAAmB,CAC7BA,OAAAA,EAAA,MAAA,GACAA,EAAA,kBAAA,oBACAA,EAAA,qBAAA,uBACAA,EAAA,WAAA,aAJUA,CAKZ,EALYA,IAAmB,CAAA,CAAA,EAOnByB,GAAZ,SAAYA,EAAiB,CAC3BA,OAAAA,EAAA,UAAA,MACAA,EAAA,KAAA,OACAA,EAAA,WAAA,OACAA,EAAA,MAAA,QAJUA,CAKZ,EALYA,IAAiB,CAAA,CAAA,ICpC7B,IAiBaa,GAjBbC,GAAAC,EAAA,KACAC,IAQAC,IACAC,aAOaL,IAAkC,IAAA,CAAzC,MAAOA,CAAkC,CAC7CM,YAAoBC,EAAuD,CAAvD,KAAAA,iBAAAA,CAA0D,CAE9EC,IAAIC,EAAoBC,EAAkB,CACxC,IAAMC,EAAM,IAAIC,GAAsC,CACpDH,WAAAA,EACAC,WAAAA,EACD,EACD,OAAO,KAAKH,iBACTC,IAAIG,CAAG,EACPE,KACCC,EAAKC,GAAiDC,GAAmCD,EAAKE,aAAa,CAAC,CAAC,CAEnH,CAEAC,OAAOP,EAAsD,CAC3D,OAAO,KAAKJ,iBACTW,OACC,IAAIC,GAAyCC,EAAAC,EAAA,GACxCV,GADwC,CAE3CW,iBAAkBC,GAAsBZ,EAAIW,gBAAgB,EAC5DE,mBAAoBb,EAAIa,oBACzB,CAAC,EAEHX,KAAKY,GAAM,IAAI,CAAC,CACrB,iDAzBWzB,GAAkC0B,EAAAC,EAAA,CAAA,CAAA,CAAA,iCAAlC3B,EAAkC4B,QAAlC5B,EAAkC6B,UAAAC,WADrB,MAAM,CAAA,CAAA,SACnB9B,CAAkC,GAAA,ICjB/C,IAAA+B,GAAAC,EAAA,KAAAC,KACAF,OCEM,SAAUG,GAAeC,EAAa,CAC1C,OAAOA,EAAO,CAAEC,QAASD,EAAKC,SAAW,EAAE,EAAW,CAAEA,QAAS,EAAE,CACrE,CAFA,IAIaC,GAJbC,GAAAC,EAAA,KAIaF,GAAUG,GACdA,EAAI,CAAC,CAACA,EAAEJ,QAAU,KCSrB,SAAUK,GAAeC,EAA4B,CACzD,MAAO,CACLC,GAAID,EAAWC,IAAM,GACrBC,WAAYF,EAAWE,YAAc,GACrCC,YAAaH,EAAWG,aAAe,GACvCC,UAAWJ,EAAWI,WAAa,GACnCC,KAAML,EAAWK,MAAQ,GACzBC,YAAaN,EAAWM,aAAe,GACvCC,WAAYP,EAAWO,YAAc,EACrCC,mBAAoBR,EAAWQ,oBAAsB,GAEzD,CA1BA,IAAaC,GAAbC,GAAAC,EAAA,KAAaF,GAAaG,GACjB,CAAC,CAACA,ICFX,IA2BaC,GA3BbC,GAAAC,EAAA,KACAC,KACAC,IACAC,KACAC,IAaAC,aAUaP,IAAc,IAAA,CAArB,MAAOA,CAAc,CACzBQ,YAAoBC,EAAyB,CAAzB,KAAAA,WAAAA,CAA4B,CAGhDC,UAAUC,EAAoBC,EAAoBC,EAAc,CAC9D,IAAMC,EAAI,IAAIC,GAAoB,CAChCJ,WAAYA,EACZC,WAAYA,EACZC,OAAQA,EACT,EACD,OAAO,KAAKJ,WAAWC,UAAUI,CAAC,EAAEE,KAClCC,EAAKC,GAAY,CACf,IAAMC,GAAYD,EAASC,UAAY,CAAA,GAAIF,IAAKG,GAASC,GAAeD,CAAI,CAAC,EAC7E,MAAO,CACLE,cAAeJ,EAASI,eAAiB,EACzCH,SAAUA,EAEd,CAAC,CAAC,CAEN,CAGAI,mBACEZ,EACAC,EACAY,EAAqB,CAErB,IAAMV,EAAI,IAAIW,GAA8B,CAC1Cd,WAAYA,EACZC,WAAYA,EACZY,UAAWA,EACZ,EACD,OAAO,KAAKf,WAAWc,mBAAmBT,CAAC,EAAEE,KAC3CC,EAAKC,GACI,KAAKQ,mCAAmCR,CAAQ,CACxD,EACDS,EAAW,IACFC,GAAG,CAAA,CAAmC,CAC9C,CAAC,CAEN,CAEQF,mCAAmCR,EAAwC,CACjF,IAAMC,GAAYD,EAASC,UAAY,CAAA,GAAIF,IAAKG,GAASC,GAAeD,CAAI,CAAC,EACvES,GAAiBX,EAASW,eAAiB,CAAA,GAAIZ,IAAKG,IACjD,CACLU,IAAKV,EAAKU,IACVjB,OAAQO,EAAKE,eAAiB,EAC9BS,WAAYX,EAAKW,YAAc,CAAA,GAElC,EACD,MAAO,CACLC,aAAcd,EAASc,cAAgB,CAAA,EACvCH,cAAeA,EACfI,mBAAoBf,EAASe,oBAAsB,EACnDd,SAAUA,EAEd,CAEAe,OACEvB,EACAwB,EACAC,EACAC,EACAC,EACAC,EACAC,EAA0B,CAE1B,IAAM1B,EAAI,IAAI2B,GAAiB,CAC7B9B,WAAYA,EACZwB,YAAaA,EACbC,UAAWA,EACXC,KAAMA,EACNC,YAAaA,EACbC,WAAYA,EACZC,mBAAoBA,EACrB,EAED,OAAO,KAAK/B,WAAWyB,OAAOpB,CAAC,CACjC,CAEA4B,OACE/B,EACAgC,EACAR,EACAC,EACAC,EACAC,EACAC,EACAC,EAA0B,CAE1B,IAAM1B,EAAI,IAAI8B,GAAiB,CAC7BjC,WAAYA,EACZgC,GAAIA,EACJR,YAAaA,EACbC,UAAWA,EACXC,KAAMA,EACNC,YAAaA,EACbC,WAAYA,EACZC,mBAAoBA,EACrB,EAED,OAAO,KAAK/B,WAAWiC,OAAO5B,CAAC,CACjC,CAEA+B,KAAKC,EAA4BC,EAAgBC,EAAgB,CAC/D,IAAMC,EAAM,IAAIC,GAAe,CAC7BJ,QAASA,EACTK,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKvC,WAAWoC,KAAKI,CAAG,EAAEjC,KAC/BC,EAAKC,GAAY,CACf,IAAMC,GAAYD,EAASC,UAAY,CAAA,GAAIF,IAAKG,GAASC,GAAeD,CAAI,CAAC,EAC7E,OAAO,IAAIiC,EAAclC,EAAUD,EAASoC,eAAeC,WAAYrC,EAASoC,eAAeE,OAAO,CACxG,CAAC,CAAC,CAEN,CAEAC,SAAS9C,EAAoB+C,EAAa,CACxC,IAAMT,EAAM,IAAIU,GAAmB,CACjChD,WAAYA,EACZ+C,IAAKA,EACN,EACD,OAAO,KAAKjD,WAAWgD,SAASR,CAAG,EAAEjC,KACnCC,EAAKC,IACeA,EAASC,UAAY,CAAA,GAAIF,IAAKG,GAASC,GAAeD,CAAI,CAAC,CAE9E,CAAC,CAEN,CAEAwC,QAAQjD,EAAoBgC,EAAU,CACpC,IAAMM,EAAM,IAAIY,GAAkB,CAChClD,WAAAA,EACAgC,GAAAA,EACD,EACD,OAAO,KAAKlC,WAAWmD,QAAQX,CAAG,CACpC,iDAzIWjD,GAAc8D,EAAAC,EAAA,CAAA,CAAA,CAAA,iCAAd/D,EAAcgE,QAAdhE,EAAciE,UAAAC,WADD,MAAM,CAAA,CAAA,SACnBlE,CAAc,GAAA,IC5B3B,IAAAmE,GAAAC,EAAA,KAAAD,KAqBAE,OC4IA,SAASC,GAAiBC,EAAmB,CAC3C,OAAQA,EAAC,CACP,KAAKC,GAAiBC,IACpB,OAAOC,GAAcD,IACvB,KAAKD,GAAiBG,KACpB,OAAOD,GAAcC,KACvB,KAAKH,GAAiBI,KACpB,OAAOF,GAAcE,KACvB,QACE,OAAOF,GAAcG,KACzB,CACF,CAEA,SAASC,GAAmBC,EAAqB,CAC/C,OAAQA,EAAM,CACZ,KAAKL,GAAcD,IACjB,OAAOO,GAAsBP,IAC/B,KAAKC,GAAcC,KACjB,OAAOK,GAAsBL,KAC/B,KAAKD,GAAcE,KACjB,OAAOI,GAAsBJ,KAC/B,QACE,OAAOI,GAAsBH,KACjC,CACF,CAEA,SAASI,GAAuBF,EAAyB,CACvD,OAAQA,EAAM,CACZ,KAAKG,GAAkBC,QACrB,OAAOC,GAAqBC,gBAC9B,KAAKH,GAAkBI,QACrB,OAAOF,GAAqBG,gBAC9B,KAAKL,GAAkBM,OACrB,OAAOJ,GAAqBK,eAC9B,QACE,OAAOL,GAAqBM,aAChC,CACF,CAEA,SAASC,GAA4BC,EAA2B,CAC9D,OAAQA,EAAS,CACf,KAAKC,GAAiBC,OACpB,OAAOC,GAA8CD,OACvD,QACE,OAAOC,GAA8CC,OACzD,CACF,CAEA,SAASC,GAAiB1B,EAAS,CACjC,OAAQA,EAAC,CACP,KAAK2B,GAAiBC,OACpB,OAAOC,GAAcD,OACvB,KAAKD,GAAiBG,YACpB,OAAOD,GAAcC,YACvB,KAAKH,GAAiBI,QACpB,OAAOF,GAAcE,QACvB,KAAKJ,GAAiBK,SACpB,OAAOH,GAAcG,SACvB,QACE,OAAOH,GAAcI,KACzB,CACF,CAEM,SAAUC,GAAyBC,EAAqB,CAC5D,MAAO,CACLC,OAAQD,EAAGC,QAAU,EACrBC,UAAWF,EAAGE,WAAa,GAC3BC,WAAYH,EAAGG,YAAc,EAC7BC,KAAMJ,EAAGI,MAAQ,GACjBC,YAAaL,EAAGK,aAAe,GAEnC,CAYM,SAAUC,GAAkBC,EAAc,CAC9C,GAAKA,EAGL,MAAO,CACLC,GAAID,EAAGC,IAAM,GACbJ,KAAMG,EAAGH,MAAQ,GACjBC,YAAaE,EAAGF,aAAe,GAC/BF,WAAYI,EAAGJ,YAAc,EAEjC,CAoBA,SAASM,GAA0BC,EAA6B,CAC9D,MAAO,CACLC,QAASD,GAAIC,SAAW,GACxBC,SAAUF,GAAIE,UAAY,GAC1BC,KAAMH,GAAIG,MAAQ,GAClBC,MAAOJ,GAAII,OAAS,GACpBC,IAAKL,GAAIK,KAAO,GAChBC,QAASN,GAAIM,SAAW,GAE5B,CAEM,SAAUC,GAAsBC,EAAkB,CACtD,GAAI,CAACA,EACH,OAGF,IAAMC,EAAW,IAAIC,KAAK,sBAAsB,EAAEC,QAAO,EACnDC,GAAkCJ,EAAGI,cAAgB,CAAA,GACxDC,IAAKvB,GAAOD,GAAyBC,CAAE,CAAC,EACxCwB,OAAOC,EAAgB,EACpBC,GAAuBR,EAAGQ,UAAY,CAAA,GAAIH,IAAKhB,GAAOD,GAAkBC,CAAE,CAAC,EAAEiB,OAAOG,EAAS,EAC7FC,GAAuCV,EAAGW,WAAa,CAAA,GAAIN,IAAKO,GAAOC,GAAuBD,CAAE,CAAC,EAEvG,MAAO,CACLtB,GAAIU,EAAGV,IAAM,GACbwB,IAAKd,EAAGc,KAAO,GACf/B,OAAQiB,EAAGjB,QAAU,EACrBgC,SAAUf,EAAGe,UAAY,EACzB5B,YAAaa,EAAGb,aAAe,GAC/B6B,SAAUhB,EAAGgB,UAAY,EACzBC,MAAOjB,EAAGiB,OAAS,EACnBP,iBAAkBA,GAAoB,CAAA,EACtCN,aAAcA,GAAgB,CAAA,EAC9BI,SAAUA,GAAY,CAAA,EACtBU,SAAUlB,EAAGkB,UAAY,GACzBC,iBAAkBnB,EAAGmB,kBAAoB,GACzCC,mBACIpB,EAAGoB,oBAAsBpB,EAAGoB,mBAAmBjB,QAAO,IAAOF,EAC3DoB,GAAiBrB,EAAGoB,kBAAkB,EACtCE,OACNC,iBACIvB,EAAGuB,kBAAoBvB,EAAGuB,iBAAiBpB,QAAO,IAAOF,EACvDoB,GAAiBrB,EAAGuB,gBAAgB,EACpCD,OAEV,CAEA,SAASE,GAA4B7E,EAAuB,CAC1D,OAAQA,EAAC,CACP,KAAKa,GAAqBC,gBACxB,OAAOH,GAAkBC,QAC3B,KAAKC,GAAqBG,gBACxB,OAAOL,GAAkBI,QAC3B,KAAKF,GAAqBK,eACxB,OAAOP,GAAkBM,OAC3B,QACE,MAAO,EACX,CACF,CAEA,SAAS6D,GAA6BC,EAA0C,CAC9E,OAAOA,GAAoBrB,IACxBsB,IACE,CACCC,aAAcD,EAAIC,aAClB7C,OAAQ4C,EAAI5C,OACZ8C,eAAgBC,GAAyBH,EAAIE,cAAc,EAC3DE,OAAQJ,EAAIK,kBACS,CAE7B,CAEM,SAAUC,GAAkBC,EAAa,CAC7C,IAAMjC,EAAW,IAAIC,KAAK,sBAAsB,EAAEC,QAAO,EACnDgC,GAA+BD,EAAEE,OAAS,CAAA,GAAI/B,IAAKL,GAAOD,GAAsBC,CAAE,CAAC,EAAEM,OAAO+B,EAAa,EACzGjC,GAAkC8B,EAAE9B,cAAgB,CAAA,GACvDC,IAAKvB,GAAOD,GAAyBC,CAAE,CAAC,EACxCwB,OAAOC,EAAgB,EACpBC,GAAuB0B,EAAEI,iBAAmB,CAAA,GAAIjC,IAAKhB,GAAOD,GAAkBC,CAAE,CAAC,EAAEiB,OAAOG,EAAS,EACnG8B,GAAmCL,EAAEK,gBAAkB,CAAA,GAC1DlC,IAAKvB,GAAO0D,GAAwB1D,CAAE,CAAC,EACvCwB,OAAOmC,EAAe,EACnBC,GAAiBR,EAAEQ,OAAS,CAAA,GAAIrC,IAAKsC,GAAMC,GAAeD,CAAC,CAAC,EAAErC,OAAOuC,EAAM,EAEjF,MAAO,CACLvD,GAAI4C,EAAE5C,IAAM,GACZyC,OAAQG,EAAEH,QAAU,GACpBe,WAAYZ,EAAEY,YAAc,GAC5BC,aAAcb,EAAEa,cAAgB,GAChCC,UAAWd,EAAEc,WAAa,GAC1B7F,OAAQT,GAAiBwF,EAAE/E,MAAM,EACjC6D,SAAUkB,EAAElB,UAAY,EACxBiC,WAAYf,EAAEe,YAAc,EAC5BC,YAAahB,EAAEgB,aAAe,EAC9BjC,MAAOiB,EAAEjB,OAAS,EAClBkC,cAAejB,EAAEkB,gBAAkB,EACnCC,KAAMnB,EAAEmB,MAAQnB,EAAEmB,KAAKlD,QAAO,IAAOF,EAAWiC,EAAEmB,KAAO/B,OACzDgC,OAAQpB,EAAEoB,QAAUpB,EAAEoB,OAAOnD,QAAO,IAAOF,EAAWiC,EAAEoB,OAAShC,OACjEiC,IAAKrB,EAAEqB,KAAOrB,EAAEqB,IAAIpD,QAAO,IAAOF,EAAWiC,EAAEqB,IAAMjC,OACrDkC,OAAQtB,EAAEsB,QAAUtB,EAAEsB,OAAOrD,QAAO,IAAOF,EAAWiC,EAAEsB,OAASlC,OACjEmC,QAASvB,EAAEuB,QAAQtD,QAAO,IAAOF,EAAWiC,EAAEuB,QAAUnC,OACxDoC,QAASxB,EAAEwB,QAAQvD,QAAO,IAAOF,EAAWiC,EAAEwB,QAAUpC,OACxDqC,YAAazB,EAAEyB,YAAYxD,QAAO,IAAOF,EAAWiC,EAAEyB,YAAcrC,OACpEc,MAAOD,GAAgB,CAAA,EACvByB,SAAUC,EAAgB3B,EAAE0B,QAAQ,EACpCE,QAAS5B,EAAE4B,SAAW,GACtB1D,aAAcA,GAAgB,CAAA,EAC9BkC,gBAAiB9B,GAAY,CAAA,EAC7B+B,eAAgBA,GAAkB,CAAA,EAClCwB,OAAQ1F,GAAiB6D,EAAE6B,MAAM,EACjCC,iBAAkBC,GAAwB/B,EAAE8B,gBAAgB,EAC5DE,KAAMhC,EAAEgC,MAAQ,GAChBC,qBAAsBjC,EAAEiC,sBAAwB,GAChDC,gBAAiB7E,GAA0B2C,EAAEkC,eAAe,EAC5DC,2BAA4BnC,EAAEmC,4BAA8B,GAC5D3B,MAAOA,GAAS,CAAA,EAChB4B,qBAAsBpC,EAAEoC,sBAAwB,CAAA,EAChDC,mBAAoBC,GAAoBtC,EAAEqC,kBAAkB,EAC5DE,kBAAmBjD,GAA4BU,EAAEuC,iBAAiB,EAClE/C,mBAAoBD,GAA6BS,EAAER,kBAAkB,EAEzE,CAEM,SAAUgD,GAAwBC,EAA2B,CACjE,OAAO,IAAIC,GAA2BC,EAAAC,EAAA,GACjCH,GADiC,CAEpCI,UAAWJ,EAAQI,UAAY,CAAA,GAAI1E,IAAK1D,GAAqBO,GAAmBP,CAAC,CAAC,EAClFqI,qBAAsBL,EAAQK,qBAAuB,CAAA,GAAI3E,IAAK1D,GAAyBU,GAAuBV,CAAC,CAAC,EAChHsI,QAASN,EAAQM,QACjBC,kBAAmBP,EAAQO,kBAC3BC,WAAY,CACVC,QAAST,EAAQQ,YAAYC,QAC7BC,QAASV,EAAQQ,YAAYE,QAC7BrH,UAAW2G,EAAQQ,YAAYnH,UAAYD,GAA4B4G,EAAQQ,WAAWnH,SAAS,EAAIsD,SAE1G,CACH,CA1ZA,IA4BYgE,GAKAxI,GAOAQ,GAMAW,GAKAO,GAQAF,GAON+D,GAyBOkD,GA0DAhF,GArJbiF,GAAAC,EAAA,KAAAC,IAaAC,KACAC,KACAC,KACAC,KACAC,KAMAC,KAEAC,KACAC,KAEYZ,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,QAAA,UACAA,EAAA,QAAA,UAFUA,CAGZ,EAHYA,IAAc,CAAA,CAAA,EAKdxI,GAAZ,SAAYA,EAAa,CACvBA,OAAAA,EAAA,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,KAAA,OAJUA,CAKZ,EALYA,IAAa,CAAA,CAAA,EAObQ,GAAZ,SAAYA,EAAiB,CAC3BA,OAAAA,EAAA,QAAA,UACAA,EAAA,QAAA,UACAA,EAAA,OAAA,SAHUA,CAIZ,EAJYA,IAAiB,CAAA,CAAA,EAMjBW,GAAZ,SAAYA,EAAgB,CAC1BA,OAAAA,EAAA,QAAA,UACAA,EAAA,OAAA,SAFUA,CAGZ,EAHYA,IAAgB,CAAA,CAAA,EAKhBO,GAAZ,SAAYA,EAAa,CACvBA,OAAAA,EAAA,OAAA,SACAA,EAAA,YAAA,cACAA,EAAA,QAAA,UACAA,EAAA,SAAA,WACAA,EAAA,MAAA,QALUA,CAMZ,EANYA,IAAa,CAAA,CAAA,EAQbF,GAAZ,SAAYA,EAAgB,CAC1BA,OAAAA,EAAA,OAAA,SACAA,EAAA,YAAA,cACAA,EAAA,QAAA,UACAA,EAAA,SAAA,WAJUA,CAKZ,EALYA,IAAgB,CAAA,CAAA,EAOtB+D,GAAiBrC,GACd,CAAC,CAACA,EAwBEuF,GAAarD,GACjB,CAAC,CAACA,EAyDE3B,GAAoBlB,GACxB,CAAC,CAACA,ICtJX,IA2Da8G,GA3DbC,GAAAC,EAAA,KAEAC,IAwCAC,KACAC,KACAC,KACAC,IACAC,KACAC,KAMAC,KAGAC,4BAGaX,IAAc,IAAA,CAArB,MAAOA,CAAc,CACzBY,YACUC,EACAC,EACAC,EACAC,EACAC,EAAwC,CAJxC,KAAAJ,YAAAA,EACA,KAAAC,KAAAA,EACA,KAAAC,kBAAAA,EACA,KAAAC,WAAAA,EACA,KAAAC,oBAAAA,CACP,CAEHC,UAAUC,EAAoBC,EAAmBC,EAAgB,CAC/D,OAAO,KAAKN,kBACTG,UACC,IAAII,GAAiB,CACnBH,WAAAA,EACAC,UAAAA,EACAC,SAAAA,EACD,CAAC,EAEHE,KAAKC,EAAKC,GAA2BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CACzE,CAEAC,YACET,EACAC,EACAS,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAuB,CAEvB,OAAO,KAAKrB,kBACTa,YACC,IAAIS,GAAmB,CACrBlB,WAAAA,EACAC,UAAAA,EACAS,IAAAA,EACAC,OAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAC,SAAAA,EACAK,WAAYJ,GAAoB,CAAA,GAAIV,IAAKe,GAAMC,GAAqBD,CAAC,CAAC,EACtEJ,mBAAAA,EACAC,iBAAAA,EACD,CAAC,EAEHb,KAAKC,EAAKC,GAA6BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC3E,CAEAc,OACEtB,EACAuB,EACAtB,EACAuB,EAAuB,CAEvB,OAAO,KAAK5B,kBAAkB0B,OAC5B,IAAIG,GAAqB,CACvBzB,WAAAA,EACAuB,WAAAA,EACAtB,UAAAA,EACAuB,gBAAAA,EACD,CAAC,CAEN,CAEAE,OAAO1B,EAAoBuB,EAAoBI,EAAkBC,EAAqB,CACpF,OAAO,KAAKhC,kBACT8B,OACC,IAAIG,GAAqB,CACvB7B,WAAYA,EACZuB,WAAYA,EACZI,QAASA,EACTC,aAAcA,EACf,CAAC,EAEHxB,KAAKC,EAAKC,GAAgCA,EAAMA,EAAIL,UAAY,EAAG,CAAC,CACzE,CAEA6B,kBACE9B,EACAuB,EACAQ,EACAH,EAAe,GACfI,EAAU,CAEV,OAAO,KAAKpC,kBACTkC,kBACC,IAAIG,GAAyB,CAC3BjC,WAAYA,EACZuB,WAAYA,EACZQ,UAAWA,EACXH,aAAcA,EACdI,IAAKA,EACN,CAAC,EAEH5B,KAAKC,EAAKC,GAAoCA,EAAMA,EAAIL,UAAY,EAAG,CAAC,CAC7E,CAEAiC,OAAOlC,EAAoBC,EAAiB,CAC1C,OAAO,KAAKL,kBAAkBsC,OAC5B,IAAIC,GAAqB,CACvBnC,WAAAA,EACAC,UAAAA,EACD,CAAC,CAEN,CAEAmC,eAAepC,EAAoBC,EAAmBoC,EAAU,CAC9D,OAAO,KAAKzC,kBACTwC,eACC,IAAIE,GAAsB,CACxBtC,WAAAA,EACAC,UAAAA,EACAoC,GAAAA,EACD,CAAC,EAEHjC,KAAKC,EAAKC,GAAgCC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC9E,CAEA+B,UAAUvC,EAAoBwC,EAA4B,CACxD,IAAMC,EAAM,GAAG,KAAK/C,YAAYgD,cAAc,kBAC9C,OAAO,KAAK/C,KACTgD,KACCF,EACA,CACEG,YAAa5C,EACbwC,QAASA,GAEX,CACEK,QAAS,OACTC,aAAc,OACdC,gBAAiB,GAClB,EAEF3C,KAAK4C,GAAK,CAAE,CACjB,CAEAC,YAAYjD,EAAoBC,EAAmBiD,EAA4B,CAC7E,IAAMT,EAAM,GAAG,KAAK/C,YAAYgD,cAAc,wBAC9C,OAAO,KAAK/C,KACTgD,KACCF,EACA,CACEG,YAAa5C,EACbmD,WAAYlD,EACZmD,cAAeF,GAEjB,CACEL,QAAS,OACTC,aAAc,OACf,EAEF1C,KAAK4C,GAAK,CAAE,CACjB,CAEAK,IAAIrD,EAAoBC,EAAiB,CACvC,OAAO,KAAKL,kBACTyD,IACC,IAAIC,GAAkB,CACpBtD,WAAAA,EACAC,UAAAA,EACD,CAAC,EAEHG,KAAKC,EAAKC,GAA4BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC1E,CAEA+C,KAAKf,EAA6BgB,EAAgBC,EAAgB,CAChE,IAAMC,EAAM,IAAIC,GAAoB,CAClCnB,QAASoB,GAAwBpB,CAAO,EACxCqB,cAAe,IAAIC,EAAoB,CAAEN,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAK7D,kBAAkB2D,KAAKG,CAAG,EAAEtD,KACtCC,EAAK0D,GAAY,CACf,IAAMC,GAAYD,EAASC,UAAY,CAAA,GAAI3D,IAAK4D,GAAS1D,GAAkB0D,CAAI,CAAC,EAAEC,OAAOC,EAAS,EAClG,OAAO,IAAIC,EAAcJ,EAAUD,EAASM,eAAeC,WAAYP,EAASM,eAAeE,OAAO,CACxG,CAAC,CAAC,CAEN,CAEAC,IAAIxE,EAAoBC,EAAmBwE,EAAc,CACvD,OAAO,KAAK7E,kBAAkB4E,IAC5B,IAAIE,GAAkB,CACpB1E,WAAAA,EACAC,UAAAA,EACAwE,OAAAA,EACD,CAAC,CAEN,CAEAE,QAAQ3E,EAAoBC,EAAiB,CAC3C,IAAMwC,EAAM,GAAG,KAAK/C,YAAYgD,cAAc,0BAC9C,OAAO,KAAK/C,KAAKgD,KACfF,EACA,CACEG,YAAa5C,EACbmD,WAAYlD,GAEd,CACE6C,aAAc,OACdC,gBAAiB,GAClB,CAEL,CAEA6B,mBAAmB5E,EAAoBuB,EAAoBsD,EAAkB,CAC3E,OAAO,KAAKjF,kBACTkF,0BACC,IAAIC,GAAiC,CACnC/E,WAAAA,EACAuB,WAAAA,EACAsD,YAAAA,EACD,CAAC,EAEHzE,KAAKC,EAAKC,GAA2CC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CACzF,CAEAwE,aACEhF,EACAC,EACAC,EACA+E,EAAyB,CAEzB,OAAO,KAAKrF,kBACToF,aACC,IAAIE,GAAoB,CACtBlF,WAAAA,EACAC,UAAAA,EACAC,SAAAA,EACA+E,iBAAAA,EACD,CAAC,EAEH7E,KAAKC,EAAKC,GAA8BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC5E,CAEA2E,KAAKnF,EAAoBC,EAAmBmF,EAAwB,CAClE,OAAO,KAAKxF,kBAAkBuF,KAC5B,IAAIE,GAAmB,CACrBrF,WAAAA,EACAC,UAAAA,EACAmF,eAAAA,EACD,CAAC,CAEN,CAEAE,aACEtF,EACAC,EACAC,EACAqF,EACAN,EAAyB,CAEzB,OAAO,KAAKrF,kBACT0F,aACC,IAAIE,GAAoB,CACtBxF,WAAAA,EACAC,UAAAA,EACAC,SAAAA,EACAqF,gBAAAA,EACAN,iBAAAA,EACD,CAAC,EAEH7E,KAAKC,EAAKC,GAA8BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC5E,CAEAiF,cAAczF,EAAoBqC,EAAYL,EAAS,CACrD,IAAM0D,EAAY,IAAIC,EAAW,CAC/B3F,WAAAA,EACAqC,GAAAA,EACAL,IAAAA,EACD,EAEK4D,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,KAAK,EACd,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAI,iBAAiBhG,EAAoBqC,EAAY4D,EAAY,CAC3D,IAAMP,EAAY,IAAIC,EAAW,CAC/B3F,WAAAA,EACAqC,GAAAA,EACA4D,OAAAA,EACD,EAEKL,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,QAAQ,EACjB,EACD,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAM,cAAclG,EAAoBqC,EAAY8D,EAAiB,CAC7D,IAAMT,EAAY,IAAIC,EAAW,CAC/B3F,WAAAA,EACAqC,GAAAA,EACA8D,UAAAA,EACD,EAEKP,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,WAAW,EACpB,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAQ,yBAAyBpG,EAAoBqC,EAAYgE,EAA8B,CACrF,IAAMX,EAAY,IAAIC,EAAW,CAC/B3F,WAAAA,EACAqC,GAAAA,EACAgE,qBAAAA,EACD,EAEKT,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,sBAAsB,EAC/B,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAU,uBAAuBtG,EAAoBqC,EAAYkE,EAAkC,CACvF,IAAMC,EAAsBC,GAAsBF,CAAgB,EAC5Db,EAAY,IAAIC,EAAW,CAC/B3F,WAAAA,EACAqC,GAAAA,EACAkE,iBAAkBC,EACnB,EAEKZ,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,kBAAkB,EAC3B,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAc,WAAW1G,EAAoBqC,EAAYsE,EAAY,CACrD,IAAMjB,EAAY,IAAIC,EAAW,CAC/B3F,WAAAA,EACAqC,GAAAA,EACAsE,KAAAA,EACD,EAEKf,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,MAAM,EACf,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAgB,yBACE5G,EACAqC,EACAwE,EAAuC,CAEvC,IAAMC,EAAwBC,GAAwBF,CAAkB,EAClEnB,EAAY,IAAIC,EAAW,CAC/B3F,WAAAA,EACAqC,GAAAA,EACAwE,mBAAoBC,EACrB,EAEKlB,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,oBAAoB,EAC7B,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAoB,2BAA2BhH,EAAoBqC,EAAY4E,EAA4B,CACrF,IAAMvB,EAAY,IAAIC,EAAW,CAC/B3F,WAAAA,EACAqC,GAAAA,EACA4E,qBAAAA,EACD,EAEKrB,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,sBAAsB,EAC/B,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAsB,mBAAmBlH,EAAoBC,EAAmBkH,EAAoB,CAC5E,OAAO,KAAKvH,kBACTwH,sBACC,IAAIC,GAA6B,CAC/BrH,WAAAA,EACAC,UAAAA,EACAkH,WAAAA,EACD,CAAC,EAEH/G,KAAKC,EAAKC,GAAuCC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CACrF,CAEA8G,eACEtH,EACAC,EACAoC,EACA3B,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAsG,GAAqB,CAErB,OAAO,KAAK3H,kBACT0H,eACC,IAAIE,GAAsB,CACxBxH,WAAAA,EACAC,UAAAA,EACAoC,GAAAA,EACA3B,IAAAA,EACAC,OAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAC,SAAAA,EACAK,WAAYJ,GAAoB,CAAA,GAAIV,IAAKe,IAAMC,GAAqBD,EAAC,CAAC,EACtEJ,mBAAAA,EACAC,iBAAAA,EACAsG,UAAAA,GACD,CAAC,EAEHnH,KAAKC,EAAKC,IAAgCC,GAAkBD,GAAIE,OAAO,CAAC,CAAC,CAC9E,CAEQuF,OAAOvF,EAAqBiH,EAAe,CACjD,OAAO,KAAK7H,kBACTmG,OACC,IAAI2B,GAAqB,CACvBlH,QAASA,EACT+G,UAAWE,EACZ,CAAC,EAEHrH,KAAKC,EAAKC,GAA+BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC7E,CAEAmH,KAAK3H,EAAoBC,EAAmBwE,EAAc,CACxD,OAAO,KAAK7E,kBAAkB+H,KAC5B,IAAIC,GAAmB,CACrB5H,WAAAA,EACAC,UAAAA,EACAwE,OAAAA,EACD,CAAC,CAEN,CAEAoD,UAAU7H,EAAoBC,EAAiB,CAC7C,OAAO,KAAKL,kBACTiI,UACC,IAAIC,GAAwB,CAC1B9H,WAAAA,EACAC,UAAAA,EACD,CAAC,EAEHG,KAAKC,EAAKC,GAAmCA,EAAMA,EAAIL,UAAY,EAAG,CAAC,CAC5E,CAEA8H,kBAAkB/H,EAAoBC,EAAiB,CACrD,OAAO,KAAKJ,WACTmI,YAAY,MAAOC,GAAyBjI,CAAU,EAAG,CACxDkI,KAAM,YAAYlI,CAAU,IAAIC,CAAS,GACzCkI,0BAA2B,GAC5B,EACA/H,KACCgI,GAAW3F,GACF,KAAK3C,oBAAoBuI,WAAW,GAAI5F,EAAK6F,GAAMC,gBAAiB,GAAI,EAAK,EAAEnI,KACpFoI,EAAW,IAAMC,GAAG,IAAI,CAAC,EACzBpI,EAAKqI,GACEA,EAGE,WAAWA,EAAOC,MAAM,GAAGD,EAAOE,SAAS,GAFzCnG,CAGV,CAAC,CAEL,EACD+F,EAAW,IAAK,CACd,MAAM,IAAIK,MAAM,+BAA+B,CACjD,CAAC,EACDC,GAAK,CAAC,CAAC,CAEb,iDApeWjK,GAAckK,EAAAC,CAAA,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,CAAA,iCAAdvK,EAAcwK,QAAdxK,EAAcyK,UAAAC,WADD,MAAM,CAAA,CAAA,SACnB1K,CAAc,GAAA,IC3D3B,IAAA2K,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,KAAAC,KACAF,OCkLM,SAAUG,GAAyBC,EAA6C,CACpF,OAAQA,EAAc,CACpB,KAAKC,GAAkBC,wBACrB,OAAOC,GAAeC,YACxB,KAAKH,GAAkBI,yBACrB,OAAOF,GAAeG,aACxB,QACE,OAAOH,GAAeI,WAC1B,CACF,CA5LA,IAsEYJ,GAtEZK,GAAAC,EAAA,KAGAC,IAmEYP,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,YAAA,cACAA,EAAA,YAAA,cACAA,EAAA,aAAA,eAHUA,CAIZ,EAJYA,IAAc,CAAA,CAAA,ICtE1B,IAAAQ,GAAAC,EAAA,QCoBM,SAAUC,GAAgBC,EAAkB,CAChD,MAAO,CACLC,WAAYD,EAAMC,WAClBC,QAASF,EAAME,QACfC,KAAMH,EAAMG,KACZC,MAAOJ,EAAMI,MACbC,QAASL,EAAMK,QACfC,QAASN,EAAMM,QACfC,aAAcP,EAAMO,aACpBC,YAAaR,EAAMQ,YACnBC,YAAaT,EAAMS,YACnBC,YAAaV,EAAMU,YACnBC,iBAAkBX,EAAMW,iBACxBC,mBAAoBZ,EAAMY,mBAC1BC,0BAA2Bb,EAAMa,0BACjCC,yBAA0Bd,EAAMc,0BAA4B,CAAA,EAC5DC,gBAAiBf,EAAMgB,gBAE3B,CAlBA,IAAAC,GAAAC,EAAA,QCEM,SAAUC,GAAqBC,EAA+B,CAClE,IAAMC,EAAW,IAAIC,KAAK,sBAAsB,EAAEC,QAAO,EACzD,MAAO,CACLC,oBACEJ,EAAMK,gCAAgCF,QAAO,IAAOF,EAAWD,EAAMK,gCAAkCC,OACzGC,eAAgBC,GAAsBR,EAAMO,cAAc,EAC1DE,gBAAiBT,EAAMS,gBACvBC,UAAWV,EAAMU,UAAY,CAAA,GAAIC,IAAKC,IAAa,CACjDC,aAAcD,EAAQC,aACtBC,OAAQF,EAAQE,QAAU,EAC1BC,cAAeH,EAAQG,eAAiB,EACxCC,UAAWJ,EAAQI,WAAa,GAChC,EAEN,CAEM,SAAUR,GAAsBR,EAAa,CACjD,OAAQA,EAAK,CACX,IAAK,QACH,OAAOiB,GAAeC,MACxB,IAAK,SACH,OAAOD,GAAeE,OACxB,IAAK,UACH,OAAOF,GAAeG,QACxB,QACE,MACJ,CACF,CA/CA,IAAYH,GAAZI,GAAAC,EAAA,KAAYL,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,QAAA,UACAA,EAAA,QAAA,UAJUA,CAKZ,EALYA,IAAc,CAAA,CAAA,IC4BpB,SAAUM,GAAoBC,EAA6B,CAC/D,OAAQA,EAAC,CACP,KAAKC,GAAeC,aAClB,MAAO,eACT,KAAKD,GAAeE,SAClB,MAAO,WACT,QACE,MAAO,EACX,CACF,CAEM,SAAUC,GAAsBJ,EAAS,CAC7C,OAAQA,EAAC,CACP,IAAK,eACH,OAAOC,GAAeC,aACxB,IAAK,WACH,OAAOD,GAAeE,SACxB,QACE,OAAOF,GAAeI,KAC1B,CACF,CAEM,SAAUC,GAA2BC,EAA6B,CACtE,MAAO,CACLC,WAAYD,EAAMC,WAClBC,cAAeF,EAAME,cACrBC,aAAcH,EAAMG,aACpBC,uBAAwBJ,EAAMI,wBAA0B,EACxDC,6BAA8BC,GAAoCN,EAAMK,4BAA4B,EAExG,CAEM,SAAUC,GACdN,EAAsC,CAEtC,GAAI,CAACA,EACH,OAEF,IAAMO,EAAmBC,GAAwBR,EAAMO,gBAAgB,EACvE,MAAO,CACLE,eAAgBZ,GAAsBG,EAAMS,cAAc,EAC1DF,iBAAkBA,EAClBG,WAAYV,EAAMU,YAAc,EAChCC,KAAMX,EAAMW,MAAQ,EACpBC,KAAMZ,EAAMY,MAAQ,GACpBC,gCAAiCb,EAAMa,iCAAmC,GAE9E,CAEM,SAAUC,GACdC,EAAoD,CAEpD,GAAKA,EAGL,OAAOC,GAAe,CACpBP,eAAgBjB,GAAoBuB,EAAEN,cAAc,EACpDF,iBAAkBU,GAAsBF,EAAER,gBAAgB,EAC1DG,WAAYK,EAAEL,WACdC,KAAMI,EAAEJ,KACRC,KAAMG,EAAEH,KACRC,gCAAiCE,EAAEF,gCACpC,CACH,CAGA,SAASG,GAAeE,EAA+B,CACrD,QAAWC,KAAOD,EACZA,EAAEC,CAAG,IAAMC,QACb,OAAOF,EAAEC,CAAG,EAGhB,OAAOD,CACT,CAlGA,IAmBYxB,GAnBZ2B,GAAAC,EAAA,KAAAC,KAmBY7B,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,MAAA,QACAA,EAAA,aAAA,eACAA,EAAA,SAAA,WAHUA,CAIZ,EAJYA,IAAc,CAAA,CAAA,ICxB1B,IAiDY8B,GAiBCC,GAlEbC,GAAAC,EAAA,KAGAC,IACAC,KACAC,KACAC,KACAC,IA0BAC,KAEAC,KACAC,KAMAC,kBAOYZ,GAAZ,SAAYA,EAAe,CACzBA,OAAAA,EAAAA,EAAA,WAAA,CAAA,EAAA,aACAA,EAAAA,EAAA,YAAA,CAAA,EAAA,cACAA,EAAAA,EAAA,YAAA,CAAA,EAAA,cACAA,EAAAA,EAAA,aAAA,CAAA,EAAA,eACAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,MAAA,CAAA,EAAA,QACAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UARUA,CASZ,EATYA,IAAe,CAAA,CAAA,EAiBdC,IAAe,IAAA,CAAtB,MAAOA,CAAe,CAC1BY,YACUC,EACAC,EACAC,EAAgB,CAFhB,KAAAF,YAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,KAAAA,CACP,CAEHC,IAAIC,EAAkB,CACpB,IAAMC,EAAM,IAAIC,GAAmB,CAAEF,WAAAA,CAAU,CAAE,EACjD,OAAO,KAAKJ,YAAYG,IAAIE,CAAG,EAAEE,KAAKC,EAAKC,GAASC,GAAgBD,EAAKE,QAAQ,CAAC,CAAC,CACrF,CAEAC,OACER,EACAS,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAA2B,CAE3B,OAAO,KAAKvB,YACTY,OAAO,CACNR,WAAAA,EACAS,QAAAA,EACAC,KAAAA,EACAC,MAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,aAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,yBAAAA,EACAC,aAAAA,GACD,EACAhB,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEAgB,OACEpB,EACAS,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAmC,CAEnC,OAAO,KAAKtB,YACTwB,OAAO,CACNpB,WAAAA,EACAS,QAAAA,EACAC,KAAAA,EACAC,MAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,aAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,yBAAAA,EACD,EACAf,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEAiB,sBAAsBrB,EAAkB,CACtC,IAAMC,EAAM,IAAIqB,GAA6B,CAAEtB,WAAAA,CAAU,CAAE,EAC3D,OAAO,KAAKJ,YAAYyB,sBAAsBpB,CAAG,EAAEE,KACjDC,EAAKmB,IAAO,CACVC,YAAaD,EAAEE,oBAAsB,EACrCC,SAAUC,EAAgBJ,EAAEG,QAAQ,GACpC,CAAC,CAEP,CAEAE,cAAc5B,EAAkB,CAC9B,IAAMC,EAAM,IAAI4B,GAAqB,CAAE7B,WAAAA,CAAU,CAAE,EACnD,OAAO,KAAKJ,YAAYgC,cAAc3B,CAAG,CAC3C,CAEQ6B,oBAAoBC,EAAuB,CACjD,OAAQA,EAAM,CACZ,KAAKjD,GAAgBkB,WACnB,OAAOgC,GAA6BC,6CACtC,KAAKnD,GAAgBmC,YACnB,OAAOe,GAA6BE,8CACtC,KAAKpD,GAAgBkC,YACnB,OAAOgB,GAA6BG,8CACtC,KAAKrD,GAAgBgC,aACnB,OAAOkB,GAA6BI,+CACtC,KAAKtD,GAAgB8B,QACnB,OAAOoB,GAA6BK,yCACtC,KAAKvD,GAAgB6B,MACnB,OAAOqB,GAA6BM,uCACtC,KAAKxD,GAAgByD,QACnB,OAAOP,GAA6BQ,yCACtC,KAAK1D,GAAgB2D,QACnB,OAAOT,GAA6BU,yCACtC,QACE,OAAOV,GAA6BC,4CACxC,CACF,CAEQU,mBAAmBC,EAA4B,CACrD,OAAQA,EAAa,CACnB,KAAKC,GAAcC,UACjB,OAAOC,GAAiBC,yBAC1B,KAAKH,GAAcI,WACjB,OAAOF,GAAiBG,0BAC1B,QACE,OAAOH,GAAiBC,wBAC5B,CACF,CAEAG,OACEC,EACArB,EACAa,EACAS,EAA2C,CAE3C,OAAO,KAAKzD,YACTuD,OAAO,CACNC,WAAYA,EACZrB,OAAQ,KAAKD,oBAAoBC,CAAM,EACvCa,cAAe,KAAKD,mBAAmBC,CAAa,EACpDS,cAAe,IAAIC,EAAoBD,CAAa,EACrD,EACAlD,KACCC,EACGmB,GACC,IAAIgC,EACFhC,EAAEiC,UAAUpD,IAAKqD,GAAMnD,GAAgBmD,CAAC,CAAC,EACzClC,EAAEmC,eAAeC,WACjBpC,EAAEmC,eAAeE,OAAO,CACzB,CACJ,CAEP,CAEAC,oBAAoB7D,EAAoB8D,EAAyB,CAC/D,OAAO,KAAKlE,YACTiE,oBAAoB,CACnB7D,WAAYA,EACZ+D,uBAAwBD,EACzB,EACA3D,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEA4D,sBAAsBhE,EAAoBiE,EAA2B,CACnE,OAAO,KAAKrE,YACToE,sBAAsB,CACrBhE,WAAAA,EACAiE,mBAAAA,EACD,EACA9D,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEA8D,YAAY3C,EAA8B,CACxC,IAAM4C,EAAc,aAAa5C,EAAE6C,QAAQ,GAC3C,OAAO,KAAKtE,KACTC,IAAI,KAAKF,YAAYwE,eAAiB,iBAAmBF,EAAa,KAAKG,WAAU,CAAE,EACvFnE,KAAKoE,EAAWC,EAAc,CAAC,CACpC,CAEAC,6BAA6BzE,EAAoB0E,EAAkC,CACjF,OAAO,KAAK9E,YACT6E,6BAA6B,CAC5BzE,WAAYA,EACZ0E,0BAA2BA,EAC5B,EACAvE,KAAKC,EAAKuE,GAAaA,EAASC,EAAE,CAAC,CACxC,CAEAC,sBAAsB7E,EAAoB8E,EAAiB,CACzD,OAAO,KAAKlF,YACTiF,sBAAsB,CACrB7E,WAAYA,EACZ8E,UAAWA,EACZ,EACA3E,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEA2E,mBAAmB/E,EAAoB8E,EAAmBE,EAAc,CACtE,OAAO,KAAKpF,YACTmF,mBAAmB,CAClB/E,WAAAA,EACA8E,UAAAA,EACAE,OAAAA,EACD,EACA7E,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEA6E,6BAA6BjF,EAAoB8E,EAAiB,CAChE,OAAO,KAAKlF,YACTqF,6BAA6B,CAC5BjF,WAAYA,EACZ8E,UAAWA,EACZ,EACA3E,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEQkE,YAAU,CAChB,MAAO,CACLY,aAAc,OACdC,gBAAiB,GAErB,CAEAC,sBAAsBpF,EAAoBqF,EAAmB,CAC3D,OAAO,KAAKzF,YACT0F,4BACC,IAAIC,GAAmC,CACrCvF,WAAAA,EACAqF,YAAAA,EACD,CAAC,EAEHlF,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEAoF,6BAA6BxF,EAAkB,CAC7C,IAAMmE,EAAc,eAAenE,CAAU,GAC7C,OAAO,KAAKF,KACTC,IAAI,KAAKF,YAAYwE,eAAiB,mCAAqCF,EAAa,KAAKG,WAAU,CAAE,EACzGnE,KAAKsF,GAAK,EAAIlB,EAAWC,EAAc,CAAC,CAC7C,CAEAkB,6BACE1F,EACA2F,EAAwB,CAExB,IAAMC,EAAU,IAAIC,GAAoC,CACtD7F,WAAAA,EACA2F,eAAAA,EACD,EACD,OAAO,KAAK/F,YAAY8F,6BAA6BE,CAAO,EAAEzF,KAC5DC,EAAKC,GAA8C,CACjD,IAAMyF,EAAY,IAAIC,IACtBJ,OAAAA,EAAeK,QAASC,GAAW,CACjCH,EAAUI,IAAID,EAASE,GAA2B9F,EAAK+F,qBAAqBH,CAAO,CAAC,CAAC,CACvF,CAAC,EACMH,CACT,CAAC,CAAC,CAEN,CAEAO,0BACErG,EACAsG,EACAC,EACAC,EAA+B,CAE/B,IAAMZ,EAAU,IAAIa,GAAiC,CACnDzG,WAAAA,EACAsG,cAAAA,EACAC,aAAAA,EACAC,uBAAAA,EACD,EACD,OAAO,KAAK5G,YAAYyG,0BAA0BT,CAAO,EAAEzF,KAAKC,EAAI,IAAM,IAAI,CAAC,CACjF,CAEAsG,iBAAiB1G,EAAkB,CACjC,OAAO,KAAKJ,YACT8G,iBACC,IAAIC,GAAwB,CAC1B3G,WAAAA,EACD,CAAC,EAEHG,KAAKC,EAAKC,GAASuG,GAAqBvG,CAAI,CAAC,CAAC,CACnD,CAEAwG,gBAAgB7G,EAAoB8G,EAAgB,CAClD,OAAO,KAAKlH,YACTiH,gBACC,IAAIE,GAAuB,CACzB/G,WAAAA,EACA8G,SAAAA,EACD,CAAC,EAEH3G,KAAKC,EAAKC,GAAS2G,GAAoB3G,EAAK4G,MAAM,CAAC,CAAC,CACzD,CAEAC,kBAAkBlH,EAAoBmH,EAAS,GAAIC,EAAW,GAAE,CAC9D,OAAO,KAAKxH,YACTsH,kBACC,IAAIG,GAAyB,CAC3BrH,WAAYA,EACZqD,cAAe,IAAIC,EAAoB,CAAE6D,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,CAAC,EAEHjH,KACCC,EAAKC,GAAmC,CACtC,IAAMiH,GAAiBjH,EAAKkH,SAAW,CAAA,GAAInH,IAAK6G,GAAWD,GAAoBC,CAAM,CAAC,EACtF,OAAO,IAAI1D,EAAc+D,EAAejH,EAAKqD,eAAeC,WAAYtD,EAAKqD,eAAeE,OAAO,CACrG,CAAC,CAAC,CAER,CAQA4D,yCACExH,EACAsG,EACAmB,EAAoE,CAEpE,OAAO,KAAK7H,YAAY4H,yCACtB,IAAIE,GAAgD,CAClD1H,WAAAA,EACAsG,cAAAA,EACAmB,6BAA8BE,GAAkCF,CAA4B,EAC5FG,UAAW,CAAEC,MAAOC,OAAOC,KAAKN,GAAgC,CAAA,CAAE,CAAC,EACpE,CAAC,CAEN,CAWAO,gBACEhI,EACAiI,EACAC,EACAC,EACA5B,EAAqB,CAErB,OAAO,KAAK3G,YAAYoI,gBAAgB,CACtChI,WAAAA,EACAiI,WAAAA,EACAC,cAAAA,EACAC,YAAAA,EACA5B,aAAAA,EACD,CACH,CAOA6B,aAAaC,EAAU,CACrB,OAAO,KAAKzI,YAAYwI,aAAa,CAAEC,GAAAA,CAAE,CAAE,CAC7C,CAOAC,UAAUD,EAAU,CAClB,OAAO,KAAKvI,KACTC,IAAI,KAAKF,YAAYwE,eAAiB,8BAA8BgE,CAAE,GAAI,KAAK/D,WAAU,CAAE,EAC3FnE,KAAKoE,EAAWC,EAAc,CAAC,CACpC,CAEA+D,wBAAwBvI,EAAkB,CACxC,OAAO,KAAKJ,YAAY2I,wBAAwB,CAAEvI,WAAAA,CAAU,CAAE,EAAEG,KAAKC,EAAKC,GAASA,EAAKmI,OAAO,CAAC,CAClG,CAEAC,6BAA6BzI,EAAoB0I,EAAiC,CAChF,OAAO,KAAK9I,YACT6I,6BAA6B,CAC5BzI,WAAAA,EACA0I,0BAAAA,EACD,EACAvI,KAAKC,EAAI,IAAM,IAAI,CAAC,CACzB,CAEAuI,6BAA6B3I,EAAkB,CAC7C,OAAO,KAAKJ,YACT+I,6BAA6B,CAC5B3I,WAAAA,EACD,EACAG,KACCC,EAAKC,IACI,CACLqI,0BAA2BrI,EAAKqI,0BAChCE,kBAAmBvI,EAAKuI,mBAE3B,CAAC,CAER,CAEAC,wBAAwB7I,EAAkB,CACxC,OAAO,KAAKJ,YACTiJ,wBAAwB,CACvB7I,WAAAA,EACD,EACAG,KAAKC,EAAI,IAAM,IAAI,CAAC,CACzB,iDAtZWrB,GAAe+J,EAAAC,EAAA,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,CAAA,CAAA,CAAA,CAAA,iCAAflK,EAAemK,QAAfnK,EAAeoK,UAAAC,WADF,MAAM,CAAA,CAAA,SACnBrK,CAAe,GAAA,IClE5B,IAAAsK,GAAAC,EAAA,KAAAC,IASAC,KACAC,OCRA,IAAAC,GAAAC,EAAA,QCsBA,SAASC,GAAcC,EAAoBC,EAAmB,CAC5D,GAAI,CAACD,GAAc,CAACC,EAClB,MAAO,GAET,IAAMC,EAAM,IAAIC,KACVC,EAAcF,EAAIG,YAAW,EAC7BC,EAAeJ,EAAIK,SAAQ,EAAK,EACtC,OAAOP,EAAaI,GAAgBJ,IAAeI,GAAeH,EAAcK,CAClF,CAEM,SAAUE,GAA4BC,EAA+B,CACzE,OAAQA,EAAcC,KAAI,CACxB,KAAKC,EAAqBC,yBAA0B,CAClD,IAAMC,EAAUJ,EAAcK,KAAOC,GAA6BN,EAAcK,IAAI,EAAIE,OACxF,MAAO,CACLN,KAAMO,GAAkBC,KACxBL,QAAAA,EACAM,QAASV,EAAcU,SAAW,GAClCC,QAASP,EAAUd,GAAcc,EAAQb,WAAYa,EAAQZ,WAAW,EAAI,GAEhF,CACA,KAAKU,EAAqBU,8BACxB,MAAO,CACLX,KAAMO,GAAkBK,UACxBT,QAASJ,EAAcc,SACvBJ,QAASV,EAAcU,SAAW,GAClCC,QAAS,IAGb,KAAKT,EAAqBa,+BACxB,MAAO,CACLd,KAAMO,GAAkBQ,WACxBZ,QAASJ,EAAciB,UACvBP,QAASV,EAAcU,SAAW,GAClCC,QAAS,IAGb,QACE,MAAO,CACLV,KAAMO,GAAkBU,MACxBR,QAASV,EAAcU,SAAW,GAClCC,QAAS,GAEf,CACF,CAnEA,IAAAQ,GAAAC,EAAA,KAAAC,IACAC,KACAC,OCHA,IAeaC,GAfbC,GAAAC,EAAA,KAEAC,IACAC,IASAC,KACAC,aAEaN,IAAoB,IAAA,CAA3B,MAAOA,CAAoB,CAC/BO,YAAoBC,EAAmC,CAAnC,KAAAA,WAAAA,CAAsC,CAM1DC,iBAAiBC,EAAoBC,EAAkB,CACrD,IAAMC,EAAM,IAAIC,GAAwB,CACtCH,WAAAA,EACAC,WAAAA,EACD,EACD,OAAO,KAAKH,WAAWC,iBAAiBG,CAAG,EAAEE,KAC3CC,EAAKC,IACKA,GAAQA,EAAKC,YAAcD,EAAKC,YAAc,CAAA,GAAIF,IAAKG,GAAMC,GAA6BD,CAAC,CAAC,CACrG,CAAC,CAEN,CAEAE,KAAKV,EAAoBC,EAAkB,CACzC,IAAMC,EAAM,IAAIS,GAA0B,CACxCX,WAAAA,EACAC,WAAAA,EACD,EACD,OAAO,KAAKH,WAAWY,KAAKR,CAAG,EAAEE,KAC/BC,EAAKC,IACKA,GAAMM,gBAAkB,CAAA,GAAIP,IAAKQ,GAAMC,GAA4BD,CAAC,CAAC,CAC9E,CAAC,CAEN,CAEAE,oBAAoBf,EAAoBgB,EAAU,CAChD,IAAMd,EAAM,IAAIe,GAAyB,CACvCjB,WAAAA,EACAkB,OAAQF,EACT,EACD,OAAO,KAAKlB,WAAWqB,kBAAkBjB,CAAG,EAAEE,KAAKgB,GAAM,EAAI,CAAC,CAChE,CAEAC,sBAAsBrB,EAAoBC,EAAoBqB,EAAuB,CACnF,IAAMpB,EAAM,IAAIqB,GAA+B,CAC7CvB,WAAAA,EACAC,WAAAA,EACAqB,gBAAAA,EACD,EACD,OAAO,KAAKxB,WAAW0B,wBAAwBtB,CAAG,EAAEE,KAAKgB,GAAM,EAAI,CAAC,CACtE,iDA9CW9B,GAAoBmC,EAAAC,EAAA,CAAA,CAAA,CAAA,iCAApBpC,EAAoBqC,QAApBrC,EAAoBsC,UAAAC,WADP,MAAM,CAAA,CAAA,SACnBvC,CAAoB,GAAA,ICfjC,IAAAwC,GAAAC,EAAA,KAAAC,OCAA,IAAAC,GAAAC,EAAA,KAAAC,KACAF,OCwBA,IAAAG,GAAAC,EAAA,QCzBA,IAAAC,GAAAC,EAAA,KAAAC,OCCA,IAAAC,GAAAC,EAAA,KAAAD,KAEAE,OCHA,IAAAC,GAAAC,EAAA,QCCA,IAAAC,GAAAC,EAAA,QCDA,IAAAC,GAAAC,EAAA,KAAAC,KACAF,OCDA,IAAAG,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCAA,IAAaC,GACAC,GADbC,GAAAC,EAAA,KAAaH,GAAsB,KACtBC,GAA8B,0BCD3C,IAAAG,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCAA,IAYaC,GAZbC,GAAAC,EAAA,KAAAC,IAYaH,GAA0B,IAAII,GACzC,oGAAoG,ICbtG,IAAAC,GAAAC,GAAAC,EAAA,KAAAF,GAAA,CACE,uBAA0B,CACxB,wBAA2B,CACzB,YAAe,oEACf,WAAc,iGAChB,EACA,gBAAmB,CACjB,YAAe,oCACf,WAAc,0HAChB,EACA,mBAAsB,CACpB,YAAe,oDACf,WAAc,8GAChB,EACA,sBAAyB,CACvB,YAAe,+FACf,WAAc,kDAChB,EACA,aAAgB,CACd,YAAe,wBACf,WAAc,uCAChB,EACA,WAAc,CACZ,YAAe,sFACf,WAAc,+GAChB,EACA,iBAAoB,CAClB,YAAe,gCACf,WAAc,8DAChB,EACA,cAAiB,CACf,YAAe,+BACf,WAAc,sDAChB,EACA,cAAiB,CACf,YAAe,oGACf,WAAc,sDAChB,EACA,cAAiB,CACf,YAAe,oCACf,WAAc,kEAChB,EACA,mBAAsB,CACpB,YAAe,4DACf,WAAc,wDAChB,EACA,gBAAmB,CACjB,YAAe,6DACf,WAAc,uEAChB,EACA,eAAkB,CAChB,YAAe,wEACf,WAAc,sIAChB,EACA,YAAe,CACb,YAAe,+BACf,WAAc,sDAChB,EACA,oBAAuB,CACrB,YAAe,kCACf,WAAc,kEAChB,EACA,eAAkB,CAChB,YAAe,8BACf,WAAc,8DAChB,EACA,YAAe,CACb,YAAe,oGACf,WAAc,sDAChB,EACA,qBAAwB,CACtB,YAAe,gFACf,WAAc,0HAChB,EACA,UAAa,CACX,YAAe,mEACf,WAAc,qIAChB,EACA,mBAAsB,CACpB,YAAe,oGACf,WAAc,+GAChB,EACA,qBAAwB,CACtB,YAAe,mDACf,WAAc,2EAChB,EACA,+BAAkC,CAChC,YAAe,mDACf,WAAc,sPAChB,EACA,YAAe,CACb,YAAe,qGACf,WAAc,qEAChB,EACA,iBAAoB,CAClB,YAAe,uDACf,WAAc,yDAChB,EACA,iBAAoB,CAClB,YAAe,+CACf,WAAc,0FAChB,EACA,oBAAuB,CACrB,YAAe,0EACf,WAAc,0HAChB,EACA,gBAAmB,CACjB,YAAe,qGACf,WAAc,qEAChB,EACA,YAAe,CACb,YAAe,qEACf,WAAc,qIAChB,EACA,iBAAoB,CAClB,YAAe,mDACf,WAAc,gDAChB,EACA,gBAAmB,CACjB,YAAe,oDACf,WAAc,yJAChB,EACA,gCAAmC,CACjC,YAAe,iFACf,WAAc,wDAChB,EACA,uBAA0B,CACxB,YAAe,oDACf,WAAc,uEAChB,CACF,CACF,ICnIA,IAcaG,GAdbC,GAAAC,EAAA,KACAC,KACAC,KACAC,SAWaL,IAAiB,IAAA,CAAxB,MAAOA,CAAiB,iDAAjBA,EAAiB,CAAA,gCAAjBA,CAAiB,CAAA,CAAA,oCAP1BM,GACAC,GAAcC,SAAS,CACrBC,cAAe,iBACfC,gBAAiBC,GAClB,CAAC,CAAA,CAAA,CAAA,SAGOX,CAAiB,GAAA,ICd9B,IAAAY,GAAAC,EAAA,KAAAC,OCAA,IAAAC,GAAAC,EAAA,KAAAC,IAkIAC,KAEAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCvFM,SAAUC,GAAeC,EAAmB,CAChD,GAAKA,EAGL,MAAO,CACLC,GAAID,EAAQC,IAAM,GAClBC,UAAWF,EAAQE,WAAa,GAChCC,OAAQC,GAAqBJ,EAAQG,MAAM,EAC3CE,OAAQL,EAAQK,QAAU,EAC1BC,QAASN,EAAQM,QACjBC,aAAcP,EAAQO,aACtBC,SAAUC,GAAuBT,EAAQQ,QAAQ,EACjDE,gBAAiBC,GAA8BX,EAAQU,eAAe,EACtEE,mBAAoBZ,EAAQY,oBAAsB,GAClDC,OAAQb,EAAQa,QAAU,GAC1BC,IAAKd,EAAQc,IACbC,gBAAiBf,EAAQe,gBACzBC,YAAahB,EAAQiB,oBAAsB,GAC3CC,cAAelB,EAAQmB,sBAAwBC,GAA+BC,oCAC9EC,WAAYtB,EAAQsB,YAAc,GAClCC,YAAavB,EAAQwB,oBAAsB,GAE/C,CAEA,SAASf,GAAuBD,EAA4B,CAC1D,GAAKA,EAGL,MAAO,CACLiB,sBAAuBC,GAAYlB,EAASiB,qBAAqB,EACjEE,kBAAmBD,GAAYlB,EAASmB,iBAAiB,EACzDC,sBAAuBF,GAAYlB,EAASoB,qBAAqB,EACjEC,QAASH,GAAYlB,EAASqB,OAAO,EACrCC,kBAAmBJ,GAAYlB,EAASsB,iBAAiB,EACzDC,eAAgBvB,EAASuB,gBAAkB,GAC3CC,qBAAsBxB,EAASwB,sBAAwB,GACvDC,aAAczB,EAASyB,cAAgB,GACvCC,mBAAoB1B,EAAS0B,oBAAsB,GAEvD,CAEA,SAASR,GAAYS,EAAa,CAChC,GAAKA,EAGL,MAAO,CACLlC,GAAIkC,EAAKlC,IAAM,GACfK,QAAS6B,EAAK7B,QACd8B,SAAUD,EAAKC,UAAY,GAC3BC,IAAKF,EAAKE,KAAO,GAErB,CAEA,SAAS1B,GAA8BH,EAAmC,CACxE,GAAI,CAACA,EACH,OAEF,IAAM8B,EAAW,IAAIC,KAAK,CAAE,EAC5B,MAAO,CACLC,MAAOC,GAAQjC,EAASgC,MAAOF,CAAQ,EAAII,OAAYlC,EAASgC,MAChEG,YAAanC,EAASmC,YACtBC,QAASpC,EAASoC,QAClBC,gBAAiBrC,EAASqC,gBAE9B,CAEM,SAAUzC,GAAqBD,EAAwB,CAC3D,OAAQA,EAAM,CACZ,KAAK2C,GAAiBC,sCACpB,OAAOC,GAAcC,uBACvB,KAAKH,GAAiBI,oCACpB,OAAOF,GAAcG,qBACvB,KAAKL,GAAiBM,8BACpB,OAAOJ,GAAcK,eACvB,KAAKP,GAAiBQ,8BACpB,OAAON,GAAcO,eACvB,KAAKT,GAAiBU,4BACpB,OAAOR,GAAcS,aACvB,KAAKX,GAAiBY,+BACpB,OAAOV,GAAcW,gBACvB,KAAKb,GAAiBc,oBACpB,OAAOZ,GAAca,KACvB,KAAKf,GAAiBgB,mBACpB,OAAOd,GAAce,IACvB,QACE,MACJ,CACF,CAvKA,IAUYf,GAVZgB,GAAAC,EAAA,KAAAC,IAOAC,KACAC,KAEYpB,GAAZ,SAAYA,EAAa,CACvBA,OAAAA,EAAA,uBAAA,yBACAA,EAAA,qBAAA,uBACAA,EAAA,eAAA,iBACAA,EAAA,eAAA,yBACAA,EAAA,aAAA,uBACAA,EAAA,gBAAA,kBACAA,EAAA,KAAA,eACAA,EAAA,IAAA,cACAA,EAAA,QAAA,UATUA,CAUZ,EAVYA,IAAa,CAAA,CAAA,ICVzB,IA4CaqB,GA5CbC,GAAAC,EAAA,KAEAC,IACAC,KACAC,IAoBAC,KACAC,KACAC,KAQAC,KACAC,KACAC,aAQaX,IAAc,IAAA,CAArB,MAAOA,CAAc,CACzBY,YAAoBC,EAA6B,CAA7B,KAAAA,WAAAA,CAAgC,CAEpDC,aAAaC,EAA6BC,EAAgBC,EAAgB,CACxE,IAAMC,EAAM,IAAIC,GAAmB,CACjCJ,QAASA,EACTK,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKJ,WAAWS,KAAKJ,CAAG,EAAEK,KAC/BC,EAAKC,GAAY,CACf,IAAMC,GAAYD,EAASC,UAAY,CAAA,GAAIF,IAAKG,GAAYC,GAAeD,CAAO,CAAC,EACnF,OAAO,IAAIE,EAAcH,EAAUD,EAASK,eAAeC,WAAYN,EAASK,eAAeE,OAAO,CACxG,CAAC,CAAC,CAEN,CAEAC,qBAAqBC,EAAoBC,EAAkB,CACzD,IAAMjB,EAAM,IAAIkB,GAA4B,CAC1CF,WAAYA,EACZC,WAAYA,EACb,EACD,OAAO,KAAKtB,WAAWwB,cAAcnB,CAAG,EAAEK,KACxCC,EAAKC,IACI,CACLa,mBAAoBb,EAASa,mBAC7BC,SAAUd,EAASc,UAEtB,CAAC,CAEN,CAEAC,UAAUN,EAAoBO,EAAiB,CAC7C,OAAO,KAAK5B,WACT2B,UAAU,CACTN,WAAYA,EACZO,UAAWA,EACZ,EACAlB,KAAKC,EAAKkB,GAASC,GAAqBD,EAAKf,OAAO,CAAC,CAAC,CAC3D,CAEAiB,WACEV,EACAlB,EAAS,GACTC,EAAW,GACX4B,EACAV,EACAW,EACAC,EAAqB,CAErB,IAAMC,EAAW,IAAIC,KAAK,sBAAsB,EAAEC,QAAO,EACnDnC,EACJ,IAAIoC,GAAmD,CACrDN,SAAUA,GAAY,GACvB,EACH,OAAMC,GAAkBA,EAAeI,QAAO,IAAOF,IACnDjC,EAAQ+B,eAAiBA,GAErBC,GAAkBA,EAAeG,QAAO,IAAOF,IACnDjC,EAAQgC,eAAiBA,GAEpB,KAAKlC,WACT+B,WACC,IAAIQ,GAA0B,CAC5BlB,WAAYA,EACZnB,QAASA,EACTK,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,CAAC,EAEHM,KACCC,EAAKkB,GAAoC,CACvC,IAAMW,GAAkBX,EAAKhB,UAAY,CAAA,GAAIF,IAAKG,IAAYgB,GAAqBhB,EAAO,CAAC,EAC3F,OAAO,IAAIE,EAAcwB,EAAgBX,EAAKZ,eAAeC,WAAYW,EAAKZ,eAAeE,OAAO,CACtG,CAAC,CAAC,CAER,CAEAsB,uBACEpB,EACAlB,EAAS,GACTC,EAAW,GACX4B,EACAC,EACAC,EACAQ,EACApB,EACAqB,EAAkB,CAElB,IAAMR,EAAW,IAAIC,KAAK,sBAAsB,EAAEC,QAAO,EACnDnC,EACJ,IAAI0C,GAA2D,CAC7DZ,SAAUA,GAAY,GACvB,EACH,OAAMC,GAAkBA,EAAeI,QAAO,IAAOF,IACnDjC,EAAQ+B,eAAiBA,GAErBC,GAAkBA,EAAeG,QAAO,IAAOF,IACnDjC,EAAQgC,eAAiBA,IAEvBQ,IAAiBG,QAAaH,KAChCxC,EAAQ4C,KAAOC,GAAsBC,iCAEnC1B,IACFpB,EAAQoB,WAAaA,GAEnBqB,IACFzC,EAAQyC,UAAYA,GAEf,KAAK3C,WACTyC,uBACC,IAAIQ,GAA8B,CAChC5B,WAAYA,EACZnB,QAASA,EACTK,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,CAAC,EAEHM,KACCC,EAAKkB,IAAwC,CAC3C,IAAMqB,IAAsBrB,GAAKsB,cAAgB,CAAA,GAAIxC,IAAKyC,IACxDC,GAAyBD,EAAW,CAAC,EAEvC,OAAO,IAAIpC,EAAckC,GAAoBrB,GAAKZ,eAAeC,WAAYW,GAAKZ,eAAeE,OAAO,CAC1G,CAAC,CAAC,CAER,CAEAmC,iBAAiBjC,EAAoBkC,EAAiB,CACpD,OAAO,KAAKvD,WACTsD,iBAAiB,CAChBjC,WAAYA,EACZkC,UAAWA,EACZ,EACA7C,KAAKC,EAAKkB,GAAS2B,GAAe3B,EAAK4B,OAAO,CAAC,CAAC,CACrD,CAEAC,mBACErC,EACAlB,EAAS,GACTC,EAAW,GACXuD,EAAyB,CAEzB,IAAMzD,EAAU,IAAI0D,GAAmD,CACrED,OAAQA,EACT,EACD,OAAO,KAAK3D,WACT0D,mBACC,IAAIG,GAA0B,CAC5BxC,WAAYA,EACZd,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC3DF,QAASA,EACV,CAAC,EAEHQ,KACCC,EAAKkB,GAAoC,CACvC,IAAMW,GAAkBX,GAAMiC,UAAY,CAAA,GAAInD,IAAKoD,GAAMP,GAAeO,CAAC,CAAC,EAC1E,OAAO,IAAI/C,EACTwB,EACAX,GAAMZ,eAAeC,YAAc,GACnCW,GAAMZ,eAAeE,SAAW,EAAK,CAEzC,CAAC,CAAC,CAER,CAEA6C,aAAa3C,EAAkB,CAC7B,IAAMhB,EAAM,IAAI4D,GAAoB,CAAE5C,WAAAA,CAAU,CAAE,EAClD,OAAO,KAAKrB,WAAWgE,aAAa3D,CAAG,EAAEK,KAAKC,EAAKuD,GAA4BC,GAAsBD,CAAC,CAAC,CAAC,CAC1G,CAEAE,sBAAsB/C,EAAkB,CACtC,IAAMhB,EAAM,IAAIgE,GAA6B,CAAEhD,WAAAA,CAAU,CAAE,EAC3D,OAAO,KAAKrB,WAAWoE,sBAAsB/D,CAAG,EAAEK,KAAKC,EAAKkB,GAASA,EAAKyC,OAAO,CAAC,CACpF,CAEAC,wBACElD,EACAmD,EACAC,EACAC,EAA4B,CAE5B,IAAMC,EAAyBC,GAA4BF,GAAOG,GAAuBC,OAAO,EAChG,OAAO,KAAK9E,WACTuE,wBAAwB,CACvBlD,WAAAA,EACAmD,WAAAA,EACAC,WAAAA,EACAE,uBAAAA,EACD,EACAjE,KAAKC,EAAKkB,GAASA,EAAKkD,SAAS,CAAC,CACvC,CAEAC,kBAAkB3D,EAAkB,CAClC,OAAO,KAAKrB,WAAWgF,kBAAkB,CAAE3D,WAAAA,CAAU,CAAE,EAAEX,KACvDC,EAAKkB,IACI,CACLoD,oBAAqBpD,EAAKoD,oBAC1BC,gBAAiBrD,EAAKqD,gBACtBP,uBAAwBQ,GAA8BtD,EAAK8C,sBAAsB,EACjFS,YAAavD,EAAKuD,aAErB,CAAC,CAEN,CAEAC,qBAAqBhE,EAAoB4D,EAA2B,CAClE,OAAO,KAAKjF,WAAWqF,qBAAqB,CAAEhE,WAAAA,EAAY4D,oBAAAA,CAAmB,CAAE,EAAEvE,KAAK4E,GAAM,IAAI,CAAC,CACnG,CAEAC,eACElE,EACAkC,EACA3B,EACA4D,EACAC,EAAiC,CAEjC,OAAO,KAAKzF,WACTuF,eAAe,CACdlE,WAAYA,EACZkC,UAAWA,EACX3B,UAAWA,EACX6D,SAAU,CACRC,eAAgBD,GAAUC,eAC1BC,qBAAsBF,GAAUE,qBAChCC,aAAcH,GAAUG,aACxBC,mBAAoBJ,GAAUI,mBAC9BC,wBAAyBL,GAAUK,wBACnCC,4BAA6BN,GAAUM,4BACvCC,cAAeP,GAAUO,cACzBC,4BAA6BR,GAAUQ,4BACvCC,oBAAqBT,GAAUS,qBAEjCV,OAAQA,EACT,EACA9E,KAAK4E,GAAM,IAAI,CAAC,CACrB,CAEAa,aAAa9E,EAAoBkC,EAAiB,CAChD,OAAO,KAAKvD,WACToG,mBAAmB,CAClB/E,WAAYA,EACZkC,UAAWA,EACZ,EACA7C,KAAK4E,GAAM,IAAI,CAAC,CACrB,CAEAe,8BACEC,EAAqE,CAErE,IAAIC,EACJ,OAAID,aAAuBE,GACzBD,EAAU,IAAIE,GAAqC,CAAEpF,WAAYiF,EAAYjF,UAAU,CAAE,EAEzFkF,EAAU,IAAIE,GAAqC,CAAErB,YAAakB,EAAYlB,WAAW,CAAE,EAEtF,KAAKpF,WAAWqG,8BAA8BE,CAAO,EAAE7F,KAAKC,EAAKkB,GAASA,EAAK6E,WAAW,CAAC,CACpG,CAEAC,aACEtF,EACAO,EACAgF,EACAC,EAA0B,CAE1B,OAAO,KAAK7G,WACT2G,aAAa,CAAEtF,WAAAA,EAAYO,UAAAA,EAAWgF,OAAAA,EAAQC,OAAQC,GAAwBD,CAAM,CAAC,CAAE,EACvFnG,KAAKC,EAAKkB,GAASC,GAAqBD,EAAKf,OAAO,CAAC,CAAC,CAC3D,iDAzQW3B,GAAc4H,EAAAC,EAAA,CAAA,CAAA,CAAA,iCAAd7H,EAAc8H,QAAd9H,EAAc+H,UAAAC,WADD,MAAM,CAAA,CAAA,SACnBhI,CAAc,GAAA,IC5C3B,IAAAiI,GAAAC,EAAA,KAAAC,OCkCM,SAAUC,GACdC,EACAC,EACAC,EACAC,EAAU,GACVC,EAAgB,GAChBC,EAAwE,GACxEC,EAAkB,GAAK,CAEvB,IAAIC,EAAQ,gBACRC,EACAC,EAAkBC,GAQtB,OANI,OAAOL,GAAkB,SAC3BG,EAAUH,EAEVG,EAAUH,IAAkB,GAAO,SAAW,OAGxCJ,EAAQ,CACd,IAAK,MACHO,EAAUH,EAAgB,gBAAkB,OAC5CI,EAAkBE,GAClB,KACJ,CAeA,GAbIX,IACEG,IACFH,EAAQY,GAAsBC,OAAOb,CAAK,CAAC,GAE7CO,EAAQE,EAAgBT,EAAOC,EAAUO,CAAO,EAC5CN,IACFK,EAAQ,GAAGA,CAAK,IAAIO,GAAuBZ,CAAgB,CAAC,IAE1DI,IACFC,EAAQ,eAAeA,CAAK,KAI5BH,EAAe,CACjB,GAAIJ,EAAQ,EACV,MAAO,gBAET,GAAIA,IAAU,EACZ,MAAO,MAEX,CACA,OAAIA,IAAU,EACLS,EAAgBT,EAAOC,EAAUO,CAAO,EAG1CD,CACT,CAEM,SAAUK,GAAsBG,EAAiB,CACrD,OAAKA,IAIAF,OAAOG,UAAUD,CAAS,IAC7BA,EAAYF,OAAOE,CAAS,EAC5BA,EAAYE,KAAKC,MAAMH,CAAS,GAE3BA,EAAY,IACrB,CAMM,SAAUD,GAAuBd,EAAc,CACnD,IAAImB,EAAc,GAClB,GAAInB,EACF,OAAQA,EAAMoB,YAAW,EAAE,CACzB,IAAK,OACL,IAAK,WACHD,EAAc,WACd,MACF,QACEA,EAAc,IAAIE,GAAa,EAAGC,UAAUtB,CAAK,CACrD,CAEF,OAAOmB,CACT,CAEA,SAAST,GAAkBV,EAAeC,EAAkBO,EAAe,CACzE,OAAKP,EAGI,IAAIsB,GAAa,OAAO,EAAED,UAAUtB,EAAOC,EAAUO,EAAS,OAAO,GAAK,GAF1E,IAAIgB,GAAY,OAAO,EAAEF,UAAUtB,EAAO,OAAO,GAAK,EAIjE,CAEA,SAASW,GAAcX,EAAeC,EAAkBO,EAAe,CACrE,IAAMD,GAAS,IAAIiB,GAAY,OAAO,EAAEF,UAAUtB,EAAO,OAAO,GAAK,IAAIyB,QAAQ,IAAK,GAAG,EACnFC,GAAkB,IAAIH,GAAa,OAAO,EAAED,UAAU,EAAGrB,EAAUO,EAAS,KAAK,GAAK,IAAImB,MAAM,GAAG,EAAE,CAAC,EAC5G,MAAO,GAAGpB,CAAK,IAAImB,CAAc,UACnC,CAnIA,IA4BYE,GA5BZC,GAAAC,EAAA,KAAAC,KA4BYH,GAAZ,SAAYA,EAA2B,CACrCA,OAAAA,EAAA,QAAA,WACAA,EAAA,OAAA,SACAA,EAAA,QAAA,UAHUA,CAIZ,EAJYA,IAA2B,CAAA,CAAA,IC5BvC,IAAaI,GAAbC,GAAAC,EAAA,KAAaF,GAAiCG,GAAmB,CAC/D,GAAIA,GAAWA,EAAQC,SAAS,wBAAwB,EAAG,CACzD,IAAMC,EAAkB,+DACxBF,EAAUA,EAAQG,QAAQD,EAAiB,EAAE,CAC/C,CACA,OAAOF,CACT,ICNA,IAOaI,GAPbC,GAAAC,EAAA,KACAC,SAMaH,IAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAC5CI,UAAUC,EAAiBC,EAA+C,CACxE,OAAIA,GAAWA,EAAQC,wBACdC,GAA8BH,CAAO,EAGvCA,CACT,iDAPWL,EAAiC,CAAA,sEAAjCA,EAAiCS,KAAA,GAAAC,WAAA,EAAA,CAAA,CAAA,SAAjCV,CAAiC,GAAA,ICP9C,IASaW,GATbC,GAAAC,EAAA,KAAAC,KAGAC,KACAC,aAKaL,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,CAC9BM,YAAoBC,EAAkC,CAAlC,KAAAA,iBAAAA,CAAqC,CAElDC,mBACLC,EACAC,EACAC,EACAC,EAAU,GACVC,EAAgB,GAChBC,EAAgB,GAChBC,EAAkB,GAAK,CAEvB,IAAIC,EAAyDF,IAAkB,GAAO,SAAW,OAC7FG,EACF,KAAKC,kBAAkBC,KAAK,IAAI,EAElC,OAAQT,EAAQ,CACd,IAAK,MACHM,EAAUF,EAAgB,gBAAkB,OAC5CG,EAAkB,KAAKG,cAAcD,KAAK,IAAI,EAC9C,KACJ,CACA,GAAIV,GAASA,EAAQ,EAAG,CACtB,IAAIY,EAAQC,OAAOb,CAAK,EACxB,OAAIG,IACFS,EAAQ,KAAKE,sBAAsBF,CAAK,GAEnCJ,EAAgBI,EAAOX,EAAUM,CAAO,EAAEQ,KAC/CC,GAAWC,GACLf,EACK,KAAKgB,uBAAuBhB,EAAkBe,CAAc,EAE9DE,GAAGF,CAAc,CACzB,EACDD,GAAWC,GACLX,EACK,KAAKR,iBAAiBsB,OAAO,uDAAwD,CAC1FR,MAAOK,EACR,EAEIE,GAAGF,CAAc,CACzB,CAAC,CAEN,CACA,GAAIb,EAAe,CACjB,GAAIJ,EAAQ,EACV,OAAO,KAAKF,iBAAiBsB,OAAO,kDAAkD,EAExF,GAAIpB,IAAU,EACZ,OAAO,KAAKF,iBAAiBsB,OAAO,yCAAyC,CAEjF,CACA,OAAIpB,IAAU,EACLQ,EAAgBR,EAAOC,EAAUM,CAAO,EAE1C,KAAKT,iBAAiBsB,OAAO,kDAAkD,CACxF,CAEQN,sBAAsBO,EAAiB,CAC7C,OAAKA,IAIAR,OAAOS,UAAUD,CAAS,IAC7BA,EAAYR,OAAOQ,CAAS,EAC5BA,EAAYE,KAAKC,MAAMH,CAAS,GAE3BA,EAAY,IACrB,CAEOH,uBAAuBO,EAAmBb,EAAc,CAC7D,IAAIc,EACJ,GAAID,EACF,OAAQA,EAAUE,YAAW,EAAE,CAC7B,IAAK,OACL,IAAK,WACHD,EAAc,KAAK5B,iBAAiBsB,OAAO,iEAAiE,EAC5G,MACF,IAAK,QACHM,EAAc,KAAK5B,iBAAiBsB,OAAO,8DAA8D,EACzG,MACF,IAAK,SACHM,EAAc,KAAK5B,iBAAiBsB,OAAO,+DAA+D,EAC1G,MACF,IAAK,UACHM,EAAc,KAAK5B,iBAAiBsB,OAAO,gEAAgE,EAC3G,MACF,IAAK,SACHM,EAAc,KAAK5B,iBAAiBsB,OAAO,+DAA+D,EAC1G,MACF,IAAK,QACHM,EAAc,KAAK5B,iBAAiBsB,OAAO,8DAA8D,EACzG,MACF,QACEM,EAAcP,GAAGM,CAAS,CAC9B,CAEF,OAAIb,EACKc,EAAYX,KAAKa,EAAKC,GAAM,GAAGjB,CAAK,IAAIiB,CAAC,EAAE,CAAC,GAAKV,GAAG,EAAE,EAExDO,CACT,CAEQjB,kBAAkBT,EAAeC,EAAkBM,EAAe,CACxE,OAAKN,EAGIkB,GAAG,IAAIW,GAAa,OAAO,EAAEC,UAAU/B,EAAOC,EAAUM,EAAS,OAAO,GAAK,EAAE,EAF/EY,GAAG,IAAIa,GAAY,OAAO,EAAED,UAAU/B,EAAO,OAAO,GAAK,EAAE,CAItE,CAEQW,cAAcX,EAAeC,EAAkBM,EAAe,CACpE,IAAMK,GAAS,IAAIoB,GAAY,OAAO,EAAED,UAAU/B,EAAO,OAAO,GAAK,IAAIiC,QAAQ,IAAK,GAAG,EACnFC,GAAkB,IAAIJ,GAAa,OAAO,EAAEC,UAAU,EAAG9B,EAAUM,EAAS,KAAK,GAAK,IAAI4B,MAAM,GAAG,EAAE,CAAC,EAC5G,OAAO,KAAKrC,iBAAiBsB,OAAO,4DAA6D,CAC/FR,MAAOA,EACPsB,eAAgBA,EACjB,CACH,CAEOE,mBAAiB,CACtB,OAAO,KAAKtC,iBAAiBsB,OAAO,8CAA8C,CACpF,iDA1HW7B,GAAmB8C,EAAAC,EAAA,CAAA,CAAA,CAAA,iCAAnB/C,EAAmBgD,QAAnBhD,EAAmBiD,SAAA,CAAA,CAAA,SAAnBjD,CAAmB,GAAA,ICThC,IAUakD,GAVbC,GAAAC,EAAA,cAUaF,IAAgB,IAAA,CAAvB,MAAOA,CAAgB,CAC3BG,YAAoBC,EAAwC,CAAxC,KAAAA,oBAAAA,CAA2C,CAC/DC,UACEC,EACAC,EACAC,EACAC,EAAU,GACVC,EAAgB,GAChBC,EAAgB,GAChBC,EAAkB,GAAK,CAEvB,OAAO,KAAKR,oBAAoBS,mBAC9BP,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,CAAe,CAEnB,iDApBWZ,GAAgBc,GAAAC,GAAA,EAAA,CAAA,CAAA,CAAA,+CAAhBf,EAAgBgB,KAAA,GAAAC,WAAA,EAAA,CAAA,CAAA,SAAhBjB,CAAgB,GAAA,ICV7B,IAAAkB,GAAAC,GAAAC,EAAA,KAAAF,GAAA,CACE,SAAY,CACV,KAAQ,CACN,OAAU,CACR,cAAiB,CACf,cAAiB,gBACjB,uBAA0B,wCAC1B,KAAQ,OACR,kBAAqB,wBACrB,UAAa,YACb,oBAAuB,CACrB,MAAS,QACT,SAAY,WACZ,MAAS,QACT,OAAU,SACV,MAAS,QACT,QAAW,UACX,KAAQ,OACR,OAAU,QACZ,CACF,CACF,CACF,CACF,CACF,ICxBA,IAsBaG,GAtBbC,GAAAC,EAAA,KACAC,KACAC,KACAC,KAEAC,KACAC,SAgBaP,IAAgB,IAAA,CAAvB,MAAOA,CAAgB,iDAAhBA,EAAgB,CAAA,gCAAhBA,CAAgB,CAAA,CAAA,qCAFhB,CAACQ,EAAmB,EAACC,QAAA,CAT9BC,GACAC,GACAC,GAAcC,SAAS,CACrBC,cAAe,uBACfC,gBAAiBA,GAClB,CAAC,CAAA,CAAA,CAAA,SAMOf,CAAgB,GAAA,ICtB7B,IAAWgB,GAmLAC,GAnLXC,GAAAC,EAAA,KAAWH,GAA+B,SAAUA,EAAiB,CAInE,OAAAA,EAAgB,cAAmB,gBAInCA,EAAgB,QAAa,UAI7BA,EAAgB,aAAkB,gBAIlCA,EAAgB,IAAS,MAIzBA,EAAgB,mBAAwB,sBAIxCA,EAAgB,uBAA4B,0BAI5CA,EAAgB,YAAiB,cAIjCA,EAAgB,gBAAqB,mBAIrCA,EAAgB,oBAAyB,uBAIzCA,EAAgB,UAAe,YAI/BA,EAAgB,WAAgB,aAIhCA,EAAgB,KAAU,OAI1BA,EAAgB,YAAiB,eAIjCA,EAAgB,KAAU,OAI1BA,EAAgB,QAAa,UAI7BA,EAAgB,MAAW,QAI3BA,EAAgB,KAAU,OAI1BA,EAAgB,SAAc,WAI9BA,EAAgB,gBAAqB,mBAIrCA,EAAgB,OAAY,SAI5BA,EAAgB,SAAc,WAI9BA,EAAgB,mBAAwB,sBAIxCA,EAAgB,sBAA2B,0BAI3CA,EAAgB,WAAgB,cAIhCA,EAAgB,QAAa,UAI7BA,EAAgB,WAAgB,aAIhCA,EAAgB,WAAgB,cAIhCA,EAAgB,YAAiB,eAIjCA,EAAgB,MAAW,QAI3BA,EAAgB,QAAa,UAI7BA,EAAgB,YAAiB,eAIjCA,EAAgB,OAAY,SAI5BA,EAAgB,SAAc,WAI9BA,EAAgB,SAAc,WAI9BA,EAAgB,mBAAwB,uBAIxCA,EAAgB,MAAW,QAI3BA,EAAgB,QAAa,UAI7BA,EAAgB,KAAU,OAI1BA,EAAgB,MAAW,QAI3BA,EAAgB,eAAoB,kBAIpCA,EAAgB,WAAgB,cAIhCA,EAAgB,KAAU,OAI1BA,EAAgB,OAAY,UAI5BA,EAAgB,SAAc,WACvBA,CACT,EAAEA,IAAmB,CAAC,CAAC,EACZC,GAA2B,SAAUA,EAAa,CAI3D,OAAAA,EAAY,MAAW,QAIvBA,EAAY,IAAS,MAIrBA,EAAY,SAAc,WAI1BA,EAAY,UAAe,YAI3BA,EAAY,SAAc,WAI1BA,EAAY,SAAc,WAI1BA,EAAY,QAAa,UAIzBA,EAAY,SAAc,WAI1BA,EAAY,OAAY,SAIxBA,EAAY,oBAAyB,sBAIrCA,EAAY,cAAmB,gBAI/BA,EAAY,iBAAsB,mBAIlCA,EAAY,MAAW,QAIvBA,EAAY,MAAW,QAIvBA,EAAY,cAAmB,gBAI/BA,EAAY,MAAW,QAIvBA,EAAY,OAAY,SAIxBA,EAAY,yBAA8B,2BAI1CA,EAAY,MAAW,QAIvBA,EAAY,SAAc,WAI1BA,EAAY,OAAY,SAIxBA,EAAY,eAAoB,iBAIhCA,EAAY,MAAW,QAIvBA,EAAY,SAAc,WAI1BA,EAAY,UAAe,YAI3BA,EAAY,KAAU,OAItBA,EAAY,UAAe,YAI3BA,EAAY,aAAkB,eAI9BA,EAAY,gBAAqB,kBAIjCA,EAAY,WAAgB,aAI5BA,EAAY,cAAmB,gBACxBA,CACT,EAAEA,IAAe,CAAC,CAAC,ICjTnB,IACMG,GADNC,GAAAC,EAAA,KAAAC,KAIAC,KAHMJ,GAAiBK,GAAe,iBAAkB,CACtD,IAAK,IAAM,OAAO,qBAAO,EAAE,KAAKC,GAAK,IAAIA,EAAE,iBAAmB,CAChE,CAAC,ICCD,SAAsBC,IAAwB,QAAAC,GAAA,sBAC5C,OAAKC,GAAUC,iBAAgB,GAGhB,MAAMC,GAAkBC,iBAAgB,GACzCC,UAAY,UAHjB,EAIX,GAEA,SAAsBC,IAA4B,QAAAN,GAAA,sBAChD,GAAI,CAACC,GAAUC,iBAAgB,EAC7B,QAEa,MAAMC,GAAkBI,mBAAkB,GAC9CF,UAAY,YACrB,MAAMF,GAAkBK,SAAQ,EAEpC,GAEA,SAAsBC,IAA2B,QAAAT,GAAA,sBAC1CC,GAAUC,iBAAgB,IAG/B,MAAMQ,GAAeC,KAAK,CACxBC,cAAeC,GAAgBC,gBAC/BC,UAAWC,GAAYC,IACxB,EACH,GA9BA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAA,OCFA,IAAAC,GAAAC,EAAA,KAAAC,OCaA,SAAsBC,IAAkB,QAAAC,GAAA,sBACtC,MAAMC,aAAaC,kBAAiB,CACtC,GAEA,SAAsBC,GAAYC,EAAkBC,EAAyC,QAAAL,GAAA,sBAC3F,IAAMM,EAAYC,GAAY,EAC9B,OAAOC,GAASF,EAAW,CAAEF,SAAUA,EAAUK,0BAA2BJ,CAAc,CAAE,CAC9F,GApBA,IAEaK,GAFbC,GAAAC,EAAA,KAAAC,KAEaH,GAAiB,CAC5BI,OAAQ,0CACRC,WAAY,yCACZC,YAAa,gDACbC,UAAW,yBACXC,cAAe,6CACfC,kBAAmB,eACnBC,MAAO,4CACPhB,SAAU,6FC2BZ,SAASiB,GAAUC,EAAQ,CACzB,MAAO,CAACC,GAAQD,CAAG,GAAKA,EAAME,WAAWF,CAAG,EAAI,GAAK,CACvD,CAvCA,IAWMG,GACAC,GACAC,GACAC,GACAC,GAGAC,GAOAC,GAEAC,GAQAT,GAMOU,GAmLAC,GA5NbC,GAAAC,EAAA,KACAC,SAUMZ,GAAc,wBACdC,GAAY,wEACZC,GAAkB,sCAClBC,GAAkB,iBAClBC,GACJ,uJAEIC,GACJ,+xBAMIC,GAAwB,CAAEO,wBAAyB,EAAI,EAEvDN,GAA0C,CAC9CO,GAAI,yEACJC,GAAI,4BAMAjB,GAAUkB,MAAMlB,UAAgBmB,GAAqBA,GAAK,OAAOA,EAAEC,QAAW,UAMvEV,IAAS,IAAA,CAAhB,MAAOA,CAAS,QACb,KAAAW,oCAAsC,sDAAuD,QACrF,KAAAC,sBAAwB,sEAAuE,QACvG,KAAAC,gBAAkB,oCAAqC,CAE9D,OAAOC,QAAQC,EAA2B,CACxC,OAAIA,EAAQC,OAAS,OAAOD,EAAQC,OAAU,UAAYD,EAAQC,MAAMC,MAAMzB,EAAW,GAGvFuB,EAAQC,OACR,OAAOD,EAAQC,OAAU,UACzBzB,YAAYwB,EAAQC,MAAQ,KAAKE,QAAQ,CAAC,CAAC,EAAI,IAAM,EAJ9C,KAQGH,EAAQC,MAGX,CAAEG,aAAc,EAAI,EAFpB,IAIX,CAEA,OAAOC,MAAML,EAA2B,CACtC,GAAIA,EAAQC,OAASD,EAAQC,MAAMC,MAAMxB,EAAS,EAChD,OAAO,KACF,GAAIsB,EAAQC,MACjB,MAAO,CAAEK,WAAY,EAAI,CAE7B,CAEA,OAAOC,YAAYP,EAA4B,CAC7C,GAAIA,EAAQC,OACKD,EAAQC,MACpBO,SAAQ,EACRC,MAAM,OAAO,EACbC,IAAKC,GAAUA,EAAMC,KAAI,CAAE,EACDC,OAAQF,GAAU,CAACA,EAAMT,MAAMrB,EAAW,CAAC,EACtDc,OAChB,MAAO,CAAEmB,aAAc,EAAI,CAGjC,CAEA,OAAOC,QAAQf,EAAwB,CACrC,OAAIA,EAAQC,OAAS,OAAOD,EAAQC,OAAS,UAAYD,EAAQC,MAAMC,MAAMrB,EAAW,EAC/E,KACEmB,EAAQC,MACV,CAAEa,aAAc,EAAI,EAEtB,IACT,CAEA,OAAOE,cAAchB,EAA2B,CAC9C,GAAIA,EAAQC,OAASD,EAAQC,MAAMC,MAAMpB,EAAkB,EACzD,OAAO,KACF,GAAIkB,EAAQC,MACjB,MAAO,CAAEgB,mBAAoB,EAAI,CAErC,CAGA,OAAOC,kBAAkBC,EAAmB,CAC1C,OAAQnB,GAAqD,CAC3D,IAAMC,EAAQD,EAAQC,MAChBmB,EAAepC,GAAoBmC,EAAYE,YAAW,CAAE,EAElE,OAAKD,GAIDnB,GAAS,CAACmB,EAAaE,KAAKrB,CAAK,EAC5B,CAAEsB,kBAAmB,EAAI,EAJzB,IAOX,CACF,CAEA,OAAOC,UAAUC,EAAeC,EAAa,CAC3C,OAAQ1B,GAAqD,CAC3D,IAAMC,EAAQD,EAAQC,MACtB,MAAI,CAAC5B,GAAU4B,CAAK,GAAMwB,IAAU,MAAQE,OAAO1B,CAAK,EAAIwB,GAAWC,IAAU,MAAQC,OAAO1B,CAAK,EAAIyB,EAChG,CAAEE,WAAY,EAAI,EAEpB,IACT,CACF,CAEA,OAAOC,gBAAgB7B,EAA2B,CAChD,OAAIA,EAAQC,OAASD,EAAQC,MAAMC,MAAMtB,EAAe,EAC/C,KACEoB,EAAQC,MACV,CAAE6B,gBAAiB,EAAI,EAEzB,IACT,CAEA,OAAOC,gBAAgBC,EAAqB,CAC1C,OAAQhC,GACFA,EAAQC,OAASD,EAAQC,MAAMN,QAAUqC,EACpC,KACEhC,EAAQC,MACV,CAAEgC,UAAW,EAAI,EAEnB,IAEX,CAEA,OAAOC,iBAAiBlC,EAA2B,CACjD,GAAIA,EAAQC,OAASD,EAAQC,MAAMC,MAAMvB,EAAe,EACtD,OAAO,KACF,GAAIqB,EAAQC,MACjB,MAAO,CAAEkC,iBAAkB,EAAI,CAEnC,CAEA,OAAOC,4BAA4BpC,EAA4B,CAC7D,GAAI,CAACA,EAAQC,MAAO,OAAO,KAE3B,IAAIoC,EAAiB,GACrB,QAAWC,KAAKtC,EAAQC,MACtB,GAAIoC,IAAmB,IAAMA,IAAmB,IAC1CC,IAAM,IACRD,GAAkBC,EAElBD,EAAiB,WAEVC,IAAM,KAAOD,EAAeA,EAAe1C,OAAS,CAAC,IAAM,IAAK,CAEzE,GADA0C,GAAkBC,EACdD,EAAeE,OAAOtD,EAAUY,qBAAqB,IAAM,GAC7D,OAAOd,GAETsD,EAAiB,EACnB,MACEA,GAAkBC,EAGtB,OAAID,IAAmB,GACdtD,GAEF,IACT,CAEA,OAAOyD,aAAaC,EAAuBC,EAAoB,CAY7D,MAXuC,CACrCC,SAAU,WACVV,UAAW,kBAAkBS,EAAeE,cAAc,GAC1DxC,aAAc,gBACdwB,WAAY,eACZd,aAAc,gBACdG,mBAAoB,uBACpB4B,eAAgB,0BAChBV,iBAAkB,qBAGNM,CAAa,CAC7B,QAEO,KAAAK,kBAAoB,IACjB9C,GACFA,EAAQC,OAAS,EACZ,CAAE8C,wBAAyB,EAAI,EAEjC,IAET,CAEF,OAAOC,YAAYhD,EAA2B,CAC5C,MAAI,CAACA,EAAQC,OAASgD,MAAMC,KAAKC,MAAMnD,EAAQC,KAAK,CAAC,EAC5C,CAAEmD,YAAa,EAAI,EAErB,IACT,SA3KWnE,CAAS,GAAA,EAmLTC,IAAoC,IAAA,CAA3C,MAAOA,CAAoC,CAC/CmE,SAASrD,EAAwB,CAC/B,OAAOf,GAAUmD,4BAA4BpC,CAA6B,CAC5E,iDAHWd,EAAoC,CAAA,gCAApCA,EAAoCoE,UAAA,CAAA,CAAA,GAAA,oCAAA,EAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,GAHpC,CAAC,CAAEC,QAASC,GAAeC,YAAa1E,EAAsC2E,MAAO,EAAI,CAAE,CAAC,CAAA,CAAA,CAAA,CAAA,SAG5F3E,CAAoC,GAAA,ICpN3C,SAAU4E,GAA4BC,EAAsB,CAChE,MAAI,CAACA,GAAKC,OAAOC,SAAW,CAACC,MAAMC,QAAQJ,EAAIC,MAAMC,OAAO,EACnD,CAAA,EAEFF,EAAIC,MAAMC,QACdG,OAAQC,GAAoCA,EAAO,OAAO,IAAMC,EAAgC,EAChGC,OAAO,CAACC,EAAuBC,IAA+C,CAC7E,IAAMC,EAAkBD,GAAMC,gBAAgBC,IAAKC,IAAwB,CACzEC,MAAOD,EAAGC,MACVC,YAAaF,EAAGE,aAChB,EACFN,OAAAA,EAAIO,KAAK,GAAGL,CAAe,EACpBF,CACT,EAAG,CAAA,CAAE,CACT,CApBA,IAAMF,GAANU,GAAAC,EAAA,KAAMX,GAAmC,8CCFzC,IAGYY,GAHZC,GAAAC,EAAA,KAGYF,GAAZ,SAAYA,EAAY,CACtBA,OAAAA,EAAA,SAAA,WACAA,EAAA,UAAA,YACAA,EAAA,OAAA,SAHUA,CAIZ,EAJYA,IAAY,CAAA,CAAA,ICkDlB,SAAUG,GAA0BC,EAA+B,CACvE,OAAQA,EAAW,CACjB,KAAKC,GAAmBC,UACtB,OAAOC,GAAaD,UACtB,KAAKD,GAAmBG,OACtB,OAAOD,GAAaC,OACtB,KAAKH,GAAmBI,SACtB,OAAOF,GAAaE,QACxB,CACA,OAAOF,GAAaE,QACtB,CAEM,SAAUC,GAAoBC,EAA4B,CAC9D,OAAOA,EAAMC,IAAKC,IACT,CACLC,SAAUD,EAAEE,SACZC,SAAUH,EAAEI,SACZC,MAAOL,EAAEK,OAAS,GAErB,CACH,CAEM,SAAUC,GAAaC,EAAoB,CAC/C,OAAQA,EAAS,CACf,KAAKC,GAAUC,QACb,OAAOC,GAA4BD,QACrC,KAAKD,GAAUG,QACb,OAAOD,GAA4BC,QACrC,KAAKH,GAAUI,OACb,OAAOF,GAA4BE,MACvC,CAEF,CAEM,SAAUC,GACdC,EACAC,EAA8B,CAE9B,MAAO,CACLC,YAAaF,EAAME,YACnBC,UAAWH,EAAMI,QACjBC,aAAc7B,GAA0ByB,EAAexB,WAAW,EAClEc,MAAOe,OACPC,MAAO,CAAA,EACPC,QAASR,EAAMS,YACfC,SAAUT,EAAeS,SACzBC,iBAAkBnB,GAAaS,EAAeR,SAAS,EACvDmB,aAAc7B,GAAoBkB,EAAeY,YAAY,EAC7DC,gBAAiBR,OACjBS,WAAYd,EAAec,WAC3BC,SAAUf,EAAee,SAE7B,CAzGA,IAAAC,GAAAC,EAAA,KAAAC,KAQAC,KACAC,OCTA,IAAAC,GAAAC,EAAA,KAAAC,KAEAC,OCFA,IAAaC,GAAbC,GAAAC,EAAA,KAAaF,GAA8BG,GAClCA,EAAIC,QAAQ,WAAY,EAAE,ICDnC,IAAAC,GAAAC,EAAA,KACAC,KAUAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAH,KAEAI,KACAC,OCpBA,IAAAC,GAAAC,EAAA,KAAAC","names":["ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","tmp_1_0","ctx_r0","svgIcon","undefined","ɵɵtextInterpolate1","currentIcon","ɵɵlistener","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","actionClick","emit","actionExternalLink","ɵɵsanitizeUrl","actionTitle","_r3","actionRouterLink","ɵɵtemplate","AlertComponent_Conditional_4_Conditional_1_Template","AlertComponent_Conditional_4_Conditional_2_Template","ɵɵclassProp","showClose","stackedView","ɵɵconditional","_r4","close","showAction","_r5","_r6","AlertComponent_Conditional_8_Conditional_1_Template","AlertComponent_Conditional_8_Conditional_2_Template","_r7","closeTitle","alertTypeIcons","AlertComponent","init_alert_component","__esmMin","init_common","init_core","init_icon","init_button","init_router","tip","info","warning","success","error","important","constructor","type","input","solidColor","transform","booleanAttribute","icon","size","showIcon","border","borderRadius","extendedBorder","output","alertClass","computed","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","AlertComponent_Conditional_1_Template","ɵɵprojection","AlertComponent_Conditional_4_Template","AlertComponent_Conditional_5_Template","AlertComponent_Conditional_8_Template","AlertComponent_Conditional_9_Template","CommonModule","NgClass","MatIconModule","MatIcon","RouterModule","RouterLink","MatButtonModule","MatAnchor","MatButton","MatIconButton","styles","MatSelect_Conditional_4_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ctx_r1","ɵɵnextContext","ɵɵadvance","ɵɵtextInterpolate","MatSelect_Conditional_5_Conditional_1_Template","ɵɵprojection","MatSelect_Conditional_5_Conditional_2_Template","MatSelect_Conditional_5_Template","ɵɵtemplate","ɵɵconditional","MatSelect_ng_template_10_Template","_r3","ɵɵgetCurrentView","ɵɵlistener","$event","ɵɵrestoreView","ɵɵresetView","ɵɵclassMapInterpolate1","ɵɵproperty","ɵɵattribute","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","overlay","_c0","_c1","_c2","_c3","matSelectAnimations","MAT_SELECT_SCROLL_STRATEGY","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","MAT_SELECT_TRIGGER","MatSelectChange","MatSelect","MatSelectTrigger","MatSelectModule","init_select","__esmMin","init_overlay","init_core","init_form_field","init_scrolling","init_a11y","init_bidi","init_collections","init_keycodes","init_forms","init_esm","init_operators","init_animations","init_common","trigger","transition","query","animateChild","state","style","animate","InjectionToken","inject","Overlay","source","value","ViewportRuler","ChangeDetectorRef","ElementRef","Directionality","_IdGenerator","MAT_FORM_FIELD","NgControl","LiveAnnouncer","Subject","index","option","panel","labelCount","_countGroupLabelsBeforeOption","element","_getOptionScrollPosition","o1","o2","Validators","fn","newValue","defer","options","startWith","switchMap","merge","EventEmitter","filter","o","map","defaultErrorStateMatcher","ErrorStateMatcher","parentForm","NgForm","parentFormGroup","FormGroupDirective","tabIndex","HostAttributeToken","_ErrorStateTracker","SelectionModel","distinctUntilChanged","takeUntil","event","newAriaLabelledby","ngControl","changes","modal","panelId","removeAriaReferencedId","addAriaReferencedId","isDisabled","selectedOptions","keyCode","isArrowKey","isOpenKey","manager","hasModifierKey","previouslySelectedOption","selectedOption","isTyping","hasDeselectedOptions","opt","previouslyFocusedIndex","take","currentValue","correspondingOption","preferredOrigin","CdkOverlayOrigin","ActiveDescendantKeyManager","changedOrDestroyed","isUserInput","wasSelected","a","b","fallbackValue","valueToEmit","firstEnabledOptionIndex","labelId","labelExpression","isOpen","ids","__ngFactoryType__","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","MatOption","MAT_OPTGROUP","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","CdkConnectedOverlay","ɵɵclassProp","booleanAttribute","numberAttribute","ɵɵProvidersFeature","MatFormFieldControl","MAT_OPTION_PARENT_COMPONENT","ɵɵInputTransformsFeature","ɵɵNgOnChangesFeature","_r1","ɵɵprojectionDef","ɵɵnamespaceSVG","ɵɵelement","fallbackOverlayOrigin_r4","ɵɵreference","NgClass","ɵɵdefineDirective","ɵɵdefineNgModule","ɵɵdefineInjector","OverlayModule","MatOptionModule","MatCommonModule","CdkScrollableModule","MatFormFieldModule","MatDivider","MatDividerModule","init_divider","__esmMin","init_core","init_coercion","value","coerceBooleanProperty","__ngFactoryType__","ɵɵdefineComponent","rf","ctx","ɵɵattribute","ɵɵclassProp","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule","AlertExtendedDirective","init_alert_extended_directive","__esmMin","selectors","hostAttrs","GalaxyAlertModule","init_alert_module","__esmMin","init_alert_component","AlertComponent","init_public_api","__esmMin","init_alert_module","init_alert","__esmMin","init_public_api","enumStringToValue$G","enumRef","value","enumStringToValue$F","enumStringToValue$E","enumStringToValue$D","enumStringToValue$C","enumStringToValue$B","enumStringToValue$A","enumStringToValue$z","enumStringToValue$y","enumStringToValue$x","enumStringToValue$v","enumStringToValue$u","enumStringToValue$q","enumStringToValue$p","enumStringToValue$o","enumStringToValue$l","enumStringToValue$k","enumStringToValue$j","enumStringToValue$h","enumStringToValue$g","enumStringToValue$f","enumStringToValue$e","enumStringToValue$a","enumStringToValue$8","enumStringToValue$5","enumStringToValue","CreditNoteType","Frequency","Currency","FeeAmountType","FeeType","BillingStrategy","ProductPricingType","SubscribeValidationStatus","Consumer","RenewalState","Source","SubscriptionStatus","DiscountType","ContractSubscriptionStatus","ProductSummaryBillingStrategy","ProductSummaryDiscountDiscountType","ProductSummaryProductType","PricingRuleType","PaymentCardCARD_TYPE","PaymentCardFUNDING_TYPE","PaymentMethodType","ListInvoicesRequestFiltersDateFilterDateField","InvoiceStatus","LastPaymentStatus","PayoutStatus","PayoutType","SortDirection","MerchantType","SearchMerchantsRequestSortBy","Month","MerchantReportStatus","CardType","DisputeStatus","PaymentAllocationType","PaymentErrorCode","PaymentFacilitatorType","PaymentIntentStatus","RetailPaymentPaymentMethodDetailsType","PaymentSource","PaymentStatus","RetailPaymentReferenceType","RetailRefundFailureReason","RetailRefundReason","RetailRefundStatus","RetailTransactionType","ProductType","CreditType","PurchaseStatus","ListPurchaseRequestState","TaxRuleEntityType","TaxRuleType","MerchantServicesReportRunStatus","MerchantServicesReportRunType","ExportResponse","Note","PagedRequestOptions","PagedResponseMetadata","FieldMask","Commitment","AppliedFee","Fee","ComponentPricing","CreatePricingPlanRequest","CreatePricingPlanResponse","GetMultiPricingPlanRequest","GetMultiPricingPlanResponse","PricingPlan","PricingPlanProductPricing","ProductPricingRule","UpdatePricingPlanRequest","UpdatePricingPlanResponse","ProductPrices","ProductPricing","WholesaleCostItemRequest","SubscribeValidation","AlignmentSubscription","CanCreateSubscriptionsRequest","CanCreateSubscriptionsResponse","ChangeCustomUnitPriceRequest","ChangeFrequencyRequest","ChangeRenewalDateRequest","CreateSubscriptionRequest","CreateSubscriptionResponse","CreateSubscriptionsRequest","CreateSubscriptionsResponse","ReverseSubscriptionRequest","SetAutoBillableRequest","SetRenewalStartRequest","Subscription","CanCreateSubscriptionsRequestSubscriptionItem","ValidateResponse","BillItemRequest","BillMultipleItemsRequest","BillMultipleItemsResponse","BillableItem","CanBillItemRequest","CreateUsageRequest","BillableItemCustomerAddress","DeleteBillableItemRequest","ExpireBillableItemRequest","ExportSubscriptionsRequest","ListSubscriptionsRequestFilters","ListBillableItemsRequestFilters","GetBillableItemRequest","GetBillableItemResponse","GetMultiSubscriptionsRequest","GetMultiSubscriptionsResponse","Item","GetMultiSubscriptionsRequestKey","ListBillableItemsRequest","ListBillableItemsResponse","ListSubscriptionsRequest","ListSubscriptionsResponse","UpdateSubscriptionRequestSubscription","SubscriptionProjectionFilter","UnexpireBillableItemRequest","UpdateSubscriptionRequest","UpdateSubscriptionResponse","AppliedDiscount","BundlePricing","BundlePricingPriceAndFrequency","Contract","GetMerchantWholesaleCurrencyRequest","GetMerchantWholesaleCurrencyResponse","GetMultiContractsRequest","GetMultiContractsResponse","ListContractsRequest","ListContractsResponse","ResetContractPricingRequest","CustomerSummary","GetMultiCustomerSummariesRequest","GetMultiCustomerSummariesResponse","BankAccount","CreateStripeExternalAccountRequest","DeleteBankAccountRequest","ListBankAccountsRequest","ListBankAccountsResponse","SetDefaultBankAccountRequest","ProductSummaryDiscount","GetProductSummariesTotalRequest","GetProductSummariesTotalResponse","ListProductSummariesRequest","ListProductSummariesResponse","Pricing","ProductSummary","PricingRule","CreateDiscountRequest","CreateDiscountResponse","Discount","ExpireDiscountRequest","ListDiscountsRequestFilters","ListDiscountsRequest","ListDiscountsResponse","UpdateDiscountRequest","AppliedTaxRate","ArchiveTaxRequest","CalculateLineItemTaxesRequest","CalculateLineItemTaxesResponse","CalculateTaxRequest","CalculateTaxResponse","CreateTaxRequest","CreateTaxResponse","ListTaxRequestFilters","GetMultiTaxRequest","GetMultiTaxResponse","CalculateLineItemTaxesRequestLineItem","CalculateLineItemTaxesResponseLineItemTaxes","ListTaxRequest","ListTaxResponse","TaxRate","UpdateTaxRequest","AppliedBundle","AppliedBundleItem","CreatePaymentCardRequest","DeletePaymentCardRequest","ListPaymentCardsRequest","ListPaymentCardsResponse","PaymentCard","SetDefaultPaymentMethodRequest","UpdatePaymentCardRequest","ListPaymentMethodsRequest","ListPaymentMethodsResponse","PaymentACHDebit","PaymentACSSDebit","PaymentMethod","AddBundleRequest","AddBundleResponse","AddLineItemRequest","AddLineItemResponse","AppliedCreditNote","ChargeInvoiceRequest","CreateInvoiceRequest","CreateInvoiceResponse","CreatePaymentLinkRequest","CreatePaymentLinkResponse","InvoiceCustomerAddress","ListInvoicesRequestFiltersDateFilter","DeleteInvoiceRequest","DeleteLineItemRequest","DeleteLineItemResponse","DuplicateInvoiceRequest","DuplicateInvoiceResponse","ListInvoicesRequestFilters","GetInvoiceRequest","GetInvoiceResponse","GetUpcomingInvoicePreviewRequest","GetUpcomingInvoicePreviewResponse","Invoice","InvoiceItem","ListInvoicesRequest","ListInvoicesResponse","PayInvoiceRequest","PaymentLinkItem","RemoveBundleRequest","RemoveBundleResponse","SendInvoiceRequest","UpdateBundleRequest","UpdateBundleResponse","UpdateDefaultTaxRatesRequest","UpdateDefaultTaxRatesResponse","UpdateInvoiceRequest","UpdateInvoiceResponse","UpdateLineItemRequest","UpdateLineItemResponse","VoidInvoiceRequest","AccountBalance","Balance","BalanceAmount","RetailPayout","CancelRetailBillingRequest","ChargeSalesInvoiceRequest","CreateMerchantRequest","DefaultCustomerConfiguration","GetMerchantRequest","GetMerchantResponse","GetMultiRetailConfigurationsRequest","GetMultiRetailConfigurationsResponse","GetNextRetailInvoiceSequenceRequest","GetNextRetailInvoiceSequenceResponse","GetOutstandingBalanceRequest","GetOutstandingBalanceResponse","GetPayoutSummaryRequest","GetPayoutSummaryResponse","GetRetailAccountBalanceRequest","GetRetailAccountBalanceResponse","GetRetailBalanceRequest","GetRetailBalanceResponse","GetRetailPayoutRequest","GetRetailPayoutResponse","CreateMerchantRequestIncludeInFinancialRecords","UpdateMerchantRequestIncludeInFinancialRecords","ListRetailPayoutsRequest","ListRetailPayoutsResponse","Merchant","ResetPaymentFacilitatorRequest","RetailConfiguration","SearchMerchantsRequest","SearchMerchantsResponse","SetAutoChargeInvoicesRequest","SetAutoPostInvoicesRequest","SetDefaultPaymentCardRequest","SetHasAlternativePaymentMethodRequest","SetIncludeInFinancialRecordsRequest","SetNextRetailInvoiceSequenceRequest","UpdateMerchantRequest","UpsertDefaultRetailCustomerConfigurationRequest","UpsertRetailConfigurationRequest","ListMerchantBillingReportsRequest","ListMerchantBillingReportsResponse","MerchantReport","CreateMeteredComponentRequest","MeteredComponent","TickComponentUsageRequest","RetailPaymentACHDetails","RetailPaymentACSSDetails","Adjustment","RetailPaymentCardDetails","CloseRetailDisputeRequest","ConfigureRetailPaymentProviderRequest","ConfigureRetailPaymentProviderResponse","ConfirmRetailPaymentRequest","Dispute","DisputeEvidence","SubmitEvidenceRequestDisputeEvidence","DisputeEvidenceDetails","File","GetRetailDisputeRequest","GetRetailDisputeResponse","GetRetailPaymentProviderRequest","GetRetailPaymentProviderResponse","GetRetailPaymentRequest","GetRetailPaymentResponse","GetWholesaleProviderPublicKeyRequest","GetWholesaleProviderPublicKeyResponse","ListPaymentRequestListPaymentFilters","ListPaymentRequest","ListPaymentResponse","ListRetailDisputesRequestListRetailDisputesFilters","ListRetailDisputesRequest","ListRetailDisputesResponse","ListRetailPaymentsRequestListRetailPaymentsFilters","ListRetailPaymentsRequest","ListRetailPaymentsResponse","ListRetailTransactionsRequestListRetailTransactionsFilters","ListRetailTransactionsRequest","ListRetailTransactionsResponse","PrepareRetailPaymentRequestOrder","Payment","PaymentPaymentAllocation","PaymentIntent","PrepareRetailPaymentRequest","PrepareRetailPaymentResponse","RefundRetailPaymentRequest","RefundRetailPaymentResponse","RetailPayment","RetailPaymentsEnabledRequest","RetailPaymentsEnabledResponse","RetailRefund","RetailStatusRequest","RetailStatusResponse","RetailTransaction","SubmitEvidenceRequest","UpdateRetailPaymentProviderRequest","RetailStatusResponseVerificationError","RetailStatusResponseVerificationRequirements","CreatePricingPlanProductRequest","CreatePricingPlanProductResponse","DeletePricingPlanProductRequest","GetMultiPricingPlanProductRequest","GetMultiPricingPlanProductResponse","GetPricingPlanProductRequest","GetPricingPlanProductResponse","ListPricingPlanProductsRequestListPricingPlanProductsFilters","ListPricingPlanProductsRequest","ListPricingPlanProductsResponse","PricingPlanProduct","UpdatePricingPlanProductRequest","UpdatePricingPlanProductResponse","UpsertWholesalePricingRequest","GetMultiProductRequest","GetMultiProductResponse","ListProductsRequestListProductsFilters","ListProductsRequest","ListProductsResponse","Product","AppliedCredit","ListPurchaseRequestListPurchaseBillingStrategyFilter","ListPurchaseRequestListPurchaseFilters","ListPurchaseItemsRequestListPurchaseItemsFilters","ListPurchaseItemsRequest","ListPurchaseItemsResponse","ListPurchaseRequest","ListPurchaseResponse","PauseDunningRequest","Purchase","PurchaseItem","ResumeDunningRequest","RetryPurchaseRequest","StopDunningRequest","VoidPurchaseRequest","SendSalesInvoiceEmailRequest","SendSalesInvoiceReceiptEmailRequest","BulkReplaceTaxRulesRequest","BulkReplaceTaxRulesResponse","TaxRuleCustomerCustomerAddress","DeleteTaxRuleRequest","ListTaxRulesRequestFilters","GetTaxRuleRequest","GetTaxRuleResponse","ListTaxRulesRequest","ListTaxRulesResponse","TaxRuleProductProductIdentifier","ReplaceTaxRuleRequest","ReplaceTaxRuleResponse","TaxRule","TaxRuleCustomer","TaxRuleTaxRuleEntity","TaxRuleProduct","GetRetailCustomerConfigurationRequest","GetRetailCustomerConfigurationResponse","RetailCustomerConfiguration","UpsertRetailCustomerConfigurationRequest","CreateMerchantServicesReportRun","GetMerchantServicesReportRun","MerchantServicesReportRun","ReplaceSubscriptionPresetsRequest","ReplaceSubscriptionPresetsResponse","SubscriptionPreset","DeleteRetailPricingRequest","GenerateBillableItemsCSVRequest","GenerateBillableItemsCSVResponse","GenerateVendorReportRequest","GenerateVendorReportResponse","GetMultiBundleRetailPricingRequest","GetMultiBundleRetailPricingResponse","GetMultiProductPricingRequest","GetMultiProductPricingResponse","GetMultiRetailPricingRequest","GetMultiRetailPricingResponse","GetMultiWholesaleCostRequest","GetMultiWholesaleCostResponse","GetPurchaseCostRequest","GetPurchaseCostResponse","GetRevenueStatsRequest","GetRevenueStatsResponse","GetStatisticsRequest","GetStatisticsResponse","GetWholesaleComparisonRequestGetWholesaleComparisonFilters","GetWholesaleComparisonRequest","GetWholesaleComparisonResponse","GetWholesaleComparisonResponseGetWholesaleComparisonResult","SetWholesaleProductStrategyRequest","SetWholesaleProductVolumeCommitmentRequest","StartRevRecTemplateBackfillRequest","UpsertRetailPricingRequest","environment","hostMap","HostService","BillingApiService","DiscountApiService","InvoiceApiService","MerchantApiService","PaymentMethodApiService","PaymentApiService","PricingApiService","PurchaseApiService","RetailCustomerConfigurationApiService","TaxApiService","VendorApiService","init_vendasta_billing","__esmMin","init_core","init_http","init_operators","_ExportResponse","proto","m","kwargs","_Note","toReturn","_PagedRequestOptions","_PagedResponseMetadata","_FieldMask","_Commitment","_AppliedFee","_Fee","_ComponentPricing","_CreatePricingPlanRequest","_CreatePricingPlanResponse","_GetMultiPricingPlanRequest","_GetMultiPricingPlanResponse","_PricingPlan","_PricingPlanProductPricing","_ProductPricingRule","_UpdatePricingPlanRequest","_UpdatePricingPlanResponse","_ProductPrices","_ProductPricing","_WholesaleCostItemRequest","_SubscribeValidation","_AlignmentSubscription","_CanCreateSubscriptionsRequest","obj","k","_CanCreateSubscriptionsResponse","_ChangeCustomUnitPriceRequest","_ChangeFrequencyRequest","_ChangeRenewalDateRequest","_CreateSubscriptionRequest","_CreateSubscriptionResponse","_CreateSubscriptionsRequest","_CreateSubscriptionsResponse","_ReverseSubscriptionRequest","_SetAutoBillableRequest","_SetRenewalStartRequest","_Subscription","_CanCreateSubscriptionsRequestSubscriptionItem","_ValidateResponse","_BillItemRequest","_BillMultipleItemsRequest","_BillMultipleItemsResponse","_BillableItem","_CanBillItemRequest","_CreateUsageRequest","_BillableItemCustomerAddress","_DeleteBillableItemRequest","_ExpireBillableItemRequest","_ExportSubscriptionsRequest","_ListSubscriptionsRequestFilters","v","_ListBillableItemsRequestFilters","_GetBillableItemRequest","_GetBillableItemResponse","_GetMultiSubscriptionsRequest","_GetMultiSubscriptionsResponse","_Item","_GetMultiSubscriptionsRequestKey","_ListBillableItemsRequest","_ListBillableItemsResponse","_ListSubscriptionsRequest","_ListSubscriptionsResponse","_UpdateSubscriptionRequestSubscription","_SubscriptionProjectionFilter","_UnexpireBillableItemRequest","_UpdateSubscriptionRequest","_UpdateSubscriptionResponse","_AppliedDiscount","_BundlePricing","_BundlePricingPriceAndFrequency","_Contract","_GetMerchantWholesaleCurrencyRequest","_GetMerchantWholesaleCurrencyResponse","_GetMultiContractsRequest","_GetMultiContractsResponse","_ListContractsRequest","_ListContractsResponse","_ResetContractPricingRequest","_CustomerSummary","_GetMultiCustomerSummariesRequest","_GetMultiCustomerSummariesResponse","_BankAccount","_CreateStripeExternalAccountRequest","_DeleteBankAccountRequest","_ListBankAccountsRequest","_ListBankAccountsResponse","_SetDefaultBankAccountRequest","_ProductSummaryDiscount","_GetProductSummariesTotalRequest","_GetProductSummariesTotalResponse","_ListProductSummariesRequest","_ListProductSummariesResponse","_Pricing","_ProductSummary","_PricingRule","_CreateDiscountRequest","_CreateDiscountResponse","_Discount","_ExpireDiscountRequest","_ListDiscountsRequestFilters","_ListDiscountsRequest","_ListDiscountsResponse","_UpdateDiscountRequest","_AppliedTaxRate","_ArchiveTaxRequest","_CalculateLineItemTaxesRequest","_CalculateLineItemTaxesResponse","_CalculateTaxRequest","_CalculateTaxResponse","_CreateTaxRequest","_CreateTaxResponse","_ListTaxRequestFilters","_GetMultiTaxRequest","_GetMultiTaxResponse","_CalculateLineItemTaxesRequestLineItem","_CalculateLineItemTaxesResponseLineItemTaxes","_ListTaxRequest","_ListTaxResponse","_TaxRate","_UpdateTaxRequest","_AppliedBundle","_AppliedBundleItem","_CreatePaymentCardRequest","_DeletePaymentCardRequest","_ListPaymentCardsRequest","_ListPaymentCardsResponse","_PaymentCard","_SetDefaultPaymentMethodRequest","_UpdatePaymentCardRequest","_ListPaymentMethodsRequest","_ListPaymentMethodsResponse","_PaymentACHDebit","_PaymentACSSDebit","_PaymentMethod","_AddBundleRequest","_AddBundleResponse","_AddLineItemRequest","_AddLineItemResponse","_AppliedCreditNote","_ChargeInvoiceRequest","_CreateInvoiceRequest","_CreateInvoiceResponse","_CreatePaymentLinkRequest","_CreatePaymentLinkResponse","_InvoiceCustomerAddress","_ListInvoicesRequestFiltersDateFilter","_DeleteInvoiceRequest","_DeleteLineItemRequest","_DeleteLineItemResponse","_DuplicateInvoiceRequest","_DuplicateInvoiceResponse","_ListInvoicesRequestFilters","_GetInvoiceRequest","_GetInvoiceResponse","_GetUpcomingInvoicePreviewRequest","_GetUpcomingInvoicePreviewResponse","_Invoice","_InvoiceItem","_ListInvoicesRequest","_ListInvoicesResponse","_PayInvoiceRequest","_PaymentLinkItem","_RemoveBundleRequest","_RemoveBundleResponse","_SendInvoiceRequest","_UpdateBundleRequest","_UpdateBundleResponse","_UpdateDefaultTaxRatesRequest","_UpdateDefaultTaxRatesResponse","_UpdateInvoiceRequest","_UpdateInvoiceResponse","_UpdateLineItemRequest","_UpdateLineItemResponse","_VoidInvoiceRequest","_AccountBalance","_Balance","_BalanceAmount","_RetailPayout","_CancelRetailBillingRequest","_ChargeSalesInvoiceRequest","_CreateMerchantRequest","_DefaultCustomerConfiguration","_GetMerchantRequest","_GetMerchantResponse","_GetMultiRetailConfigurationsRequest","_GetMultiRetailConfigurationsResponse","_GetNextRetailInvoiceSequenceRequest","_GetNextRetailInvoiceSequenceResponse","_GetOutstandingBalanceRequest","_GetOutstandingBalanceResponse","_GetPayoutSummaryRequest","_GetPayoutSummaryResponse","_GetRetailAccountBalanceRequest","_GetRetailAccountBalanceResponse","_GetRetailBalanceRequest","_GetRetailBalanceResponse","_GetRetailPayoutRequest","_GetRetailPayoutResponse","_CreateMerchantRequestIncludeInFinancialRecords","_UpdateMerchantRequestIncludeInFinancialRecords","_ListRetailPayoutsRequest","_ListRetailPayoutsResponse","_Merchant","_ResetPaymentFacilitatorRequest","_RetailConfiguration","_SearchMerchantsRequest","_SearchMerchantsResponse","_SetAutoChargeInvoicesRequest","_SetAutoPostInvoicesRequest","_SetDefaultPaymentCardRequest","_SetHasAlternativePaymentMethodRequest","_SetIncludeInFinancialRecordsRequest","_SetNextRetailInvoiceSequenceRequest","_UpdateMerchantRequest","_UpsertDefaultRetailCustomerConfigurationRequest","_UpsertRetailConfigurationRequest","_ListMerchantBillingReportsRequest","_ListMerchantBillingReportsResponse","_MerchantReport","_CreateMeteredComponentRequest","_MeteredComponent","_TickComponentUsageRequest","_RetailPaymentACHDetails","_RetailPaymentACSSDetails","_Adjustment","_RetailPaymentCardDetails","_CloseRetailDisputeRequest","_ConfigureRetailPaymentProviderRequest","_ConfigureRetailPaymentProviderResponse","_ConfirmRetailPaymentRequest","_Dispute","_DisputeEvidence","_SubmitEvidenceRequestDisputeEvidence","_DisputeEvidenceDetails","_File","_GetRetailDisputeRequest","_GetRetailDisputeResponse","_GetRetailPaymentProviderRequest","_GetRetailPaymentProviderResponse","_GetRetailPaymentRequest","_GetRetailPaymentResponse","_GetWholesaleProviderPublicKeyRequest","_GetWholesaleProviderPublicKeyResponse","_ListPaymentRequestListPaymentFilters","_ListPaymentRequest","_ListPaymentResponse","_ListRetailDisputesRequestListRetailDisputesFilters","_ListRetailDisputesRequest","_ListRetailDisputesResponse","_ListRetailPaymentsRequestListRetailPaymentsFilters","_ListRetailPaymentsRequest","_ListRetailPaymentsResponse","_ListRetailTransactionsRequestListRetailTransactionsFilters","_ListRetailTransactionsRequest","_ListRetailTransactionsResponse","_PrepareRetailPaymentRequestOrder","_Payment","_PaymentPaymentAllocation","_PaymentIntent","_PrepareRetailPaymentRequest","_PrepareRetailPaymentResponse","_RefundRetailPaymentRequest","_RefundRetailPaymentResponse","_RetailPayment","_RetailPaymentsEnabledRequest","_RetailPaymentsEnabledResponse","_RetailRefund","_RetailStatusRequest","_RetailStatusResponse","_RetailTransaction","_SubmitEvidenceRequest","_UpdateRetailPaymentProviderRequest","_RetailStatusResponseVerificationError","_RetailStatusResponseVerificationRequirements","_CreatePricingPlanProductRequest","_CreatePricingPlanProductResponse","_DeletePricingPlanProductRequest","_GetMultiPricingPlanProductRequest","_GetMultiPricingPlanProductResponse","_GetPricingPlanProductRequest","_GetPricingPlanProductResponse","_ListPricingPlanProductsRequestListPricingPlanProductsFilters","_ListPricingPlanProductsRequest","_ListPricingPlanProductsResponse","_PricingPlanProduct","_UpdatePricingPlanProductRequest","_UpdatePricingPlanProductResponse","_UpsertWholesalePricingRequest","_GetMultiProductRequest","_GetMultiProductResponse","_ListProductsRequestListProductsFilters","_ListProductsRequest","_ListProductsResponse","_Product","_AppliedCredit","_ListPurchaseRequestListPurchaseBillingStrategyFilter","_ListPurchaseRequestListPurchaseFilters","_ListPurchaseItemsRequestListPurchaseItemsFilters","_ListPurchaseItemsRequest","_ListPurchaseItemsResponse","_ListPurchaseRequest","_ListPurchaseResponse","_PauseDunningRequest","_Purchase","_PurchaseItem","_ResumeDunningRequest","_RetryPurchaseRequest","_StopDunningRequest","_VoidPurchaseRequest","_SendSalesInvoiceEmailRequest","_SendSalesInvoiceReceiptEmailRequest","_BulkReplaceTaxRulesRequest","_BulkReplaceTaxRulesResponse","_TaxRuleCustomerCustomerAddress","_DeleteTaxRuleRequest","_ListTaxRulesRequestFilters","_GetTaxRuleRequest","_GetTaxRuleResponse","_ListTaxRulesRequest","_ListTaxRulesResponse","_TaxRuleProductProductIdentifier","_ReplaceTaxRuleRequest","_ReplaceTaxRuleResponse","_TaxRule","_TaxRuleCustomer","_TaxRuleTaxRuleEntity","_TaxRuleProduct","_GetRetailCustomerConfigurationRequest","_GetRetailCustomerConfigurationResponse","_RetailCustomerConfiguration","_UpsertRetailCustomerConfigurationRequest","_CreateMerchantServicesReportRun","_GetMerchantServicesReportRun","_MerchantServicesReportRun","_ReplaceSubscriptionPresetsRequest","_ReplaceSubscriptionPresetsResponse","_SubscriptionPreset","_DeleteRetailPricingRequest","_GenerateBillableItemsCSVRequest","_GenerateBillableItemsCSVResponse","_GenerateVendorReportRequest","_GenerateVendorReportResponse","_GetMultiBundleRetailPricingRequest","_GetMultiBundleRetailPricingResponse","_GetMultiProductPricingRequest","_GetMultiProductPricingResponse","_GetMultiRetailPricingRequest","_GetMultiRetailPricingResponse","_GetMultiWholesaleCostRequest","_GetMultiWholesaleCostResponse","_GetPurchaseCostRequest","_GetPurchaseCostResponse","_GetRevenueStatsRequest","_GetRevenueStatsResponse","_GetStatisticsRequest","_GetStatisticsResponse","_GetWholesaleComparisonRequestGetWholesaleComparisonFilters","_GetWholesaleComparisonRequest","_GetWholesaleComparisonResponse","_GetWholesaleComparisonResponseGetWholesaleComparisonResult","_SetWholesaleProductStrategyRequest","_SetWholesaleProductVolumeCommitmentRequest","_StartRevRecTemplateBackfillRequest","_UpsertRetailPricingRequest","__ngFactoryType__","ɵɵdefineInjectable","inject","HttpClient","HttpHeaders","r","request","__spreadProps","__spreadValues","map","resp","paymentFacilitatorTypeFromApi","pApi","PaymentFacilitatorTypeApi","CUSTOM_STRIPE","PaymentFacilitatorType","STANDARD_STRIPE","NOT_SET","paymentFacilitatorTypeToApi","p","UNSPECIFIED","init_payment_facilitator_type","__esmMin","init_vendasta_billing","SortDirection","init_sort_direction","__esmMin","PagedResponse","init_paged_response","__esmMin","constructor","results","nextCursor","hasMore","init_core","__esmMin","init_sort_direction","init_paged_response","convertApiAppliedBundle","ab","bundleId","bundleInstanceId","name","hideBundleItems","isAppliedBundle","init_applied_bundle","__esmMin","b","init_applied_bundle","__esmMin","discountTypeFromApi","t","ApiDiscountType","DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT","DiscountType","FIXED_AMOUNT_PER_UNIT","DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS","FIXED_NUMBER_OF_UNITS","DISCOUNT_TYPE_PERCENT_AMOUNT","PERCENT_AMOUNT","FIXED_AMOUNT","discountTypeToApi","DISCOUNT_TYPE_FIXED_AMOUNT","init_discount_type","__esmMin","init_vendasta_billing","discountFromApi","apiDiscount","merchantId","discountId","id","discountType","discountTypeFromApi","amount","start","Date","undefined","end","resetEachPeriod","created","updated","SKU","sku","description","customerId","consumer","Consumer","CONSUMER_RETAIL","subscriptionId","numberOfBillingPeriods","init_discount","__esmMin","init_vendasta_billing","init_discount_type","discountConsumerToApi","dc","DiscountConsumer","RETAIL","Consumer","CONSUMER_RETAIL","WHOLESALE","CONSUMER_WHOLESALE","init_discount_consumer","__esmMin","init_vendasta_billing","DiscountService","init_discount_service","__esmMin","init_operators","init_core","init_vendasta_billing","init_discount","init_discount_type","init_discount_consumer","constructor","discountApi","list","filters","cursor","pageSize","req","ListDiscountsRequest","pagingOptions","PagedRequestOptions","pipe","map","response","discounts","item","discountFromApi","PagedResponse","pagingMetadata","nextCursor","hasMore","create","merchantId","sku","discountType","amount","startDateTime","endDateTime","resetEachPeriodFlag","description","customerId","discountConsumer","DiscountConsumer","WHOLESALE","subscriptionId","numberOfBillingPeriods","start","Date","dt","discountTypeToApi","consumer","discountConsumerToApi","r","CreateDiscountRequest","resetEachPeriod","end","resp","id","update","UpdateDiscountRequest","expire","ExpireDiscountRequest","ɵɵinject","DiscountApiService","factory","ɵfac","providedIn","init_discount","__esmMin","init_discount_type","init_discount_service","appliedDiscountTypeFromAPI","adt","APIDiscountType","DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT","DiscountType","FIXED_AMOUNT_PER_UNIT","DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS","FIXED_NUMBER_OF_UNITS","DISCOUNT_TYPE_PERCENT_AMOUNT","PERCENT_AMOUNT","FIXED_AMOUNT","appliedDiscountTypeToApi","DISCOUNT_TYPE_FIXED_AMOUNT","appliedDiscountFromApi","ad","type","value","totalAmount","description","referenceId","appliedDiscountToApi","init_applied_discount","__esmMin","init_vendasta_billing","init_discount","init_applied_discount","__esmMin","bankAccountFromApi","r","id","accountHolderName","bankName","country","currency","routingNumber","last4","defaultForCurrency","init_bank_account","__esmMin","BankAccountService","init_bank_account_service","__esmMin","init_operators","init_vendasta_billing","init_bank_account","constructor","merchantApi","listBankAccounts","merchantId","ListBankAccountsRequest","pipe","map","res","bankAccount","bankAccounts","ba","bankAccountFromApi","setDefaultBankAccount","bankAccountId","request","SetDefaultBankAccountRequest","deleteBankAccount","DeleteBankAccountRequest","ɵɵinject","MerchantApiService","factory","ɵfac","providedIn","init_bank_account","__esmMin","init_bank_account_service","billingStrategyFromAPI","bsAPI","PricingPlanBillingStrategy","BILLING_STRATEGY_END_OF_PERIOD","BillingStrategy","EndOfPeriod","BILLING_STRATEGY_START_OF_PERIOD","StartOfPeriod","BILLING_STRATEGY_INSTANTLY","Instantly","BILLING_STRATEGY_END_OF_DAY","EndOfDay","Invalid","billingStrategyToAPI","strategy","BILLING_STRATEGY_NONE","init_billing_strategy","__esmMin","init_vendasta_billing","currencyFromApi","cApi","CurrencyApi","USD","Currency","CAD","EUR","AUD","GBP","NZD","BRL","CHF","CNY","CZK","INR","JPY","KHR","KRW","MXN","NOK","RUB","SEK","SGD","TRY","ZAR","DZD","AWG","FJD","KYD","currencyToApi","currency","init_currency","__esmMin","init_vendasta_billing","frequencyFromApi","fApi","FrequencyApi","MONTHLY","Frequency","Monthly","YEARLY","Yearly","ONE_TIME","OneTime","Invalid","frequencyToApi","frequency","INVALID","init_frequency","__esmMin","init_vendasta_billing","productPricingRulesFromApi","pprApi","map","r","price","minUnits","maxUnits","init_product_pricing_rules","__esmMin","productPricingTypeFromApi","pptApi","ProductPricingTypeApi","PRODUCT_PRICING_TYPE_STANDARD","ProductPricingType","Standard","PRODUCT_PRICING_TYPE_STAIRSTEP","Stairstep","PRODUCT_PRICING_TYPE_TIERED","Tiered","Invalid","productPricingTypeToApi","ppt","PRODUCT_PRICING_TYPE_INVALID","init_product_pricing_type","__esmMin","init_vendasta_billing","commitmentFromAPI","comAPI","initial","recurring","init_commitment","__esmMin","feesFromApi","protos","length","map","proto","amount","amountType","feeType","feesToApi","fees","fee","init_fee","__esmMin","pricingPlanProductFromApi","apiProduct","pricingMap","apiCurrency","pricing","Object","prototype","hasOwnProperty","call","pricingApi","type","productPricingTypeFromApi","rules","productPricingRulesFromApi","setupFee","fees","feesFromApi","frequency","frequencyFromApi","pricingPlanId","sku","commitment","commitmentFromAPI","created","modified","strategy","billingStrategyFromAPI","volumeCommitment","volumeCommitmentStartsAt","getTime","undefined","volumeCommitmentEndsAt","currencyPricingMapToApi","currencyPricingMap","keys","filter","c","Currency","reduce","apiPricingMap","pricingPlanProductPricingToApi","productPricingRulesToApi","map","rule","ApiRule","ApiPricing","productPricingTypeToApi","feesToApi","frequencyToApi","currencyCode","init_pricing_plan_product","__esmMin","init_vendasta_billing","init_billing_strategy","init_commitment","init_currency","init_frequency","init_product_pricing_rules","init_product_pricing_type","init_fee","productPricingFromApi","pApi","strategy","billingStrategyFromAPI","pricingType","productPricingTypeFromApi","currency","currencyFromApi","frequency","frequencyFromApi","pricingRules","productPricingRulesFromApi","commitment","commitmentFromAPI","volumeCommitment","isStartingPrice","resolvedFrom","setupFee","fees","feesFromApi","init_product_pricing","__esmMin","init_billing_strategy","init_commitment","init_currency","init_frequency","init_product_pricing_rules","init_product_pricing_type","init_fee","init_wholesale_pricing_service","__esmMin","init_retail_pricing_service","__esmMin","init_pricing_plan","__esmMin","RetailPricingPlanName","demoRetailPricingPlans","prodRetailPricingPlans","WholesalePricingPlanName","demoWholesalePricingPlans","prodWholesalePricingPlans","pricingPlans","wholesalePlans","retailPlans","init_pricing_plan_service","__esmMin","init_src","init_billing_strategy","id","name","MSRP","subscriptionName","defaultStrategy","BillingStrategy","Invalid","VBPFree","VBPStarter","VBPBasic","VBPProfessional","VBPEnterprise","VBPEnterprisePilot","VBP2Startup","VBP2Essentials","VBP2Growth","VBP2Scale","VBP2Premium","BasicSubscription","ProfessionalSubscription","EnterpriseSubscription","EliteSubscription","PremiumSubscription","IndividualSubscription","TeamSubscription","AdvanceSubscription","CustomSubscription","Essentials2022Subscription","Professional2022Subscription","Premium2022Subscription","Custom2022Subscription","Starter2023Subscription","Starter2024Subscription","Professional2024Subscription","Premium2024Subscription","Default","Map","Environment","DEMO","PROD","init_list_pricing_plan_product_filter","__esmMin","subscriptionStatusFromApi","sApi","SubscriptionStatusApi","SUBSCRIPTION_STATUS_ACTIVE","SubscriptionStatus","Active","SUBSCRIPTION_STATUS_EXPIRED","Inactive","Unset","init_status","__esmMin","init_vendasta_billing","subscriptionSourceFromApi","sApi","SubscriptionSourceApi","SOURCE_SYSTEM","SubscriptionSource","System","SOURCE_USER","User","Unset","init_source","__esmMin","init_vendasta_billing","init_pricing","__esmMin","init_billing_strategy","init_currency","init_frequency","init_product_pricing_rules","init_product_pricing_type","init_product_pricing","init_pricing_plan_product","init_wholesale_pricing_service","init_retail_pricing_service","init_pricing_plan","init_pricing_plan_service","init_list_pricing_plan_product_filter","init_status","init_source","init_fee","init_bank_reconciliation","__esmMin","setTimeToNoonUTC","date","utcDate","Date","getUTCFullYear","getUTCMonth","getUTCDate","setUTCHours","init_time_helper","__esmMin","customerAddressFromApi","apiAddress","address","city","state","zip","country","billableItemFromApi","apiItem","zeroDate","Date","valueOf","subscriptionId","merchantId","sku","productName","customerId","customerName","orderId","expiry","undefined","billingStart","created","updated","frequency","frequencyFromApi","retailFrequency","nextRenewal","nextRetailRenewal","customerAddress","customUnitPrice","retailUnitPrice","status","subscriptionStatusFromApi","price","productPricingFromApi","source","subscriptionSourceFromApi","autoBillable","description","nextServicePeriodStart","setTimeToNoonUTC","nextServicePeriodEnd","billingCycleAnchor","nextInvoiceDate","init_billable_item","__esmMin","init_pricing","init_source","init_time_helper","init_billable_item","__esmMin","handleCsvError","error","ErrorEvent","console","message","observableThrowError","init_error_handlers","__esmMin","init_esm","RevenueApiService","init_revenue_service","__esmMin","init_operators","init_error_handlers","constructor","hostService","http","downloadCsv","r","queryParams","filename","get","hostWithScheme","apiOptions","pipe","share","catchError","handleCsvError","responseType","withCredentials","ɵɵinject","HostService","HttpClient","factory","ɵfac","providedIn","MerchantReportApiService","init_merchant_report_service","__esmMin","init_operators","init_error_handlers","constructor","hostService","http","downloadCsv","r","queryParams","merchantId","year","month","get","hostWithScheme","apiOptions","pipe","share","catchError","handleCsvError","generateCsv","responseType","withCredentials","ɵɵinject","HostService","HttpClient","factory","ɵfac","providedIn","purchaseStatusFromApi","psApi","PurchaseStatusApi","PURCHASE_STATUS_PENDING","PurchaseStatus","Pending","PURCHASE_STATUS_DUE","Due","PURCHASE_STATUS_SUCCESS","Success","PURCHASE_STATUS_DUNNING","Dunning","PURCHASE_STATUS_FAILED","Failed","Unset","init_purchase_status","__esmMin","init_vendasta_billing","purchaseFromApi","pApi","merchantId","timestamp","Date","undefined","purchaseId","total","currency","currencyFromApi","Currency","USD","renewal","items","map","p","purchaseItemFromApi","billingStrategy","billingStrategyFromAPI","isDunning","dunningAttempt","pauseDunningUntil","voided","paid","status","purchaseStatusFromApi","creditAmount","appliedCredits","ac","appliedCreditFromAPI","taxAmount","appliedTaxRates","at","appliedTaxRateFromAPI","currencyApi","sku","description","amount","orderId","customerId","discountAmount","appliedDiscounts","appliedDiscountFromApi","purchaseDay","day","setupFee","feeAmount","appliedAmount","referenceId","referenceType","appliedCreditTypeFromAPI","adt","CreditType","CREDIT_TYPE_CREDIT_NOTE","AppliedCreditType","CREDIT_TYPE_PROMOTIONAL","CREDIT_TYPE_UNSET","name","percentage","taxRateId","init_purchase","__esmMin","init_applied_discount","init_pricing","init_vendasta_billing","init_purchase_status","customerSummaryFromApi","csApi","currency","undefined","currencyFromApi","customerId","purchaseItemQuantity","purchaseItemTotal","Currency","USD","init_customer_summary","__esmMin","init_pricing","Dimension","ChannelPartnersDiamond","ChannelPartnersPlatinum","ChannelPartnersGold","ChannelPartnersSilver","ChannelPartnersUnassisted","ChannelPartnersChurned","ChannelPartnersPreSales","ChannelPartnersUnassigned","ChannelPartnersMedia","ChannelPartnersBroadcast","ChannelPartnersISV","ChannelPartnersICT","ChannelPartnersFranchise","ChannelPartnersBroadly","ChannelPartnersEMEA","ChannelPartnersAgency","ChannelPartnersHighVelocityExpansion","ChannelPartnersHighVelocityAcquisition","init_dimension","__esmMin","constructor","id","dimensionId","name","contractFromApi","cApi","merchantId","netD","created","undefined","subscriptionId","dimension","Dimension","currency","currencyFromApi","signed","end","activated","modified","verified","status","creditLimit","pricingPlanId","init_contract","__esmMin","init_pricing","init_dimension","init_contract_service","__esmMin","init_mutations","__esmMin","init_contract","__esmMin","init_contract_service","init_dimension","init_mutations","productFromApi","apiProduct","name","sku","iconUrl","hasPricingOverride","hasDiscount","init_product","__esmMin","listProductsFilterToApi","filter","__spreadProps","__spreadValues","productType","map","pt","productTypeToApi","ProductType","Standard","ApiProductType","PRODUCT_TYPE_STANDARD_PRODUCT","Vendasta","PRODUCT_TYPE_VENDASTA_PRODUCT","Subscription","PRODUCT_TYPE_SUBSCRIPTION","Fee","PRODUCT_TYPE_FEE","PartnerSupportSales","PRODUCT_TYPE_PARTNER_SUPPORT_SALES","PRODUCT_TYPE_INVALID","init_list_products","__esmMin","init_vendasta_billing","isCanCreateSubscriptionsRequestSubscriptionItem","BillingService","init_billing_service","__esmMin","init_vendasta_billing","init_pricing","init_operators","init_product_pricing","init_paged_response","init_frequency","init_pricing_plan_product","init_purchase","init_customer_summary","init_contract","init_product","init_list_products","init_billable_item","li","constructor","billingApi","revenueApi","merchantReportApi","pricingApi","purchaseApi","vendorApi","getPurchaseCost","merchantId","sku","quantity","req","GetPurchaseCostRequest","pipe","map","response","currency","InternalCurrency","USD","canCreateSubscriptions","skus","CanCreateSubscriptionsRequest","canCreateSubscriptionsWithFrequencies","items","item","frequency","frequencyToApi","filter","downloadRevenueCsv","filename","downloadCsv","downloadBillingReportCsv","year","month","generateBillingReportCsv","generateCsv","listMerchantBillingReports","cursor","pageSize","ListMerchantBillingReportsRequest","pagingOptions","PagedRequestOptions","resp","reports","r","created","status","MerchantReportStatus","PagedResponse","pagingMetadata","nextCursor","hasMore","canBillCreateSnapshot","canBillItem","canBillRefreshSnapshot","ok","createPricingPlanProduct","pricingPlanId","pricing","commitment","strategy","volumeCommitment","volumeCommitmentStartsAt","volumeCommitmentEndsAt","request","CreatePricingPlanProductRequest","currencyPricingMapToApi","CommitmentApi","billingStrategyToAPI","mapTo","updatePricingPlanProduct","fieldMask","FieldMask","paths","UpdatePricingPlanProductRequest","push","deletePricingPlanProduct","DeletePricingPlanProductRequest","getMultiProductPricing","productPricesApi","productPrices","productPricings","k","Object","keys","productPricingResponse","productPricingFromApi","getMultiRetailPricing","groupId","requestGroupId","undefined","getMultiRetail","currencyToApi","retailPricesApi","retailPricings","retailPricingResponse","listPricingPlanProducts","filters","ListPricingPlanProductsRequest","products","p","pricingPlanProductFromApi","getPricingPlanProduct","GetPricingPlanProductRequest","ppp","pricingPlanProduct","defaultStrategy","billingStrategyFromAPI","pricingPlanDefaultStrategy","listPurchases","ListPurchaseRequest","list","purchases","purchase","purchaseFromApi","voidPurchase","purchaseId","day","VoidPurchaseRequest","void","listPurchaseItems","purchaseItems","purchaseItem","purchaseItemFromApi","retryPurchase","RetryPurchaseRequest","retry","getMultiCustomerSummaries","customerIds","periodStart","periodEnd","GetMultiCustomerSummariesRequest","customerSummaries","customerSummary","customerSummaryFromApi","getMultiContract","merchantIds","contractsAPI","contracts","contractResponse","contractFromApi","getMerchantWholesaleCurrency","generateVendorReport","vendorName","markAsApproved","GenerateVendorReportRequest","generateReport","url","getVendorStats","GetRevenueStatsRequest","getRevenueStats","totalRevenue","listContracts","ListContractsRequest","c","listProducts","searchTerm","apiFilters","listProductsFilterToApi","ListProductsRequest","productFromApi","getMultiProduct","GetMultiProductRequest","productsMap","Map","forEach","set","getBillableItem","customerId","orderId","projectionFilter","GetBillableItemRequest","billableItemFromApi","expireSubscription","expiry","ExpireBillableItemRequest","expireBillableItem","unexpireSubscription","unexpireBillableItem","changeBillableItemFrequency","freq","ChangeFrequencyRequest","changeFrequency","changeBillableItemNextRenewalDate","next","ChangeRenewalDateRequest","nextRenewalDate","changeRenewalDate","changeBillableItemCustomUnitPrice","amount","ChangeCustomUnitPriceRequest","customUnitPrice","changeCustomUnitPrice","listBillableItems","ListBillableItemsRequest","listSubscriptions","ListSubscriptionsRequest","subscriptions","listRetailSubscriptions","startRevRecBackfillWorkflow","startRevRecTemplateBackfill","pauseDunning","pauseDunningUntil","PauseDunningRequest","resumeDunning","ResumeDunningRequest","exportSubscriptions","consumer","ExportSubscriptionsRequest","createSubscription","setAutoBillable","subscriptionId","autoBillable","SetAutoBillableRequest","updateSubscription","subscription","UpdateSubscriptionRequest","description","billingCycleAnchor","ɵɵinject","BillingApiService","RevenueApiService","MerchantReportApiService","PricingApiService","PurchaseApiService","VendorApiService","factory","ɵfac","providedIn","paymentSourceFromApi","pApi","PaymentSourceApi","PAYMENT_SOURCE_STRIPE","PaymentSource","STRIPE","PAYMENT_SOURCE_VCASH","VCASH","UNSET","init_payment_source","__esmMin","init_vendasta_billing","paymentStatusFromApi","psApi","PaymentStatusApi","PAYMENT_STATUS_FAILED","PaymentStatus","Failed","PAYMENT_STATUS_SUCCEEDED","Succeeded","Unset","init_payment_status","__esmMin","init_vendasta_billing","paymentAllocationTypeFromApi","pApi","PaymentAllocationTypeApi","PAYMENT_ALLOCATION_TYPE_INVOICE","PaymentAllocationType","INVOICE","PAYMENT_ALLOCATION_TYPE_PURCHASE","PURCHASE","UNSET","init_payment_allocation_type","__esmMin","init_vendasta_billing","paymentFromApi","pApi","merchantId","created","Date","undefined","currency","currencyFromApi","Currency","USD","paymentSource","paymentSourceFromApi","allocations","map","p","paymentAllocationFromApi","total","description","externalReferenceId","status","paymentStatusFromApi","referenceId","amount","type","paymentAllocationTypeFromApi","PaymentAllocationType","UNSET","DeclineReasons","init_payment","__esmMin","init_pricing","init_payment_source","init_payment_status","init_payment_allocation_type","Map","nextSteps","MerchantProviderDeterminant","CountryProviderDeterminant","init_provider_determinant","__esmMin","constructor","merchantId","countryCode","convertApiPaymentCardType","t","paymentCardTypeLabelMap","get","unknownCardType","convertApiFundingType","fundingTypeLabelMap","unknownFundingType","convertApiPaymentCardDetails","c","cardType","fundingType","id","cardId","lastFourDigits","expiryMonth","expiryYear","cardholderName","address","city","state","country","zipCode","default","FundingType","PaymentCardType","init_payment_card","__esmMin","init_vendasta_billing","UNKNOWN","value","Map","PaymentCardCARD_TYPE","AMEX","VISA","MASTERCARD","JCB","DINERS_CLUB","DISCOVER","PaymentCardFUNDING_TYPE","FUNDING_TYPE_DEBIT","DEBIT","FUNDING_TYPE_CREDIT","CREDIT","FUNDING_TYPE_PREPAID","PREPAID","FUNDING_TYPE_UNKNOWN","init_payment_card","__esmMin","isRefundableStatus","status","RetailPaymentStatus","Succeeded","PartiallyRefunded","includes","retailRefundReasonFromApi","r","ApiRefundReason","RETAIL_REFUND_REASON_UNSET","RetailRefundReason","Unset","RETAIL_REFUND_REASON_DUPLICATE","Duplicate","RETAIL_REFUND_REASON_FRAUDULENT","Fraudulent","RETAIL_REFUND_REASON_REQUESTED_BY_CUSTOMER","RequestedByCustomer","retailRefundReasonToApi","retailRefundFailureReasonFromApi","ApiFailureReason","RETAIL_REFUND_FAILURE_REASON_UNSET","RetailRefundFailureReason","RETAIL_REFUND_FAILURE_REASON_LOST_OR_STOLEN_CARD","LostOrStolenCard","RETAIL_REFUND_FAILURE_REASON_EXPIRED_OR_CANCELED_CARD","ExpiredOrCanceledCard","RETAIL_REFUND_FAILURE_REASON_UNKNOWN","Unknown","retailRefundStatusFromApi","ApiRefundStatus","RETAIL_REFUND_STATUS_UNSET","RetailRefundStatus","RETAIL_REFUND_STATUS_PENDING","Pending","RETAIL_REFUND_STATUS_SUCCEEDED","RETAIL_REFUND_STATUS_FAILED","Failed","RETAIL_REFUND_STATUS_REQUIRES_ACTION","RequiresAction","RETAIL_REFUND_STATUS_CANCELED","Canceled","retailPaymentFromApi","pApi","dispute","disputeFromApi","declineReason","DeclineReasons","get","failureCode","id","merchantId","created","currencyCode","amount","referenceId","referenceType","description","customerId","retailPaymentStatusFromApi","disputed","failureMessage","applicationFee","refunds","retailRefundsfromApi","cardDetails","cardDetailsFromApi","undefined","paymentMethodDetailsType","retailPaymentTypeFromApi","achDetails","achDebitDetails","achDetailsFromApi","acssDetails","acssDebitDetails","acssDetailsFromApi","paymentFacilitatorFee","paymentFacilitatorType","paymentFacilitatorTypeFromApi","declineReasonDescription","declineReasonNextSteps","nextSteps","map","refund","retailRefundFromApi","currency","refundReason","failureReason","Date","payment","retailPayoutFromApi","payout","arrivalDate","retailPayoutStatusFromApi","type","retailPayoutTypeFromApi","lastFourDigits","bankName","bankId","RetailPayoutStatusApi","PAYOUT_STATUS_PAID","RetailPayoutStatus","Paid","PAYOUT_STATUS_PENDING","PAYOUT_STATUS_IN_TRANSIT","InTransit","PAYOUT_STATUS_CANCELED","PAYOUT_STATUS_FAILED","t","RetailPayoutTypeApi","PAYOUT_TYPE_BANK_ACCOUNT","RetailPayoutType","BankAccount","PAYOUT_TYPE_CARD","Card","RetailPaymentPaymentMethodDetailsTypeApi","PAYMENT_METHOD_DETAILS_TYPE_CARD","RetailPaymentMethodType","PAYMENT_METHOD_DETAILS_TYPE_ACH_DEBIT","ACHDebit","PAYMENT_METHOD_DETAILS_TYPE_ACSS_DEBIT","ACSSDebit","adjustmentFromApi","adjustment","fee","net","retailTransactionFromApi","transaction","payoutFailure","cardType","cardTypeFromApi","CardType","CARD_TYPE_VISA","PaymentCardType","VISA","CARD_TYPE_MASTERCARD","MASTERCARD","CARD_TYPE_AMEX","AMEX","CARD_TYPE_DISCOVER","DISCOVER","CARD_TYPE_JCB","JCB","CARD_TYPE_DINERS_CLUB","DINERS_CLUB","UNKNOWN","Disputed","PaymentStatusApi","PAYMENT_STATUS_SUCCEEDED","PAYMENT_STATUS_FAILED","PAYMENT_STATUS_REFUNDED","Refunded","PAYMENT_STATUS_PARTIALLY_REFUNDED","PAYMENT_STATUS_PENDING","init_retail_payment","__esmMin","init_vendasta_billing","init_dispute","init_payment_card","init_payment_facilitator_type","init_payment","verificationErrorFromAPI","e","requirement","code","reason","requirementsFromAPI","requirements","due","errors","error","map","eventuallyDue","currentDeadline","Date","retailResponseFromAPI","proto","supportedRegion","canAcceptPayment","disabledReason","futureRequirements","init_retail_status","__esmMin","referenceTypeFromPaymentReference","rp","isRefund","RetailPaymentReferenceTypeEnum","RETAIL_PAYMENT_REFERENCE_TYPE_INVOICE","TransactionReferenceType","REFUND_INVOICE","INVOICE","RETAIL_PAYMENT_REFERENCE_TYPE_SALES_ORDER","REFUND_SALES_ORDER","SALES_ORDER","UNSET","Transaction","init_transaction","__esmMin","init_lib","fromRetailPayment","customerName","id","merchantId","created","currencyCode","amount","referenceId","referenceType","description","customerId","status","RetailPaymentStatus","Unset","failureCode","failureMessage","applicationFee","paymentFacilitatorFee","dispute","refunds","paymentId","paymentMethodDetailsType","cardDetails","achDetails","acssDetails","declineReasonDescription","declineReasonNextSteps","fromRetailRefund","rr","payment","currency","failureReason","fromRetailPayout","datePipe","arrivalDate","PAYOUT_FAILURE","transform","Failed","RetailPaymentMethodType","fromAdjustment","a","refund","Refunded","Disputed","fee","DISPUTE","REFUND_FAILURE","init_payment","__esmMin","init_dispute","init_payment_facilitator_type","init_payment_source","init_payment_status","init_payment_allocation_type","init_payment_service","init_provider_determinant","init_retail_payment","init_retail_status","init_transaction","CA_LIVE_API_KEY","CA_TEST_API_KEY","StripeService","init_stripe_service","__esmMin","init_src","init_payment","constructor","environmentService","paymentService","connectPublicKey","getEnvironment","Environment","PROD","getConnectPublicKey","getPublicKeyByMerchant","merchantId","getWholesaleProviderPublicKey","MerchantProviderDeterminant","getPublicKeyByCountry","countryCode","CountryProviderDeterminant","ɵɵinject","EnvironmentService","PaymentService","factory","ɵfac","providedIn","init_bundle","__esmMin","init_contract_document","__esmMin","init_credit","__esmMin","newAccountServiceContext","accountId","ServiceContext","ServiceContextAccount","newPartnerServiceContext","partnerId","ServiceContextPartner","AutoImpersonation","ServiceContextBrand","NoImpersonation","ServiceContextSuperAdmin","Scope","CreateScopeRequest","DeleteScopeRequest","GetEntryURLRequest","GetEntryURLResponse","GetEntryURLWithCodeRequest","GetEntryURLWithCodeResponse","GetLogoutURLRequest","GetLogoutURLResponse","GetMultiEntryURLRequest","GetMultiEntryURLResponse","GetMultiScopeRequest","GetMultiScopeResponse","GetSessionTransferURLRequest","GetSessionTransferURLResponse","ListScopesRequest","ListScopesResponse","LogoutRequest","UpdateScopeRequestMutation","GetMultiScopeResponseScopeContainer","UpdateScopeRequest","ConsumeSingleUseTokenRequest","environment","hostMap","HostService","ConsentAdminApiService","IdentityProviderApiService","ServiceProviderApiService","serviceGatewayPath","SSOService","init_vendasta_sso","__esmMin","init_core","init_http","init_operators","_ServiceContextAccount","proto","m","kwargs","toReturn","_AutoImpersonation","_ServiceContextBrand","_NoImpersonation","_ServiceContextPartner","_ServiceContext","_ServiceContextSuperAdmin","_Scope","_CreateScopeRequest","_DeleteScopeRequest","_GetEntryURLRequest","_GetEntryURLResponse","_GetEntryURLWithCodeRequest","_GetEntryURLWithCodeResponse","_GetLogoutURLRequest","_GetLogoutURLResponse","_GetMultiEntryURLRequest","_GetMultiEntryURLResponse","_GetMultiScopeRequest","_GetMultiScopeResponse","_GetSessionTransferURLRequest","_GetSessionTransferURLResponse","_ListScopesRequest","_ListScopesResponse","_LogoutRequest","_UpdateScopeRequestMutation","_GetMultiScopeResponseScopeContainer","_UpdateScopeRequest","_ConsumeSingleUseTokenRequest","__ngFactoryType__","ɵɵdefineInjectable","inject","HttpClient","HttpHeaders","r","request","__spreadProps","__spreadValues","map","resp","params","apiJson","key","value","identityProviderApiService","consentAdminApiService","serviceProviderApiService","hostService","serviceProviderId","context","options","share","serviceProviderIds","scopeIds","userID","otp","nextUrl","serviceProviderID","accountID","nextPath","host","query","groupPath","ɵɵinject","enumStringToValue$2","enumRef","value","enumStringToValue$1","Owner","SortDirection","SortField","Link","CreateLinkRequest","CreateLinkResponse","GetLinkRequest","GetLinkResponse","GetMultiLinkMetricsRequest","GetMultiLinkMetricsResponse","LinkMetrics","ListAllLinkMetricsRequest","ListAllLinkMetricsResponse","ListLinksRequest","ListLinksResponse","PagedRequestOptions","PagedResponseMetadata","SetLinkHideStatusesRequest","environment","hostMap","HostService","UrlShortenerApiService","UrlShortenerService","PagedResponse","init_vendasta_url_shortener","__esmMin","init_core","init_operators","init_http","_Link","proto","m","kwargs","toReturn","_CreateLinkRequest","_CreateLinkResponse","_GetLinkRequest","_GetLinkResponse","_GetMultiLinkMetricsRequest","_GetMultiLinkMetricsResponse","_LinkMetrics","obj","k","_ListAllLinkMetricsRequest","_ListAllLinkMetricsResponse","_ListLinksRequest","_ListLinksResponse","_PagedRequestOptions","_PagedResponseMetadata","_SetLinkHideStatusesRequest","__ngFactoryType__","ɵɵdefineInjectable","http","hostService","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","ɵɵinject","HttpClient","api","shortCode","req","businessId","linkUrl","owner","description","hidden","cursor","pageSize","sortField","filterTerm","sortDirection","body","shortCodes","res","results","nextCursor","hasMore","collectionMethodToApi","m","CollectionMethod","MANUAL_COLLECTION","CollectionMethodAPI","CHARGE_AUTOMATICALLY","SEND_EMAIL","UNSET","collectionMethodFromApi","retailCustomerConfigurationFromApi","config","merchantId","customerId","contactId","additionalContactIds","autoGenerateRetailSubscriptions","autoPost","autoGenerate","useTemplateInvoice","collectionMethod","invoiceDay","netD","memo","paymentMethodTypes","paymentTypesFromApi","paymentTypeFromApi","t","PaymentMethodTypeApi","PAYMENT_METHOD_TYPE_CARD","PaymentMethodType","CARD","PAYMENT_METHOD_TYPE_ACH_DEBIT","ACH_DEBIT","PAYMENT_METHOD_TYPE_ACSS_DEBIT","ACSS_DEBIT","map","paymentMethodTypeToApi","PAYMENT_METHOD_TYPE_UNSET","paymentMethodTypesToApi","init_retail_customer_configuration","__esmMin","init_vendasta_billing","RetailCustomerConfigurationService","init_retail_customer_configuration_service","__esmMin","init_vendasta_billing","init_operators","init_retail_customer_configuration","constructor","configApiService","get","merchantId","customerId","req","GetRetailCustomerConfigurationRequest","pipe","map","resp","retailCustomerConfigurationFromApi","configuration","upsert","UpsertRetailCustomerConfigurationRequest","__spreadProps","__spreadValues","collectionMethod","collectionMethodToApi","paymentMethodTypes","mapTo","ɵɵinject","RetailCustomerConfigurationApiService","factory","ɵfac","providedIn","init_retail_customer_configuration","__esmMin","init_retail_customer_configuration_service","convertAPINote","note","message","isNote","init_note","__esmMin","n","taxRateFromApi","apiTaxRate","id","merchantId","countryCode","stateCode","name","description","percentage","accountingSystemId","isTaxRate","init_tax_rate","__esmMin","tr","TaxRateService","init_tax_rate_service","__esmMin","init_esm","init_operators","init_core","init_vendasta_billing","init_tax_rate","constructor","taxRateApi","calculate","merchantId","customerId","amount","r","CalculateTaxRequest","pipe","map","response","taxRates","item","taxRateFromApi","taxableAmount","calculateLineItems","lineItems","CalculateLineItemTaxesRequest","buildCalculateLineItemsTaxResponse","catchError","of","lineItemTaxes","sku","taxRateIds","appliedTaxes","totalTaxableAmount","create","countryCode","stateCode","name","description","percentage","accountingSystemId","CreateTaxRequest","update","id","UpdateTaxRequest","list","filters","cursor","pageSize","req","ListTaxRequest","pagingOptions","PagedRequestOptions","PagedResponse","pagingMetadata","nextCursor","hasMore","getMulti","ids","GetMultiTaxRequest","archive","ArchiveTaxRequest","ɵɵinject","TaxApiService","factory","ɵfac","providedIn","init_tax_rate","__esmMin","init_tax_rate_service","convertApiStatus","s","ApiInvoiceStatus","DUE","InvoiceStatus","PAID","VOID","DRAFT","invoiceStatusToApi","status","InternalInvoiceStatus","lastPaymentStatusToApi","LastPaymentStatus","SUCCESS","ApiLastPaymentStatus","PAYMENT_SUCCESS","PENDING","PAYMENT_PENDING","FAILED","PAYMENT_FAILED","PAYMENT_UNSET","invoiceDateFilterFieldToApi","dateField","InvoiceDateField","ISSUED","ListInvoicesRequestFiltersDateFilterDateField","CREATED","convertApiOrigin","InvoiceOriginAPI","MANUAL","InvoiceOrigin","SALES_ORDER","RENEWAL","TEMPLATE","UNSET","convertApiAppliedTaxRate","at","amount","taxRateId","percentage","name","description","convertApiTaxRate","tr","id","convertApiCustomerAddress","ca","address","address2","city","state","zip","country","convertApiInvoiceItem","ii","zeroDate","Date","valueOf","appliedTaxes","map","filter","isAppliedTaxRate","taxRates","isTaxRate","appliedDiscounts","discounts","ad","appliedDiscountFromApi","sku","quantity","subtotal","total","bundleId","bundleInstanceId","servicePeriodStart","setTimeToNoonUTC","undefined","servicePeriodEnd","convertApiLastPaymentStatus","convertApiAppliedCreditNotes","appliedCreditNotes","acn","creditNoteId","creditNoteType","convertApiCreditNoteType","number","creditNoteNumber","convertApiInvoice","i","invoiceItems","items","isInvoiceItem","defaultTaxRates","appliedBundles","convertApiAppliedBundle","isAppliedBundle","notes","n","convertAPINote","isNote","customerId","customerName","contactId","amountPaid","amountOwing","discountTotal","amountDiscount","paid","issued","due","voided","created","updated","autoAdvance","currency","currencyFromApi","orderId","origin","collectionMethod","collectionMethodFromApi","memo","defaultPaymentMethod","customerAddress","externalCustomerIdentifier","additionalContactIds","paymentMethodTypes","paymentTypesFromApi","lastPaymentStatus","listInvoiceFiltersToApi","filters","ListInvoicesRequestFilters","__spreadProps","__spreadValues","statuses","lastPaymentStatuses","origins","collectionMethods","dateFilter","dateGte","dateLte","InvoicePDFType","isInvoice","init_invoice","__esmMin","init_vendasta_billing","init_applied_bundle","init_applied_discount","init_note","init_pricing","init_retail_customer_configuration","init_tax_rate","init_credit_note","init_time_helper","InvoiceService","init_invoice_service","__esmMin","init_vendasta_billing","init_vendasta_sso","init_vendasta_url_shortener","init_esm","init_operators","init_core","init_retail_customer_configuration","init_invoice","init_applied_discount","constructor","hostService","http","invoiceApiService","ssoService","urlShortenerService","addBundle","merchantId","invoiceId","bundleId","AddBundleRequest","pipe","map","res","convertApiInvoice","invoice","addLineItem","sku","amount","quantity","description","taxRates","appliedDiscounts","servicePeriodStart","servicePeriodEnd","AddLineItemRequest","discounts","d","appliedDiscountToApi","charge","customerId","paymentMethodId","ChargeInvoiceRequest","create","orderId","currencyCode","CreateInvoiceRequest","createPaymentLink","lineItems","due","CreatePaymentLinkRequest","delete","DeleteInvoiceRequest","deleteLineItem","id","DeleteLineItemRequest","exportCSV","filters","url","hostWithScheme","post","merchant_id","observe","responseType","withCredentials","share","generatePDF","documentType","invoice_id","document_type","get","GetInvoiceRequest","list","cursor","pageSize","req","ListInvoicesRequest","listInvoiceFiltersToApi","pagingOptions","PagedRequestOptions","response","invoices","item","filter","isInvoice","PagedResponse","pagingMetadata","nextCursor","hasMore","pay","reason","PayInvoiceRequest","preview","getUpcomingPreview","invoiceDate","getUpcomingInvoicePreview","GetUpcomingInvoicePreviewRequest","removeBundle","bundleInstanceId","RemoveBundleRequest","send","emailAddresses","SendInvoiceRequest","updateBundle","hideBundleItems","UpdateBundleRequest","updateDueDate","pbInvoice","ApiInvoice","fm","FieldMask","paths","update","updateIssuedDate","issued","updateContact","contactId","updateAdditionalContacts","additionalContactIds","updateCollectionMethod","collectionMethod","apiCollectionMethod","collectionMethodToApi","updateMemo","memo","updatePaymentMethodTypes","paymentMethodTypes","apiPaymentMethodTypes","paymentMethodTypesToApi","updateDefaultPaymentMethod","defaultPaymentMethod","updateDefaultTaxes","taxRateIds","updateDefaultTaxRates","UpdateDefaultTaxRatesRequest","updateLineItem","fieldMask","UpdateLineItemRequest","mask","UpdateInvoiceRequest","void","VoidInvoiceRequest","duplicate","DuplicateInvoiceRequest","generateShortLink","getEntryUrl","newPartnerServiceContext","path","skipGatewayAuthentication","switchMap","createLink","Owner","OWNER_UNTRACKED","catchError","of","result","domain","shortCode","Error","take","ɵɵinject","HostService","HttpClient","InvoiceApiService","SSOService","UrlShortenerService","factory","ɵfac","providedIn","init_recurring_invoice","__esmMin","init_invoice","__esmMin","init_invoice_service","convertApiCreditNoteType","creditNoteType","ApiCreditNoteType","CREDIT_NOTE_PRE_PAYMENT","CreditNoteType","PRE_PAYMENT","CREDIT_NOTE_POST_PAYMENT","POST_PAYMENT","UNSPECIFIED","init_credit_note","__esmMin","init_vendasta_billing","init_credit_note","__esmMin","MerchantFromAPI","proto","merchantId","address","city","state","country","zipCode","emailAddress","phoneNumber","contactName","companyName","autoPostInvoices","autoChargeInvoices","includeInFinancialRecords","additionalEmailAddresses","stripeConnectId","stripeAccountId","init_merchant","__esmMin","payoutSummaryFromAPI","proto","zeroDate","Date","valueOf","nextInTransitPayout","nextInTransitPayoutExpectedDate","undefined","payoutInterval","payoutIntervalFromAPI","payoutDelayDays","balances","map","balance","currencyCode","amount","futurePayouts","inTransit","PayoutInterval","Daily","Weekly","Monthly","init_payout_summary","__esmMin","generateMethodToApi","m","GenerateMethod","SUBSCRIPTION","TEMPLATE","generateMethodFromApi","UNSET","retailConfigurationFromApi","proto","merchantId","retailGroupId","currencyCode","currencyConversionRate","defaultCustomerConfiguration","defaultCustomerConfigurationFromApi","collectionMethod","collectionMethodFromApi","generateMethod","invoiceDay","netD","memo","autoGenerateRetailSubscriptions","defaultCustomerConfigurationToApi","c","pluckUndefined","collectionMethodToApi","o","key","undefined","init_retail_configuration","__esmMin","init_retail_customer_configuration","SortMerchantsBy","MerchantService","init_merchant_service","__esmMin","init_operators","init_core","init_error_handlers","init_pricing","init_vendasta_billing","init_merchant","init_payout_summary","init_retail_configuration","init_payment","constructor","merchantApi","hostService","http","get","merchantId","req","GetMerchantRequest","pipe","map","resp","MerchantFromAPI","merchant","create","address","city","state","country","zipCode","emailAddress","phoneNumber","contactName","companyName","additionalEmailAddresses","merchantType","update","getOutstandingBalance","GetOutstandingBalanceRequest","r","outstanding","outstandingBalance","currency","currencyFromApi","getStatistics","GetStatisticsRequest","sortMerchantByToApi","sortBy","SearchMerchantsRequestSortBy","SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID","SEARCH_MERCHANTS_REQUEST_SORT_BY_COMPANY_NAME","SEARCH_MERCHANTS_REQUEST_SORT_BY_CONTACT_NAME","SEARCH_MERCHANTS_REQUEST_SORT_BY_EMAIL_ADDRESS","SEARCH_MERCHANTS_REQUEST_SORT_BY_COUNTRY","SEARCH_MERCHANTS_REQUEST_SORT_BY_STATE","updated","SEARCH_MERCHANTS_REQUEST_SORT_BY_UPDATED","created","SEARCH_MERCHANTS_REQUEST_SORT_BY_CREATED","sortDirectionToApi","sortDirection","SortDirection","Ascending","SortDirectionApi","SORT_DIRECTION_ASCENDING","Descending","SORT_DIRECTION_DESCENDING","search","searchTerm","pagingOptions","PagedRequestOptions","PagedResponse","merchants","m","pagingMetadata","nextCursor","hasMore","setAutoPostInvoices","autoPostInvoices","shouldAutoPostInvoices","setAutoChargeInvoices","autoChargeInvoices","downloadCsv","queryParams","filename","hostWithScheme","apiOptions","catchError","handleCsvError","setIncludeInFinancialRecords","includeInFinancialRecords","response","ok","sendSalesInvoiceEmail","invoiceId","chargeSalesInvoice","amount","sendSalesInvoiceReceiptEmail","responseType","withCredentials","createExternalAccount","stripeToken","createStripeExternalAccount","CreateStripeExternalAccountRequest","generateAccountBalanceReport","share","getMultiRetailConfigurations","retailGroupIds","request","GetMultiRetailConfigurationsRequest","configMap","Map","forEach","groupId","set","retailConfigurationFromApi","retailConfigurations","upsertRetailConfiguration","retailGroupId","currencyCode","currencyConversionRate","UpsertRetailConfigurationRequest","getPayoutSummary","GetPayoutSummaryRequest","payoutSummaryFromAPI","getRetailPayout","payoutId","GetRetailPayoutRequest","retailPayoutFromApi","payout","listRetailPayouts","cursor","pageSize","ListRetailPayoutsRequest","retailPayouts","payouts","upsertDefaultRetailCustomerConfiguration","defaultCustomerConfiguration","UpsertDefaultRetailCustomerConfigurationRequest","defaultCustomerConfigurationToApi","fieldMask","paths","Object","keys","createReportRun","reportType","intervalStart","intervalEnd","getReportRun","id","getReport","getRetailAccountBalance","balance","setNextRetailInvoiceSequence","nextRetailInvoiceSequence","getNextRetailInvoiceSequence","nextInvoiceNumber","resetPaymentFacilitator","ɵɵinject","MerchantApiService","HostService","HttpClient","factory","ɵfac","providedIn","init_merchant","__esmMin","init_vendasta_billing","init_merchant_service","init_payout_summary","init_merchant_report","__esmMin","isCardExpired","expiryYear","expiryMonth","now","Date","currentYear","getFullYear","currentMonth","getMonth","convertPaymentMethodFromApi","paymentMethod","type","PaymentMethodTypeAPI","PAYMENT_METHOD_TYPE_CARD","details","card","convertApiPaymentCardDetails","undefined","PaymentMethodType","CARD","default","expired","PAYMENT_METHOD_TYPE_ACH_DEBIT","ACH_DEBIT","achDebit","PAYMENT_METHOD_TYPE_ACSS_DEBIT","ACSS_DEBIT","acssDebit","UNSET","init_payment_method","__esmMin","init_vendasta_billing","init_retail_customer_configuration","init_payment_card","PaymentMethodService","init_payment_method_service","__esmMin","init_operators","init_vendasta_billing","init_payment_method","init_payment_card","constructor","apiService","listPaymentCards","merchantId","customerId","req","ListPaymentCardsRequest","pipe","map","resp","paymentCard","c","convertApiPaymentCardDetails","list","ListPaymentMethodsRequest","paymentMethods","m","convertPaymentMethodFromApi","deletePaymentMethod","id","DeletePaymentCardRequest","cardId","deletePaymentCard","mapTo","setDefaultPaymentCard","paymentMethodId","SetDefaultPaymentMethodRequest","setDefaultPaymentMethod","ɵɵinject","PaymentMethodApiService","factory","ɵfac","providedIn","init_payment_method","__esmMin","init_payment_method_service","init_product","__esmMin","init_list_products","init_subscription_retention","__esmMin","init_product_summary","__esmMin","init_subscription_retention","init_purchase","__esmMin","init_purchase_status","init_refund","__esmMin","init_refund_service","__esmMin","init_refund","__esmMin","init_refund_service","init_revenue","__esmMin","init_sales_credit_note","__esmMin","init_sales_invoice","__esmMin","SNAPSHOT_REPORT_SKU","SNAPSHOT_REPORT_REFRESH_SKU","init_sku","__esmMin","init_stripe_file","__esmMin","init_subscription","__esmMin","init_interval_mapping_service","__esmMin","BILLING_MARKETS_SERVICE","init_constants","__esmMin","init_core","InjectionToken","en_devel_default","init_en_devel","__esmMin","BillingI18nModule","init_billing_i18n_module","__esmMin","init_ngx_translate_core","init_src","init_en_devel","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","En","init_i18n","__esmMin","init_billing_i18n_module","init_lib","__esmMin","init_vendasta_billing","init_applied_bundle","init_bank_account","init_bank_reconciliation","init_billable_item","init_billing_service","init_stripe_service","init_bundle","init_contract","init_contract_document","init_core","init_credit","init_credit_note","init_discount","init_invoice","init_merchant","init_merchant_report","init_payment","init_payment_card","init_payment_method","init_pricing","init_product","init_product_summary","init_purchase","init_refund","init_retail_customer_configuration","init_recurring_invoice","init_revenue","init_sales_credit_note","init_sales_invoice","init_sku","init_stripe_file","init_subscription","init_tax_rate","init_interval_mapping_service","init_constants","init_i18n","disputeFromApi","dispute","id","paymentId","status","disputeStatusFromApi","amount","created","currencyCode","evidence","disputeEvidenceFromApi","evidenceDetails","disputeEvidenceDetailsFromApi","isChargeRefundable","reason","fee","feeCurrencyCode","referenceId","paymentReferenceId","referenceType","paymentReferenceType","RetailPaymentReferenceTypeEnum","RETAIL_PAYMENT_REFERENCE_TYPE_UNSET","customerId","description","paymentDescription","customerCommunication","fileFromApi","customerSignature","shippingDocumentation","receipt","uncategorizedFile","billingAddress","customerEmailAddress","customerName","productDescription","file","filename","url","zeroDate","Date","dueBy","isEqual","undefined","hasEvidence","pastDue","submissionCount","DisputeStatusApi","DISPUTE_STATUS_WARNING_NEEDS_RESPONSE","DisputeStatus","WARNING_NEEDS_RESPONSE","DISPUTE_STATUS_WARNING_UNDER_REVIEW","WARNING_UNDER_REVIEW","DISPUTE_STATUS_WARNING_CLOSED","WARNING_CLOSED","DISPUTE_STATUS_NEEDS_RESPONSE","NEEDS_RESPONSE","DISPUTE_STATUS_UNDER_REVIEW","UNDER_REVIEW","DISPUTE_STATUS_CHARGE_REFUNDED","CHARGE_REFUNDED","DISPUTE_STATUS_LOST","LOST","DISPUTE_STATUS_WON","WON","init_dispute","__esmMin","init_vendasta_billing","init_esm","init_lib","PaymentService","init_payment_service","__esmMin","init_operators","init_core","init_vendasta_billing","init_dispute","init_payment","init_retail_payment","init_retail_status","init_provider_determinant","init_payment_facilitator_type","constructor","paymentApi","listPayments","filters","cursor","pageSize","req","ListPaymentRequest","pagingOptions","PagedRequestOptions","list","pipe","map","response","payments","payment","paymentFromApi","PagedResponse","pagingMetadata","nextCursor","hasMore","prepareRetailPayment","merchantId","customerId","PrepareRetailPaymentRequest","prepareRetail","stripeClientSecret","intentId","getRetail","paymentId","resp","retailPaymentFromApi","listRetail","payoutId","createdDateGte","createdDateLte","zeroDate","Date","valueOf","ListRetailPaymentsRequestListRetailPaymentsFilters","ListRetailPaymentsRequest","retailPayments","listRetailTransactions","paymentsOnly","invoiceId","ListRetailTransactionsRequestListRetailTransactionsFilters","undefined","type","RetailTransactionType","RETAIL_TRANSACTION_TYPE_PAYMENT","ListRetailTransactionsRequest","retailTransactions","transactions","transaction","retailTransactionFromApi","getRetailDispute","disputeId","disputeFromApi","dispute","listRetailDisputes","status","ListRetailDisputesRequestListRetailDisputesFilters","ListRetailDisputesRequest","disputes","d","retailStatus","RetailStatusRequest","r","retailResponseFromAPI","retailPaymentsEnabled","RetailPaymentsEnabledRequest","enabled","configureRetailProvider","successUrl","failureUrl","pft","paymentFacilitatorType","paymentFacilitatorTypeToApi","PaymentFacilitatorType","NOT_SET","stripeUrl","getRetailProvider","statementDescriptor","stripeConnectId","paymentFacilitatorTypeFromApi","countryCode","updateRetailProvider","mapTo","submitEvidence","submit","evidence","billingAddress","customerEmailAddress","customerName","productDescription","customerSignatureFileId","customerCommunicationFileId","receiptFileId","shippingDocumentationFileId","uncategorizedFileId","closeDispute","closeRetailDispute","getWholesaleProviderPublicKey","determinant","request","MerchantProviderDeterminant","GetWholesaleProviderPublicKeyRequest","publcApiKey","refundRetail","amount","reason","retailRefundReasonToApi","ɵɵinject","PaymentApiService","factory","ɵfac","providedIn","init_src","__esmMin","init_lib","formatDisplayPrice","value","currency","billingFrequency","isCents","translateZero","displaySymbol","isStartingPrice","price","display","priceFormatFunc","defaultFormatFunc","CZKFormatFunc","convertCentsToDollars","Number","formatBillingFrequency","centValue","isInteger","Math","round","returnValue","toLowerCase","TitleCasePipe","transform","CurrencyPipe","DecimalPipe","replace","currencySymbol","split","MarketplaceBillingFrequency","init_display_price","__esmMin","init_common","removeGoogleTranslatedContent","init_remove_google_translated_content","__esmMin","content","includes","translatedRegex","replace","RemoveGoogleTranslatedContentPipe","init_remove_google_translated_content_pipe","__esmMin","init_remove_google_translated_content","transform","content","options","hideEnglishTranslations","removeGoogleTranslatedContent","pure","standalone","DisplayPriceService","init_display_price_service","__esmMin","init_common","init_esm","init_operators","constructor","translateService","formatDisplayPrice","value","currency","billingFrequency","isCents","translateZero","displaySymbol","isStartingPrice","display","priceFormatFunc","defaultFormatFunc","bind","CZKFormatFunc","price","Number","convertCentsToDollars","pipe","switchMap","formattedPrice","formatBillingFrequency","of","stream","centValue","isInteger","Math","round","frequency","returnValue","toLowerCase","map","v","CurrencyPipe","transform","DecimalPipe","replace","currencySymbol","split","getSetupFeeString","ɵɵinject","TranslateService","factory","ɵfac","DisplayPricePipe","init_display_price_pipe","__esmMin","constructor","displayPriceService","transform","value","currency","billingFrequency","isCents","translateZero","displaySymbol","isStartingPrice","formatDisplayPrice","ɵɵdirectiveInject","DisplayPriceService","pure","standalone","en_default","init_en","__esmMin","CoreSharedModule","init_shared_module","__esmMin","init_common","init_ngx_translate_core","init_display_price_service","init_src","init_en","DisplayPriceService","imports","CommonModule","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","AndroidSettings","IOSSettings","init_definitions","__esmMin","NativeSettings","init_esm","__esmMin","init_dist","init_definitions","registerPlugin","m","pushNotificationsEnabled","__async","Capacitor","isNativePlatform","PushNotifications","checkPermissions","receive","registerForPushNotifications","requestPermissions","register","openAppNotificationSettings","NativeSettings","open","optionAndroid","AndroidSettings","AppNotification","optionIOS","IOSSettings","App","init_mobile","__esmMin","init_dist","init_esm","init_index_esm","__esmMin","init_index_esm2017","requestPermissions","__async","Notification","requestPermission","getPWAToken","vapidKey","swRegistration","messaging","getMessaging","getToken","serviceWorkerRegistration","firebaseConfig","init_pwa","__esmMin","init_index_esm","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","isNumeric","val","isArray","parseFloat","PRICE_REGEX","URL_REGEX","SUBDOMAIN_REGEX","MARKET_ID_REGEX","EMAIL_REGEX","PHONE_NUMBER_REGEX","DYNAMIC_CONTENT_ERROR","POSTAL_CODE_REGEXES","Validator","ContainsValidDynamicContentDirective","init_validator","__esmMin","init_forms","invalidDynamicComponent","CA","US","Array","x","length","URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX","DYNAMIC_CONTENT_REGEX","HEX_COLOR_REGEX","isPrice","control","value","match","toFixed","invalidPrice","isUrl","invalidUrl","isEmailList","toString","split","map","email","trim","filter","invalidEmail","isEmail","isPhoneNumber","invalidPhoneNumber","isValidPostalCode","countryCode","countryRegex","toUpperCase","test","invalidPostalCode","isInRange","lower","upper","Number","outOfRange","isValidMarketId","invalidMarketId","isMinimumLength","minimumLength","minlength","isValidSubdomain","invalidSubdomain","containsValidDynamicContent","dynamicContent","p","search","errorMessage","validatorName","validatorValue","required","requiredLength","invalidZipCode","isGreaterThanZero","isLessThanOrEqualToZero","isValidDate","isNaN","Date","parse","invalidDate","validate","selectors","standalone","features","ɵɵProvidersFeature","provide","NG_VALIDATORS","useExisting","multi","getFieldViolationsFromError","err","error","details","Array","isArray","filter","detail","googleErrorDetailsBadRequestType","reduce","acc","curr","fieldViolations","map","fv","field","description","push","init_verrors","__esmMin","BillingModel","init_billing_model","__esmMin","pricingTypeToBillingModel","pricingType","ProductPricingType","Stairstep","BillingModel","Tiered","Standard","pricingRulesToTiers","rules","map","r","rangeMin","minUnits","rangeMax","maxUnits","price","mapFrequency","frequency","Frequency","OneTime","MarketplaceBillingFrequency","Monthly","Yearly","buildBilledProductFromProductPricingAndAddon","addon","productPricing","productName","productId","addonId","billingModel","undefined","notes","iconURL","productIcon","currency","billingFrequency","pricingTiers","pricingRules","productCategory","commitment","setupFee","init_billed_product","__esmMin","init_src","init_display_price","init_billing_model","init_contract_pricing","__esmMin","init_billed_product","init_billing_model","removeRouterOutletsFromUrl","init_url_helper","__esmMin","url","replace","init_lib","__esmMin","init_display_price","init_shared_module","init_display_price_service","init_validator","init_verrors","init_contract_pricing","init_url_helper","init_mobile","init_pwa","init_src","__esmMin","init_lib"],"x_google_ignoreList":[2,3,8,75,76,128,129,131]}