@voucherify/sdk 2.1.9 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/Campaigns.d.ts +1 -1
- package/dist/voucherifysdk.esm.js +2 -2
- package/dist/voucherifysdk.esm.js.map +1 -1
- package/dist/voucherifysdk.umd.development.js +2 -2
- package/dist/voucherifysdk.umd.development.js.map +1 -1
- package/dist/voucherifysdk.umd.production.min.js +1 -1
- package/dist/voucherifysdk.umd.production.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1453,7 +1453,7 @@
|
|
|
1453
1453
|
let headers = {
|
|
1454
1454
|
'X-App-Id': options.applicationId,
|
|
1455
1455
|
'X-App-Token': options.secretKey,
|
|
1456
|
-
'X-Voucherify-Channel': options.channel || `${environment()}-SDK-v${"2.
|
|
1456
|
+
'X-Voucherify-Channel': options.channel || `${environment()}-SDK-v${"2.2.0"}`,
|
|
1457
1457
|
'Content-Type': 'application/json'
|
|
1458
1458
|
};
|
|
1459
1459
|
|
|
@@ -1703,7 +1703,7 @@
|
|
|
1703
1703
|
let headers = {
|
|
1704
1704
|
'X-Client-Application-Id': options.clientApplicationId,
|
|
1705
1705
|
'X-Client-Token': options.clientSecretKey,
|
|
1706
|
-
'X-Voucherify-Channel': `${environment()}-ClientSide-SDK-v${"2.
|
|
1706
|
+
'X-Voucherify-Channel': `${environment()}-ClientSide-SDK-v${"2.2.0"}`
|
|
1707
1707
|
};
|
|
1708
1708
|
|
|
1709
1709
|
if (environment().startsWith('Node')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voucherifysdk.umd.development.js","sources":["../src/types/DiscountVoucher.ts","../src/VoucherifyError.ts","../src/RequestController.ts","../src/helpers.ts","../src/AsyncActions.ts","../src/Campaigns.ts","../src/Distributions.ts","../src/Exports.ts","../src/Events.ts","../src/Balance.ts","../src/Vouchers.ts","../src/Validations.ts","../src/Redemptions.ts","../src/PromotionTiers.ts","../src/Promotions.ts","../src/Customers.ts","../src/Consents.ts","../src/Orders.ts","../src/Products.ts","../src/Rewards.ts","../src/Loyalties.ts","../src/ValidationRules.ts","../src/Segments.ts","../src/ApiLimitsHandler.ts","../src/MetadataSchemas.ts","../src/VoucherifyServerSide.ts","../src/ClientSide.ts","../src/VoucherifyClientSide.ts"],"sourcesContent":["export type DiscountVouchersTypes = 'AMOUNT' | 'PERCENT' | 'UNIT' | 'FIXED'\n\nexport enum DiscountVouchersTypesEnum {\n\tAMOUNT = 'AMOUNT',\n\tPERCENT = 'PERCENT',\n\tUNIT = 'UNIT',\n\tFIXED = 'FIXED',\n}\n\nexport type DiscountVouchersEffectTypes =\n\t| 'ADD_MISSING_ITEMS'\n\t| 'ADD_NEW_ITEMS'\n\t| 'ADD_MANY_ITEMS'\n\t| 'APPLY_TO_ORDER'\n\t| 'APPLY_TO_ITEMS'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY'\n\nexport type DiscountUnitVouchersEffectTypes = 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS'\n\nexport type DiscountAmountVouchersEffectTypes =\n\t| 'APPLY_TO_ORDER'\n\t| 'APPLY_TO_ITEMS'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY'\n\nexport type DiscountPercentVouchersEffectTypes = 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'\n\nexport type DiscountFixedVouchersEffectTypes = 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'\n\ninterface SimpleSkuDiscountUnit {\n\tid: string\n\tsource_id?: string\n\tsku: string\n}\n\ninterface SimpleProductDiscountUnit {\n\tid: string\n\tsource_id?: string\n\tname: string\n}\n\nexport interface DiscountUnit {\n\ttype?: DiscountVouchersTypesEnum.UNIT\n\tunit_off?: number\n\teffect?: DiscountUnitVouchersEffectTypes\n\tunit_type?: string\n\tproduct?: SimpleProductDiscountUnit\n\tsku?: SimpleSkuDiscountUnit\n}\n\nexport interface DiscountAmount {\n\ttype?: DiscountVouchersTypesEnum.AMOUNT\n\tamount_off?: number\n\teffect?: DiscountAmountVouchersEffectTypes\n}\n\nexport interface DiscountPercent {\n\ttype?: DiscountVouchersTypesEnum.PERCENT\n\tpercent_off?: number\n\tamount_limit?: number\n\teffect?: DiscountPercentVouchersEffectTypes\n}\n","import { AxiosError } from 'axios'\n\n/**\n * @internal\n */\nexport class VoucherifyError extends Error {\n\tpublic code: number\n\tpublic key: string\n\tpublic details?: string\n\tpublic request_id?: string\n\tpublic resource_id?: string\n\tpublic resource_type?: string\n\tpublic related_object_ids?: string[]\n\tpublic related_object_type?: string\n\tpublic related_object_total?: number\n\tpublic cause?: AxiosError\n\n\tconstructor(statusCode: number, body?: unknown, axiosError?: AxiosError) {\n\t\tbody = body ?? {}\n\n\t\tconst message = (<any>body)?.message || generateMessage(body, statusCode)\n\n\t\tsuper(message)\n\n\t\tthis.code = (<any>body).code\n\t\tthis.key = (<any>body).key\n\t\tthis.details = (<any>body).details\n\t\tthis.request_id = (<any>body).request_id\n\t\tthis.resource_id = (<any>body).resource_id\n\t\tthis.resource_type = (<any>body).resource_type\n\t\tthis.related_object_ids = (<any>body).related_object_ids\n\t\tthis.related_object_type = (<any>body).related_object_type\n\t\tthis.related_object_total = (<any>body).related_object_total\n\t\tthis.cause = axiosError\n\t}\n}\n\nfunction generateMessage(body: unknown, statusCode: number) {\n\tbody = typeof body === 'string' ? body : JSON.stringify(body, null, 2)\n\n\treturn `Unexpected status code: ${statusCode} - Details: ${body}`\n}\n","import axios, { AxiosError, AxiosInstance } from 'axios'\n\nimport Qs from 'qs'\nimport { VoucherifyError } from './VoucherifyError'\n\nexport interface RequestControllerOptions {\n\tbaseURL: string\n\tbasePath: string\n\theaders: Record<string, any>\n\texposeErrorCause: boolean\n}\n\n/**\n * @internal\n */\nexport class RequestController {\n\tprivate baseURL: string\n\tprivate basePath: string\n\tprivate headers: Record<string, any>\n\tprivate request: AxiosInstance\n\tprivate lastResponseHeaders: Record<string, string>\n\tprivate isLastResponseHeadersSet: boolean\n\tprivate exposeErrorCause: boolean\n\n\tconstructor({ basePath, baseURL, headers, exposeErrorCause }: RequestControllerOptions) {\n\t\tthis.basePath = basePath\n\t\tthis.baseURL = baseURL\n\t\tthis.headers = headers\n\t\tthis.exposeErrorCause = exposeErrorCause\n\t\tthis.lastResponseHeaders = {}\n\t\tthis.isLastResponseHeadersSet = false\n\n\t\tthis.request = axios.create({\n\t\t\tbaseURL: `${this.baseURL}/${this.basePath}/`,\n\t\t\theaders: this.headers,\n\t\t\tresponseType: 'json',\n\t\t})\n\t\tthis.request.interceptors.response.use(void 0, (error: AxiosError<unknown>) => {\n\t\t\t/**\n\t\t\t * Handle any HTTP response error (status code outside of 2xx) as a VoucherifyError\n\t\t\t */\n\t\t\tif (error?.response?.status) {\n\t\t\t\treturn Promise.reject(\n\t\t\t\t\tnew VoucherifyError(\n\t\t\t\t\t\terror.response.status,\n\t\t\t\t\t\terror.response.data,\n\t\t\t\t\t\tthis.exposeErrorCause === true ? error : undefined,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Promise.reject(error)\n\t\t})\n\t}\n\tpublic isLastReponseHeadersSet(): boolean {\n\t\treturn this.isLastResponseHeadersSet\n\t}\n\tpublic getLastResponseHeaders(): Record<string, string> {\n\t\treturn this.lastResponseHeaders\n\t}\n\tprivate setLastResponseHeaders(headers: Record<string, string>) {\n\t\tthis.lastResponseHeaders = headers\n\t\tthis.isLastResponseHeadersSet = true\n\t}\n\tpublic setBaseUrl(baseURL: string) {\n\t\tthis.baseURL = baseURL\n\t\tthis.request.defaults.baseURL = `${baseURL}/${this.basePath}/`\n\t}\n\tpublic async get<T>(path: string, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.get<T>(path, {\n\t\t\tparams,\n\t\t\tparamsSerializer: function (params) {\n\t\t\t\treturn Qs.stringify(params)\n\t\t\t},\n\t\t})\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async post<T>(\n\t\tpath: string,\n\t\tbody: Record<string, any>,\n\t\tparams?: Record<string, any>,\n\t\theaders?: Record<string, any>,\n\t): Promise<T> {\n\t\tconst response = await this.request.post<T>(path, body, {\n\t\t\tparams,\n\t\t\tparamsSerializer: function (params) {\n\t\t\t\treturn Qs.stringify(params)\n\t\t\t},\n\t\t\theaders,\n\t\t})\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async put<T>(path: string, body: Record<string, any>, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.put<T>(path, body, { params })\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async delete<T>(path: string, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.delete<T>(path, { params })\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n}\n","export function encode(value: string = '') {\n\treturn encodeURIComponent(value)\n}\nexport function isNumber(value: any): value is number {\n\t// eslint-disable-next-line no-self-compare\n\treturn typeof value === 'number' && value === value\n}\nexport function isString(value: any): value is string {\n\treturn typeof value === 'string'\n}\nexport function isOptionalString(value: any): value is string | undefined {\n\treturn value == null || isString(value)\n}\nexport function isObject<T extends Record<string, any> = Record<string, any>>(value: any): value is T {\n\treturn typeof value === 'object' && !Array.isArray(value) && value !== null\n}\nexport function isOptionalObject<T extends Record<string, any> = Record<string, any>>(\n\tvalue: any,\n): value is T | null | undefined {\n\treturn value == null || isObject(value)\n}\nexport function isFunction(value: any): value is Function {\n\treturn typeof value === 'function'\n}\nexport function exists<T extends any>(value: T): value is NonNullable<T> {\n\treturn typeof value !== 'undefined' && value !== null\n}\n\nexport function environment(): string {\n\tif (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n\t\treturn 'Browser'\n\t\t// eslint-disable-next-line no-restricted-globals\n\t} else if (typeof self === 'object' && self.constructor && self.constructor.name === 'DedicatedWorkerGlobalScope') {\n\t\treturn 'WebWorker'\n\t} else if (typeof process !== 'undefined' && process.versions != null && process.versions.node != null) {\n\t\treturn `Node.js-${process.version}`\n\t} else if (\n\t\t(typeof window !== 'undefined' && window.name === 'nodejs') ||\n\t\tnavigator.userAgent.includes('Node.js') ||\n\t\tnavigator.userAgent.includes('jsdom')\n\t) {\n\t\treturn 'JsDom'\n\t}\n\n\treturn 'Unknown'\n}\n\nexport function assert(condition: any, message?: string): asserts condition {\n\tif (condition) return\n\tthrow new Error(message)\n}\n\n/**\n * Return an object containing all properties of `obj` excluding the ones in `keys` array\n * e.g:\n * ```javascript\n * omit({ a: 1, b: 2, c: 3, d: 4 }, ['b', 'd']) // output: { a: 1, c: 3 }\n * ```\n */\nexport function omit<T extends {}, K extends keyof T>(obj: T, keys: K[]): Omit<T, K> {\n\treturn Object.fromEntries(\n\t\tObject.entries(obj).filter(([propertyKey]) => {\n\t\t\treturn !keys.includes(propertyKey as K)\n\t\t}),\n\t) as Omit<T, K>\n}\n","import * as T from './types/AsyncActions'\n\nimport { encode } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nclass AsyncActions {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-async-actions-1\n\t */\n\tpublic get(asyncActionId: string) {\n\t\treturn this.client.get<T.AsyncActionsGetResponse>(`/async-actions/${encode(asyncActionId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-async-actions\n\t */\n\tpublic list(params: T.AsyncActionsListParams) {\n\t\treturn this.client.get<T.AsyncActionsListResponse>('/async-actions', params)\n\t}\n}\n\nexport { AsyncActions }\n","import * as T from './types/Campaigns'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nclass CampaignsQualifications {\n\tconstructor(private client: RequestController) {}\n\n\tpublic examine(body: T.CampaignsQualificationsBody = {}, params?: T.CampaignsQualificationsParams) {\n\t\treturn this.client.post<T.CampaignsQualificationsResponse>('/campaigns/qualification', body, params)\n\t}\n}\n\nexport class Campaigns {\n\tpublic qualifications: CampaignsQualifications\n\n\tconstructor(private client: RequestController) {\n\t\tthis.qualifications = new CampaignsQualifications(this.client)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-campaign\n\t */\n\tpublic create(campaign: T.CampaignsCreateCampaign) {\n\t\treturn this.client.post<T.CampaignsCreateCampaignResponse>('/campaigns', campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-campaign\n\t */\n\tpublic update(nameOrId: string, campaign: T.CampaignsUpdateCampaign) {\n\t\treturn this.client.put<T.CampaignsUpdateCampaignResponse>(`/campaigns/${encode(nameOrId)}`, campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-campaign\n\t */\n\tpublic get(name: string) {\n\t\treturn this.client.get<T.CampaignsGetCampaignResponse>(`/campaigns/${encode(name)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-campaign\n\t */\n\tpublic delete(name: string, params: T.CampaignsDeleteParams = {}) {\n\t\treturn this.client.delete(`/campaigns/${encode(name)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-voucher-to-campaign\n\t */\n\n\tpublic addVoucher(name: string, body: T.CampaignsAddVoucherBody = {}, params: T.CampaignsAddVoucherParams = {}) {\n\t\treturn this.client.post<T.CampaignsAddVoucherResponse | {}>(`/campaigns/${encode(name)}/vouchers`, body, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-voucher-with-certain-code-to-campaign\n\t */\n\n\tpublic addCertainVoucher(name: string, code: string, body: T.CampaignsAddCertainVoucherParams = {}) {\n\t\treturn this.client.post<T.CampaignsAddCertainVoucherResponse>(\n\t\t\t`/campaigns/${encode(name)}/vouchers/${encode(code)}`,\n\t\t\tbody,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-vouchers\n\t */\n\tpublic importVouchers(campaignName: string, vouchers: T.CampaignsImportVouchers[]) {\n\t\treturn this.client.post<T.CampaignsVouchersImportResponse>(`/campaigns/${encode(campaignName)}/import`, vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-campaigns\n\t */\n\tpublic list(params: T.CampaignsListParams = {}) {\n\t\treturn this.client.get('/campaigns', params)\n\t}\n}\n","import * as T from './types/Distributions'\n\nimport type { Exports } from './Exports'\nimport type { RequestController } from './RequestController'\n\nclass DistributionsPublications {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-publications\n\t */\n\tpublic list(params: T.DistributionsPublicationsListParams = {}) {\n\t\treturn this.client.get<T.DistributionsPublicationsListResponse>('/publications', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-publication\n\t */\n\tpublic create(params: T.DistributionsPublicationsCreateParams) {\n\t\treturn this.client.post<T.DistributionsPublicationsCreateResponse>('/publications', params)\n\t}\n}\n\nexport class Distributions {\n\tpublic publications: DistributionsPublications\n\n\tconstructor(private client: RequestController, public exports: Exports) {\n\t\tthis.publications = new DistributionsPublications(this.client)\n\t}\n}\n","import * as T from './types/Exports'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Exports {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-export\n\t */\n\tpublic create(exportResource: T.ExportResource) {\n\t\treturn this.client.post<T.ExportsCreateResponse>('/exports', exportResource)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-export\n\t */\n\tpublic get(exportResourceId: string) {\n\t\treturn this.client.get<T.ExportsGetResponse>(`/exports/${encode(exportResourceId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-export\n\t */\n\tpublic delete(exportResourceId: string) {\n\t\treturn this.client.delete(`/exports/${encode(exportResourceId)}`)\n\t}\n}\n","import * as T from './types/Events'\n\nimport type { RequestController } from './RequestController'\n\nexport class Events {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/track-custom-event-client-side\n\t */\n\tpublic create(eventName: string, params: T.EventsParams) {\n\t\tparams = { ...params, event: eventName }\n\t\treturn this.client.post<T.EventsResponse>('/events', params)\n\t}\n}\n","import * as T from './types/Balance'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class Balance {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * Add Gift Voucher Balance\n\t * This method gives a possibility to add balance to an existing gift voucher.\n\t * @see https://docs.voucherify.io/reference/add-gift-voucher-balance\n\t */\n\tpublic create(code: string, params: T.BalanceCreateParams) {\n\t\treturn this.client.post<T.BalanceCreateResponse>(`/vouchers/${encode(code)}/balance`, params)\n\t}\n}\n","import * as T from './types/Vouchers'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\nimport type { Balance } from './Balance'\n\nclass VouchersQualification {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * The method can be used for sending a request to display all vouchers qualified to the given customer and context (e.g., order, loyalty reward). A checking logic won't run among coupons from bulk unique codes campaigns. For campaigns with multiple unique codes, you should run a dedicated function for searching for qualified campaigns.\n\t * As a sample use case, you can imagine a requirement of displaying below cart the coupons eligible to a customer. The customer can take and apply the proposed voucher.\n\t *\n\t * @see https://docs.voucherify.io/reference/push-qualification-request\n\t */\n\tpublic examine(body: T.VouchersQualificationExamineBody, params: T.VouchersQualificationExamineParams = {}) {\n\t\treturn this.client.post<T.VouchersQualificationExamineResponse>('/vouchers/qualification', body, params)\n\t}\n}\nexport class Vouchers {\n\tpublic qualifications: VouchersQualification\n\n\tconstructor(private client: RequestController, public balance: Balance) {\n\t\tthis.qualifications = new VouchersQualification(this.client)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-voucher\n\t */\n\tpublic create(voucher: T.VouchersCreate) {\n\t\treturn this.client.post<T.VouchersCreateResponse>(`/vouchers/${encode(voucher.code)}`, voucher)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-get\n\t */\n\tpublic get(code: string) {\n\t\treturn this.client.get<T.VouchersGetResponse>(`/vouchers/${encode(code)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-voucher\n\t */\n\tpublic update(voucher: T.VouchersUpdate) {\n\t\treturn this.client.put<T.VouchersUpdateResponse>(`/vouchers/${encode(voucher.code)}`, voucher)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-voucher\n\t */\n\tpublic delete(code: string, params: T.VouchersDeleteParams = {}) {\n\t\treturn this.client.delete(`/vouchers/${encode(code)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-vouchers\n\t */\n\tpublic list(params: T.VouchersListParams = {}) {\n\t\treturn this.client.get<T.VouchersListResponse>('/vouchers', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/enable-voucher\n\t */\n\tpublic enable(code: string) {\n\t\treturn this.client.post<T.VouchersEnableResponse>(`/vouchers/${encode(code)}/enable`, {})\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/disable-voucher\n\t */\n\tpublic disable(code: string) {\n\t\treturn this.client.post<T.VouchersDisableResponse>(`/vouchers/${encode(code)}/disable`, {})\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-vouchers-1\n\t */\n\tpublic import(vouchers: T.VouchersImport[]) {\n\t\treturn this.client.post<T.VouchersImportResponse>('/vouchers/import', vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/aaupdate-vouchers-metadata-in-bulk\n\t */\n\tpublic bulkUpdateMetadata(params: T.VouchersBulkUpdateMetadata) {\n\t\treturn this.client.post<T.VouchersBulkUpdateMetadataResponse>('/vouchers/metadata/async', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/aa-update-vouchers-in-bulk\n\t */\n\tpublic bulkUpdate(vouchers: T.VouchersBulkUpdate) {\n\t\treturn this.client.post<T.VouchersBulkUpdateResponse>('/vouchers/bulk/async', vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/release-validation-session\n\t */\n\tpublic releaseValidationSession(code: string, sessionKey: string) {\n\t\treturn this.client.delete(`/vouchers/${encode(code)}/sessions/${encode(sessionKey)}`)\n\t}\n}\n","import * as T from './types/Validations'\n\nimport { encode, isObject } from './helpers'\nimport type { RequestController } from './RequestController'\nimport type { Promotions } from './Promotions'\n\nexport class Validations {\n\tconstructor(private client: RequestController, private promotions: Promotions) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-voucher\n\t */\n\tpublic validateVoucher(code: string, params: T.ValidationsValidateVoucherParams = {}) {\n\t\treturn this.client.post<T.ValidationsValidateVoucherResponse>(`/vouchers/${encode(code)}/validate`, params)\n\t}\n\n\tpublic validate(code: string | T.ValidationsValidateCode, context: T.ValidationsValidateContext = {}) {\n\t\tif (isObject(code)) {\n\t\t\treturn this.promotions.validate(code)\n\t\t}\n\n\t\treturn this.validateVoucher(code, context)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-stacked-discounts-1\n\t */\n\tpublic validateStackable(params: T.ValidationsValidateStackableParams) {\n\t\treturn this.client.post<T.ValidationValidateStackableResponse>(`/validations`, params)\n\t}\n}\n","import * as T from './types/Redemptions'\n\nimport { encode, isObject, isString } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class Redemptions {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-voucher\n\t */\n\tpublic redeem(code: string, body: T.RedemptionsRedeemBody = {}) {\n\t\treturn this.client.post<T.RedemptionsRedeemResponse>(`/vouchers/${encode(code)}/redemption`, body)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-stacked-discounts\n\t */\n\tpublic redeemStackable(params: T.RedemptionsRedeemStackableParams) {\n\t\treturn this.client.post<T.RedemptionsRedeemStackableResponse>(`/redemptions`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-redemption\n\t */\n\tpublic get(redemptionId: string) {\n\t\treturn this.client.get<T.Redemption>(`/redemptions/${encode(redemptionId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-redemptions\n\t */\n\tpublic list(params: T.RedemptionsListParams = {}) {\n\t\treturn this.client.get<T.RedemptionsListResponse>('/redemptions', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-redemptions\n\t */\n\tpublic getForVoucher(code: string) {\n\t\treturn this.client.get<T.RedemptionsGetForVoucherResponse>(`/vouchers/${encode(code)}/redemption`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/rollback-redemption\n\t */\n\tpublic rollback(redemptionId: string, params?: T.RedemptionsRollbackParams) {\n\t\tlet queryParams: T.RedemptionsRollbackQueryParams = {}\n\t\tlet payload: T.RedemptionsRollbackPayload = {}\n\n\t\tif (isString(params)) {\n\t\t\tqueryParams.reason = params\n\t\t} else if (isObject(params)) {\n\t\t\tconst { reason, tracking_id: trackingId, customer } = params\n\n\t\t\tqueryParams = {\n\t\t\t\treason: reason ? reason : undefined,\n\t\t\t\ttracking_id: trackingId ? trackingId : undefined,\n\t\t\t}\n\t\t\tpayload = { customer }\n\t\t}\n\n\t\treturn this.client.post<T.RedemptionsRollbackResponse>(\n\t\t\t`/redemptions/${encode(redemptionId)}/rollback`,\n\t\t\tpayload,\n\t\t\tqueryParams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/rollback-stackable-redemptions\n\t * Types of params and queryParams WILL be changed in future - please do not depend on it!\n\t */\n\tpublic rollbackStackable(parentRedemptionId: string, params?: any, queryParams?: any) {\n\t\treturn this.client.post<T.RedemptionsRollbackStackableResponse>(\n\t\t\t`/redemptions/${encode(parentRedemptionId)}/rollbacks`,\n\t\t\tparams,\n\t\t\tqueryParams,\n\t\t)\n\t}\n}\n","import * as T from './types/PromotionTiers'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class PromotionTiers {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-promotion-tiers\n\t */\n\tpublic listAll(params: T.PromotionTiersListAllParams = {}) {\n\t\treturn this.client.get<T.PromotionTiersListAllResponse>('/promotions/tiers', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-promotions\n\t */\n\tpublic list(promotionId: string) {\n\t\treturn this.client.get<T.PromotionTiersListResponse>(`/promotions/${encode(promotionId)}/tiers`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-promotion-tier-to-campaign\n\t */\n\tpublic create(promotionId: string, params: T.PromotionTiersCreateParams) {\n\t\treturn this.client.post<T.PromotionTiersCreateResponse>(`/promotions/${encode(promotionId)}/tiers`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-promotion\n\t */\n\tpublic redeem(promotionsTierId: string, params: T.PromotionTiersRedeemParams) {\n\t\treturn this.client.post<T.PromotionTiersRedeemResponse>(\n\t\t\t`/promotions/tiers/${encode(promotionsTierId)}/redemption`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-promotion\n\t */\n\tpublic update(params: T.PromotionTiersUpdateParams) {\n\t\treturn this.client.put<T.PromotionTiersUpdateResponse>(`/promotions/tiers/${encode(params.id)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-promotion\n\t */\n\tpublic delete(promotionsTierId: string) {\n\t\treturn this.client.delete(`/promotions/tiers/${encode(promotionsTierId)}`)\n\t}\n}\n","import * as T from './types/Promotions'\n\nimport type { RequestController } from './RequestController'\nimport type { PromotionTiers } from './PromotionTiers'\n\nexport class Promotions {\n\tconstructor(private client: RequestController, public tiers: PromotionTiers) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-promotion-campaign\n\t */\n\tpublic create(promotionCampaign: T.PromotionsCreate) {\n\t\treturn this.client.post<T.PromotionsCreateResponse>('/campaigns', promotionCampaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-promotions-1\n\t */\n\tpublic validate(body: T.PromotionsValidateParams, params?: T.PromotionsValidateQueryParams) {\n\t\treturn this.client.post<T.PromotionsValidateResponse>('/promotions/validation', body, params)\n\t}\n}\n","import * as T from './types/Customers'\n\nimport { encode, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nclass Customers {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-customer\n\t */\n\tpublic create(customer: T.CustomersCreateBody) {\n\t\treturn this.client.post<T.CustomersCreateResponse>('/customers', customer)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/read-customer\n\t */\n\tpublic get(customerId: string) {\n\t\treturn this.client.get<T.CustomersGetResponse>(`/customers/${encode(customerId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-customers\n\t */\n\tpublic list(params: T.CustomersListParams) {\n\t\treturn this.client.get<T.CustomersListResponse>('/customers', params)\n\t}\n\t/**\n\t * Standard list customers API has limitation of available pages to be shown equal to 100. To cover cases when you would like to fetch more, you must use scroll capabilities.\n\t *\n\t * ```javascript\n\t * async function () {\n\t *\t\tfor await (const customer of voucherify.customers.scroll(params)) {\n\t *\t\t\tconsole.log('Customer', customer)\n\t *\t\t}\n\t * }\n\t * ```\n\t */\n\tpublic async *scroll(\n\t\tparams: T.CustomersScrollParams,\n\t): AsyncGenerator<T.CustomersScrollYield, void, T.CustomersScrollYield> {\n\t\tlet startingAfter =\n\t\t\tparams.starting_after ?? (params.order === 'created_at' ? '1970-01-01T00:00:00Z' : '2200-01-01T00:00:00Z')\n\t\tlet response = await this.client.get<T.CustomersScrollResponse>(\n\t\t\t'/customers',\n\t\t\tObject.assign({}, params, { starting_after: startingAfter }),\n\t\t)\n\n\t\twhile (true) {\n\t\t\tif (response.customers.length === 0) break\n\n\t\t\tfor (const customer of response.customers) {\n\t\t\t\tif (params.order === 'created_at') {\n\t\t\t\t\tstartingAfter = startingAfter > customer.created_at ? startingAfter : customer.created_at\n\t\t\t\t} else {\n\t\t\t\t\tstartingAfter = startingAfter < customer.created_at ? startingAfter : customer.created_at\n\t\t\t\t}\n\t\t\t\tyield customer\n\t\t\t}\n\n\t\t\tif (!response.has_more) break\n\n\t\t\tresponse = await this.client.get('/customers', Object.assign({}, params, { starting_after: startingAfter }))\n\t\t}\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customer\n\t */\n\tpublic update(customer: T.CustomersUpdateParams) {\n\t\tconst id = 'id' in customer ? customer.id : customer.source_id\n\n\t\tconst customerWithoutId = omit(customer, ['id'])\n\n\t\treturn this.client.put<T.CustomersUpdateResponse>(`/customers/${encode(id)}`, customerWithoutId)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-customer\n\t */\n\tpublic delete(customerId: string) {\n\t\treturn this.client.delete<undefined>(`/customers/${encode(customerId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-consents\n\t */\n\tpublic updateConsents(idOrSourceId: string, consents: T.CustomersUpdateConsentsBody) {\n\t\treturn this.client.put<undefined>(`/customers/${encode(idOrSourceId)}/consents`, consents)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-customer-activities\n\t */\n\tpublic listActivities(customerId: string, params?: T.CustomerActivitiesListQueryParams) {\n\t\treturn this.client.get<T.CustomerActivitiesListResponse>(`/customers/${encode(customerId)}/activities`, params)\n\t}\n}\n\nexport { Customers }\n","import * as T from './types/Consents'\n\nimport type { RequestController } from './RequestController'\n\nexport class Consents {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-consents\n\t */\n\tpublic list() {\n\t\treturn this.client.get<T.ConsentsListResponse>('/consents')\n\t}\n}\n","import * as T from './types/Orders'\nimport * as AAT from './types/AsyncActions'\n\nimport { encode, omit } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Orders {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-order\n\t */\n\tpublic create(order: T.OrdersCreate) {\n\t\treturn this.client.post<T.OrdersCreateResponse>('/orders', order)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-order\n\t */\n\tpublic get(orderId: string) {\n\t\treturn this.client.get<T.OrdersGetResponse>(`/orders/${encode(orderId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-order\n\t */\n\tpublic update(order: T.OrdersUpdate) {\n\t\treturn this.client.put<T.OrdersUpdateResponse>(\n\t\t\t`/orders/${encode(order.id || order.source_id)}`,\n\t\t\tomit(order, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-orders\n\t */\n\tpublic list(params: T.OrdersListParams = {}) {\n\t\treturn this.client.get<T.OrdersListResponse>('/orders', params)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-orders\n\t */\n\tpublic import(orders: T.OrdersCreate[]) {\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>('/orders/import', orders)\n\t}\n}\n","import * as T from './types/Products'\n\nimport { encode, omit } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Products {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-product\n\t */\n\tpublic create(product: T.ProductsCreate) {\n\t\treturn this.client.post<T.ProductsCreateResponse>('/products', product)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-product\n\t */\n\tpublic get(productId: string) {\n\t\treturn this.client.get<T.ProductsGetResponse>(`/products/${encode(productId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-product\n\t */\n\tpublic update(product: T.ProductsUpdate) {\n\t\treturn this.client.put<T.ProductsUpdateResponse>(\n\t\t\t`/products/${encode(product.id || product.source_id)}`,\n\t\t\tomit(product, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/async-update-products-metadata-in-bulk\n\t */\n\tpublic bulkUpdateMetadata(products: T.ProductsBulkUpdateMetadata) {\n\t\treturn this.client.post<T.ProductsBulkUpdateMetadataResponse>('/products/metadata/async', products)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/post-products-in-bulk\n\t */\n\tpublic bulkUpdate(products: T.ProductsBulkUpdate) {\n\t\treturn this.client.post<T.ProductsBulkUpdateResponse>('/products/bulk/async', products)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-product\n\t */\n\tpublic delete(productId: string, params?: T.ProductsDeleteParams) {\n\t\treturn this.client.delete(`/products/${encode(productId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-products\n\t */\n\tpublic list(params?: T.ProductsListParams) {\n\t\treturn this.client.get<T.ProductsListResponse>('/products', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-sku\n\t */\n\tpublic createSku(productId: string, sku: T.ProductsCreateSku) {\n\t\treturn this.client.post<T.ProductsCreateSkuResponse>(`/products/${encode(productId)}/skus`, sku)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-sku-v20210726\n\t */\n\tpublic getSku(skuId: string) {\n\t\treturn this.client.get<T.ProductsGetSkuResponse>(`/skus/${encode(skuId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-sku\n\t */\n\tpublic updateSku(productId: string, sku: T.ProductsUpdateSku) {\n\t\treturn this.client.put<T.ProductsUpdateSkuResponse>(\n\t\t\t`/products/${encode(productId)}/skus/${encode(sku.id || sku.source_id)}`,\n\t\t\tomit(sku, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-sku\n\t */\n\tpublic deleteSku(productId: string, skuId: string, params?: T.ProductsDeleteSkuParams) {\n\t\treturn this.client.delete(`/products/${encode(productId)}/skus/${encode(skuId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-skus\n\t */\n\tpublic listSkus(productId: string) {\n\t\treturn this.client.get<T.ProductsListSkus>(`/products/${encode(productId)}/skus`)\n\t}\n}\n","import * as T from './types/Rewards'\n\nimport { encode, omit } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Rewards {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-rewards\n\t */\n\tpublic list(params: T.RewardsListParams = {}) {\n\t\treturn this.client.get<T.RewardsListResponse>('/rewards', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward\n\t */\n\tpublic create(reward: T.RewardsCreate) {\n\t\treturn this.client.post<T.RewardsCreateResponse>('/rewards', reward)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-reward\n\t */\n\tpublic get(rewardId: string) {\n\t\treturn this.client.get<T.RewardsGetResponse>(`/rewards/${encode(rewardId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward\n\t */\n\tpublic update(reward: T.RewardsUpdate) {\n\t\treturn this.client.put<T.RewardsUpdateResponse>(`/rewards/${encode(reward.id)}`, omit(reward, ['id']))\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-reward\n\t */\n\tpublic delete(rewardId: string) {\n\t\treturn this.client.delete(`/rewards/${encode(rewardId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-reward-assignments\n\t */\n\tpublic listAssignments(rewardId: string, params: T.RewardsListAssignmentsParams = {}) {\n\t\treturn this.client.get<T.RewardsListAssignmentsResponse>(`/rewards/${encode(rewardId)}/assignments`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward-assignment\n\t */\n\tpublic createAssignment(rewardId: string, assignment: T.RewardsCreateAssignment) {\n\t\treturn this.client.post<T.RewardsCreateAssignmentResponse>(`/rewards/${encode(rewardId)}/assignments`, assignment)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward-assignment\n\t */\n\tpublic updateAssignment(rewardId: string, assignment: T.RewardsUpdateAssignment) {\n\t\treturn this.client.put<T.RewardsUpdateAssignmentResponse>(\n\t\t\t`/rewards/${encode(rewardId)}/assignments/${encode(assignment.id)}`,\n\t\t\tomit(assignment, ['id']),\n\t\t)\n\t}\n\tpublic deleteAssignment(rewardId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/rewards/${encode(rewardId)}/assignments/${encode(assignmentId)}`)\n\t}\n}\n","import * as T from './types/Loyalties'\n\nimport { encode, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class Loyalties {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-programs\n\t */\n\tpublic list(params: T.LoyaltiesListParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListResponse>('/loyalties', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-loyalty-program\n\t */\n\tpublic create(campaign: T.LoyaltiesCreateCampaign) {\n\t\treturn this.client.post<T.LoyaltiesCreateCampaignResponse>('/loyalties', campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-loyalty-program\n\t */\n\tpublic get(campaignId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetCampaignResponse>(`/loyalties/${encode(campaignId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-loyalty-program\n\t */\n\tpublic update(campaign: T.LoyaltiesUpdateCampaign) {\n\t\treturn this.client.put<T.LoyaltiesUpdateCampaignResponse>(\n\t\t\t`/loyalties/${encode(campaign.id)}`,\n\t\t\tomit(campaign, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-loyalty-program\n\t */\n\tpublic delete(campaignId: string, params?: T.LoyaltiesDeleteCampaignParams) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-reward-assignments-1\n\t */\n\tpublic listRewardAssignments(campaignId: string, params: T.LoyaltiesListRewardAssignmentsParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListRewardAssignmentsResponse>(`/loyalties/${encode(campaignId)}/rewards`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward-assignment-1\n\t */\n\tpublic createRewardAssignments(campaignId: string, assignment: T.LoyaltiesCreateRewardAssignments[]) {\n\t\treturn this.client.post<T.LoyaltiesCreateRewardAssignmentResponse[]>(\n\t\t\t`/loyalties/${encode(campaignId)}/rewards`,\n\t\t\tassignment,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward-assignment-1\n\t */\n\tpublic updateRewardAssignment(campaignId: string, assignment: T.LoyaltiesUpdateRewardAssignment) {\n\t\treturn this.client.put<T.LoyaltiesUpdateRewardAssignmentResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/rewards/${assignment.id}`,\n\t\t\tomit(assignment, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-reward-assignment-1\n\t */\n\tpublic deleteRewardAssignment(campaignId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}/rewards/${assignmentId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-earning-rules\n\t */\n\tpublic listEarningRules(campaignId: string, params: T.LoyaltiesListEarningRulesParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListEarningRulesResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-earning-rule\n\t */\n\tpublic createEarningRule(campaignId: string, earningRules: T.LoyaltiesCreateEarningRule[]) {\n\t\treturn this.client.post<T.LoyaltiesCreateEarningRuleResponse[]>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules`,\n\t\t\tearningRules,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-earning-rule\n\t */\n\tpublic updateEarningRule(campaignId: string, earningRule: T.LoyaltiesUpdateEarningRule) {\n\t\treturn this.client.put<T.LoyaltiesUpdateEarningRuleResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules/${earningRule.id}`,\n\t\t\tomit(earningRule, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-earning-rule\n\t */\n\tpublic deleteEarningRule(campaignId: string, earningRuleId: string) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}/earning-rules/${earningRuleId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-members\n\t */\n\tpublic listMembers(campaignId: string, params?: T.LoyaltiesListMembersParams) {\n\t\treturn this.client.get<T.LoyaltiesListMembersResponse>(`/loyalties/${encode(campaignId)}/members`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-member\n\t */\n\tpublic createMember(campaignId: string, member: T.LoyaltiesCreateMember) {\n\t\treturn this.client.post<T.LoyaltiesCreateMemberResponse>(`/loyalties/${encode(campaignId)}/members`, member)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-member\n\t */\n\tpublic getMember(campaignId: string, memberId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetMemberResponse>(`/loyalties/${encode(campaignId)}/members/${memberId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-member-activities\n\t */\n\tpublic getMemberActivities(campaignId: string, memberId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetMemberActivitiesResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${memberId}/activities`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-loyalty-card-balance\n\t */\n\tpublic addPoints(campaignId: string, memberId: string, balance: T.LoyaltiesAddPoints) {\n\t\treturn this.client.post<T.LoyaltiesAddPointsResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${memberId}/balance`,\n\t\t\tbalance,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-loyalty-card\n\t */\n\tpublic redeemReward(campaignId: string, memberId: string, params: T.LoyaltiesRedeemRewardParams) {\n\t\treturn this.client.post<T.LoyaltiesRedeemRewardResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${encode(memberId)}/redemption`,\n\t\t\tparams,\n\t\t)\n\t}\n}\n","import * as T from './types/ValidationRules'\n\nimport { encode, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class ValidationRules {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-validation-rules\n\t */\n\tpublic create(validationRule: T.ValidationRulesCreate) {\n\t\treturn this.client.post<T.ValidationRulesCreateResponse>('/validation-rules', validationRule)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-validation-rules\n\t */\n\tpublic get(validationRuleId: string) {\n\t\treturn this.client.get<T.ValidationRulesGetResponse>(`/validation-rules/${encode(validationRuleId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-validation-rules\n\t */\n\tpublic update(validationRule: T.ValidationRulesUpdate) {\n\t\treturn this.client.put<T.ValidationRulesUpdateResponse>(\n\t\t\t`/validation-rules/${encode(validationRule.id)}`,\n\t\t\tomit(validationRule, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-validation-rules\n\t */\n\tpublic delete(validationRuleId: string) {\n\t\treturn this.client.delete(`/validation-rules/${encode(validationRuleId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-validation-rules-assignment\n\t */\n\tpublic createAssignment(validationRuleId: string, assignment: T.ValidationRulesCreateAssignment) {\n\t\treturn this.client.post<T.ValidationRulesCreateAssignmentResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/assignments`,\n\t\t\tassignment,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-validation-rules-assignment\n\t */\n\tpublic deleteAssignment(validationRuleId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/validation-rules/${encode(validationRuleId)}/assignments/${encode(assignmentId)}`)\n\t}\n\n\tpublic validate(validationRuleId: string, params: any = {}) {\n\t\treturn this.client.post<T.ValidationRulesValidateResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/validation`,\n\t\t\tparams,\n\t\t)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-validation-rules\n\t */\n\tpublic list(params: T.ValidationRulesListParams = {}) {\n\t\treturn this.client.get<T.ValidationRulesListResponse>('/validation-rules', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-validation-rule-assignments\n\t */\n\tpublic listAssignments(validationRuleId: string, params: T.ValidationRulesListAssignmentsParams = {}) {\n\t\treturn this.client.get<T.ValidationRulesListAssignmentsResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/assignments`,\n\t\t\tparams,\n\t\t)\n\t}\n}\n","import * as T from './types/Segments'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Segments {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-segment\n\t */\n\tpublic create(segment: T.SegmentsCreate) {\n\t\treturn this.client.post<T.SegmentsCreateResponse>('/segments', segment)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-segment\n\t */\n\tpublic get(segmentId: string) {\n\t\treturn this.client.get<T.SegmentsGetResponse>(`/segments/${encode(segmentId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-segment\n\t */\n\tpublic delete(segmentId: string) {\n\t\treturn this.client.delete(`/segments/${encode(segmentId)}`)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-segments\n\t */\n\tpublic list(customerId: string) {\n\t\treturn this.client.get<T.SegmentsListResponse>(`/customers/${encode(customerId)}/segments`)\n\t}\n}\n","import { RequestController } from './RequestController'\n\nexport class ApiLimitsHandler {\n\tconstructor(private readonly requestController: RequestController) {}\n\n\tprivate getLastResponseHeadersFromController(): Record<string, string> {\n\t\treturn this.requestController.getLastResponseHeaders()\n\t}\n\n\tpublic areLimitsAvailable(): boolean {\n\t\treturn this.requestController.isLastReponseHeadersSet()\n\t}\n\n\tpublic getRateLimit(): number {\n\t\tconst rateLimit = this.getLastResponseHeadersFromController()['x-rate-limit-limit'] ?? 0\n\t\treturn parseInt(rateLimit, 10)\n\t}\n\n\tpublic getRateLimitRemaining(): number {\n\t\tconst rateLimitRemaining = this.getLastResponseHeadersFromController()['x-rate-limit-remaining'] ?? 0\n\t\treturn parseInt(rateLimitRemaining, 10)\n\t}\n\n\tpublic getRetryAfter(): number {\n\t\tconst retryAfter = this.getLastResponseHeadersFromController()['retry-after'] ?? 0\n\t\treturn parseInt(retryAfter, 10)\n\t}\n}\n","import * as T from './types/MetadataSchemas'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class MetadataSchemas {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-metadata-schemas\n\t */\n\tpublic list() {\n\t\treturn this.client.get<T.MetadataSchemasListResponse>('/metadata-schemas')\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-metadata-schema\n\t */\n\tpublic get(schemaName: string) {\n\t\treturn this.client.get<T.MetadataSchemasGetResponse>(`/metadata-schemas/${encode(schemaName)}`)\n\t}\n}\n","import { RequestController } from './RequestController'\nimport { AsyncActions } from './AsyncActions'\nimport { Campaigns } from './Campaigns'\nimport { Distributions } from './Distributions'\nimport { Exports } from './Exports'\nimport { Events } from './Events'\nimport { Balance } from './Balance'\nimport { Vouchers } from './Vouchers'\nimport { Validations } from './Validations'\nimport { Redemptions } from './Redemptions'\nimport { PromotionTiers } from './PromotionTiers'\nimport { Promotions } from './Promotions'\nimport { Customers } from './Customers'\nimport { Consents } from './Consents'\nimport { Orders } from './Orders'\nimport { Products } from './Products'\nimport { Rewards } from './Rewards'\nimport { Loyalties } from './Loyalties'\nimport { ValidationRules } from './ValidationRules'\nimport { Segments } from './Segments'\nimport { assert, isString, isObject, isOptionalString, environment } from './helpers'\nimport { ApiLimitsHandler } from './ApiLimitsHandler'\nimport { MetadataSchemas } from './MetadataSchemas'\n\nexport interface VoucherifyServerSideOptions {\n\t/**\n\t * Optionally, you can add `apiUrl` to the client options if you want to use Voucherify running in a specific region.\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tapiUrl: 'https://<region>.api.voucherify.io'\n\t * })\n\t * ```\n\t */\n\tapiUrl?: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Application Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tapplicationId: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Application Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tsecretKey: string\n\t/**\n\t * Optionally, you can add `apiVersion` to the client options if you want to use a [specific API version](https://docs.voucherify.io/docs/api-version-upgrades).\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tapiVersion: 'v2017-04-20'\n\t * })\n\t * ```\n\t */\n\tapiVersion?: string\n\tchannel?: string\n\t/**\n\t * Set this option to disable displaying the warning about exposing your `secretKey` if you're using VoucherifyServerSide in a browser environment.\n\t * By setting this option to `true`, you acknowledge that you understand the risks of exposing your `secretKey` to a browser environment.\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tdangerouslySetSecretKeyInBrowser: true\n\t * })\n\t * ```\n\t */\n\tdangerouslySetSecretKeyInBrowser?: boolean\n\t/**\n\t * You can pass additional headers to requests made by the API Client.\n\t * It can prove to be useful when debugging various scenarios.\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tcustomHeaders: {\n\t *\t\t\t\"DEBUG-HEADER\": \"my_value\",\n\t *\t\t\t\"TEST-HEADER\": \"another_value\"\n\t *\t\t}\n\t * })\n\t * ```\n\t */\n\tcustomHeaders?: Record<string, string>\n\t/**\n\t * If you wish to include original Axios error in VoucherifyError instance set this to true\n\t * It can prove to be useful when debugging various scenarios.\n\t * The original Axios error will be included in cause property of VoucherifyError\n\t */\n\texposeErrorCause?: boolean\n}\ninterface VoucherifyServerSideHeaders {\n\t'X-App-Id': string\n\t'X-App-Token': string\n\t'X-Voucherify-Channel': string\n\t'X-Voucherify-API-Version'?: string\n\t'Content-Type': 'application/json'\n}\n// export interface VoucherifyServerSideNamespaces {\n// apiLimitsHandler: ApiLimitsHandler\n// \tcampaigns: Campaigns\n// \tconsents: Consents\n// \tcustomers: Customers\n// \tdistributions: Distributions\n// \tevents: Events\n// \tloyalties: Loyalties\n// metadataSchemas: MetadataSchemas\n// \torders: Orders\n// \tproducts: Products\n// \tpromotions: Promotions\n// \tredemptions: Redemptions\n// \trewards: Rewards\n// \tsegments: Segments\n// \tvalidationRules: ValidationRules\n// \tvalidations: Validations\n// \tvouchers: Vouchers\n// }\nexport function VoucherifyServerSide(options: VoucherifyServerSideOptions) {\n\tassert(isObject(options), 'VoucherifyServerSide: the \"options\" argument must be an object')\n\tassert(isString(options.applicationId), 'VoucherifyServerSide: \"options.applicationId\" is required')\n\tassert(isString(options.secretKey), 'VoucherifyServerSide: \"options.secretKey\" is required')\n\tassert(isOptionalString(options.apiVersion), 'VoucherifyServerSide: expected \"options.apiVersion\" to be a string')\n\tassert(isOptionalString(options.channel), 'VoucherifyServerSide: expected \"options.channel\" to be a string')\n\n\tlet headers: VoucherifyServerSideHeaders = {\n\t\t'X-App-Id': options.applicationId,\n\t\t'X-App-Token': options.secretKey,\n\t\t'X-Voucherify-Channel': options.channel || `${environment()}-SDK-v${__VERSION__}`,\n\t\t'Content-Type': 'application/json',\n\t}\n\tif (options.apiVersion) {\n\t\theaders['X-Voucherify-API-Version'] = options.apiVersion\n\t}\n\n\tif (isObject(options.customHeaders)) {\n\t\theaders = Object.assign({}, headers, options.customHeaders)\n\t}\n\n\t/**\n\t * The option `dangerouslySetSecretKeyInBrowser` is explicitly long and not suggested in the thrown error because\n\t * we don't want the user to enable this option without going through the documentation and understanding the risks\n\t * of exposing a their secretKey\n\t */\n\tif (!environment().startsWith('Node')) {\n\t\tassert(\n\t\t\toptions.dangerouslySetSecretKeyInBrowser === true,\n\t\t\t`VoucherifyServerSide: you're exposing your secretKey to a ${environment().toLowerCase()} environment. This is generally considered a bad practice. Did you mean to use 'VoucherifyClientSide'?`,\n\t\t)\n\t}\n\n\tconst client = new RequestController({\n\t\tbasePath: 'v1',\n\t\tbaseURL: options.apiUrl ?? 'https://api.voucherify.io',\n\t\theaders,\n\t\texposeErrorCause: options.exposeErrorCause ?? false,\n\t})\n\tconst asyncActions = new AsyncActions(client)\n\tconst balance = new Balance(client)\n\tconst vouchers = new Vouchers(client, balance)\n\tconst campaigns = new Campaigns(client)\n\tconst exportsNamespace = new Exports(client)\n\tconst events = new Events(client)\n\tconst distributions = new Distributions(client, exportsNamespace)\n\tconst promotionTiers = new PromotionTiers(client)\n\tconst promotions = new Promotions(client, promotionTiers)\n\tconst validations = new Validations(client, promotions)\n\tconst redemptions = new Redemptions(client)\n\tconst customers = new Customers(client)\n\tconst consents = new Consents(client)\n\tconst orders = new Orders(client)\n\tconst products = new Products(client)\n\tconst rewards = new Rewards(client)\n\tconst loyalties = new Loyalties(client)\n\tconst segments = new Segments(client)\n\tconst validationRules = new ValidationRules(client)\n\tconst apiLimitsHandler = new ApiLimitsHandler(client)\n\tconst metadataSchemas = new MetadataSchemas(client)\n\n\treturn {\n\t\tvouchers,\n\t\tcampaigns,\n\t\tdistributions,\n\t\tvalidations,\n\t\tredemptions,\n\t\tpromotions,\n\t\tcustomers,\n\t\tconsents,\n\t\torders,\n\t\tproducts,\n\t\trewards,\n\t\tloyalties,\n\t\tsegments,\n\t\tvalidationRules,\n\t\tevents,\n\t\tasyncActions,\n\t\tapiLimitsHandler,\n\t\tmetadataSchemas,\n\t}\n}\n","import * as T from './types/ClientSide'\n\nimport { assert, encode, isObject, isOptionalObject, isOptionalString, isString } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class ClientSide {\n\tconstructor(private client: RequestController, private trackingId?: string) {}\n\n\tpublic setIdentity(identity?: string) {\n\t\tthis.trackingId = identity\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-validate\n\t */\n\tpublic validate(params: T.ClientSideValidateParams | string) {\n\t\tassert(\n\t\t\tisObject(params) || isString(params),\n\t\t\t'client.validate: expected \"params\" argument to be an object or a string',\n\t\t)\n\n\t\tconst query: Record<string, any> = {}\n\n\t\tif (isString(params)) {\n\t\t\tquery.code = params\n\t\t} else {\n\t\t\tquery.code = params.code\n\t\t\tquery.item = params.items\n\t\t\tquery.amount = params.amount\n\t\t\tquery.metadata = params.metadata\n\t\t\tquery.order = { metadata: params.orderMetadata }\n\t\t\tquery.customer = params.customer\n\t\t\tquery.tracking_id = params.tracking_id || this.trackingId\n\t\t\tquery.session_type = params.session_type\n\t\t\tquery.session_key = params.session_key\n\t\t\tquery.session_ttl = params.session_ttl\n\t\t\tquery.session_ttl_unit = params.session_ttl_unit\n\t\t}\n\n\t\tif (!!query.code) {\n\t\t\tquery.code = query.code.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\t\t}\n\n\t\tassert(isOptionalObject(query?.customer), 'client.validate: expected \"params.customer\" to be an object')\n\t\tassert(isOptionalString(query?.customer?.source_id), 'client.validate: expected \"params.customer.source_id\" to be a string') // prettier-ignore\n\t\tassert(isOptionalObject(query?.customer?.metadata), 'client.validate: expected \"params.customer.metadata\" to be an object') // prettier-ignore\n\n\t\tconst path = query.code ? '/validate' : '/promotions/validation'\n\n\t\treturn this.client.get<T.ClientSideValidateResponse>(path, query)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-voucher-client-side\n\t */\n\tpublic redeem(code: string, payload: T.ClientSideRedeemPayload = {}) {\n\t\tassert(isString(code), 'client.redeem - please provide a valid Voucher code')\n\n\t\tcode = code.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\n\t\tpayload.customer = payload.customer ?? {}\n\t\tpayload.customer.source_id = payload.customer.source_id ?? this.trackingId\n\n\t\treturn this.client.post<T.ClientSideRedeemResponse>('/redeem', payload, { code })\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-publication\n\t */\n\tpublic publish(\n\t\tcampaign: string,\n\t\tpayload: T.ClientSidePublishPayload = {},\n\t\tqueryParams: T.ClientSidePublishQueryParams = {},\n\t) {\n\t\tassert(isObject(payload), 'client.publish - expected payload to be an object')\n\n\t\tconst preparedPayload: T.ClientSidePublishPreparedPayload = {}\n\n\t\tpreparedPayload.customer = payload.customer ?? {}\n\t\tpreparedPayload.customer.source_id = payload.customer?.source_id ?? this.trackingId\n\t\tpreparedPayload.channel = payload.channel ?? 'Voucherify.js' // @todo - removed hard-coded channel\n\n\t\tassert(\n\t\t\tisString(preparedPayload.customer?.source_id),\n\t\t\t'client.publish - expected payload to contain customer source id or to have tracking id set up by Voucherify client',\n\t\t)\n\n\t\tqueryParams.campaign = campaign.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\n\t\treturn this.client.post<T.ClientSidePublishResponse>('/publish', preparedPayload, queryParams)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/track-custom-event-client-side\n\t */\n\n\tpublic track(\n\t\tevent_name: string,\n\t\tcustomer: T.ClientSideTrackCustomer,\n\t\tmetadata?: Record<string, any>,\n\t\treferral?: T.ClientSideTrackReferral,\n\t\tloyalty?: T.ClientSideTrackLoyalty,\n\t) {\n\t\tassert(isString(event_name), 'client.track - expected event name to be an string')\n\t\tassert(isObject(customer), 'client.track - expected customer to be an object')\n\n\t\tconst payload: T.ClientSideTrackPayload = {\n\t\t\tevent: event_name,\n\t\t\tmetadata: metadata ?? {},\n\t\t\tcustomer: customer,\n\t\t\treferral: referral ?? undefined,\n\t\t\tloyalty: loyalty ?? undefined,\n\t\t}\n\n\t\tpayload.customer.source_id = customer.source_id ?? this.trackingId\n\n\t\tassert(\n\t\t\tisString(payload.customer?.source_id),\n\t\t\t'client.track - expected payload to contain customer source id or to have tracking id set up by Voucherify client',\n\t\t)\n\n\t\treturn this.client.post<T.ClientSideTrackResponse>('/events', payload)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-vouchers\n\t */\n\tpublic listVouchers(params: T.ClientSideListVouchersParams = {}) {\n\t\tconst query: Record<string, any> = {}\n\n\t\tquery.campaign = params.campaign\n\t\tquery.category = params.category\n\t\tquery.page = params.page\n\t\tquery.limit = params.limit\n\t\tquery.customer = params.customer\n\t\tquery.created_at = params.created_at\n\t\tquery.updated_at = params.updated_at\n\n\t\treturn this.client.get<T.ClientSideListVouchersResponse>('/vouchers', query)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-customer\n\t */\n\tpublic createCustomer(customer: T.ClientSideCustomersCreateParams, enableDoubleOptIn?: boolean) {\n\t\treturn this.client.post<T.ClientSideCustomersCreateResponse>(\n\t\t\t'/customers',\n\t\t\tcustomer,\n\t\t\t{},\n\t\t\tenableDoubleOptIn ? { 'X-Voucherify-Double-Opt-In': true } : {},\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-consent-client-side\n\t */\n\tpublic listConsents() {\n\t\treturn this.client.get<T.ClientSideConsentsListResponse>('/consents')\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-consents-client\n\t */\n\tpublic updateConsents(idOrSourceId: string, consents: T.ClientSideCustomersUpdateConsentsBody) {\n\t\treturn this.client.put<undefined>(`/customers/${encode(idOrSourceId)}/consents`, consents)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-stackable-discounts-client-side\n\t */\n\tpublic validateStackable(params: T.ClientSideValidationsValidateStackableParams) {\n\t\treturn this.client.post<T.ClientSideValidationValidateStackableResponse>(`/validations`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-stackable-discounts-client-side\n\t */\n\tpublic redeemStackable(params: T.ClientSideRedemptionsRedeemStackableParams) {\n\t\treturn this.client.post<T.ClientSideRedemptionsRedeemStackableResponse>(`/redemptions`, params)\n\t}\n}\n","import { assert, environment, isObject, isOptionalString, isString } from './helpers'\n\nimport { ClientSide } from './ClientSide'\nimport { RequestController } from './RequestController'\n\nexport type { ClientSide }\n\nexport interface VoucherifyClientSideOptions {\n\t/**\n\t * Optionally, you can add `apiUrl` to the client options if you want to use Voucherify running in a specific region.\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\tapiUrl: 'https://<region>.api.voucherify.io'\n\t * })\n\t * ```\n\t */\n\tapiUrl?: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Client-side Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tclientApplicationId: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Client-side Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tclientSecretKey: string\n\t/**\n\t * Set customer identity when using React Widget. In other situations, use `setIdentity` method:\n\t *\n\t * ```javascript\n\t * client.setIdentity('gustav@purpleson.com')\n\t * ```\n\t */\n\ttrackingId?: string\n\t/**\n\t * **(Required in Node.js)** Set the origin from where the requests are made.\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\torigin: 'your-domain.com'\n\t * })\n\t * ```\n\t *\n\t * @note in the browser, this option will be ignored. The `origin` header is a [forbidden header name](https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name) and it'll be automatically set by the browser for every request.\n\t */\n\torigin?: string\n\t/**\n\t * You can pass additional headers to requests made by the API Client.\n\t * It can prove to be useful when debugging various scenarios.\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\tcustomHeaders: {\n\t *\t\t\t\"DEBUG-HEADER\": \"my_value\",\n\t *\t\t\t\"TEST-HEADER\": \"another_value\"\n\t *\t\t}\n\t * })\n\t * ```\n\t */\n\tcustomHeaders?: Record<string, string>\n\t/**\n\t * If you wish to include original Axios error in VoucherifyError instance set this to true\n\t * It can prove to be useful when debugging various scenarios.\n\t * The original Axios error will be included in cause property of VoucherifyError\n\t */\n\texposeErrorCause?: boolean\n}\ninterface VoucherifyCustomerHeaders {\n\t'X-Client-Application-Id': string\n\t'X-Client-Token': string\n\t'X-Voucherify-Channel'?: string\n\torigin?: string\n}\nexport function VoucherifyClientSide(options: VoucherifyClientSideOptions): ClientSide {\n\tassert(isObject(options), 'VoucherifyCustomer: expected \"options\" argument to be an object')\n\tassert(isString(options.clientApplicationId), 'VoucherifyCustomer: \"options.clientApplicationId\" is required')\n\tassert(isString(options.clientSecretKey), 'VoucherifyCustomer: \"options.clientSecretKey\" is required')\n\tassert(isOptionalString(options.apiUrl), 'VoucherifyCustomer: expected \"options.baseUrl\" to be a string')\n\tassert(isOptionalString(options.trackingId), 'VoucherifyCustomer: expected \"options.trackingId\" to be a string')\n\n\tlet headers: VoucherifyCustomerHeaders = {\n\t\t'X-Client-Application-Id': options.clientApplicationId,\n\t\t'X-Client-Token': options.clientSecretKey,\n\t\t'X-Voucherify-Channel': `${environment()}-ClientSide-SDK-v${__VERSION__}`,\n\t}\n\n\tif (environment().startsWith('Node')) {\n\t\tassert(isString(options.origin), 'VoucherifyCustomer: \"options.origin\" is required in Node.js')\n\t\theaders['origin'] = options.origin\n\t}\n\n\tif (isObject(options.customHeaders)) {\n\t\theaders = Object.assign({}, headers, options.customHeaders)\n\t}\n\n\tconst client = new RequestController({\n\t\tbasePath: 'client/v1',\n\t\tbaseURL: options.apiUrl ?? 'https://api.voucherify.io',\n\t\theaders,\n\t\texposeErrorCause: options.exposeErrorCause ?? false,\n\t})\n\n\treturn new ClientSide(client, options.trackingId)\n}\n"],"names":["DiscountVouchersTypesEnum","VoucherifyError","Error","constructor","statusCode","body","axiosError","message","generateMessage","code","key","details","request_id","resource_id","resource_type","related_object_ids","related_object_type","related_object_total","cause","JSON","stringify","RequestController","basePath","baseURL","headers","exposeErrorCause","request","lastResponseHeaders","isLastResponseHeadersSet","axios","create","responseType","interceptors","response","use","error","status","Promise","reject","data","undefined","isLastReponseHeadersSet","getLastResponseHeaders","setLastResponseHeaders","setBaseUrl","defaults","get","path","params","paramsSerializer","Qs","post","put","delete","encode","value","encodeURIComponent","isString","isOptionalString","isObject","Array","isArray","isOptionalObject","environment","window","document","self","name","process","versions","node","version","navigator","userAgent","includes","assert","condition","omit","obj","keys","Object","fromEntries","entries","filter","propertyKey","AsyncActions","client","asyncActionId","list","CampaignsQualifications","examine","Campaigns","qualifications","campaign","update","nameOrId","addVoucher","addCertainVoucher","importVouchers","campaignName","vouchers","DistributionsPublications","Distributions","exports","publications","Exports","exportResource","exportResourceId","Events","eventName","event","Balance","VouchersQualification","Vouchers","balance","voucher","enable","disable","import","bulkUpdateMetadata","bulkUpdate","releaseValidationSession","sessionKey","Validations","promotions","validateVoucher","validate","context","validateStackable","Redemptions","redeem","redeemStackable","redemptionId","getForVoucher","rollback","queryParams","payload","reason","tracking_id","trackingId","customer","rollbackStackable","parentRedemptionId","PromotionTiers","listAll","promotionId","promotionsTierId","id","Promotions","tiers","promotionCampaign","Customers","customerId","scroll","startingAfter","starting_after","order","assign","customers","length","created_at","has_more","source_id","customerWithoutId","updateConsents","idOrSourceId","consents","listActivities","Consents","Orders","orderId","orders","Products","product","productId","products","createSku","sku","getSku","skuId","updateSku","deleteSku","listSkus","Rewards","reward","rewardId","listAssignments","createAssignment","assignment","updateAssignment","deleteAssignment","assignmentId","Loyalties","campaignId","listRewardAssignments","createRewardAssignments","updateRewardAssignment","deleteRewardAssignment","listEarningRules","createEarningRule","earningRules","updateEarningRule","earningRule","deleteEarningRule","earningRuleId","listMembers","createMember","member","getMember","memberId","getMemberActivities","addPoints","redeemReward","ValidationRules","validationRule","validationRuleId","Segments","segment","segmentId","ApiLimitsHandler","requestController","getLastResponseHeadersFromController","areLimitsAvailable","getRateLimit","rateLimit","parseInt","getRateLimitRemaining","rateLimitRemaining","getRetryAfter","retryAfter","MetadataSchemas","schemaName","VoucherifyServerSide","options","applicationId","secretKey","apiVersion","channel","customHeaders","startsWith","dangerouslySetSecretKeyInBrowser","toLowerCase","apiUrl","asyncActions","campaigns","exportsNamespace","events","distributions","promotionTiers","validations","redemptions","rewards","loyalties","segments","validationRules","apiLimitsHandler","metadataSchemas","ClientSide","setIdentity","identity","query","item","items","amount","metadata","orderMetadata","session_type","session_key","session_ttl","session_ttl_unit","replace","trim","publish","preparedPayload","track","event_name","referral","loyalty","listVouchers","category","page","limit","updated_at","createCustomer","enableDoubleOptIn","listConsents","VoucherifyClientSide","clientApplicationId","clientSecretKey","origin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"voucherifysdk.umd.development.js","sources":["../src/types/DiscountVoucher.ts","../src/VoucherifyError.ts","../src/RequestController.ts","../src/helpers.ts","../src/AsyncActions.ts","../src/Campaigns.ts","../src/Distributions.ts","../src/Exports.ts","../src/Events.ts","../src/Balance.ts","../src/Vouchers.ts","../src/Validations.ts","../src/Redemptions.ts","../src/PromotionTiers.ts","../src/Promotions.ts","../src/Customers.ts","../src/Consents.ts","../src/Orders.ts","../src/Products.ts","../src/Rewards.ts","../src/Loyalties.ts","../src/ValidationRules.ts","../src/Segments.ts","../src/ApiLimitsHandler.ts","../src/MetadataSchemas.ts","../src/VoucherifyServerSide.ts","../src/ClientSide.ts","../src/VoucherifyClientSide.ts"],"sourcesContent":["export type DiscountVouchersTypes = 'AMOUNT' | 'PERCENT' | 'UNIT' | 'FIXED'\n\nexport enum DiscountVouchersTypesEnum {\n\tAMOUNT = 'AMOUNT',\n\tPERCENT = 'PERCENT',\n\tUNIT = 'UNIT',\n\tFIXED = 'FIXED',\n}\n\nexport type DiscountVouchersEffectTypes =\n\t| 'ADD_MISSING_ITEMS'\n\t| 'ADD_NEW_ITEMS'\n\t| 'ADD_MANY_ITEMS'\n\t| 'APPLY_TO_ORDER'\n\t| 'APPLY_TO_ITEMS'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY'\n\nexport type DiscountUnitVouchersEffectTypes = 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS'\n\nexport type DiscountAmountVouchersEffectTypes =\n\t| 'APPLY_TO_ORDER'\n\t| 'APPLY_TO_ITEMS'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY'\n\nexport type DiscountPercentVouchersEffectTypes = 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'\n\nexport type DiscountFixedVouchersEffectTypes = 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'\n\ninterface SimpleSkuDiscountUnit {\n\tid: string\n\tsource_id?: string\n\tsku: string\n}\n\ninterface SimpleProductDiscountUnit {\n\tid: string\n\tsource_id?: string\n\tname: string\n}\n\nexport interface DiscountUnit {\n\ttype?: DiscountVouchersTypesEnum.UNIT\n\tunit_off?: number\n\teffect?: DiscountUnitVouchersEffectTypes\n\tunit_type?: string\n\tproduct?: SimpleProductDiscountUnit\n\tsku?: SimpleSkuDiscountUnit\n}\n\nexport interface DiscountAmount {\n\ttype?: DiscountVouchersTypesEnum.AMOUNT\n\tamount_off?: number\n\teffect?: DiscountAmountVouchersEffectTypes\n}\n\nexport interface DiscountPercent {\n\ttype?: DiscountVouchersTypesEnum.PERCENT\n\tpercent_off?: number\n\tamount_limit?: number\n\teffect?: DiscountPercentVouchersEffectTypes\n}\n","import { AxiosError } from 'axios'\n\n/**\n * @internal\n */\nexport class VoucherifyError extends Error {\n\tpublic code: number\n\tpublic key: string\n\tpublic details?: string\n\tpublic request_id?: string\n\tpublic resource_id?: string\n\tpublic resource_type?: string\n\tpublic related_object_ids?: string[]\n\tpublic related_object_type?: string\n\tpublic related_object_total?: number\n\tpublic cause?: AxiosError\n\n\tconstructor(statusCode: number, body?: unknown, axiosError?: AxiosError) {\n\t\tbody = body ?? {}\n\n\t\tconst message = (<any>body)?.message || generateMessage(body, statusCode)\n\n\t\tsuper(message)\n\n\t\tthis.code = (<any>body).code\n\t\tthis.key = (<any>body).key\n\t\tthis.details = (<any>body).details\n\t\tthis.request_id = (<any>body).request_id\n\t\tthis.resource_id = (<any>body).resource_id\n\t\tthis.resource_type = (<any>body).resource_type\n\t\tthis.related_object_ids = (<any>body).related_object_ids\n\t\tthis.related_object_type = (<any>body).related_object_type\n\t\tthis.related_object_total = (<any>body).related_object_total\n\t\tthis.cause = axiosError\n\t}\n}\n\nfunction generateMessage(body: unknown, statusCode: number) {\n\tbody = typeof body === 'string' ? body : JSON.stringify(body, null, 2)\n\n\treturn `Unexpected status code: ${statusCode} - Details: ${body}`\n}\n","import axios, { AxiosError, AxiosInstance } from 'axios'\n\nimport Qs from 'qs'\nimport { VoucherifyError } from './VoucherifyError'\n\nexport interface RequestControllerOptions {\n\tbaseURL: string\n\tbasePath: string\n\theaders: Record<string, any>\n\texposeErrorCause: boolean\n}\n\n/**\n * @internal\n */\nexport class RequestController {\n\tprivate baseURL: string\n\tprivate basePath: string\n\tprivate headers: Record<string, any>\n\tprivate request: AxiosInstance\n\tprivate lastResponseHeaders: Record<string, string>\n\tprivate isLastResponseHeadersSet: boolean\n\tprivate exposeErrorCause: boolean\n\n\tconstructor({ basePath, baseURL, headers, exposeErrorCause }: RequestControllerOptions) {\n\t\tthis.basePath = basePath\n\t\tthis.baseURL = baseURL\n\t\tthis.headers = headers\n\t\tthis.exposeErrorCause = exposeErrorCause\n\t\tthis.lastResponseHeaders = {}\n\t\tthis.isLastResponseHeadersSet = false\n\n\t\tthis.request = axios.create({\n\t\t\tbaseURL: `${this.baseURL}/${this.basePath}/`,\n\t\t\theaders: this.headers,\n\t\t\tresponseType: 'json',\n\t\t})\n\t\tthis.request.interceptors.response.use(void 0, (error: AxiosError<unknown>) => {\n\t\t\t/**\n\t\t\t * Handle any HTTP response error (status code outside of 2xx) as a VoucherifyError\n\t\t\t */\n\t\t\tif (error?.response?.status) {\n\t\t\t\treturn Promise.reject(\n\t\t\t\t\tnew VoucherifyError(\n\t\t\t\t\t\terror.response.status,\n\t\t\t\t\t\terror.response.data,\n\t\t\t\t\t\tthis.exposeErrorCause === true ? error : undefined,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Promise.reject(error)\n\t\t})\n\t}\n\tpublic isLastReponseHeadersSet(): boolean {\n\t\treturn this.isLastResponseHeadersSet\n\t}\n\tpublic getLastResponseHeaders(): Record<string, string> {\n\t\treturn this.lastResponseHeaders\n\t}\n\tprivate setLastResponseHeaders(headers: Record<string, string>) {\n\t\tthis.lastResponseHeaders = headers\n\t\tthis.isLastResponseHeadersSet = true\n\t}\n\tpublic setBaseUrl(baseURL: string) {\n\t\tthis.baseURL = baseURL\n\t\tthis.request.defaults.baseURL = `${baseURL}/${this.basePath}/`\n\t}\n\tpublic async get<T>(path: string, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.get<T>(path, {\n\t\t\tparams,\n\t\t\tparamsSerializer: function (params) {\n\t\t\t\treturn Qs.stringify(params)\n\t\t\t},\n\t\t})\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async post<T>(\n\t\tpath: string,\n\t\tbody: Record<string, any>,\n\t\tparams?: Record<string, any>,\n\t\theaders?: Record<string, any>,\n\t): Promise<T> {\n\t\tconst response = await this.request.post<T>(path, body, {\n\t\t\tparams,\n\t\t\tparamsSerializer: function (params) {\n\t\t\t\treturn Qs.stringify(params)\n\t\t\t},\n\t\t\theaders,\n\t\t})\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async put<T>(path: string, body: Record<string, any>, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.put<T>(path, body, { params })\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async delete<T>(path: string, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.delete<T>(path, { params })\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n}\n","export function encode(value: string = '') {\n\treturn encodeURIComponent(value)\n}\nexport function isNumber(value: any): value is number {\n\t// eslint-disable-next-line no-self-compare\n\treturn typeof value === 'number' && value === value\n}\nexport function isString(value: any): value is string {\n\treturn typeof value === 'string'\n}\nexport function isOptionalString(value: any): value is string | undefined {\n\treturn value == null || isString(value)\n}\nexport function isObject<T extends Record<string, any> = Record<string, any>>(value: any): value is T {\n\treturn typeof value === 'object' && !Array.isArray(value) && value !== null\n}\nexport function isOptionalObject<T extends Record<string, any> = Record<string, any>>(\n\tvalue: any,\n): value is T | null | undefined {\n\treturn value == null || isObject(value)\n}\nexport function isFunction(value: any): value is Function {\n\treturn typeof value === 'function'\n}\nexport function exists<T extends any>(value: T): value is NonNullable<T> {\n\treturn typeof value !== 'undefined' && value !== null\n}\n\nexport function environment(): string {\n\tif (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n\t\treturn 'Browser'\n\t\t// eslint-disable-next-line no-restricted-globals\n\t} else if (typeof self === 'object' && self.constructor && self.constructor.name === 'DedicatedWorkerGlobalScope') {\n\t\treturn 'WebWorker'\n\t} else if (typeof process !== 'undefined' && process.versions != null && process.versions.node != null) {\n\t\treturn `Node.js-${process.version}`\n\t} else if (\n\t\t(typeof window !== 'undefined' && window.name === 'nodejs') ||\n\t\tnavigator.userAgent.includes('Node.js') ||\n\t\tnavigator.userAgent.includes('jsdom')\n\t) {\n\t\treturn 'JsDom'\n\t}\n\n\treturn 'Unknown'\n}\n\nexport function assert(condition: any, message?: string): asserts condition {\n\tif (condition) return\n\tthrow new Error(message)\n}\n\n/**\n * Return an object containing all properties of `obj` excluding the ones in `keys` array\n * e.g:\n * ```javascript\n * omit({ a: 1, b: 2, c: 3, d: 4 }, ['b', 'd']) // output: { a: 1, c: 3 }\n * ```\n */\nexport function omit<T extends {}, K extends keyof T>(obj: T, keys: K[]): Omit<T, K> {\n\treturn Object.fromEntries(\n\t\tObject.entries(obj).filter(([propertyKey]) => {\n\t\t\treturn !keys.includes(propertyKey as K)\n\t\t}),\n\t) as Omit<T, K>\n}\n","import * as T from './types/AsyncActions'\n\nimport { encode } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nclass AsyncActions {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-async-actions-1\n\t */\n\tpublic get(asyncActionId: string) {\n\t\treturn this.client.get<T.AsyncActionsGetResponse>(`/async-actions/${encode(asyncActionId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-async-actions\n\t */\n\tpublic list(params: T.AsyncActionsListParams) {\n\t\treturn this.client.get<T.AsyncActionsListResponse>('/async-actions', params)\n\t}\n}\n\nexport { AsyncActions }\n","import * as T from './types/Campaigns'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nclass CampaignsQualifications {\n\tconstructor(private client: RequestController) {}\n\n\tpublic examine(body: T.CampaignsQualificationsBody = {}, params?: T.CampaignsQualificationsParams) {\n\t\treturn this.client.post<T.CampaignsQualificationsResponse>('/campaigns/qualification', body, params)\n\t}\n}\n\nexport class Campaigns {\n\tpublic qualifications: CampaignsQualifications\n\n\tconstructor(private client: RequestController) {\n\t\tthis.qualifications = new CampaignsQualifications(this.client)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-campaign\n\t */\n\tpublic create(campaign: T.CampaignsCreateCampaign) {\n\t\treturn this.client.post<T.CampaignsCreateCampaignResponse>('/campaigns', campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-campaign\n\t */\n\tpublic update(nameOrId: string, campaign: T.CampaignsUpdateCampaign) {\n\t\treturn this.client.put<T.CampaignsUpdateCampaignResponse>(`/campaigns/${encode(nameOrId)}`, campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-campaign\n\t */\n\tpublic get(name: string) {\n\t\treturn this.client.get<T.CampaignsGetCampaignResponse>(`/campaigns/${encode(name)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-campaign\n\t */\n\tpublic delete(name: string, params: T.CampaignsDeleteParams = {}) {\n\t\treturn this.client.delete(`/campaigns/${encode(name)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-voucher-to-campaign\n\t */\n\n\tpublic addVoucher(name: string, body: T.CampaignsAddVoucherBody = {}, params: T.CampaignsAddVoucherParams = {}) {\n\t\treturn this.client.post<T.CampaignsAddVoucherResponse | {}>(`/campaigns/${encode(name)}/vouchers`, body, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-voucher-with-certain-code-to-campaign\n\t */\n\n\tpublic addCertainVoucher(name: string, code: string, body: T.CampaignsAddCertainVoucherParams = {}) {\n\t\treturn this.client.post<T.CampaignsAddCertainVoucherResponse>(\n\t\t\t`/campaigns/${encode(name)}/vouchers/${encode(code)}`,\n\t\t\tbody,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-vouchers\n\t */\n\tpublic importVouchers(campaignName: string, vouchers: T.CampaignsImportVouchers[]) {\n\t\treturn this.client.post<T.CampaignsVouchersImportResponse>(`/campaigns/${encode(campaignName)}/import`, vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-campaigns\n\t */\n\tpublic list(params: T.CampaignsListParams = {}) {\n\t\treturn this.client.get<T.CampaignsListResponse>('/campaigns', params)\n\t}\n}\n","import * as T from './types/Distributions'\n\nimport type { Exports } from './Exports'\nimport type { RequestController } from './RequestController'\n\nclass DistributionsPublications {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-publications\n\t */\n\tpublic list(params: T.DistributionsPublicationsListParams = {}) {\n\t\treturn this.client.get<T.DistributionsPublicationsListResponse>('/publications', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-publication\n\t */\n\tpublic create(params: T.DistributionsPublicationsCreateParams) {\n\t\treturn this.client.post<T.DistributionsPublicationsCreateResponse>('/publications', params)\n\t}\n}\n\nexport class Distributions {\n\tpublic publications: DistributionsPublications\n\n\tconstructor(private client: RequestController, public exports: Exports) {\n\t\tthis.publications = new DistributionsPublications(this.client)\n\t}\n}\n","import * as T from './types/Exports'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Exports {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-export\n\t */\n\tpublic create(exportResource: T.ExportResource) {\n\t\treturn this.client.post<T.ExportsCreateResponse>('/exports', exportResource)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-export\n\t */\n\tpublic get(exportResourceId: string) {\n\t\treturn this.client.get<T.ExportsGetResponse>(`/exports/${encode(exportResourceId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-export\n\t */\n\tpublic delete(exportResourceId: string) {\n\t\treturn this.client.delete(`/exports/${encode(exportResourceId)}`)\n\t}\n}\n","import * as T from './types/Events'\n\nimport type { RequestController } from './RequestController'\n\nexport class Events {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/track-custom-event-client-side\n\t */\n\tpublic create(eventName: string, params: T.EventsParams) {\n\t\tparams = { ...params, event: eventName }\n\t\treturn this.client.post<T.EventsResponse>('/events', params)\n\t}\n}\n","import * as T from './types/Balance'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class Balance {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * Add Gift Voucher Balance\n\t * This method gives a possibility to add balance to an existing gift voucher.\n\t * @see https://docs.voucherify.io/reference/add-gift-voucher-balance\n\t */\n\tpublic create(code: string, params: T.BalanceCreateParams) {\n\t\treturn this.client.post<T.BalanceCreateResponse>(`/vouchers/${encode(code)}/balance`, params)\n\t}\n}\n","import * as T from './types/Vouchers'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\nimport type { Balance } from './Balance'\n\nclass VouchersQualification {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * The method can be used for sending a request to display all vouchers qualified to the given customer and context (e.g., order, loyalty reward). A checking logic won't run among coupons from bulk unique codes campaigns. For campaigns with multiple unique codes, you should run a dedicated function for searching for qualified campaigns.\n\t * As a sample use case, you can imagine a requirement of displaying below cart the coupons eligible to a customer. The customer can take and apply the proposed voucher.\n\t *\n\t * @see https://docs.voucherify.io/reference/push-qualification-request\n\t */\n\tpublic examine(body: T.VouchersQualificationExamineBody, params: T.VouchersQualificationExamineParams = {}) {\n\t\treturn this.client.post<T.VouchersQualificationExamineResponse>('/vouchers/qualification', body, params)\n\t}\n}\nexport class Vouchers {\n\tpublic qualifications: VouchersQualification\n\n\tconstructor(private client: RequestController, public balance: Balance) {\n\t\tthis.qualifications = new VouchersQualification(this.client)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-voucher\n\t */\n\tpublic create(voucher: T.VouchersCreate) {\n\t\treturn this.client.post<T.VouchersCreateResponse>(`/vouchers/${encode(voucher.code)}`, voucher)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-get\n\t */\n\tpublic get(code: string) {\n\t\treturn this.client.get<T.VouchersGetResponse>(`/vouchers/${encode(code)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-voucher\n\t */\n\tpublic update(voucher: T.VouchersUpdate) {\n\t\treturn this.client.put<T.VouchersUpdateResponse>(`/vouchers/${encode(voucher.code)}`, voucher)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-voucher\n\t */\n\tpublic delete(code: string, params: T.VouchersDeleteParams = {}) {\n\t\treturn this.client.delete(`/vouchers/${encode(code)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-vouchers\n\t */\n\tpublic list(params: T.VouchersListParams = {}) {\n\t\treturn this.client.get<T.VouchersListResponse>('/vouchers', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/enable-voucher\n\t */\n\tpublic enable(code: string) {\n\t\treturn this.client.post<T.VouchersEnableResponse>(`/vouchers/${encode(code)}/enable`, {})\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/disable-voucher\n\t */\n\tpublic disable(code: string) {\n\t\treturn this.client.post<T.VouchersDisableResponse>(`/vouchers/${encode(code)}/disable`, {})\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-vouchers-1\n\t */\n\tpublic import(vouchers: T.VouchersImport[]) {\n\t\treturn this.client.post<T.VouchersImportResponse>('/vouchers/import', vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/aaupdate-vouchers-metadata-in-bulk\n\t */\n\tpublic bulkUpdateMetadata(params: T.VouchersBulkUpdateMetadata) {\n\t\treturn this.client.post<T.VouchersBulkUpdateMetadataResponse>('/vouchers/metadata/async', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/aa-update-vouchers-in-bulk\n\t */\n\tpublic bulkUpdate(vouchers: T.VouchersBulkUpdate) {\n\t\treturn this.client.post<T.VouchersBulkUpdateResponse>('/vouchers/bulk/async', vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/release-validation-session\n\t */\n\tpublic releaseValidationSession(code: string, sessionKey: string) {\n\t\treturn this.client.delete(`/vouchers/${encode(code)}/sessions/${encode(sessionKey)}`)\n\t}\n}\n","import * as T from './types/Validations'\n\nimport { encode, isObject } from './helpers'\nimport type { RequestController } from './RequestController'\nimport type { Promotions } from './Promotions'\n\nexport class Validations {\n\tconstructor(private client: RequestController, private promotions: Promotions) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-voucher\n\t */\n\tpublic validateVoucher(code: string, params: T.ValidationsValidateVoucherParams = {}) {\n\t\treturn this.client.post<T.ValidationsValidateVoucherResponse>(`/vouchers/${encode(code)}/validate`, params)\n\t}\n\n\tpublic validate(code: string | T.ValidationsValidateCode, context: T.ValidationsValidateContext = {}) {\n\t\tif (isObject(code)) {\n\t\t\treturn this.promotions.validate(code)\n\t\t}\n\n\t\treturn this.validateVoucher(code, context)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-stacked-discounts-1\n\t */\n\tpublic validateStackable(params: T.ValidationsValidateStackableParams) {\n\t\treturn this.client.post<T.ValidationValidateStackableResponse>(`/validations`, params)\n\t}\n}\n","import * as T from './types/Redemptions'\n\nimport { encode, isObject, isString } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class Redemptions {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-voucher\n\t */\n\tpublic redeem(code: string, body: T.RedemptionsRedeemBody = {}) {\n\t\treturn this.client.post<T.RedemptionsRedeemResponse>(`/vouchers/${encode(code)}/redemption`, body)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-stacked-discounts\n\t */\n\tpublic redeemStackable(params: T.RedemptionsRedeemStackableParams) {\n\t\treturn this.client.post<T.RedemptionsRedeemStackableResponse>(`/redemptions`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-redemption\n\t */\n\tpublic get(redemptionId: string) {\n\t\treturn this.client.get<T.Redemption>(`/redemptions/${encode(redemptionId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-redemptions\n\t */\n\tpublic list(params: T.RedemptionsListParams = {}) {\n\t\treturn this.client.get<T.RedemptionsListResponse>('/redemptions', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-redemptions\n\t */\n\tpublic getForVoucher(code: string) {\n\t\treturn this.client.get<T.RedemptionsGetForVoucherResponse>(`/vouchers/${encode(code)}/redemption`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/rollback-redemption\n\t */\n\tpublic rollback(redemptionId: string, params?: T.RedemptionsRollbackParams) {\n\t\tlet queryParams: T.RedemptionsRollbackQueryParams = {}\n\t\tlet payload: T.RedemptionsRollbackPayload = {}\n\n\t\tif (isString(params)) {\n\t\t\tqueryParams.reason = params\n\t\t} else if (isObject(params)) {\n\t\t\tconst { reason, tracking_id: trackingId, customer } = params\n\n\t\t\tqueryParams = {\n\t\t\t\treason: reason ? reason : undefined,\n\t\t\t\ttracking_id: trackingId ? trackingId : undefined,\n\t\t\t}\n\t\t\tpayload = { customer }\n\t\t}\n\n\t\treturn this.client.post<T.RedemptionsRollbackResponse>(\n\t\t\t`/redemptions/${encode(redemptionId)}/rollback`,\n\t\t\tpayload,\n\t\t\tqueryParams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/rollback-stackable-redemptions\n\t * Types of params and queryParams WILL be changed in future - please do not depend on it!\n\t */\n\tpublic rollbackStackable(parentRedemptionId: string, params?: any, queryParams?: any) {\n\t\treturn this.client.post<T.RedemptionsRollbackStackableResponse>(\n\t\t\t`/redemptions/${encode(parentRedemptionId)}/rollbacks`,\n\t\t\tparams,\n\t\t\tqueryParams,\n\t\t)\n\t}\n}\n","import * as T from './types/PromotionTiers'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class PromotionTiers {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-promotion-tiers\n\t */\n\tpublic listAll(params: T.PromotionTiersListAllParams = {}) {\n\t\treturn this.client.get<T.PromotionTiersListAllResponse>('/promotions/tiers', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-promotions\n\t */\n\tpublic list(promotionId: string) {\n\t\treturn this.client.get<T.PromotionTiersListResponse>(`/promotions/${encode(promotionId)}/tiers`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-promotion-tier-to-campaign\n\t */\n\tpublic create(promotionId: string, params: T.PromotionTiersCreateParams) {\n\t\treturn this.client.post<T.PromotionTiersCreateResponse>(`/promotions/${encode(promotionId)}/tiers`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-promotion\n\t */\n\tpublic redeem(promotionsTierId: string, params: T.PromotionTiersRedeemParams) {\n\t\treturn this.client.post<T.PromotionTiersRedeemResponse>(\n\t\t\t`/promotions/tiers/${encode(promotionsTierId)}/redemption`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-promotion\n\t */\n\tpublic update(params: T.PromotionTiersUpdateParams) {\n\t\treturn this.client.put<T.PromotionTiersUpdateResponse>(`/promotions/tiers/${encode(params.id)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-promotion\n\t */\n\tpublic delete(promotionsTierId: string) {\n\t\treturn this.client.delete(`/promotions/tiers/${encode(promotionsTierId)}`)\n\t}\n}\n","import * as T from './types/Promotions'\n\nimport type { RequestController } from './RequestController'\nimport type { PromotionTiers } from './PromotionTiers'\n\nexport class Promotions {\n\tconstructor(private client: RequestController, public tiers: PromotionTiers) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-promotion-campaign\n\t */\n\tpublic create(promotionCampaign: T.PromotionsCreate) {\n\t\treturn this.client.post<T.PromotionsCreateResponse>('/campaigns', promotionCampaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-promotions-1\n\t */\n\tpublic validate(body: T.PromotionsValidateParams, params?: T.PromotionsValidateQueryParams) {\n\t\treturn this.client.post<T.PromotionsValidateResponse>('/promotions/validation', body, params)\n\t}\n}\n","import * as T from './types/Customers'\n\nimport { encode, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nclass Customers {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-customer\n\t */\n\tpublic create(customer: T.CustomersCreateBody) {\n\t\treturn this.client.post<T.CustomersCreateResponse>('/customers', customer)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/read-customer\n\t */\n\tpublic get(customerId: string) {\n\t\treturn this.client.get<T.CustomersGetResponse>(`/customers/${encode(customerId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-customers\n\t */\n\tpublic list(params: T.CustomersListParams) {\n\t\treturn this.client.get<T.CustomersListResponse>('/customers', params)\n\t}\n\t/**\n\t * Standard list customers API has limitation of available pages to be shown equal to 100. To cover cases when you would like to fetch more, you must use scroll capabilities.\n\t *\n\t * ```javascript\n\t * async function () {\n\t *\t\tfor await (const customer of voucherify.customers.scroll(params)) {\n\t *\t\t\tconsole.log('Customer', customer)\n\t *\t\t}\n\t * }\n\t * ```\n\t */\n\tpublic async *scroll(\n\t\tparams: T.CustomersScrollParams,\n\t): AsyncGenerator<T.CustomersScrollYield, void, T.CustomersScrollYield> {\n\t\tlet startingAfter =\n\t\t\tparams.starting_after ?? (params.order === 'created_at' ? '1970-01-01T00:00:00Z' : '2200-01-01T00:00:00Z')\n\t\tlet response = await this.client.get<T.CustomersScrollResponse>(\n\t\t\t'/customers',\n\t\t\tObject.assign({}, params, { starting_after: startingAfter }),\n\t\t)\n\n\t\twhile (true) {\n\t\t\tif (response.customers.length === 0) break\n\n\t\t\tfor (const customer of response.customers) {\n\t\t\t\tif (params.order === 'created_at') {\n\t\t\t\t\tstartingAfter = startingAfter > customer.created_at ? startingAfter : customer.created_at\n\t\t\t\t} else {\n\t\t\t\t\tstartingAfter = startingAfter < customer.created_at ? startingAfter : customer.created_at\n\t\t\t\t}\n\t\t\t\tyield customer\n\t\t\t}\n\n\t\t\tif (!response.has_more) break\n\n\t\t\tresponse = await this.client.get('/customers', Object.assign({}, params, { starting_after: startingAfter }))\n\t\t}\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customer\n\t */\n\tpublic update(customer: T.CustomersUpdateParams) {\n\t\tconst id = 'id' in customer ? customer.id : customer.source_id\n\n\t\tconst customerWithoutId = omit(customer, ['id'])\n\n\t\treturn this.client.put<T.CustomersUpdateResponse>(`/customers/${encode(id)}`, customerWithoutId)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-customer\n\t */\n\tpublic delete(customerId: string) {\n\t\treturn this.client.delete<undefined>(`/customers/${encode(customerId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-consents\n\t */\n\tpublic updateConsents(idOrSourceId: string, consents: T.CustomersUpdateConsentsBody) {\n\t\treturn this.client.put<undefined>(`/customers/${encode(idOrSourceId)}/consents`, consents)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-customer-activities\n\t */\n\tpublic listActivities(customerId: string, params?: T.CustomerActivitiesListQueryParams) {\n\t\treturn this.client.get<T.CustomerActivitiesListResponse>(`/customers/${encode(customerId)}/activities`, params)\n\t}\n}\n\nexport { Customers }\n","import * as T from './types/Consents'\n\nimport type { RequestController } from './RequestController'\n\nexport class Consents {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-consents\n\t */\n\tpublic list() {\n\t\treturn this.client.get<T.ConsentsListResponse>('/consents')\n\t}\n}\n","import * as T from './types/Orders'\nimport * as AAT from './types/AsyncActions'\n\nimport { encode, omit } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Orders {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-order\n\t */\n\tpublic create(order: T.OrdersCreate) {\n\t\treturn this.client.post<T.OrdersCreateResponse>('/orders', order)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-order\n\t */\n\tpublic get(orderId: string) {\n\t\treturn this.client.get<T.OrdersGetResponse>(`/orders/${encode(orderId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-order\n\t */\n\tpublic update(order: T.OrdersUpdate) {\n\t\treturn this.client.put<T.OrdersUpdateResponse>(\n\t\t\t`/orders/${encode(order.id || order.source_id)}`,\n\t\t\tomit(order, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-orders\n\t */\n\tpublic list(params: T.OrdersListParams = {}) {\n\t\treturn this.client.get<T.OrdersListResponse>('/orders', params)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-orders\n\t */\n\tpublic import(orders: T.OrdersCreate[]) {\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>('/orders/import', orders)\n\t}\n}\n","import * as T from './types/Products'\n\nimport { encode, omit } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Products {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-product\n\t */\n\tpublic create(product: T.ProductsCreate) {\n\t\treturn this.client.post<T.ProductsCreateResponse>('/products', product)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-product\n\t */\n\tpublic get(productId: string) {\n\t\treturn this.client.get<T.ProductsGetResponse>(`/products/${encode(productId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-product\n\t */\n\tpublic update(product: T.ProductsUpdate) {\n\t\treturn this.client.put<T.ProductsUpdateResponse>(\n\t\t\t`/products/${encode(product.id || product.source_id)}`,\n\t\t\tomit(product, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/async-update-products-metadata-in-bulk\n\t */\n\tpublic bulkUpdateMetadata(products: T.ProductsBulkUpdateMetadata) {\n\t\treturn this.client.post<T.ProductsBulkUpdateMetadataResponse>('/products/metadata/async', products)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/post-products-in-bulk\n\t */\n\tpublic bulkUpdate(products: T.ProductsBulkUpdate) {\n\t\treturn this.client.post<T.ProductsBulkUpdateResponse>('/products/bulk/async', products)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-product\n\t */\n\tpublic delete(productId: string, params?: T.ProductsDeleteParams) {\n\t\treturn this.client.delete(`/products/${encode(productId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-products\n\t */\n\tpublic list(params?: T.ProductsListParams) {\n\t\treturn this.client.get<T.ProductsListResponse>('/products', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-sku\n\t */\n\tpublic createSku(productId: string, sku: T.ProductsCreateSku) {\n\t\treturn this.client.post<T.ProductsCreateSkuResponse>(`/products/${encode(productId)}/skus`, sku)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-sku-v20210726\n\t */\n\tpublic getSku(skuId: string) {\n\t\treturn this.client.get<T.ProductsGetSkuResponse>(`/skus/${encode(skuId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-sku\n\t */\n\tpublic updateSku(productId: string, sku: T.ProductsUpdateSku) {\n\t\treturn this.client.put<T.ProductsUpdateSkuResponse>(\n\t\t\t`/products/${encode(productId)}/skus/${encode(sku.id || sku.source_id)}`,\n\t\t\tomit(sku, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-sku\n\t */\n\tpublic deleteSku(productId: string, skuId: string, params?: T.ProductsDeleteSkuParams) {\n\t\treturn this.client.delete(`/products/${encode(productId)}/skus/${encode(skuId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-skus\n\t */\n\tpublic listSkus(productId: string) {\n\t\treturn this.client.get<T.ProductsListSkus>(`/products/${encode(productId)}/skus`)\n\t}\n}\n","import * as T from './types/Rewards'\n\nimport { encode, omit } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Rewards {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-rewards\n\t */\n\tpublic list(params: T.RewardsListParams = {}) {\n\t\treturn this.client.get<T.RewardsListResponse>('/rewards', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward\n\t */\n\tpublic create(reward: T.RewardsCreate) {\n\t\treturn this.client.post<T.RewardsCreateResponse>('/rewards', reward)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-reward\n\t */\n\tpublic get(rewardId: string) {\n\t\treturn this.client.get<T.RewardsGetResponse>(`/rewards/${encode(rewardId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward\n\t */\n\tpublic update(reward: T.RewardsUpdate) {\n\t\treturn this.client.put<T.RewardsUpdateResponse>(`/rewards/${encode(reward.id)}`, omit(reward, ['id']))\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-reward\n\t */\n\tpublic delete(rewardId: string) {\n\t\treturn this.client.delete(`/rewards/${encode(rewardId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-reward-assignments\n\t */\n\tpublic listAssignments(rewardId: string, params: T.RewardsListAssignmentsParams = {}) {\n\t\treturn this.client.get<T.RewardsListAssignmentsResponse>(`/rewards/${encode(rewardId)}/assignments`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward-assignment\n\t */\n\tpublic createAssignment(rewardId: string, assignment: T.RewardsCreateAssignment) {\n\t\treturn this.client.post<T.RewardsCreateAssignmentResponse>(`/rewards/${encode(rewardId)}/assignments`, assignment)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward-assignment\n\t */\n\tpublic updateAssignment(rewardId: string, assignment: T.RewardsUpdateAssignment) {\n\t\treturn this.client.put<T.RewardsUpdateAssignmentResponse>(\n\t\t\t`/rewards/${encode(rewardId)}/assignments/${encode(assignment.id)}`,\n\t\t\tomit(assignment, ['id']),\n\t\t)\n\t}\n\tpublic deleteAssignment(rewardId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/rewards/${encode(rewardId)}/assignments/${encode(assignmentId)}`)\n\t}\n}\n","import * as T from './types/Loyalties'\n\nimport { encode, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class Loyalties {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-programs\n\t */\n\tpublic list(params: T.LoyaltiesListParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListResponse>('/loyalties', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-loyalty-program\n\t */\n\tpublic create(campaign: T.LoyaltiesCreateCampaign) {\n\t\treturn this.client.post<T.LoyaltiesCreateCampaignResponse>('/loyalties', campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-loyalty-program\n\t */\n\tpublic get(campaignId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetCampaignResponse>(`/loyalties/${encode(campaignId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-loyalty-program\n\t */\n\tpublic update(campaign: T.LoyaltiesUpdateCampaign) {\n\t\treturn this.client.put<T.LoyaltiesUpdateCampaignResponse>(\n\t\t\t`/loyalties/${encode(campaign.id)}`,\n\t\t\tomit(campaign, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-loyalty-program\n\t */\n\tpublic delete(campaignId: string, params?: T.LoyaltiesDeleteCampaignParams) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-reward-assignments-1\n\t */\n\tpublic listRewardAssignments(campaignId: string, params: T.LoyaltiesListRewardAssignmentsParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListRewardAssignmentsResponse>(`/loyalties/${encode(campaignId)}/rewards`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward-assignment-1\n\t */\n\tpublic createRewardAssignments(campaignId: string, assignment: T.LoyaltiesCreateRewardAssignments[]) {\n\t\treturn this.client.post<T.LoyaltiesCreateRewardAssignmentResponse[]>(\n\t\t\t`/loyalties/${encode(campaignId)}/rewards`,\n\t\t\tassignment,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward-assignment-1\n\t */\n\tpublic updateRewardAssignment(campaignId: string, assignment: T.LoyaltiesUpdateRewardAssignment) {\n\t\treturn this.client.put<T.LoyaltiesUpdateRewardAssignmentResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/rewards/${assignment.id}`,\n\t\t\tomit(assignment, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-reward-assignment-1\n\t */\n\tpublic deleteRewardAssignment(campaignId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}/rewards/${assignmentId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-earning-rules\n\t */\n\tpublic listEarningRules(campaignId: string, params: T.LoyaltiesListEarningRulesParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListEarningRulesResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-earning-rule\n\t */\n\tpublic createEarningRule(campaignId: string, earningRules: T.LoyaltiesCreateEarningRule[]) {\n\t\treturn this.client.post<T.LoyaltiesCreateEarningRuleResponse[]>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules`,\n\t\t\tearningRules,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-earning-rule\n\t */\n\tpublic updateEarningRule(campaignId: string, earningRule: T.LoyaltiesUpdateEarningRule) {\n\t\treturn this.client.put<T.LoyaltiesUpdateEarningRuleResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules/${earningRule.id}`,\n\t\t\tomit(earningRule, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-earning-rule\n\t */\n\tpublic deleteEarningRule(campaignId: string, earningRuleId: string) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}/earning-rules/${earningRuleId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-members\n\t */\n\tpublic listMembers(campaignId: string, params?: T.LoyaltiesListMembersParams) {\n\t\treturn this.client.get<T.LoyaltiesListMembersResponse>(`/loyalties/${encode(campaignId)}/members`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-member\n\t */\n\tpublic createMember(campaignId: string, member: T.LoyaltiesCreateMember) {\n\t\treturn this.client.post<T.LoyaltiesCreateMemberResponse>(`/loyalties/${encode(campaignId)}/members`, member)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-member\n\t */\n\tpublic getMember(campaignId: string, memberId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetMemberResponse>(`/loyalties/${encode(campaignId)}/members/${memberId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-member-activities\n\t */\n\tpublic getMemberActivities(campaignId: string, memberId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetMemberActivitiesResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${memberId}/activities`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-loyalty-card-balance\n\t */\n\tpublic addPoints(campaignId: string, memberId: string, balance: T.LoyaltiesAddPoints) {\n\t\treturn this.client.post<T.LoyaltiesAddPointsResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${memberId}/balance`,\n\t\t\tbalance,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-loyalty-card\n\t */\n\tpublic redeemReward(campaignId: string, memberId: string, params: T.LoyaltiesRedeemRewardParams) {\n\t\treturn this.client.post<T.LoyaltiesRedeemRewardResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${encode(memberId)}/redemption`,\n\t\t\tparams,\n\t\t)\n\t}\n}\n","import * as T from './types/ValidationRules'\n\nimport { encode, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class ValidationRules {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-validation-rules\n\t */\n\tpublic create(validationRule: T.ValidationRulesCreate) {\n\t\treturn this.client.post<T.ValidationRulesCreateResponse>('/validation-rules', validationRule)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-validation-rules\n\t */\n\tpublic get(validationRuleId: string) {\n\t\treturn this.client.get<T.ValidationRulesGetResponse>(`/validation-rules/${encode(validationRuleId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-validation-rules\n\t */\n\tpublic update(validationRule: T.ValidationRulesUpdate) {\n\t\treturn this.client.put<T.ValidationRulesUpdateResponse>(\n\t\t\t`/validation-rules/${encode(validationRule.id)}`,\n\t\t\tomit(validationRule, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-validation-rules\n\t */\n\tpublic delete(validationRuleId: string) {\n\t\treturn this.client.delete(`/validation-rules/${encode(validationRuleId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-validation-rules-assignment\n\t */\n\tpublic createAssignment(validationRuleId: string, assignment: T.ValidationRulesCreateAssignment) {\n\t\treturn this.client.post<T.ValidationRulesCreateAssignmentResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/assignments`,\n\t\t\tassignment,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-validation-rules-assignment\n\t */\n\tpublic deleteAssignment(validationRuleId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/validation-rules/${encode(validationRuleId)}/assignments/${encode(assignmentId)}`)\n\t}\n\n\tpublic validate(validationRuleId: string, params: any = {}) {\n\t\treturn this.client.post<T.ValidationRulesValidateResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/validation`,\n\t\t\tparams,\n\t\t)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-validation-rules\n\t */\n\tpublic list(params: T.ValidationRulesListParams = {}) {\n\t\treturn this.client.get<T.ValidationRulesListResponse>('/validation-rules', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-validation-rule-assignments\n\t */\n\tpublic listAssignments(validationRuleId: string, params: T.ValidationRulesListAssignmentsParams = {}) {\n\t\treturn this.client.get<T.ValidationRulesListAssignmentsResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/assignments`,\n\t\t\tparams,\n\t\t)\n\t}\n}\n","import * as T from './types/Segments'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Segments {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-segment\n\t */\n\tpublic create(segment: T.SegmentsCreate) {\n\t\treturn this.client.post<T.SegmentsCreateResponse>('/segments', segment)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-segment\n\t */\n\tpublic get(segmentId: string) {\n\t\treturn this.client.get<T.SegmentsGetResponse>(`/segments/${encode(segmentId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-segment\n\t */\n\tpublic delete(segmentId: string) {\n\t\treturn this.client.delete(`/segments/${encode(segmentId)}`)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-segments\n\t */\n\tpublic list(customerId: string) {\n\t\treturn this.client.get<T.SegmentsListResponse>(`/customers/${encode(customerId)}/segments`)\n\t}\n}\n","import { RequestController } from './RequestController'\n\nexport class ApiLimitsHandler {\n\tconstructor(private readonly requestController: RequestController) {}\n\n\tprivate getLastResponseHeadersFromController(): Record<string, string> {\n\t\treturn this.requestController.getLastResponseHeaders()\n\t}\n\n\tpublic areLimitsAvailable(): boolean {\n\t\treturn this.requestController.isLastReponseHeadersSet()\n\t}\n\n\tpublic getRateLimit(): number {\n\t\tconst rateLimit = this.getLastResponseHeadersFromController()['x-rate-limit-limit'] ?? 0\n\t\treturn parseInt(rateLimit, 10)\n\t}\n\n\tpublic getRateLimitRemaining(): number {\n\t\tconst rateLimitRemaining = this.getLastResponseHeadersFromController()['x-rate-limit-remaining'] ?? 0\n\t\treturn parseInt(rateLimitRemaining, 10)\n\t}\n\n\tpublic getRetryAfter(): number {\n\t\tconst retryAfter = this.getLastResponseHeadersFromController()['retry-after'] ?? 0\n\t\treturn parseInt(retryAfter, 10)\n\t}\n}\n","import * as T from './types/MetadataSchemas'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class MetadataSchemas {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-metadata-schemas\n\t */\n\tpublic list() {\n\t\treturn this.client.get<T.MetadataSchemasListResponse>('/metadata-schemas')\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-metadata-schema\n\t */\n\tpublic get(schemaName: string) {\n\t\treturn this.client.get<T.MetadataSchemasGetResponse>(`/metadata-schemas/${encode(schemaName)}`)\n\t}\n}\n","import { RequestController } from './RequestController'\nimport { AsyncActions } from './AsyncActions'\nimport { Campaigns } from './Campaigns'\nimport { Distributions } from './Distributions'\nimport { Exports } from './Exports'\nimport { Events } from './Events'\nimport { Balance } from './Balance'\nimport { Vouchers } from './Vouchers'\nimport { Validations } from './Validations'\nimport { Redemptions } from './Redemptions'\nimport { PromotionTiers } from './PromotionTiers'\nimport { Promotions } from './Promotions'\nimport { Customers } from './Customers'\nimport { Consents } from './Consents'\nimport { Orders } from './Orders'\nimport { Products } from './Products'\nimport { Rewards } from './Rewards'\nimport { Loyalties } from './Loyalties'\nimport { ValidationRules } from './ValidationRules'\nimport { Segments } from './Segments'\nimport { assert, isString, isObject, isOptionalString, environment } from './helpers'\nimport { ApiLimitsHandler } from './ApiLimitsHandler'\nimport { MetadataSchemas } from './MetadataSchemas'\n\nexport interface VoucherifyServerSideOptions {\n\t/**\n\t * Optionally, you can add `apiUrl` to the client options if you want to use Voucherify running in a specific region.\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tapiUrl: 'https://<region>.api.voucherify.io'\n\t * })\n\t * ```\n\t */\n\tapiUrl?: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Application Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tapplicationId: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Application Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tsecretKey: string\n\t/**\n\t * Optionally, you can add `apiVersion` to the client options if you want to use a [specific API version](https://docs.voucherify.io/docs/api-version-upgrades).\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tapiVersion: 'v2017-04-20'\n\t * })\n\t * ```\n\t */\n\tapiVersion?: string\n\tchannel?: string\n\t/**\n\t * Set this option to disable displaying the warning about exposing your `secretKey` if you're using VoucherifyServerSide in a browser environment.\n\t * By setting this option to `true`, you acknowledge that you understand the risks of exposing your `secretKey` to a browser environment.\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tdangerouslySetSecretKeyInBrowser: true\n\t * })\n\t * ```\n\t */\n\tdangerouslySetSecretKeyInBrowser?: boolean\n\t/**\n\t * You can pass additional headers to requests made by the API Client.\n\t * It can prove to be useful when debugging various scenarios.\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tcustomHeaders: {\n\t *\t\t\t\"DEBUG-HEADER\": \"my_value\",\n\t *\t\t\t\"TEST-HEADER\": \"another_value\"\n\t *\t\t}\n\t * })\n\t * ```\n\t */\n\tcustomHeaders?: Record<string, string>\n\t/**\n\t * If you wish to include original Axios error in VoucherifyError instance set this to true\n\t * It can prove to be useful when debugging various scenarios.\n\t * The original Axios error will be included in cause property of VoucherifyError\n\t */\n\texposeErrorCause?: boolean\n}\ninterface VoucherifyServerSideHeaders {\n\t'X-App-Id': string\n\t'X-App-Token': string\n\t'X-Voucherify-Channel': string\n\t'X-Voucherify-API-Version'?: string\n\t'Content-Type': 'application/json'\n}\n// export interface VoucherifyServerSideNamespaces {\n// apiLimitsHandler: ApiLimitsHandler\n// \tcampaigns: Campaigns\n// \tconsents: Consents\n// \tcustomers: Customers\n// \tdistributions: Distributions\n// \tevents: Events\n// \tloyalties: Loyalties\n// metadataSchemas: MetadataSchemas\n// \torders: Orders\n// \tproducts: Products\n// \tpromotions: Promotions\n// \tredemptions: Redemptions\n// \trewards: Rewards\n// \tsegments: Segments\n// \tvalidationRules: ValidationRules\n// \tvalidations: Validations\n// \tvouchers: Vouchers\n// }\nexport function VoucherifyServerSide(options: VoucherifyServerSideOptions) {\n\tassert(isObject(options), 'VoucherifyServerSide: the \"options\" argument must be an object')\n\tassert(isString(options.applicationId), 'VoucherifyServerSide: \"options.applicationId\" is required')\n\tassert(isString(options.secretKey), 'VoucherifyServerSide: \"options.secretKey\" is required')\n\tassert(isOptionalString(options.apiVersion), 'VoucherifyServerSide: expected \"options.apiVersion\" to be a string')\n\tassert(isOptionalString(options.channel), 'VoucherifyServerSide: expected \"options.channel\" to be a string')\n\n\tlet headers: VoucherifyServerSideHeaders = {\n\t\t'X-App-Id': options.applicationId,\n\t\t'X-App-Token': options.secretKey,\n\t\t'X-Voucherify-Channel': options.channel || `${environment()}-SDK-v${__VERSION__}`,\n\t\t'Content-Type': 'application/json',\n\t}\n\tif (options.apiVersion) {\n\t\theaders['X-Voucherify-API-Version'] = options.apiVersion\n\t}\n\n\tif (isObject(options.customHeaders)) {\n\t\theaders = Object.assign({}, headers, options.customHeaders)\n\t}\n\n\t/**\n\t * The option `dangerouslySetSecretKeyInBrowser` is explicitly long and not suggested in the thrown error because\n\t * we don't want the user to enable this option without going through the documentation and understanding the risks\n\t * of exposing a their secretKey\n\t */\n\tif (!environment().startsWith('Node')) {\n\t\tassert(\n\t\t\toptions.dangerouslySetSecretKeyInBrowser === true,\n\t\t\t`VoucherifyServerSide: you're exposing your secretKey to a ${environment().toLowerCase()} environment. This is generally considered a bad practice. Did you mean to use 'VoucherifyClientSide'?`,\n\t\t)\n\t}\n\n\tconst client = new RequestController({\n\t\tbasePath: 'v1',\n\t\tbaseURL: options.apiUrl ?? 'https://api.voucherify.io',\n\t\theaders,\n\t\texposeErrorCause: options.exposeErrorCause ?? false,\n\t})\n\tconst asyncActions = new AsyncActions(client)\n\tconst balance = new Balance(client)\n\tconst vouchers = new Vouchers(client, balance)\n\tconst campaigns = new Campaigns(client)\n\tconst exportsNamespace = new Exports(client)\n\tconst events = new Events(client)\n\tconst distributions = new Distributions(client, exportsNamespace)\n\tconst promotionTiers = new PromotionTiers(client)\n\tconst promotions = new Promotions(client, promotionTiers)\n\tconst validations = new Validations(client, promotions)\n\tconst redemptions = new Redemptions(client)\n\tconst customers = new Customers(client)\n\tconst consents = new Consents(client)\n\tconst orders = new Orders(client)\n\tconst products = new Products(client)\n\tconst rewards = new Rewards(client)\n\tconst loyalties = new Loyalties(client)\n\tconst segments = new Segments(client)\n\tconst validationRules = new ValidationRules(client)\n\tconst apiLimitsHandler = new ApiLimitsHandler(client)\n\tconst metadataSchemas = new MetadataSchemas(client)\n\n\treturn {\n\t\tvouchers,\n\t\tcampaigns,\n\t\tdistributions,\n\t\tvalidations,\n\t\tredemptions,\n\t\tpromotions,\n\t\tcustomers,\n\t\tconsents,\n\t\torders,\n\t\tproducts,\n\t\trewards,\n\t\tloyalties,\n\t\tsegments,\n\t\tvalidationRules,\n\t\tevents,\n\t\tasyncActions,\n\t\tapiLimitsHandler,\n\t\tmetadataSchemas,\n\t}\n}\n","import * as T from './types/ClientSide'\n\nimport { assert, encode, isObject, isOptionalObject, isOptionalString, isString } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class ClientSide {\n\tconstructor(private client: RequestController, private trackingId?: string) {}\n\n\tpublic setIdentity(identity?: string) {\n\t\tthis.trackingId = identity\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-validate\n\t */\n\tpublic validate(params: T.ClientSideValidateParams | string) {\n\t\tassert(\n\t\t\tisObject(params) || isString(params),\n\t\t\t'client.validate: expected \"params\" argument to be an object or a string',\n\t\t)\n\n\t\tconst query: Record<string, any> = {}\n\n\t\tif (isString(params)) {\n\t\t\tquery.code = params\n\t\t} else {\n\t\t\tquery.code = params.code\n\t\t\tquery.item = params.items\n\t\t\tquery.amount = params.amount\n\t\t\tquery.metadata = params.metadata\n\t\t\tquery.order = { metadata: params.orderMetadata }\n\t\t\tquery.customer = params.customer\n\t\t\tquery.tracking_id = params.tracking_id || this.trackingId\n\t\t\tquery.session_type = params.session_type\n\t\t\tquery.session_key = params.session_key\n\t\t\tquery.session_ttl = params.session_ttl\n\t\t\tquery.session_ttl_unit = params.session_ttl_unit\n\t\t}\n\n\t\tif (!!query.code) {\n\t\t\tquery.code = query.code.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\t\t}\n\n\t\tassert(isOptionalObject(query?.customer), 'client.validate: expected \"params.customer\" to be an object')\n\t\tassert(isOptionalString(query?.customer?.source_id), 'client.validate: expected \"params.customer.source_id\" to be a string') // prettier-ignore\n\t\tassert(isOptionalObject(query?.customer?.metadata), 'client.validate: expected \"params.customer.metadata\" to be an object') // prettier-ignore\n\n\t\tconst path = query.code ? '/validate' : '/promotions/validation'\n\n\t\treturn this.client.get<T.ClientSideValidateResponse>(path, query)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-voucher-client-side\n\t */\n\tpublic redeem(code: string, payload: T.ClientSideRedeemPayload = {}) {\n\t\tassert(isString(code), 'client.redeem - please provide a valid Voucher code')\n\n\t\tcode = code.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\n\t\tpayload.customer = payload.customer ?? {}\n\t\tpayload.customer.source_id = payload.customer.source_id ?? this.trackingId\n\n\t\treturn this.client.post<T.ClientSideRedeemResponse>('/redeem', payload, { code })\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-publication\n\t */\n\tpublic publish(\n\t\tcampaign: string,\n\t\tpayload: T.ClientSidePublishPayload = {},\n\t\tqueryParams: T.ClientSidePublishQueryParams = {},\n\t) {\n\t\tassert(isObject(payload), 'client.publish - expected payload to be an object')\n\n\t\tconst preparedPayload: T.ClientSidePublishPreparedPayload = {}\n\n\t\tpreparedPayload.customer = payload.customer ?? {}\n\t\tpreparedPayload.customer.source_id = payload.customer?.source_id ?? this.trackingId\n\t\tpreparedPayload.channel = payload.channel ?? 'Voucherify.js' // @todo - removed hard-coded channel\n\n\t\tassert(\n\t\t\tisString(preparedPayload.customer?.source_id),\n\t\t\t'client.publish - expected payload to contain customer source id or to have tracking id set up by Voucherify client',\n\t\t)\n\n\t\tqueryParams.campaign = campaign.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\n\t\treturn this.client.post<T.ClientSidePublishResponse>('/publish', preparedPayload, queryParams)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/track-custom-event-client-side\n\t */\n\n\tpublic track(\n\t\tevent_name: string,\n\t\tcustomer: T.ClientSideTrackCustomer,\n\t\tmetadata?: Record<string, any>,\n\t\treferral?: T.ClientSideTrackReferral,\n\t\tloyalty?: T.ClientSideTrackLoyalty,\n\t) {\n\t\tassert(isString(event_name), 'client.track - expected event name to be an string')\n\t\tassert(isObject(customer), 'client.track - expected customer to be an object')\n\n\t\tconst payload: T.ClientSideTrackPayload = {\n\t\t\tevent: event_name,\n\t\t\tmetadata: metadata ?? {},\n\t\t\tcustomer: customer,\n\t\t\treferral: referral ?? undefined,\n\t\t\tloyalty: loyalty ?? undefined,\n\t\t}\n\n\t\tpayload.customer.source_id = customer.source_id ?? this.trackingId\n\n\t\tassert(\n\t\t\tisString(payload.customer?.source_id),\n\t\t\t'client.track - expected payload to contain customer source id or to have tracking id set up by Voucherify client',\n\t\t)\n\n\t\treturn this.client.post<T.ClientSideTrackResponse>('/events', payload)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-vouchers\n\t */\n\tpublic listVouchers(params: T.ClientSideListVouchersParams = {}) {\n\t\tconst query: Record<string, any> = {}\n\n\t\tquery.campaign = params.campaign\n\t\tquery.category = params.category\n\t\tquery.page = params.page\n\t\tquery.limit = params.limit\n\t\tquery.customer = params.customer\n\t\tquery.created_at = params.created_at\n\t\tquery.updated_at = params.updated_at\n\n\t\treturn this.client.get<T.ClientSideListVouchersResponse>('/vouchers', query)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-customer\n\t */\n\tpublic createCustomer(customer: T.ClientSideCustomersCreateParams, enableDoubleOptIn?: boolean) {\n\t\treturn this.client.post<T.ClientSideCustomersCreateResponse>(\n\t\t\t'/customers',\n\t\t\tcustomer,\n\t\t\t{},\n\t\t\tenableDoubleOptIn ? { 'X-Voucherify-Double-Opt-In': true } : {},\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-consent-client-side\n\t */\n\tpublic listConsents() {\n\t\treturn this.client.get<T.ClientSideConsentsListResponse>('/consents')\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-consents-client\n\t */\n\tpublic updateConsents(idOrSourceId: string, consents: T.ClientSideCustomersUpdateConsentsBody) {\n\t\treturn this.client.put<undefined>(`/customers/${encode(idOrSourceId)}/consents`, consents)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-stackable-discounts-client-side\n\t */\n\tpublic validateStackable(params: T.ClientSideValidationsValidateStackableParams) {\n\t\treturn this.client.post<T.ClientSideValidationValidateStackableResponse>(`/validations`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-stackable-discounts-client-side\n\t */\n\tpublic redeemStackable(params: T.ClientSideRedemptionsRedeemStackableParams) {\n\t\treturn this.client.post<T.ClientSideRedemptionsRedeemStackableResponse>(`/redemptions`, params)\n\t}\n}\n","import { assert, environment, isObject, isOptionalString, isString } from './helpers'\n\nimport { ClientSide } from './ClientSide'\nimport { RequestController } from './RequestController'\n\nexport type { ClientSide }\n\nexport interface VoucherifyClientSideOptions {\n\t/**\n\t * Optionally, you can add `apiUrl` to the client options if you want to use Voucherify running in a specific region.\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\tapiUrl: 'https://<region>.api.voucherify.io'\n\t * })\n\t * ```\n\t */\n\tapiUrl?: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Client-side Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tclientApplicationId: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Client-side Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tclientSecretKey: string\n\t/**\n\t * Set customer identity when using React Widget. In other situations, use `setIdentity` method:\n\t *\n\t * ```javascript\n\t * client.setIdentity('gustav@purpleson.com')\n\t * ```\n\t */\n\ttrackingId?: string\n\t/**\n\t * **(Required in Node.js)** Set the origin from where the requests are made.\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\torigin: 'your-domain.com'\n\t * })\n\t * ```\n\t *\n\t * @note in the browser, this option will be ignored. The `origin` header is a [forbidden header name](https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name) and it'll be automatically set by the browser for every request.\n\t */\n\torigin?: string\n\t/**\n\t * You can pass additional headers to requests made by the API Client.\n\t * It can prove to be useful when debugging various scenarios.\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\tcustomHeaders: {\n\t *\t\t\t\"DEBUG-HEADER\": \"my_value\",\n\t *\t\t\t\"TEST-HEADER\": \"another_value\"\n\t *\t\t}\n\t * })\n\t * ```\n\t */\n\tcustomHeaders?: Record<string, string>\n\t/**\n\t * If you wish to include original Axios error in VoucherifyError instance set this to true\n\t * It can prove to be useful when debugging various scenarios.\n\t * The original Axios error will be included in cause property of VoucherifyError\n\t */\n\texposeErrorCause?: boolean\n}\ninterface VoucherifyCustomerHeaders {\n\t'X-Client-Application-Id': string\n\t'X-Client-Token': string\n\t'X-Voucherify-Channel'?: string\n\torigin?: string\n}\nexport function VoucherifyClientSide(options: VoucherifyClientSideOptions): ClientSide {\n\tassert(isObject(options), 'VoucherifyCustomer: expected \"options\" argument to be an object')\n\tassert(isString(options.clientApplicationId), 'VoucherifyCustomer: \"options.clientApplicationId\" is required')\n\tassert(isString(options.clientSecretKey), 'VoucherifyCustomer: \"options.clientSecretKey\" is required')\n\tassert(isOptionalString(options.apiUrl), 'VoucherifyCustomer: expected \"options.baseUrl\" to be a string')\n\tassert(isOptionalString(options.trackingId), 'VoucherifyCustomer: expected \"options.trackingId\" to be a string')\n\n\tlet headers: VoucherifyCustomerHeaders = {\n\t\t'X-Client-Application-Id': options.clientApplicationId,\n\t\t'X-Client-Token': options.clientSecretKey,\n\t\t'X-Voucherify-Channel': `${environment()}-ClientSide-SDK-v${__VERSION__}`,\n\t}\n\n\tif (environment().startsWith('Node')) {\n\t\tassert(isString(options.origin), 'VoucherifyCustomer: \"options.origin\" is required in Node.js')\n\t\theaders['origin'] = options.origin\n\t}\n\n\tif (isObject(options.customHeaders)) {\n\t\theaders = Object.assign({}, headers, options.customHeaders)\n\t}\n\n\tconst client = new RequestController({\n\t\tbasePath: 'client/v1',\n\t\tbaseURL: options.apiUrl ?? 'https://api.voucherify.io',\n\t\theaders,\n\t\texposeErrorCause: options.exposeErrorCause ?? false,\n\t})\n\n\treturn new ClientSide(client, options.trackingId)\n}\n"],"names":["DiscountVouchersTypesEnum","VoucherifyError","Error","constructor","statusCode","body","axiosError","message","generateMessage","code","key","details","request_id","resource_id","resource_type","related_object_ids","related_object_type","related_object_total","cause","JSON","stringify","RequestController","basePath","baseURL","headers","exposeErrorCause","request","lastResponseHeaders","isLastResponseHeadersSet","axios","create","responseType","interceptors","response","use","error","status","Promise","reject","data","undefined","isLastReponseHeadersSet","getLastResponseHeaders","setLastResponseHeaders","setBaseUrl","defaults","get","path","params","paramsSerializer","Qs","post","put","delete","encode","value","encodeURIComponent","isString","isOptionalString","isObject","Array","isArray","isOptionalObject","environment","window","document","self","name","process","versions","node","version","navigator","userAgent","includes","assert","condition","omit","obj","keys","Object","fromEntries","entries","filter","propertyKey","AsyncActions","client","asyncActionId","list","CampaignsQualifications","examine","Campaigns","qualifications","campaign","update","nameOrId","addVoucher","addCertainVoucher","importVouchers","campaignName","vouchers","DistributionsPublications","Distributions","exports","publications","Exports","exportResource","exportResourceId","Events","eventName","event","Balance","VouchersQualification","Vouchers","balance","voucher","enable","disable","import","bulkUpdateMetadata","bulkUpdate","releaseValidationSession","sessionKey","Validations","promotions","validateVoucher","validate","context","validateStackable","Redemptions","redeem","redeemStackable","redemptionId","getForVoucher","rollback","queryParams","payload","reason","tracking_id","trackingId","customer","rollbackStackable","parentRedemptionId","PromotionTiers","listAll","promotionId","promotionsTierId","id","Promotions","tiers","promotionCampaign","Customers","customerId","scroll","startingAfter","starting_after","order","assign","customers","length","created_at","has_more","source_id","customerWithoutId","updateConsents","idOrSourceId","consents","listActivities","Consents","Orders","orderId","orders","Products","product","productId","products","createSku","sku","getSku","skuId","updateSku","deleteSku","listSkus","Rewards","reward","rewardId","listAssignments","createAssignment","assignment","updateAssignment","deleteAssignment","assignmentId","Loyalties","campaignId","listRewardAssignments","createRewardAssignments","updateRewardAssignment","deleteRewardAssignment","listEarningRules","createEarningRule","earningRules","updateEarningRule","earningRule","deleteEarningRule","earningRuleId","listMembers","createMember","member","getMember","memberId","getMemberActivities","addPoints","redeemReward","ValidationRules","validationRule","validationRuleId","Segments","segment","segmentId","ApiLimitsHandler","requestController","getLastResponseHeadersFromController","areLimitsAvailable","getRateLimit","rateLimit","parseInt","getRateLimitRemaining","rateLimitRemaining","getRetryAfter","retryAfter","MetadataSchemas","schemaName","VoucherifyServerSide","options","applicationId","secretKey","apiVersion","channel","customHeaders","startsWith","dangerouslySetSecretKeyInBrowser","toLowerCase","apiUrl","asyncActions","campaigns","exportsNamespace","events","distributions","promotionTiers","validations","redemptions","rewards","loyalties","segments","validationRules","apiLimitsHandler","metadataSchemas","ClientSide","setIdentity","identity","query","item","items","amount","metadata","orderMetadata","session_type","session_key","session_ttl","session_ttl_unit","replace","trim","publish","preparedPayload","track","event_name","referral","loyalty","listVouchers","category","page","limit","updated_at","createCustomer","enableDoubleOptIn","listConsents","VoucherifyClientSide","clientApplicationId","clientSecretKey","origin"],"mappings":";;;;;;;;;CAEA,WAAYA;CACXA,EAAAA,mCAAA,WAAA;CACAA,EAAAA,oCAAA,YAAA;CACAA,EAAAA,iCAAA,SAAA;CACAA,EAAAA,kCAAA,UAAA;CACA,CALD,EAAYA,iCAAyB,KAAzBA,iCAAyB,KAAA,CAArC;;CCAA;;;AAGA,OAAaC,wBAAwBC;CAYpCC,EAAAA,YAAYC,YAAoBC,MAAgBC;;;CAC/CD,IAAAA,IAAI,YAAGA,IAAH,oBAAW,EAAf;CAEA,UAAME,OAAO,GAAS,WAAAF,IAAK,SAAL,mBAAOE,OAAP,KAAkBC,eAAe,CAACH,IAAD,EAAOD,UAAP,CAAvD;CAEA,UAAMG,OAAN;UAhBME;UACAC;UACAC;UACAC;UACAC;UACAC;UACAC;UACAC;UACAC;UACAC;CASN,SAAKT,IAAL,GAAkBJ,IAAK,CAACI,IAAxB;CACA,SAAKC,GAAL,GAAiBL,IAAK,CAACK,GAAvB;CACA,SAAKC,OAAL,GAAqBN,IAAK,CAACM,OAA3B;CACA,SAAKC,UAAL,GAAwBP,IAAK,CAACO,UAA9B;CACA,SAAKC,WAAL,GAAyBR,IAAK,CAACQ,WAA/B;CACA,SAAKC,aAAL,GAA2BT,IAAK,CAACS,aAAjC;CACA,SAAKC,kBAAL,GAAgCV,IAAK,CAACU,kBAAtC;CACA,SAAKC,mBAAL,GAAiCX,IAAK,CAACW,mBAAvC;CACA,SAAKC,oBAAL,GAAkCZ,IAAK,CAACY,oBAAxC;CACA,SAAKC,KAAL,GAAaZ,UAAb;CACA;;;;CAGF,SAASE,eAAT,CAAyBH,IAAzB,EAAwCD,UAAxC;CACCC,EAAAA,IAAI,GAAG,OAAOA,IAAP,KAAgB,QAAhB,GAA2BA,IAA3B,GAAkCc,IAAI,CAACC,SAAL,CAAef,IAAf,EAAqB,IAArB,EAA2B,CAA3B,CAAzC;CAEA,oCAAkCD,yBAAyBC,MAA3D;CACA;;CC7BD;;;;AAGA,OAAagB;CASZlB,EAAAA,YAAY;CAAEmB,IAAAA,QAAF;CAAYC,IAAAA,OAAZ;CAAqBC,IAAAA,OAArB;CAA8BC,IAAAA;CAA9B;UARJF;UACAD;UACAE;UACAE;UACAC;UACAC;UACAH;CAGP,SAAKH,QAAL,GAAgBA,QAAhB;CACA,SAAKC,OAAL,GAAeA,OAAf;CACA,SAAKC,OAAL,GAAeA,OAAf;CACA,SAAKC,gBAAL,GAAwBA,gBAAxB;CACA,SAAKE,mBAAL,GAA2B,EAA3B;CACA,SAAKC,wBAAL,GAAgC,KAAhC;CAEA,SAAKF,OAAL,GAAeG,KAAK,CAACC,MAAN,CAAa;CAC3BP,MAAAA,OAAO,KAAK,KAAKA,WAAW,KAAKD,WADN;CAE3BE,MAAAA,OAAO,EAAE,KAAKA,OAFa;CAG3BO,MAAAA,YAAY,EAAE;CAHa,KAAb,CAAf;CAKA,SAAKL,OAAL,CAAaM,YAAb,CAA0BC,QAA1B,CAAmCC,GAAnC,CAAuC,KAAK,CAA5C,EAAgDC,KAAD;;;CAC9C;;;CAGA,UAAIA,KAAJ,+BAAIA,KAAK,CAAEF,QAAX,aAAI,gBAAiBG,MAArB,EAA6B;CAC5B,eAAOC,OAAO,CAACC,MAAR,CACN,IAAIrC,eAAJ,CACCkC,KAAK,CAACF,QAAN,CAAeG,MADhB,EAECD,KAAK,CAACF,QAAN,CAAeM,IAFhB,EAGC,KAAKd,gBAAL,KAA0B,IAA1B,GAAiCU,KAAjC,GAAyCK,SAH1C,CADM,CAAP;CAOA;;CACD,aAAOH,OAAO,CAACC,MAAR,CAAeH,KAAf,CAAP;CACA,KAdD;CAeA;;CACMM,EAAAA,uBAAuB;CAC7B,WAAO,KAAKb,wBAAZ;CACA;;CACMc,EAAAA,sBAAsB;CAC5B,WAAO,KAAKf,mBAAZ;CACA;;CACOgB,EAAAA,sBAAsB,CAACnB,OAAD;CAC7B,SAAKG,mBAAL,GAA2BH,OAA3B;CACA,SAAKI,wBAAL,GAAgC,IAAhC;CACA;;CACMgB,EAAAA,UAAU,CAACrB,OAAD;CAChB,SAAKA,OAAL,GAAeA,OAAf;CACA,SAAKG,OAAL,CAAamB,QAAb,CAAsBtB,OAAtB,MAAmCA,WAAW,KAAKD,WAAnD;CACA;;CACe,QAAHwB,GAAG,CAAIC,IAAJ,EAAkBC,MAAlB;CACf,UAAMf,QAAQ,GAAG,MAAM,KAAKP,OAAL,CAAaoB,GAAb,CAAoBC,IAApB,EAA0B;CAChDC,MAAAA,MADgD;CAEhDC,MAAAA,gBAAgB,EAAE,UAAUD,MAAV;CACjB,eAAOE,EAAE,CAAC9B,SAAH,CAAa4B,MAAb,CAAP;CACA;CAJ+C,KAA1B,CAAvB;CAMA,SAAKL,sBAAL,CAA4BV,QAAQ,CAACT,OAArC;CACA,WAAOS,QAAQ,CAACM,IAAhB;CACA;;CACgB,QAAJY,IAAI,CAChBJ,IADgB,EAEhB1C,IAFgB,EAGhB2C,MAHgB,EAIhBxB,OAJgB;CAMhB,UAAMS,QAAQ,GAAG,MAAM,KAAKP,OAAL,CAAayB,IAAb,CAAqBJ,IAArB,EAA2B1C,IAA3B,EAAiC;CACvD2C,MAAAA,MADuD;CAEvDC,MAAAA,gBAAgB,EAAE,UAAUD,MAAV;CACjB,eAAOE,EAAE,CAAC9B,SAAH,CAAa4B,MAAb,CAAP;CACA,OAJsD;CAKvDxB,MAAAA;CALuD,KAAjC,CAAvB;CAOA,SAAKmB,sBAAL,CAA4BV,QAAQ,CAACT,OAArC;CACA,WAAOS,QAAQ,CAACM,IAAhB;CACA;;CACe,QAAHa,GAAG,CAAIL,IAAJ,EAAkB1C,IAAlB,EAA6C2C,MAA7C;CACf,UAAMf,QAAQ,GAAG,MAAM,KAAKP,OAAL,CAAa0B,GAAb,CAAoBL,IAApB,EAA0B1C,IAA1B,EAAgC;CAAE2C,MAAAA;CAAF,KAAhC,CAAvB;CACA,SAAKL,sBAAL,CAA4BV,QAAQ,CAACT,OAArC;CACA,WAAOS,QAAQ,CAACM,IAAhB;CACA;;CACkB,QAANc,MAAM,CAAIN,IAAJ,EAAkBC,MAAlB;CAClB,UAAMf,QAAQ,GAAG,MAAM,KAAKP,OAAL,CAAa2B,MAAb,CAAuBN,IAAvB,EAA6B;CAAEC,MAAAA;CAAF,KAA7B,CAAvB;CACA,SAAKL,sBAAL,CAA4BV,QAAQ,CAACT,OAArC;CACA,WAAOS,QAAQ,CAACM,IAAhB;CACA;;;;UCtGce,OAAOC,QAAgB;CACtC,SAAOC,kBAAkB,CAACD,KAAD,CAAzB;CACA;AACD,UAIgBE,SAASF;CACxB,SAAO,OAAOA,KAAP,KAAiB,QAAxB;CACA;AACD,UAAgBG,iBAAiBH;CAChC,SAAOA,KAAK,IAAI,IAAT,IAAiBE,QAAQ,CAACF,KAAD,CAAhC;CACA;AACD,UAAgBI,SAA8DJ;CAC7E,SAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,CAACK,KAAK,CAACC,OAAN,CAAcN,KAAd,CAA9B,IAAsDA,KAAK,KAAK,IAAvE;CACA;AACD,UAAgBO,iBACfP;CAEA,SAAOA,KAAK,IAAI,IAAT,IAAiBI,QAAQ,CAACJ,KAAD,CAAhC;CACA;AACD,UAOgBQ;CACf,MAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACC,QAAd,KAA2B,WAAhE,EAA6E;CAC5E,WAAO,SAAP,CAD4E;CAG5E,GAHD,MAGO,IAAI,OAAOC,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAAC/D,WAAjC,IAAgD+D,IAAI,CAAC/D,WAAL,CAAiBgE,IAAjB,KAA0B,4BAA9E,EAA4G;CAClH,WAAO,WAAP;CACA,GAFM,MAEA,IAAI,OAAOC,OAAP,KAAmB,WAAnB,IAAkCA,OAAO,CAACC,QAAR,IAAoB,IAAtD,IAA8DD,OAAO,CAACC,QAAR,CAAiBC,IAAjB,IAAyB,IAA3F,EAAiG;CACvG,sBAAkBF,OAAO,CAACG,SAA1B;CACA,GAFM,MAEA,IACL,OAAOP,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACG,IAAP,KAAgB,QAAlD,IACAK,SAAS,CAACC,SAAV,CAAoBC,QAApB,CAA6B,SAA7B,CADA,IAEAF,SAAS,CAACC,SAAV,CAAoBC,QAApB,CAA6B,OAA7B,CAHM,EAIL;CACD,WAAO,OAAP;CACA;;CAED,SAAO,SAAP;CACA;AAED,UAAgBC,OAAOC,WAAgBrE;CACtC,MAAIqE,SAAJ,EAAe;CACf,QAAM,IAAI1E,KAAJ,CAAUK,OAAV,CAAN;CACA;CAED;;;;;;;;AAOA,UAAgBsE,KAAsCC,KAAQC;CAC7D,SAAOC,MAAM,CAACC,WAAP,CACND,MAAM,CAACE,OAAP,CAAeJ,GAAf,EAAoBK,MAApB,CAA2B,CAAC,CAACC,WAAD,CAAD;CAC1B,WAAO,CAACL,IAAI,CAACL,QAAL,CAAcU,WAAd,CAAR;CACA,GAFD,CADM,CAAP;CAKA;;CC3DD,MAAMC,YAAN;CACClF,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOxC,EAAAA,GAAG,CAACyC,aAAD;CACT,WAAO,KAAKD,MAAL,CAAYxC,GAAZ,mBAA6DQ,MAAM,CAACiC,aAAD,GAAnE,CAAP;CACA;CACD;;;;;CAGOC,EAAAA,IAAI,CAACxC,MAAD;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAA4C,gBAA5C,EAA8DE,MAA9D,CAAP;CACA;;;;CCfF,MAAMyC,uBAAN;CACCtF,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;;CAE1CI,EAAAA,OAAO,CAACrF,OAAsC,EAAvC,EAA2C2C,MAA3C;CACb,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,CAAoD,0BAApD,EAAgF9C,IAAhF,EAAsF2C,MAAtF,CAAP;CACA;;;;AAGF,OAAa2C;CAGZxF,EAAAA,YAAoBmF;UAAAA;UAFbM;CAEa,eAAA,GAAAN,MAAA;CACnB,SAAKM,cAAL,GAAsB,IAAIH,uBAAJ,CAA4B,KAAKH,MAAjC,CAAtB;CACA;CACD;;;;;CAGOxD,EAAAA,MAAM,CAAC+D,QAAD;CACZ,WAAO,KAAKP,MAAL,CAAYnC,IAAZ,CAAoD,YAApD,EAAkE0C,QAAlE,CAAP;CACA;CACD;;;;;CAGOC,EAAAA,MAAM,CAACC,QAAD,EAAmBF,QAAnB;CACZ,WAAO,KAAKP,MAAL,CAAYlC,GAAZ,eAAiEE,MAAM,CAACyC,QAAD,GAAvE,EAAqFF,QAArF,CAAP;CACA;CACD;;;;;CAGO/C,EAAAA,GAAG,CAACqB,IAAD;CACT,WAAO,KAAKmB,MAAL,CAAYxC,GAAZ,eAA8DQ,MAAM,CAACa,IAAD,GAApE,CAAP;CACA;CACD;;;;;CAGOd,EAAAA,MAAM,CAACc,IAAD,EAAenB,SAAkC,EAAjD;CACZ,WAAO,KAAKsC,MAAL,CAAYjC,MAAZ,eAAiCC,MAAM,CAACa,IAAD,GAAvC,EAAiDnB,MAAjD,CAAP;CACA;CACD;;;;;CAIOgD,EAAAA,UAAU,CAAC7B,IAAD,EAAe9D,OAAkC,EAAjD,EAAqD2C,SAAsC,EAA3F;CAChB,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,eAAmEG,MAAM,CAACa,IAAD,YAAzE,EAA4F9D,IAA5F,EAAkG2C,MAAlG,CAAP;CACA;CACD;;;;;CAIOiD,EAAAA,iBAAiB,CAAC9B,IAAD,EAAe1D,IAAf,EAA6BJ,OAA2C,EAAxE;CACvB,WAAO,KAAKiF,MAAL,CAAYnC,IAAZ,eACQG,MAAM,CAACa,IAAD,cAAmBb,MAAM,CAAC7C,IAAD,GADvC,EAENJ,IAFM,CAAP;CAIA;CACD;;;;;CAGO6F,EAAAA,cAAc,CAACC,YAAD,EAAuBC,QAAvB;CACpB,WAAO,KAAKd,MAAL,CAAYnC,IAAZ,eAAkEG,MAAM,CAAC6C,YAAD,UAAxE,EAAiGC,QAAjG,CAAP;CACA;CACD;;;;;CAGOZ,EAAAA,IAAI,CAACxC,SAAgC,EAAjC;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAAyC,YAAzC,EAAuDE,MAAvD,CAAP;CACA;;;;CClEF,MAAMqD,yBAAN;CACClG,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOE,EAAAA,IAAI,CAACxC,SAAgD,EAAjD;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAAyD,eAAzD,EAA0EE,MAA1E,CAAP;CACA;CACD;;;;;CAGOlB,EAAAA,MAAM,CAACkB,MAAD;CACZ,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,CAA4D,eAA5D,EAA6EH,MAA7E,CAAP;CACA;;;;AAGF,OAAasD;CAGZnG,EAAAA,YAAoBmF,QAAkCiB;UAAlCjB;UAAkCiB;UAF/CC;CAEa,eAAA,GAAAlB,MAAA;CAAkC,gBAAA,GAAAiB,OAAA;CACrD,SAAKC,YAAL,GAAoB,IAAIH,yBAAJ,CAA8B,KAAKf,MAAnC,CAApB;CACA;;;;OCtBWmB;CACZtG,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOxD,EAAAA,MAAM,CAAC4E,cAAD;CACZ,WAAO,KAAKpB,MAAL,CAAYnC,IAAZ,CAA0C,UAA1C,EAAsDuD,cAAtD,CAAP;CACA;CACD;;;;;CAGO5D,EAAAA,GAAG,CAAC6D,gBAAD;CACT,WAAO,KAAKrB,MAAL,CAAYxC,GAAZ,aAAkDQ,MAAM,CAACqD,gBAAD,GAAxD,CAAP;CACA;CACD;;;;;CAGOtD,EAAAA,MAAM,CAACsD,gBAAD;CACZ,WAAO,KAAKrB,MAAL,CAAYjC,MAAZ,aAA+BC,MAAM,CAACqD,gBAAD,GAArC,CAAP;CACA;;;;OCrBWC;CACZzG,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOxD,EAAAA,MAAM,CAAC+E,SAAD,EAAoB7D,MAApB;CACZA,IAAAA,MAAM,GAAG,EAAE,GAAGA,MAAL;CAAa8D,MAAAA,KAAK,EAAED;CAApB,KAAT;CACA,WAAO,KAAKvB,MAAL,CAAYnC,IAAZ,CAAmC,SAAnC,EAA8CH,MAA9C,CAAP;CACA;;;;OCRW+D;CACZ5G,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;;;CAKOxD,EAAAA,MAAM,CAACrB,IAAD,EAAeuC,MAAf;CACZ,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,cAAuDG,MAAM,CAAC7C,IAAD,WAA7D,EAA+EuC,MAA/E,CAAP;CACA;;;;CCTF,MAAMgE,qBAAN;CACC7G,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;;;;CAMOI,EAAAA,OAAO,CAACrF,IAAD,EAA2C2C,SAA+C,EAA1F;CACb,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,CAAyD,yBAAzD,EAAoF9C,IAApF,EAA0F2C,MAA1F,CAAP;CACA;;;;AAEF,OAAaiE;CAGZ9G,EAAAA,YAAoBmF,QAAkC4B;UAAlC5B;UAAkC4B;UAF/CtB;CAEa,eAAA,GAAAN,MAAA;CAAkC,gBAAA,GAAA4B,OAAA;CACrD,SAAKtB,cAAL,GAAsB,IAAIoB,qBAAJ,CAA0B,KAAK1B,MAA/B,CAAtB;CACA;CACD;;;;;CAGOxD,EAAAA,MAAM,CAACqF,OAAD;CACZ,WAAO,KAAK7B,MAAL,CAAYnC,IAAZ,cAAwDG,MAAM,CAAC6D,OAAO,CAAC1G,IAAT,GAA9D,EAAgF0G,OAAhF,CAAP;CACA;CACD;;;;;CAGOrE,EAAAA,GAAG,CAACrC,IAAD;CACT,WAAO,KAAK6E,MAAL,CAAYxC,GAAZ,cAAoDQ,MAAM,CAAC7C,IAAD,GAA1D,CAAP;CACA;CACD;;;;;CAGOqF,EAAAA,MAAM,CAACqB,OAAD;CACZ,WAAO,KAAK7B,MAAL,CAAYlC,GAAZ,cAAuDE,MAAM,CAAC6D,OAAO,CAAC1G,IAAT,GAA7D,EAA+E0G,OAA/E,CAAP;CACA;CACD;;;;;CAGO9D,EAAAA,MAAM,CAAC5C,IAAD,EAAeuC,SAAiC,EAAhD;CACZ,WAAO,KAAKsC,MAAL,CAAYjC,MAAZ,cAAgCC,MAAM,CAAC7C,IAAD,GAAtC,EAAgDuC,MAAhD,CAAP;CACA;CACD;;;;;CAGOwC,EAAAA,IAAI,CAACxC,SAA+B,EAAhC;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAAwC,WAAxC,EAAqDE,MAArD,CAAP;CACA;CACD;;;;;CAGOoE,EAAAA,MAAM,CAAC3G,IAAD;CACZ,WAAO,KAAK6E,MAAL,CAAYnC,IAAZ,cAAwDG,MAAM,CAAC7C,IAAD,UAA9D,EAA+E,EAA/E,CAAP;CACA;CACD;;;;;CAGO4G,EAAAA,OAAO,CAAC5G,IAAD;CACb,WAAO,KAAK6E,MAAL,CAAYnC,IAAZ,cAAyDG,MAAM,CAAC7C,IAAD,WAA/D,EAAiF,EAAjF,CAAP;CACA;CACD;;;;;CAGO6G,EAAAA,MAAM,CAAClB,QAAD;CACZ,WAAO,KAAKd,MAAL,CAAYnC,IAAZ,CAA2C,kBAA3C,EAA+DiD,QAA/D,CAAP;CACA;CACD;;;;;CAGOmB,EAAAA,kBAAkB,CAACvE,MAAD;CACxB,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,CAAuD,0BAAvD,EAAmFH,MAAnF,CAAP;CACA;CACD;;;;;CAGOwE,EAAAA,UAAU,CAACpB,QAAD;CAChB,WAAO,KAAKd,MAAL,CAAYnC,IAAZ,CAA+C,sBAA/C,EAAuEiD,QAAvE,CAAP;CACA;CACD;;;;;CAGOqB,EAAAA,wBAAwB,CAAChH,IAAD,EAAeiH,UAAf;CAC9B,WAAO,KAAKpC,MAAL,CAAYjC,MAAZ,cAAgCC,MAAM,CAAC7C,IAAD,cAAmB6C,MAAM,CAACoE,UAAD,GAA/D,CAAP;CACA;;;;OCpFWC;CACZxH,EAAAA,YAAoBmF,QAAmCsC;UAAnCtC;UAAmCsC;CAAnC,eAAA,GAAAtC,MAAA;CAAmC,mBAAA,GAAAsC,UAAA;CAA0B;CAEjF;;;;;CAGOC,EAAAA,eAAe,CAACpH,IAAD,EAAeuC,SAA6C,EAA5D;CACrB,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,cAAoEG,MAAM,CAAC7C,IAAD,YAA1E,EAA6FuC,MAA7F,CAAP;CACA;;CAEM8E,EAAAA,QAAQ,CAACrH,IAAD,EAA2CsH,UAAwC,EAAnF;CACd,QAAIpE,QAAQ,CAAClD,IAAD,CAAZ,EAAoB;CACnB,aAAO,KAAKmH,UAAL,CAAgBE,QAAhB,CAAyBrH,IAAzB,CAAP;CACA;;CAED,WAAO,KAAKoH,eAAL,CAAqBpH,IAArB,EAA2BsH,OAA3B,CAAP;CACA;CAED;;;;;CAGOC,EAAAA,iBAAiB,CAAChF,MAAD;CACvB,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,eAAA,EAAwEH,MAAxE,CAAP;CACA;;;;OCvBWiF;CACZ9H,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGO4C,EAAAA,MAAM,CAACzH,IAAD,EAAeJ,OAAgC,EAA/C;CACZ,WAAO,KAAKiF,MAAL,CAAYnC,IAAZ,cAA2DG,MAAM,CAAC7C,IAAD,cAAjE,EAAsFJ,IAAtF,CAAP;CACA;CACD;;;;;CAGO8H,EAAAA,eAAe,CAACnF,MAAD;CACrB,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,eAAA,EAAuEH,MAAvE,CAAP;CACA;CACD;;;;;CAGOF,EAAAA,GAAG,CAACsF,YAAD;CACT,WAAO,KAAK9C,MAAL,CAAYxC,GAAZ,iBAA8CQ,MAAM,CAAC8E,YAAD,GAApD,CAAP;CACA;CACD;;;;;CAGO5C,EAAAA,IAAI,CAACxC,SAAkC,EAAnC;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAA2C,cAA3C,EAA2DE,MAA3D,CAAP;CACA;CACD;;;;;CAGOqF,EAAAA,aAAa,CAAC5H,IAAD;CACnB,WAAO,KAAK6E,MAAL,CAAYxC,GAAZ,cAAiEQ,MAAM,CAAC7C,IAAD,cAAvE,CAAP;CACA;CACD;;;;;CAGO6H,EAAAA,QAAQ,CAACF,YAAD,EAAuBpF,MAAvB;CACd,QAAIuF,WAAW,GAAqC,EAApD;CACA,QAAIC,OAAO,GAAiC,EAA5C;;CAEA,QAAI/E,QAAQ,CAACT,MAAD,CAAZ,EAAsB;CACrBuF,MAAAA,WAAW,CAACE,MAAZ,GAAqBzF,MAArB;CACA,KAFD,MAEO,IAAIW,QAAQ,CAACX,MAAD,CAAZ,EAAsB;CAC5B,YAAM;CAAEyF,QAAAA,MAAF;CAAUC,QAAAA,WAAW,EAAEC,UAAvB;CAAmCC,QAAAA;CAAnC,UAAgD5F,MAAtD;CAEAuF,MAAAA,WAAW,GAAG;CACbE,QAAAA,MAAM,EAAEA,MAAM,GAAGA,MAAH,GAAYjG,SADb;CAEbkG,QAAAA,WAAW,EAAEC,UAAU,GAAGA,UAAH,GAAgBnG;CAF1B,OAAd;CAIAgG,MAAAA,OAAO,GAAG;CAAEI,QAAAA;CAAF,OAAV;CACA;;CAED,WAAO,KAAKtD,MAAL,CAAYnC,IAAZ,iBACUG,MAAM,CAAC8E,YAAD,YADhB,EAENI,OAFM,EAGND,WAHM,CAAP;CAKA;CACD;;;;;;CAIOM,EAAAA,iBAAiB,CAACC,kBAAD,EAA6B9F,MAA7B,EAA2CuF,WAA3C;CACvB,WAAO,KAAKjD,MAAL,CAAYnC,IAAZ,iBACUG,MAAM,CAACwF,kBAAD,aADhB,EAEN9F,MAFM,EAGNuF,WAHM,CAAP;CAKA;;;;OCrEWQ;CACZ5I,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGO0D,EAAAA,OAAO,CAAChG,SAAwC,EAAzC;CACb,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAAiD,mBAAjD,EAAsEE,MAAtE,CAAP;CACA;CACD;;;;;CAGOwC,EAAAA,IAAI,CAACyD,WAAD;CACV,WAAO,KAAK3D,MAAL,CAAYxC,GAAZ,gBAA6DQ,MAAM,CAAC2F,WAAD,SAAnE,CAAP;CACA;CACD;;;;;CAGOnH,EAAAA,MAAM,CAACmH,WAAD,EAAsBjG,MAAtB;CACZ,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,gBAAgEG,MAAM,CAAC2F,WAAD,SAAtE,EAA6FjG,MAA7F,CAAP;CACA;CACD;;;;;CAGOkF,EAAAA,MAAM,CAACgB,gBAAD,EAA2BlG,MAA3B;CACZ,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,sBACeG,MAAM,CAAC4F,gBAAD,cADrB,EAENlG,MAFM,CAAP;CAIA;CACD;;;;;CAGO8C,EAAAA,MAAM,CAAC9C,MAAD;CACZ,WAAO,KAAKsC,MAAL,CAAYlC,GAAZ,sBAAqEE,MAAM,CAACN,MAAM,CAACmG,EAAR,GAA3E,EAA0FnG,MAA1F,CAAP;CACA;CACD;;;;;CAGOK,EAAAA,MAAM,CAAC6F,gBAAD;CACZ,WAAO,KAAK5D,MAAL,CAAYjC,MAAZ,sBAAwCC,MAAM,CAAC4F,gBAAD,GAA9C,CAAP;CACA;;;;OCzCWE;CACZjJ,EAAAA,YAAoBmF,QAAkC+D;UAAlC/D;UAAkC+D;CAAlC,eAAA,GAAA/D,MAAA;CAAkC,cAAA,GAAA+D,KAAA;CAAyB;CAC/E;;;;;CAGOvH,EAAAA,MAAM,CAACwH,iBAAD;CACZ,WAAO,KAAKhE,MAAL,CAAYnC,IAAZ,CAA6C,YAA7C,EAA2DmG,iBAA3D,CAAP;CACA;CACD;;;;;CAGOxB,EAAAA,QAAQ,CAACzH,IAAD,EAAmC2C,MAAnC;CACd,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,CAA+C,wBAA/C,EAAyE9C,IAAzE,EAA+E2C,MAA/E,CAAP;CACA;;;;CCZF,MAAMuG,SAAN;CACCpJ,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOxD,EAAAA,MAAM,CAAC8G,QAAD;CACZ,WAAO,KAAKtD,MAAL,CAAYnC,IAAZ,CAA4C,YAA5C,EAA0DyF,QAA1D,CAAP;CACA;CACD;;;;;CAGO9F,EAAAA,GAAG,CAAC0G,UAAD;CACT,WAAO,KAAKlE,MAAL,CAAYxC,GAAZ,eAAsDQ,MAAM,CAACkG,UAAD,GAA5D,CAAP;CACA;CACD;;;;;CAGOhE,EAAAA,IAAI,CAACxC,MAAD;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAAyC,YAAzC,EAAuDE,MAAvD,CAAP;CACA;CACD;;;;;;;;;;;;;CAWoB,SAANyG,MAAM,CACnBzG,MADmB;;;CAGnB,QAAI0G,aAAa,4BAChB1G,MAAM,CAAC2G,cADS,oCACU3G,MAAM,CAAC4G,KAAP,KAAiB,YAAjB,GAAgC,sBAAhC,GAAyD,sBADpF;CAEA,QAAI3H,QAAQ,GAAG,MAAM,KAAKqD,MAAL,CAAYxC,GAAZ,CACpB,YADoB,EAEpBkC,MAAM,CAAC6E,MAAP,CAAc,EAAd,EAAkB7G,MAAlB,EAA0B;CAAE2G,MAAAA,cAAc,EAAED;CAAlB,KAA1B,CAFoB,CAArB;;CAKA,WAAO,IAAP,EAAa;CACZ,UAAIzH,QAAQ,CAAC6H,SAAT,CAAmBC,MAAnB,KAA8B,CAAlC,EAAqC;;CAErC,WAAK,MAAMnB,QAAX,IAAuB3G,QAAQ,CAAC6H,SAAhC,EAA2C;CAC1C,YAAI9G,MAAM,CAAC4G,KAAP,KAAiB,YAArB,EAAmC;CAClCF,UAAAA,aAAa,GAAGA,aAAa,GAAGd,QAAQ,CAACoB,UAAzB,GAAsCN,aAAtC,GAAsDd,QAAQ,CAACoB,UAA/E;CACA,SAFD,MAEO;CACNN,UAAAA,aAAa,GAAGA,aAAa,GAAGd,QAAQ,CAACoB,UAAzB,GAAsCN,aAAtC,GAAsDd,QAAQ,CAACoB,UAA/E;CACA;;CACD,cAAMpB,QAAN;CACA;;CAED,UAAI,CAAC3G,QAAQ,CAACgI,QAAd,EAAwB;CAExBhI,MAAAA,QAAQ,GAAG,MAAM,KAAKqD,MAAL,CAAYxC,GAAZ,CAAgB,YAAhB,EAA8BkC,MAAM,CAAC6E,MAAP,CAAc,EAAd,EAAkB7G,MAAlB,EAA0B;CAAE2G,QAAAA,cAAc,EAAED;CAAlB,OAA1B,CAA9B,CAAjB;CACA;CACD;CACD;;;;;CAGO5D,EAAAA,MAAM,CAAC8C,QAAD;CACZ,UAAMO,EAAE,GAAG,QAAQP,QAAR,GAAmBA,QAAQ,CAACO,EAA5B,GAAiCP,QAAQ,CAACsB,SAArD;CAEA,UAAMC,iBAAiB,GAAGtF,IAAI,CAAC+D,QAAD,EAAW,CAAC,IAAD,CAAX,CAA9B;CAEA,WAAO,KAAKtD,MAAL,CAAYlC,GAAZ,eAAyDE,MAAM,CAAC6F,EAAD,GAA/D,EAAuEgB,iBAAvE,CAAP;CACA;CACD;;;;;CAGO9G,EAAAA,MAAM,CAACmG,UAAD;CACZ,WAAO,KAAKlE,MAAL,CAAYjC,MAAZ,eAA4CC,MAAM,CAACkG,UAAD,GAAlD,CAAP;CACA;CACD;;;;;CAGOY,EAAAA,cAAc,CAACC,YAAD,EAAuBC,QAAvB;CACpB,WAAO,KAAKhF,MAAL,CAAYlC,GAAZ,eAAyCE,MAAM,CAAC+G,YAAD,YAA/C,EAA0EC,QAA1E,CAAP;CACA;CAED;;;;;CAGOC,EAAAA,cAAc,CAACf,UAAD,EAAqBxG,MAArB;CACpB,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,eAAgEQ,MAAM,CAACkG,UAAD,cAAtE,EAAiGxG,MAAjG,CAAP;CACA;;;;OCzFWwH;CACZrK,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOE,EAAAA,IAAI;CACV,WAAO,KAAKF,MAAL,CAAYxC,GAAZ,CAAwC,WAAxC,CAAP;CACA;;;;OCNW2H;CACZtK,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CACjD;;;;;CAGOxD,EAAAA,MAAM,CAAC8H,KAAD;CACZ,WAAO,KAAKtE,MAAL,CAAYnC,IAAZ,CAAyC,SAAzC,EAAoDyG,KAApD,CAAP;CACA;CACD;;;;;CAGO9G,EAAAA,GAAG,CAAC4H,OAAD;CACT,WAAO,KAAKpF,MAAL,CAAYxC,GAAZ,YAAgDQ,MAAM,CAACoH,OAAD,GAAtD,CAAP;CACA;CACD;;;;;CAGO5E,EAAAA,MAAM,CAAC8D,KAAD;CACZ,WAAO,KAAKtE,MAAL,CAAYlC,GAAZ,YACKE,MAAM,CAACsG,KAAK,CAACT,EAAN,IAAYS,KAAK,CAACM,SAAnB,GADX,EAENrF,IAAI,CAAC+E,KAAD,EAAQ,CAAC,IAAD,CAAR,CAFE,CAAP;CAIA;CACD;;;;;CAGOpE,EAAAA,IAAI,CAACxC,SAA6B,EAA9B;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAAsC,SAAtC,EAAiDE,MAAjD,CAAP;CACA;CAED;;;;;CAGOsE,EAAAA,MAAM,CAACqD,MAAD;CACZ,WAAO,KAAKrF,MAAL,CAAYnC,IAAZ,CAAgD,gBAAhD,EAAkEwH,MAAlE,CAAP;CACA;;;;OCpCWC;CACZzK,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOxD,EAAAA,MAAM,CAAC+I,OAAD;CACZ,WAAO,KAAKvF,MAAL,CAAYnC,IAAZ,CAA2C,WAA3C,EAAwD0H,OAAxD,CAAP;CACA;CACD;;;;;CAGO/H,EAAAA,GAAG,CAACgI,SAAD;CACT,WAAO,KAAKxF,MAAL,CAAYxC,GAAZ,cAAoDQ,MAAM,CAACwH,SAAD,GAA1D,CAAP;CACA;CACD;;;;;CAGOhF,EAAAA,MAAM,CAAC+E,OAAD;CACZ,WAAO,KAAKvF,MAAL,CAAYlC,GAAZ,cACOE,MAAM,CAACuH,OAAO,CAAC1B,EAAR,IAAc0B,OAAO,CAACX,SAAvB,GADb,EAENrF,IAAI,CAACgG,OAAD,EAAU,CAAC,IAAD,CAAV,CAFE,CAAP;CAIA;CACD;;;;;CAGOtD,EAAAA,kBAAkB,CAACwD,QAAD;CACxB,WAAO,KAAKzF,MAAL,CAAYnC,IAAZ,CAAuD,0BAAvD,EAAmF4H,QAAnF,CAAP;CACA;CACD;;;;;CAGOvD,EAAAA,UAAU,CAACuD,QAAD;CAChB,WAAO,KAAKzF,MAAL,CAAYnC,IAAZ,CAA+C,sBAA/C,EAAuE4H,QAAvE,CAAP;CACA;CACD;;;;;CAGO1H,EAAAA,MAAM,CAACyH,SAAD,EAAoB9H,MAApB;CACZ,WAAO,KAAKsC,MAAL,CAAYjC,MAAZ,cAAgCC,MAAM,CAACwH,SAAD,GAAtC,EAAqD9H,MAArD,CAAP;CACA;CACD;;;;;CAGOwC,EAAAA,IAAI,CAACxC,MAAD;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAAwC,WAAxC,EAAqDE,MAArD,CAAP;CACA;CACD;;;;;CAGOgI,EAAAA,SAAS,CAACF,SAAD,EAAoBG,GAApB;CACf,WAAO,KAAK3F,MAAL,CAAYnC,IAAZ,cAA2DG,MAAM,CAACwH,SAAD,QAAjE,EAAqFG,GAArF,CAAP;CACA;CACD;;;;;CAGOC,EAAAA,MAAM,CAACC,KAAD;CACZ,WAAO,KAAK7F,MAAL,CAAYxC,GAAZ,UAAmDQ,MAAM,CAAC6H,KAAD,GAAzD,CAAP;CACA;CACD;;;;;CAGOC,EAAAA,SAAS,CAACN,SAAD,EAAoBG,GAApB;CACf,WAAO,KAAK3F,MAAL,CAAYlC,GAAZ,cACOE,MAAM,CAACwH,SAAD,UAAoBxH,MAAM,CAAC2H,GAAG,CAAC9B,EAAJ,IAAU8B,GAAG,CAACf,SAAf,GADvC,EAENrF,IAAI,CAACoG,GAAD,EAAM,CAAC,IAAD,CAAN,CAFE,CAAP;CAIA;CACD;;;;;CAGOI,EAAAA,SAAS,CAACP,SAAD,EAAoBK,KAApB,EAAmCnI,MAAnC;CACf,WAAO,KAAKsC,MAAL,CAAYjC,MAAZ,cAAgCC,MAAM,CAACwH,SAAD,UAAoBxH,MAAM,CAAC6H,KAAD,GAAhE,EAA2EnI,MAA3E,CAAP;CACA;CACD;;;;;CAGOsI,EAAAA,QAAQ,CAACR,SAAD;CACd,WAAO,KAAKxF,MAAL,CAAYxC,GAAZ,cAAiDQ,MAAM,CAACwH,SAAD,QAAvD,CAAP;CACA;;;;OChFWS;CACZpL,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOE,EAAAA,IAAI,CAACxC,SAA8B,EAA/B;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAAuC,UAAvC,EAAmDE,MAAnD,CAAP;CACA;CACD;;;;;CAGOlB,EAAAA,MAAM,CAAC0J,MAAD;CACZ,WAAO,KAAKlG,MAAL,CAAYnC,IAAZ,CAA0C,UAA1C,EAAsDqI,MAAtD,CAAP;CACA;CACD;;;;;CAGO1I,EAAAA,GAAG,CAAC2I,QAAD;CACT,WAAO,KAAKnG,MAAL,CAAYxC,GAAZ,aAAkDQ,MAAM,CAACmI,QAAD,GAAxD,CAAP;CACA;CACD;;;;;CAGO3F,EAAAA,MAAM,CAAC0F,MAAD;CACZ,WAAO,KAAKlG,MAAL,CAAYlC,GAAZ,aAAqDE,MAAM,CAACkI,MAAM,CAACrC,EAAR,GAA3D,EAA0EtE,IAAI,CAAC2G,MAAD,EAAS,CAAC,IAAD,CAAT,CAA9E,CAAP;CACA;CACD;;;;;CAGOnI,EAAAA,MAAM,CAACoI,QAAD;CACZ,WAAO,KAAKnG,MAAL,CAAYjC,MAAZ,aAA+BC,MAAM,CAACmI,QAAD,GAArC,CAAP;CACA;CACD;;;;;CAGOC,EAAAA,eAAe,CAACD,QAAD,EAAmBzI,SAAyC,EAA5D;CACrB,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,aAA8DQ,MAAM,CAACmI,QAAD,eAApE,EAA8FzI,MAA9F,CAAP;CACA;CACD;;;;;CAGO2I,EAAAA,gBAAgB,CAACF,QAAD,EAAmBG,UAAnB;CACtB,WAAO,KAAKtG,MAAL,CAAYnC,IAAZ,aAAgEG,MAAM,CAACmI,QAAD,eAAtE,EAAgGG,UAAhG,CAAP;CACA;CACD;;;;;CAGOC,EAAAA,gBAAgB,CAACJ,QAAD,EAAmBG,UAAnB;CACtB,WAAO,KAAKtG,MAAL,CAAYlC,GAAZ,aACME,MAAM,CAACmI,QAAD,iBAA0BnI,MAAM,CAACsI,UAAU,CAACzC,EAAZ,GAD5C,EAENtE,IAAI,CAAC+G,UAAD,EAAa,CAAC,IAAD,CAAb,CAFE,CAAP;CAIA;;CACME,EAAAA,gBAAgB,CAACL,QAAD,EAAmBM,YAAnB;CACtB,WAAO,KAAKzG,MAAL,CAAYjC,MAAZ,aAA+BC,MAAM,CAACmI,QAAD,iBAA0BnI,MAAM,CAACyI,YAAD,GAArE,CAAP;CACA;;;;OCvDWC;CACZ7L,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CACjD;;;;;CAGOE,EAAAA,IAAI,CAACxC,SAAgC,EAAjC;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAAyC,YAAzC,EAAuDE,MAAvD,CAAP;CACA;CACD;;;;;CAGOlB,EAAAA,MAAM,CAAC+D,QAAD;CACZ,WAAO,KAAKP,MAAL,CAAYnC,IAAZ,CAAoD,YAApD,EAAkE0C,QAAlE,CAAP;CACA;CACD;;;;;CAGO/C,EAAAA,GAAG,CAACmJ,UAAD;CACT,WAAO,KAAK3G,MAAL,CAAYxC,GAAZ,eAA8DQ,MAAM,CAAC2I,UAAD,GAApE,CAAP;CACA;CACD;;;;;CAGOnG,EAAAA,MAAM,CAACD,QAAD;CACZ,WAAO,KAAKP,MAAL,CAAYlC,GAAZ,eACQE,MAAM,CAACuC,QAAQ,CAACsD,EAAV,GADd,EAENtE,IAAI,CAACgB,QAAD,EAAW,CAAC,IAAD,CAAX,CAFE,CAAP;CAIA;CACD;;;;;CAGOxC,EAAAA,MAAM,CAAC4I,UAAD,EAAqBjJ,MAArB;CACZ,WAAO,KAAKsC,MAAL,CAAYjC,MAAZ,eAAiCC,MAAM,CAAC2I,UAAD,GAAvC,EAAuDjJ,MAAvD,CAAP;CACA;CACD;;;;;CAGOkJ,EAAAA,qBAAqB,CAACD,UAAD,EAAqBjJ,SAAiD,EAAtE;CAC3B,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,eAAwEQ,MAAM,CAAC2I,UAAD,WAA9E,EAAsGjJ,MAAtG,CAAP;CACA;CACD;;;;;CAGOmJ,EAAAA,uBAAuB,CAACF,UAAD,EAAqBL,UAArB;CAC7B,WAAO,KAAKtG,MAAL,CAAYnC,IAAZ,eACQG,MAAM,CAAC2I,UAAD,WADd,EAENL,UAFM,CAAP;CAIA;CACD;;;;;CAGOQ,EAAAA,sBAAsB,CAACH,UAAD,EAAqBL,UAArB;CAC5B,WAAO,KAAKtG,MAAL,CAAYlC,GAAZ,eACQE,MAAM,CAAC2I,UAAD,aAAwBL,UAAU,CAACzC,IADjD,EAENtE,IAAI,CAAC+G,UAAD,EAAa,CAAC,IAAD,CAAb,CAFE,CAAP;CAIA;CACD;;;;;CAGOS,EAAAA,sBAAsB,CAACJ,UAAD,EAAqBF,YAArB;CAC5B,WAAO,KAAKzG,MAAL,CAAYjC,MAAZ,eAAiCC,MAAM,CAAC2I,UAAD,aAAwBF,cAA/D,CAAP;CACA;CACD;;;;;CAGOO,EAAAA,gBAAgB,CAACL,UAAD,EAAqBjJ,SAA4C,EAAjE;CACtB,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,eACQQ,MAAM,CAAC2I,UAAD,iBADd,EAENjJ,MAFM,CAAP;CAIA;CACD;;;;;CAGOuJ,EAAAA,iBAAiB,CAACN,UAAD,EAAqBO,YAArB;CACvB,WAAO,KAAKlH,MAAL,CAAYnC,IAAZ,eACQG,MAAM,CAAC2I,UAAD,iBADd,EAENO,YAFM,CAAP;CAIA;CACD;;;;;CAGOC,EAAAA,iBAAiB,CAACR,UAAD,EAAqBS,WAArB;CACvB,WAAO,KAAKpH,MAAL,CAAYlC,GAAZ,eACQE,MAAM,CAAC2I,UAAD,mBAA8BS,WAAW,CAACvD,IADxD,EAENtE,IAAI,CAAC6H,WAAD,EAAc,CAAC,IAAD,CAAd,CAFE,CAAP;CAIA;CACD;;;;;CAGOC,EAAAA,iBAAiB,CAACV,UAAD,EAAqBW,aAArB;CACvB,WAAO,KAAKtH,MAAL,CAAYjC,MAAZ,eAAiCC,MAAM,CAAC2I,UAAD,mBAA8BW,eAArE,CAAP;CACA;CACD;;;;;CAGOC,EAAAA,WAAW,CAACZ,UAAD,EAAqBjJ,MAArB;CACjB,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,eAA8DQ,MAAM,CAAC2I,UAAD,WAApE,EAA4FjJ,MAA5F,CAAP;CACA;CACD;;;;;CAGO8J,EAAAA,YAAY,CAACb,UAAD,EAAqBc,MAArB;CAClB,WAAO,KAAKzH,MAAL,CAAYnC,IAAZ,eAAgEG,MAAM,CAAC2I,UAAD,WAAtE,EAA8Fc,MAA9F,CAAP;CACA;CACD;;;;;CAGOC,EAAAA,SAAS,CAACf,UAAD,EAAqBgB,QAArB;CACf,WAAO,KAAK3H,MAAL,CAAYxC,GAAZ,eAA4DQ,MAAM,CAAC2I,UAAD,aAAwBgB,UAA1F,CAAP;CACA;CACD;;;;;CAGOC,EAAAA,mBAAmB,CAACjB,UAAD,EAAqBgB,QAArB;CACzB,WAAO,KAAK3H,MAAL,CAAYxC,GAAZ,eACQQ,MAAM,CAAC2I,UAAD,aAAwBgB,qBADtC,CAAP;CAGA;CACD;;;;;CAGOE,EAAAA,SAAS,CAAClB,UAAD,EAAqBgB,QAArB,EAAuC/F,OAAvC;CACf,WAAO,KAAK5B,MAAL,CAAYnC,IAAZ,eACQG,MAAM,CAAC2I,UAAD,aAAwBgB,kBADtC,EAEN/F,OAFM,CAAP;CAIA;CACD;;;;;CAGOkG,EAAAA,YAAY,CAACnB,UAAD,EAAqBgB,QAArB,EAAuCjK,MAAvC;CAClB,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,eACQG,MAAM,CAAC2I,UAAD,aAAwB3I,MAAM,CAAC2J,QAAD,cAD5C,EAENjK,MAFM,CAAP;CAIA;;;;OC7IWqK;CACZlN,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOxD,EAAAA,MAAM,CAACwL,cAAD;CACZ,WAAO,KAAKhI,MAAL,CAAYnC,IAAZ,CAAkD,mBAAlD,EAAuEmK,cAAvE,CAAP;CACA;CACD;;;;;CAGOxK,EAAAA,GAAG,CAACyK,gBAAD;CACT,WAAO,KAAKjI,MAAL,CAAYxC,GAAZ,sBAAmEQ,MAAM,CAACiK,gBAAD,GAAzE,CAAP;CACA;CACD;;;;;CAGOzH,EAAAA,MAAM,CAACwH,cAAD;CACZ,WAAO,KAAKhI,MAAL,CAAYlC,GAAZ,sBACeE,MAAM,CAACgK,cAAc,CAACnE,EAAhB,GADrB,EAENtE,IAAI,CAACyI,cAAD,EAAiB,CAAC,IAAD,CAAjB,CAFE,CAAP;CAIA;CACD;;;;;CAGOjK,EAAAA,MAAM,CAACkK,gBAAD;CACZ,WAAO,KAAKjI,MAAL,CAAYjC,MAAZ,sBAAwCC,MAAM,CAACiK,gBAAD,GAA9C,CAAP;CACA;CACD;;;;;CAGO5B,EAAAA,gBAAgB,CAAC4B,gBAAD,EAA2B3B,UAA3B;CACtB,WAAO,KAAKtG,MAAL,CAAYnC,IAAZ,sBACeG,MAAM,CAACiK,gBAAD,eADrB,EAEN3B,UAFM,CAAP;CAIA;CACD;;;;;CAGOE,EAAAA,gBAAgB,CAACyB,gBAAD,EAA2BxB,YAA3B;CACtB,WAAO,KAAKzG,MAAL,CAAYjC,MAAZ,sBAAwCC,MAAM,CAACiK,gBAAD,iBAAkCjK,MAAM,CAACyI,YAAD,GAAtF,CAAP;CACA;;CAEMjE,EAAAA,QAAQ,CAACyF,gBAAD,EAA2BvK,SAAc,EAAzC;CACd,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,sBACeG,MAAM,CAACiK,gBAAD,cADrB,EAENvK,MAFM,CAAP;CAIA;CAED;;;;;CAGOwC,EAAAA,IAAI,CAACxC,SAAsC,EAAvC;CACV,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,CAA+C,mBAA/C,EAAoEE,MAApE,CAAP;CACA;CACD;;;;;CAGO0I,EAAAA,eAAe,CAAC6B,gBAAD,EAA2BvK,SAAiD,EAA5E;CACrB,WAAO,KAAKsC,MAAL,CAAYxC,GAAZ,sBACeQ,MAAM,CAACiK,gBAAD,eADrB,EAENvK,MAFM,CAAP;CAIA;;;;OCpEWwK;CACZrN,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOxD,EAAAA,MAAM,CAAC2L,OAAD;CACZ,WAAO,KAAKnI,MAAL,CAAYnC,IAAZ,CAA2C,WAA3C,EAAwDsK,OAAxD,CAAP;CACA;CACD;;;;;CAGO3K,EAAAA,GAAG,CAAC4K,SAAD;CACT,WAAO,KAAKpI,MAAL,CAAYxC,GAAZ,cAAoDQ,MAAM,CAACoK,SAAD,GAA1D,CAAP;CACA;CACD;;;;;CAGOrK,EAAAA,MAAM,CAACqK,SAAD;CACZ,WAAO,KAAKpI,MAAL,CAAYjC,MAAZ,cAAgCC,MAAM,CAACoK,SAAD,GAAtC,CAAP;CACA;CAED;;;;;CAGOlI,EAAAA,IAAI,CAACgE,UAAD;CACV,WAAO,KAAKlE,MAAL,CAAYxC,GAAZ,eAAsDQ,MAAM,CAACkG,UAAD,YAA5D,CAAP;CACA;;;;OC9BWmE;CACZxN,EAAAA,YAA6ByN;UAAAA;CAAA,0BAAA,GAAAA,iBAAA;CAAwC;;CAE7DC,EAAAA,oCAAoC;CAC3C,WAAO,KAAKD,iBAAL,CAAuBlL,sBAAvB,EAAP;CACA;;CAEMoL,EAAAA,kBAAkB;CACxB,WAAO,KAAKF,iBAAL,CAAuBnL,uBAAvB,EAAP;CACA;;CAEMsL,EAAAA,YAAY;;;CAClB,UAAMC,SAAS,4BAAG,KAAKH,oCAAL,GAA4C,oBAA5C,CAAH,oCAAwE,CAAvF;CACA,WAAOI,QAAQ,CAACD,SAAD,EAAY,EAAZ,CAAf;CACA;;CAEME,EAAAA,qBAAqB;;;CAC3B,UAAMC,kBAAkB,6BAAG,KAAKN,oCAAL,GAA4C,wBAA5C,CAAH,qCAA4E,CAApG;CACA,WAAOI,QAAQ,CAACE,kBAAD,EAAqB,EAArB,CAAf;CACA;;CAEMC,EAAAA,aAAa;;;CACnB,UAAMC,UAAU,6BAAG,KAAKR,oCAAL,GAA4C,aAA5C,CAAH,qCAAiE,CAAjF;CACA,WAAOI,QAAQ,CAACI,UAAD,EAAa,EAAb,CAAf;CACA;;;;OCrBWC;CACZnO,EAAAA,YAAoBmF;UAAAA;CAAA,eAAA,GAAAA,MAAA;CAA6B;CAEjD;;;;;CAGOE,EAAAA,IAAI;CACV,WAAO,KAAKF,MAAL,CAAYxC,GAAZ,CAA+C,mBAA/C,CAAP;CACA;CAED;;;;;CAGOA,EAAAA,GAAG,CAACyL,UAAD;CACT,WAAO,KAAKjJ,MAAL,CAAYxC,GAAZ,sBAAmEQ,MAAM,CAACiL,UAAD,GAAzE,CAAP;CACA;;;;CC+FF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AACA,UAAgBC,qBAAqBC;;;CACpC9J,EAAAA,MAAM,CAAChB,QAAQ,CAAC8K,OAAD,CAAT,EAAoB,gEAApB,CAAN;CACA9J,EAAAA,MAAM,CAAClB,QAAQ,CAACgL,OAAO,CAACC,aAAT,CAAT,EAAkC,2DAAlC,CAAN;CACA/J,EAAAA,MAAM,CAAClB,QAAQ,CAACgL,OAAO,CAACE,SAAT,CAAT,EAA8B,uDAA9B,CAAN;CACAhK,EAAAA,MAAM,CAACjB,gBAAgB,CAAC+K,OAAO,CAACG,UAAT,CAAjB,EAAuC,oEAAvC,CAAN;CACAjK,EAAAA,MAAM,CAACjB,gBAAgB,CAAC+K,OAAO,CAACI,OAAT,CAAjB,EAAoC,iEAApC,CAAN;CAEA,MAAIrN,OAAO,GAAgC;CAC1C,gBAAYiN,OAAO,CAACC,aADsB;CAE1C,mBAAeD,OAAO,CAACE,SAFmB;CAG1C,4BAAwBF,OAAO,CAACI,OAAR,OAAsB9K,WAAW,WAAW,SAH1B;CAI1C,oBAAgB;CAJ0B,GAA3C;;CAMA,MAAI0K,OAAO,CAACG,UAAZ,EAAwB;CACvBpN,IAAAA,OAAO,CAAC,0BAAD,CAAP,GAAsCiN,OAAO,CAACG,UAA9C;CACA;;CAED,MAAIjL,QAAQ,CAAC8K,OAAO,CAACK,aAAT,CAAZ,EAAqC;CACpCtN,IAAAA,OAAO,GAAGwD,MAAM,CAAC6E,MAAP,CAAc,EAAd,EAAkBrI,OAAlB,EAA2BiN,OAAO,CAACK,aAAnC,CAAV;CACA;CAED;;;;;;;CAKA,MAAI,CAAC/K,WAAW,GAAGgL,UAAd,CAAyB,MAAzB,CAAL,EAAuC;CACtCpK,IAAAA,MAAM,CACL8J,OAAO,CAACO,gCAAR,KAA6C,IADxC,+DAEwDjL,WAAW,GAAGkL,WAAd,0GAFxD,CAAN;CAIA;;CAED,QAAM3J,MAAM,GAAG,IAAIjE,iBAAJ,CAAsB;CACpCC,IAAAA,QAAQ,EAAE,IAD0B;CAEpCC,IAAAA,OAAO,qBAAEkN,OAAO,CAACS,MAAV,8BAAoB,2BAFS;CAGpC1N,IAAAA,OAHoC;CAIpCC,IAAAA,gBAAgB,2BAAEgN,OAAO,CAAChN,gBAAV,oCAA8B;CAJV,GAAtB,CAAf;CAMA,QAAM0N,YAAY,GAAG,IAAI9J,YAAJ,CAAiBC,MAAjB,CAArB;CACA,QAAM4B,OAAO,GAAG,IAAIH,OAAJ,CAAYzB,MAAZ,CAAhB;CACA,QAAMc,QAAQ,GAAG,IAAIa,QAAJ,CAAa3B,MAAb,EAAqB4B,OAArB,CAAjB;CACA,QAAMkI,SAAS,GAAG,IAAIzJ,SAAJ,CAAcL,MAAd,CAAlB;CACA,QAAM+J,gBAAgB,GAAG,IAAI5I,OAAJ,CAAYnB,MAAZ,CAAzB;CACA,QAAMgK,MAAM,GAAG,IAAI1I,MAAJ,CAAWtB,MAAX,CAAf;CACA,QAAMiK,aAAa,GAAG,IAAIjJ,aAAJ,CAAkBhB,MAAlB,EAA0B+J,gBAA1B,CAAtB;CACA,QAAMG,cAAc,GAAG,IAAIzG,cAAJ,CAAmBzD,MAAnB,CAAvB;CACA,QAAMsC,UAAU,GAAG,IAAIwB,UAAJ,CAAe9D,MAAf,EAAuBkK,cAAvB,CAAnB;CACA,QAAMC,WAAW,GAAG,IAAI9H,WAAJ,CAAgBrC,MAAhB,EAAwBsC,UAAxB,CAApB;CACA,QAAM8H,WAAW,GAAG,IAAIzH,WAAJ,CAAgB3C,MAAhB,CAApB;CACA,QAAMwE,SAAS,GAAG,IAAIP,SAAJ,CAAcjE,MAAd,CAAlB;CACA,QAAMgF,QAAQ,GAAG,IAAIE,QAAJ,CAAalF,MAAb,CAAjB;CACA,QAAMqF,MAAM,GAAG,IAAIF,MAAJ,CAAWnF,MAAX,CAAf;CACA,QAAMyF,QAAQ,GAAG,IAAIH,QAAJ,CAAatF,MAAb,CAAjB;CACA,QAAMqK,OAAO,GAAG,IAAIpE,OAAJ,CAAYjG,MAAZ,CAAhB;CACA,QAAMsK,SAAS,GAAG,IAAI5D,SAAJ,CAAc1G,MAAd,CAAlB;CACA,QAAMuK,QAAQ,GAAG,IAAIrC,QAAJ,CAAalI,MAAb,CAAjB;CACA,QAAMwK,eAAe,GAAG,IAAIzC,eAAJ,CAAoB/H,MAApB,CAAxB;CACA,QAAMyK,gBAAgB,GAAG,IAAIpC,gBAAJ,CAAqBrI,MAArB,CAAzB;CACA,QAAM0K,eAAe,GAAG,IAAI1B,eAAJ,CAAoBhJ,MAApB,CAAxB;CAEA,SAAO;CACNc,IAAAA,QADM;CAENgJ,IAAAA,SAFM;CAGNG,IAAAA,aAHM;CAINE,IAAAA,WAJM;CAKNC,IAAAA,WALM;CAMN9H,IAAAA,UANM;CAONkC,IAAAA,SAPM;CAQNQ,IAAAA,QARM;CASNK,IAAAA,MATM;CAUNI,IAAAA,QAVM;CAWN4E,IAAAA,OAXM;CAYNC,IAAAA,SAZM;CAaNC,IAAAA,QAbM;CAcNC,IAAAA,eAdM;CAeNR,IAAAA,MAfM;CAgBNH,IAAAA,YAhBM;CAiBNY,IAAAA,gBAjBM;CAkBNC,IAAAA;CAlBM,GAAP;CAoBA;;OChNYC;CACZ9P,EAAAA,YAAoBmF,QAAmCqD;UAAnCrD;UAAmCqD;CAAnC,eAAA,GAAArD,MAAA;CAAmC,mBAAA,GAAAqD,UAAA;CAAuB;;CAEvEuH,EAAAA,WAAW,CAACC,QAAD;CACjB,SAAKxH,UAAL,GAAkBwH,QAAlB;CACA;CACD;;;;;CAGOrI,EAAAA,QAAQ,CAAC9E,MAAD;;;CACd2B,IAAAA,MAAM,CACLhB,QAAQ,CAACX,MAAD,CAAR,IAAoBS,QAAQ,CAACT,MAAD,CADvB,EAEL,yEAFK,CAAN;CAKA,UAAMoN,KAAK,GAAwB,EAAnC;;CAEA,QAAI3M,QAAQ,CAACT,MAAD,CAAZ,EAAsB;CACrBoN,MAAAA,KAAK,CAAC3P,IAAN,GAAauC,MAAb;CACA,KAFD,MAEO;CACNoN,MAAAA,KAAK,CAAC3P,IAAN,GAAauC,MAAM,CAACvC,IAApB;CACA2P,MAAAA,KAAK,CAACC,IAAN,GAAarN,MAAM,CAACsN,KAApB;CACAF,MAAAA,KAAK,CAACG,MAAN,GAAevN,MAAM,CAACuN,MAAtB;CACAH,MAAAA,KAAK,CAACI,QAAN,GAAiBxN,MAAM,CAACwN,QAAxB;CACAJ,MAAAA,KAAK,CAACxG,KAAN,GAAc;CAAE4G,QAAAA,QAAQ,EAAExN,MAAM,CAACyN;CAAnB,OAAd;CACAL,MAAAA,KAAK,CAACxH,QAAN,GAAiB5F,MAAM,CAAC4F,QAAxB;CACAwH,MAAAA,KAAK,CAAC1H,WAAN,GAAoB1F,MAAM,CAAC0F,WAAP,IAAsB,KAAKC,UAA/C;CACAyH,MAAAA,KAAK,CAACM,YAAN,GAAqB1N,MAAM,CAAC0N,YAA5B;CACAN,MAAAA,KAAK,CAACO,WAAN,GAAoB3N,MAAM,CAAC2N,WAA3B;CACAP,MAAAA,KAAK,CAACQ,WAAN,GAAoB5N,MAAM,CAAC4N,WAA3B;CACAR,MAAAA,KAAK,CAACS,gBAAN,GAAyB7N,MAAM,CAAC6N,gBAAhC;CACA;;CAED,QAAI,CAAC,CAACT,KAAK,CAAC3P,IAAZ,EAAkB;CACjB2P,MAAAA,KAAK,CAAC3P,IAAN,GAAa2P,KAAK,CAAC3P,IAAN,CAAWqQ,OAAX,CAAmB,eAAnB,EAAoC,EAApC,EAAwCC,IAAxC,EAAb;CACA;;CAEDpM,IAAAA,MAAM,CAACb,gBAAgB,CAACsM,KAAD,oBAACA,KAAK,CAAExH,QAAR,CAAjB,EAAoC,6DAApC,CAAN;CACAjE,IAAAA,MAAM,CAACjB,gBAAgB,CAAC0M,KAAD,uCAACA,KAAK,CAAExH,QAAR,qBAAC,gBAAiBsB,SAAlB,CAAjB,EAA+C,sEAA/C,CAAN;;CACAvF,IAAAA,MAAM,CAACb,gBAAgB,CAACsM,KAAD,wCAACA,KAAK,CAAExH,QAAR,qBAAC,iBAAiB4H,QAAlB,CAAjB,EAA8C,sEAA9C,CAAN;;CAEA,UAAMzN,IAAI,GAAGqN,KAAK,CAAC3P,IAAN,GAAa,WAAb,GAA2B,wBAAxC;CAEA,WAAO,KAAK6E,MAAL,CAAYxC,GAAZ,CAA8CC,IAA9C,EAAoDqN,KAApD,CAAP;CACA;CACD;;;;;CAGOlI,EAAAA,MAAM,CAACzH,IAAD,EAAe+H,UAAqC,EAApD;;;CACZ7D,IAAAA,MAAM,CAAClB,QAAQ,CAAChD,IAAD,CAAT,EAAiB,qDAAjB,CAAN;CAEAA,IAAAA,IAAI,GAAGA,IAAI,CAACqQ,OAAL,CAAa,eAAb,EAA8B,EAA9B,EAAkCC,IAAlC,EAAP;CAEAvI,IAAAA,OAAO,CAACI,QAAR,wBAAmBJ,OAAO,CAACI,QAA3B,gCAAuC,EAAvC;CACAJ,IAAAA,OAAO,CAACI,QAAR,CAAiBsB,SAAjB,4BAA6B1B,OAAO,CAACI,QAAR,CAAiBsB,SAA9C,oCAA2D,KAAKvB,UAAhE;CAEA,WAAO,KAAKrD,MAAL,CAAYnC,IAAZ,CAA6C,SAA7C,EAAwDqF,OAAxD,EAAiE;CAAE/H,MAAAA;CAAF,KAAjE,CAAP;CACA;CACD;;;;;CAGOuQ,EAAAA,OAAO,CACbnL,QADa,EAEb2C,UAAsC,EAFzB,EAGbD,cAA8C,EAHjC;;;CAKb5D,IAAAA,MAAM,CAAChB,QAAQ,CAAC6E,OAAD,CAAT,EAAoB,mDAApB,CAAN;CAEA,UAAMyI,eAAe,GAAuC,EAA5D;CAEAA,IAAAA,eAAe,CAACrI,QAAhB,yBAA2BJ,OAAO,CAACI,QAAnC,iCAA+C,EAA/C;CACAqI,IAAAA,eAAe,CAACrI,QAAhB,CAAyBsB,SAAzB,mDAAqC1B,OAAO,CAACI,QAA7C,qBAAqC,mBAAkBsB,SAAvD,qCAAoE,KAAKvB,UAAzE;CACAsI,IAAAA,eAAe,CAACpC,OAAhB,uBAA0BrG,OAAO,CAACqG,OAAlC,+BAA6C,eAA7C;;CAEAlK,IAAAA,MAAM,CACLlB,QAAQ,0BAACwN,eAAe,CAACrI,QAAjB,qBAAC,sBAA0BsB,SAA3B,CADH,EAEL,oHAFK,CAAN;CAKA3B,IAAAA,WAAW,CAAC1C,QAAZ,GAAuBA,QAAQ,CAACiL,OAAT,CAAiB,eAAjB,EAAkC,EAAlC,EAAsCC,IAAtC,EAAvB;CAEA,WAAO,KAAKzL,MAAL,CAAYnC,IAAZ,CAA8C,UAA9C,EAA0D8N,eAA1D,EAA2E1I,WAA3E,CAAP;CACA;CACD;;;;;CAIO2I,EAAAA,KAAK,CACXC,UADW,EAEXvI,QAFW,EAGX4H,QAHW,EAIXY,QAJW,EAKXC,OALW;;;CAOX1M,IAAAA,MAAM,CAAClB,QAAQ,CAAC0N,UAAD,CAAT,EAAuB,oDAAvB,CAAN;CACAxM,IAAAA,MAAM,CAAChB,QAAQ,CAACiF,QAAD,CAAT,EAAqB,kDAArB,CAAN;CAEA,UAAMJ,OAAO,GAA6B;CACzC1B,MAAAA,KAAK,EAAEqK,UADkC;CAEzCX,MAAAA,QAAQ,EAAEA,QAAF,WAAEA,QAAF,GAAc,EAFmB;CAGzC5H,MAAAA,QAAQ,EAAEA,QAH+B;CAIzCwI,MAAAA,QAAQ,EAAEA,QAAF,WAAEA,QAAF,GAAc5O,SAJmB;CAKzC6O,MAAAA,OAAO,EAAEA,OAAF,WAAEA,OAAF,GAAa7O;CALqB,KAA1C;CAQAgG,IAAAA,OAAO,CAACI,QAAR,CAAiBsB,SAAjB,0BAA6BtB,QAAQ,CAACsB,SAAtC,kCAAmD,KAAKvB,UAAxD;CAEAhE,IAAAA,MAAM,CACLlB,QAAQ,uBAAC+E,OAAO,CAACI,QAAT,qBAAC,mBAAkBsB,SAAnB,CADH,EAEL,kHAFK,CAAN;CAKA,WAAO,KAAK5E,MAAL,CAAYnC,IAAZ,CAA4C,SAA5C,EAAuDqF,OAAvD,CAAP;CACA;CACD;;;;;CAGO8I,EAAAA,YAAY,CAACtO,SAAyC,EAA1C;CAClB,UAAMoN,KAAK,GAAwB,EAAnC;CAEAA,IAAAA,KAAK,CAACvK,QAAN,GAAiB7C,MAAM,CAAC6C,QAAxB;CACAuK,IAAAA,KAAK,CAACmB,QAAN,GAAiBvO,MAAM,CAACuO,QAAxB;CACAnB,IAAAA,KAAK,CAACoB,IAAN,GAAaxO,MAAM,CAACwO,IAApB;CACApB,IAAAA,KAAK,CAACqB,KAAN,GAAczO,MAAM,CAACyO,KAArB;CACArB,IAAAA,KAAK,CAACxH,QAAN,GAAiB5F,MAAM,CAAC4F,QAAxB;CACAwH,IAAAA,KAAK,CAACpG,UAAN,GAAmBhH,MAAM,CAACgH,UAA1B;CACAoG,IAAAA,KAAK,CAACsB,UAAN,GAAmB1O,MAAM,CAAC0O,UAA1B;CAEA,WAAO,KAAKpM,MAAL,CAAYxC,GAAZ,CAAkD,WAAlD,EAA+DsN,KAA/D,CAAP;CACA;CACD;;;;;CAGOuB,EAAAA,cAAc,CAAC/I,QAAD,EAA8CgJ,iBAA9C;CACpB,WAAO,KAAKtM,MAAL,CAAYnC,IAAZ,CACN,YADM,EAENyF,QAFM,EAGN,EAHM,EAINgJ,iBAAiB,GAAG;CAAE,oCAA8B;CAAhC,KAAH,GAA4C,EAJvD,CAAP;CAMA;CACD;;;;;CAGOC,EAAAA,YAAY;CAClB,WAAO,KAAKvM,MAAL,CAAYxC,GAAZ,CAAkD,WAAlD,CAAP;CACA;CACD;;;;;CAGOsH,EAAAA,cAAc,CAACC,YAAD,EAAuBC,QAAvB;CACpB,WAAO,KAAKhF,MAAL,CAAYlC,GAAZ,eAAyCE,MAAM,CAAC+G,YAAD,YAA/C,EAA0EC,QAA1E,CAAP;CACA;CACD;;;;;CAGOtC,EAAAA,iBAAiB,CAAChF,MAAD;CACvB,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,eAAA,EAAkFH,MAAlF,CAAP;CACA;CACD;;;;;CAGOmF,EAAAA,eAAe,CAACnF,MAAD;CACrB,WAAO,KAAKsC,MAAL,CAAYnC,IAAZ,eAAA,EAAiFH,MAAjF,CAAP;CACA;;;;UC9Ec8O,qBAAqBrD;;;CACpC9J,EAAAA,MAAM,CAAChB,QAAQ,CAAC8K,OAAD,CAAT,EAAoB,iEAApB,CAAN;CACA9J,EAAAA,MAAM,CAAClB,QAAQ,CAACgL,OAAO,CAACsD,mBAAT,CAAT,EAAwC,+DAAxC,CAAN;CACApN,EAAAA,MAAM,CAAClB,QAAQ,CAACgL,OAAO,CAACuD,eAAT,CAAT,EAAoC,2DAApC,CAAN;CACArN,EAAAA,MAAM,CAACjB,gBAAgB,CAAC+K,OAAO,CAACS,MAAT,CAAjB,EAAmC,+DAAnC,CAAN;CACAvK,EAAAA,MAAM,CAACjB,gBAAgB,CAAC+K,OAAO,CAAC9F,UAAT,CAAjB,EAAuC,kEAAvC,CAAN;CAEA,MAAInH,OAAO,GAA8B;CACxC,+BAA2BiN,OAAO,CAACsD,mBADK;CAExC,sBAAkBtD,OAAO,CAACuD,eAFc;CAGxC,+BAA2BjO,WAAW,sBAAsB;CAHpB,GAAzC;;CAMA,MAAIA,WAAW,GAAGgL,UAAd,CAAyB,MAAzB,CAAJ,EAAsC;CACrCpK,IAAAA,MAAM,CAAClB,QAAQ,CAACgL,OAAO,CAACwD,MAAT,CAAT,EAA2B,6DAA3B,CAAN;CACAzQ,IAAAA,OAAO,CAAC,QAAD,CAAP,GAAoBiN,OAAO,CAACwD,MAA5B;CACA;;CAED,MAAItO,QAAQ,CAAC8K,OAAO,CAACK,aAAT,CAAZ,EAAqC;CACpCtN,IAAAA,OAAO,GAAGwD,MAAM,CAAC6E,MAAP,CAAc,EAAd,EAAkBrI,OAAlB,EAA2BiN,OAAO,CAACK,aAAnC,CAAV;CACA;;CAED,QAAMxJ,MAAM,GAAG,IAAIjE,iBAAJ,CAAsB;CACpCC,IAAAA,QAAQ,EAAE,WAD0B;CAEpCC,IAAAA,OAAO,qBAAEkN,OAAO,CAACS,MAAV,8BAAoB,2BAFS;CAGpC1N,IAAAA,OAHoC;CAIpCC,IAAAA,gBAAgB,2BAAEgN,OAAO,CAAChN,gBAAV,oCAA8B;CAJV,GAAtB,CAAf;CAOA,SAAO,IAAIwO,UAAJ,CAAe3K,MAAf,EAAuBmJ,OAAO,CAAC9F,UAA/B,CAAP;CACA;;;;;;;;;;;;;"}
|