@tapsilat/tapsilat-js 2026.10.20 → 2026.10.26
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 +9 -0
- package/README.md +99 -26
- package/dist/TapsilatSDK.d.ts +58 -9
- package/dist/TapsilatSDK.d.ts.map +1 -1
- package/dist/errors/TapsilatError.d.ts +2 -0
- package/dist/errors/TapsilatError.d.ts.map +1 -1
- package/dist/http/HttpClient.d.ts +9 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/interceptors.d.ts.map +1 -1
- package/dist/index.cjs +564 -41
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +385 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +557 -42
- package/dist/index.js.map +1 -1
- package/dist/types/elements.d.ts +144 -0
- package/dist/types/elements.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -13
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/redact.d.ts +16 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/verify.d.ts +31 -8
- package/dist/utils/verify.d.ts.map +1 -1
- package/dist/webhooks/OrderStatus.d.ts +98 -0
- package/dist/webhooks/OrderStatus.d.ts.map +1 -0
- package/dist/webhooks/WebhookEvent.d.ts +58 -0
- package/dist/webhooks/WebhookEvent.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1013,18 +1013,6 @@ interface RefundResponse {
|
|
|
1013
1013
|
reason?: string;
|
|
1014
1014
|
createdAt: string;
|
|
1015
1015
|
}
|
|
1016
|
-
/**
|
|
1017
|
-
* @category Webhooks
|
|
1018
|
-
* @summary Notification data structure for system events
|
|
1019
|
-
* @description Event payload sent to webhook endpoints when important events occur in the payment lifecycle
|
|
1020
|
-
* @interface WebhookEvent
|
|
1021
|
-
*/
|
|
1022
|
-
interface WebhookEvent {
|
|
1023
|
-
id: string;
|
|
1024
|
-
type: "payment.completed" | "payment.failed" | "refund.completed";
|
|
1025
|
-
data: PaymentResponse | RefundResponse;
|
|
1026
|
-
createdAt: string;
|
|
1027
|
-
}
|
|
1028
1016
|
/**
|
|
1029
1017
|
* @category Error Handling
|
|
1030
1018
|
* @summary Standardized error format returned by the API
|
|
@@ -1043,6 +1031,8 @@ interface APIError {
|
|
|
1043
1031
|
apiStatus?: string;
|
|
1044
1032
|
/** Per-field validation messages from the response body */
|
|
1045
1033
|
errors?: Record<string, unknown>;
|
|
1034
|
+
/** Whether the error object in the response body says the request can be retried */
|
|
1035
|
+
retryable?: boolean;
|
|
1046
1036
|
/** Raw response body */
|
|
1047
1037
|
rawBody?: string;
|
|
1048
1038
|
}
|
|
@@ -1859,7 +1849,7 @@ interface PaymentTermResponse {
|
|
|
1859
1849
|
}
|
|
1860
1850
|
/**
|
|
1861
1851
|
* @category Payment Terms
|
|
1862
|
-
* @summary
|
|
1852
|
+
* @summary Seconds-and-nanos timestamp payload
|
|
1863
1853
|
* @description Timestamp structure used by term APIs (`seconds` + `nanos`)
|
|
1864
1854
|
* @interface TimestampDTO
|
|
1865
1855
|
*/
|
|
@@ -2659,6 +2649,150 @@ declare class ConfigManager {
|
|
|
2659
2649
|
getTimeout(): number | undefined;
|
|
2660
2650
|
}
|
|
2661
2651
|
|
|
2652
|
+
/**
|
|
2653
|
+
* Request and response types for Tapsilat Elements sessions.
|
|
2654
|
+
*
|
|
2655
|
+
* Tapsilat Elements is the native Android and iOS card sheet. Your backend creates a session with
|
|
2656
|
+
* its secret API key and hands only the session's `client_secret` to the app, which opens the sheet
|
|
2657
|
+
* with it. Card data goes from the sheet to Tapsilat encrypted and never reaches your backend.
|
|
2658
|
+
*
|
|
2659
|
+
* Field names match the JSON wire format. Response fields are optional because the server omits
|
|
2660
|
+
* empty values. `purpose`, `status` and `brand` are plain strings so that values added later still
|
|
2661
|
+
* decode; compare them with the constants below.
|
|
2662
|
+
*/
|
|
2663
|
+
/**
|
|
2664
|
+
* @category Elements
|
|
2665
|
+
* @summary Purposes of an Elements session
|
|
2666
|
+
*/
|
|
2667
|
+
declare const ElementsSessionPurpose: Readonly<{
|
|
2668
|
+
/** Save a card for a user without charging it */
|
|
2669
|
+
readonly TOKENIZE: "tokenize";
|
|
2670
|
+
/** Pay an existing order */
|
|
2671
|
+
readonly PAY: "pay";
|
|
2672
|
+
}>;
|
|
2673
|
+
/**
|
|
2674
|
+
* @category Elements
|
|
2675
|
+
* @summary Statuses of an Elements session
|
|
2676
|
+
*/
|
|
2677
|
+
declare const ElementsSessionStatus: Readonly<{
|
|
2678
|
+
readonly REQUIRES_PAYMENT_METHOD: "requires_payment_method";
|
|
2679
|
+
readonly PROCESSING: "processing";
|
|
2680
|
+
readonly REQUIRES_ACTION: "requires_action";
|
|
2681
|
+
readonly SUCCEEDED: "succeeded";
|
|
2682
|
+
readonly FAILED: "failed";
|
|
2683
|
+
readonly EXPIRED: "expired";
|
|
2684
|
+
readonly CANCELED: "canceled";
|
|
2685
|
+
}>;
|
|
2686
|
+
/**
|
|
2687
|
+
* @category Elements
|
|
2688
|
+
* @summary Tokenize modes of an Elements session
|
|
2689
|
+
*/
|
|
2690
|
+
declare const ElementsTokenizeMode: Readonly<{
|
|
2691
|
+
/** 3D Secure */
|
|
2692
|
+
readonly SECURE: 1;
|
|
2693
|
+
readonly HALF_SECURE: 2;
|
|
2694
|
+
readonly NON_SECURE: 3;
|
|
2695
|
+
}>;
|
|
2696
|
+
/**
|
|
2697
|
+
* @category Elements
|
|
2698
|
+
* @summary Card brands an Elements session reports
|
|
2699
|
+
*/
|
|
2700
|
+
declare const ElementsCardBrand: Readonly<{
|
|
2701
|
+
readonly VISA: "visa";
|
|
2702
|
+
readonly MASTERCARD: "mastercard";
|
|
2703
|
+
readonly AMEX: "amex";
|
|
2704
|
+
readonly TROY: "troy";
|
|
2705
|
+
readonly DISCOVER: "discover";
|
|
2706
|
+
readonly UNIONPAY: "unionpay";
|
|
2707
|
+
readonly UNKNOWN: "unknown";
|
|
2708
|
+
}>;
|
|
2709
|
+
/**
|
|
2710
|
+
* @category Elements
|
|
2711
|
+
* @summary Request to create an Elements session
|
|
2712
|
+
* @description Sent to POST /elements/sessions. Optional fields that are undefined or null are left out of the body.
|
|
2713
|
+
* @interface ElementsSessionCreateRequest
|
|
2714
|
+
*/
|
|
2715
|
+
interface ElementsSessionCreateRequest {
|
|
2716
|
+
/** `ElementsSessionPurpose.PAY` or `ElementsSessionPurpose.TOKENIZE` */
|
|
2717
|
+
purpose: string;
|
|
2718
|
+
/** The order to pay; required for a `pay` session */
|
|
2719
|
+
order_reference_id?: string;
|
|
2720
|
+
/** The card owner for a `tokenize` session, scoped to your organization */
|
|
2721
|
+
user_id?: string;
|
|
2722
|
+
user_email?: string;
|
|
2723
|
+
/** Tokenize mode: `ElementsTokenizeMode.SECURE` (3D Secure), `HALF_SECURE` or `NON_SECURE` */
|
|
2724
|
+
mode?: number;
|
|
2725
|
+
/** Lets the buyer save the card on a `pay` session */
|
|
2726
|
+
save_card?: boolean;
|
|
2727
|
+
}
|
|
2728
|
+
/**
|
|
2729
|
+
* @category Elements
|
|
2730
|
+
* @summary The card an Elements session used
|
|
2731
|
+
* @interface ElementsCardSummary
|
|
2732
|
+
*/
|
|
2733
|
+
interface ElementsCardSummary {
|
|
2734
|
+
id?: string;
|
|
2735
|
+
/** One of `ElementsCardBrand`, such as "visa" */
|
|
2736
|
+
brand?: string;
|
|
2737
|
+
last4?: string;
|
|
2738
|
+
exp_month?: number;
|
|
2739
|
+
exp_year?: number;
|
|
2740
|
+
}
|
|
2741
|
+
/**
|
|
2742
|
+
* @category Elements
|
|
2743
|
+
* @summary The error of an Elements session's last failed attempt
|
|
2744
|
+
* @interface ElementsSessionError
|
|
2745
|
+
*/
|
|
2746
|
+
interface ElementsSessionError {
|
|
2747
|
+
/** Stable error code, such as "card_declined" */
|
|
2748
|
+
code?: string;
|
|
2749
|
+
message?: string;
|
|
2750
|
+
retryable?: boolean;
|
|
2751
|
+
}
|
|
2752
|
+
/**
|
|
2753
|
+
* @category Elements
|
|
2754
|
+
* @summary The authoritative state of an Elements session
|
|
2755
|
+
* @description
|
|
2756
|
+
* Returned by GET /elements/sessions/{id} and POST /elements/sessions/{id}/cancel. Read it on your
|
|
2757
|
+
* backend before fulfilling an order, rather than trusting what the app reports. Timestamps are
|
|
2758
|
+
* RFC 3339 strings.
|
|
2759
|
+
* @interface ElementsSession
|
|
2760
|
+
*/
|
|
2761
|
+
interface ElementsSession {
|
|
2762
|
+
/** Session ID, such as "es_test_8Kq2nV0rX4" */
|
|
2763
|
+
id?: string;
|
|
2764
|
+
/** One of `ElementsSessionPurpose` */
|
|
2765
|
+
purpose?: string;
|
|
2766
|
+
/** One of `ElementsSessionStatus` */
|
|
2767
|
+
status?: string;
|
|
2768
|
+
order_reference_id?: string;
|
|
2769
|
+
user_id?: string;
|
|
2770
|
+
attempts?: number;
|
|
2771
|
+
max_attempts?: number;
|
|
2772
|
+
created_at?: string;
|
|
2773
|
+
expires_at?: string;
|
|
2774
|
+
completed_at?: string;
|
|
2775
|
+
/** The card used, once one was entered; absent or null before that */
|
|
2776
|
+
card?: ElementsCardSummary | null;
|
|
2777
|
+
/** The error of the last failed attempt; absent or null when there was none */
|
|
2778
|
+
last_error?: ElementsSessionError | null;
|
|
2779
|
+
}
|
|
2780
|
+
/**
|
|
2781
|
+
* @category Elements
|
|
2782
|
+
* @summary A newly created Elements session with its client secret
|
|
2783
|
+
* @description
|
|
2784
|
+
* Returned only by POST /elements/sessions. Hand `client_secret` to the app that opens the card
|
|
2785
|
+
* sheet, and do not log or store it. In Node.js, `console.log` and `util.inspect` print it as
|
|
2786
|
+
* `[redacted]`; `JSON.stringify` keeps it, so you can still send it to the app.
|
|
2787
|
+
* @interface ElementsSessionCreateResponse
|
|
2788
|
+
*/
|
|
2789
|
+
interface ElementsSessionCreateResponse extends ElementsSession {
|
|
2790
|
+
/** The secret the app opens the card sheet with */
|
|
2791
|
+
client_secret: string;
|
|
2792
|
+
/** The base URL the app's card sheet talks to */
|
|
2793
|
+
elements_base_url?: string;
|
|
2794
|
+
}
|
|
2795
|
+
|
|
2662
2796
|
/**
|
|
2663
2797
|
* @category HTTP
|
|
2664
2798
|
* @module Interceptors
|
|
@@ -2940,6 +3074,15 @@ declare class HttpClient {
|
|
|
2940
3074
|
* @returns Error message if found
|
|
2941
3075
|
*/
|
|
2942
3076
|
private extractErrorMessage;
|
|
3077
|
+
/**
|
|
3078
|
+
* @category HTTP Client Internals
|
|
3079
|
+
* @summary Returns the error object of a nested error body
|
|
3080
|
+
* @description Elements routes answer with {"error": {"code", "message", "retryable"}} instead of top-level fields
|
|
3081
|
+
*
|
|
3082
|
+
* @param data - The parsed response data
|
|
3083
|
+
* @returns The nested error object, or undefined when `error` is not an object
|
|
3084
|
+
*/
|
|
3085
|
+
private nestedError;
|
|
2943
3086
|
/**
|
|
2944
3087
|
* @category HTTP Client Internals
|
|
2945
3088
|
* @summary Extracts validation details from error response
|
|
@@ -3216,6 +3359,22 @@ declare class MarketplaceService extends ServiceBase {
|
|
|
3216
3359
|
private withResolvedCurrency;
|
|
3217
3360
|
}
|
|
3218
3361
|
|
|
3362
|
+
/** The header that carries the signature of every callback Tapsilat sends */
|
|
3363
|
+
declare const WEBHOOK_SIGNATURE_HEADER = "Tapsilat-Signature";
|
|
3364
|
+
/** How many seconds a callback's signature timestamp may differ from the current time */
|
|
3365
|
+
declare const WEBHOOK_TOLERANCE = 300;
|
|
3366
|
+
/**
|
|
3367
|
+
* @category Webhooks
|
|
3368
|
+
* @summary Options for webhook signature verification
|
|
3369
|
+
* @interface WebhookVerifyOptions
|
|
3370
|
+
*/
|
|
3371
|
+
interface WebhookVerifyOptions {
|
|
3372
|
+
/** Seconds the signature timestamp may differ from `now`; 0 disables the check. Defaults to 300 */
|
|
3373
|
+
tolerance?: number;
|
|
3374
|
+
/** Unix time in seconds to compare the signature timestamp with. Defaults to the current time */
|
|
3375
|
+
now?: number;
|
|
3376
|
+
}
|
|
3377
|
+
|
|
3219
3378
|
/**
|
|
3220
3379
|
* Main SDK class for Tapsilat payment operations
|
|
3221
3380
|
*
|
|
@@ -3597,18 +3756,27 @@ declare class TapsilatSDK {
|
|
|
3597
3756
|
*/
|
|
3598
3757
|
getCheckoutUrl(referenceId: string): Promise<string>;
|
|
3599
3758
|
/**
|
|
3600
|
-
* Verifies
|
|
3759
|
+
* Verifies the Tapsilat-Signature header of a callback against the organization's webhook secret
|
|
3601
3760
|
*
|
|
3602
|
-
* @summary
|
|
3603
|
-
* @description
|
|
3761
|
+
* @summary Verify the Tapsilat-Signature header of a callback
|
|
3762
|
+
* @description
|
|
3763
|
+
* Tapsilat sends "t=<unix timestamp>,v1=<hex HMAC-SHA256 of '<timestamp>.<raw body>'>". The timestamp
|
|
3764
|
+
* must be within `options.tolerance` seconds (300 by default; 0 disables the check) of `options.now`
|
|
3765
|
+
* (the current time by default) so that a captured callback cannot be replayed. The comparison takes
|
|
3766
|
+
* constant time.
|
|
3767
|
+
*
|
|
3768
|
+
* A bare hex HMAC-SHA256 of the payload, with or without a "sha256=" prefix, is still accepted for
|
|
3769
|
+
* signatures made the way earlier versions of this SDK documented.
|
|
3604
3770
|
*
|
|
3605
|
-
* @param payload -
|
|
3606
|
-
* @param signature -
|
|
3607
|
-
* @param secret -
|
|
3608
|
-
* @
|
|
3609
|
-
* @
|
|
3771
|
+
* @param payload - The raw request body as a string or Buffer, before any JSON decoding
|
|
3772
|
+
* @param signature - The Tapsilat-Signature header
|
|
3773
|
+
* @param secret - The webhook secret from the panel's callback settings
|
|
3774
|
+
* @param options - Timestamp tolerance in seconds and the current Unix time
|
|
3775
|
+
* @returns Promise resolving to true when the signature is valid, and to false when the header or
|
|
3776
|
+
* secret is empty, or the signature is malformed, stale or wrong
|
|
3777
|
+
* @throws {TapsilatValidationError} When payload is not a string or bytes, or an option is not a number
|
|
3610
3778
|
*/
|
|
3611
|
-
verifyWebhook(payload: string, signature: string, secret: string): Promise<boolean>;
|
|
3779
|
+
verifyWebhook(payload: string | Uint8Array, signature: string | null | undefined, secret: string, options?: WebhookVerifyOptions): Promise<boolean>;
|
|
3612
3780
|
/**
|
|
3613
3781
|
* Checks API service health and availability
|
|
3614
3782
|
*
|
|
@@ -3894,6 +4062,44 @@ declare class TapsilatSDK {
|
|
|
3894
4062
|
* Returns installment options grouped by bank card program, with an interest-free flag per row
|
|
3895
4063
|
*/
|
|
3896
4064
|
getInstallmentTable(request: InstallmentTableRequest): Promise<InstallmentTableResponse>;
|
|
4065
|
+
/**
|
|
4066
|
+
* Creates a Tapsilat Elements session for the native card sheet
|
|
4067
|
+
*
|
|
4068
|
+
* @summary Create an Elements session
|
|
4069
|
+
* @description
|
|
4070
|
+
* Sends POST /elements/sessions. Hand the returned `client_secret` to your app, which opens the card
|
|
4071
|
+
* sheet with it, and do not log or store it. A `pay` session needs `order_reference_id`; a `tokenize`
|
|
4072
|
+
* session saves a card for `user_id` with the given `mode`.
|
|
4073
|
+
*
|
|
4074
|
+
* @param request - The session's purpose and its order or card owner
|
|
4075
|
+
* @returns The new session with its `client_secret` and `elements_base_url`
|
|
4076
|
+
* @throws {TapsilatValidationError} When `purpose` is missing
|
|
4077
|
+
* @throws {TapsilatError} When the API rejects the request; `apiCode` and `retryable` say why
|
|
4078
|
+
*/
|
|
4079
|
+
createElementsSession(request: ElementsSessionCreateRequest): Promise<ElementsSessionCreateResponse>;
|
|
4080
|
+
/**
|
|
4081
|
+
* Returns the authoritative state and outcome of an Elements session
|
|
4082
|
+
*
|
|
4083
|
+
* @summary Get an Elements session
|
|
4084
|
+
* @description
|
|
4085
|
+
* Sends GET /elements/sessions/{id}. Read the outcome here on your backend before fulfilling an
|
|
4086
|
+
* order, rather than trusting what the app reports.
|
|
4087
|
+
*
|
|
4088
|
+
* @param id - Session ID, such as "es_test_8Kq2nV0rX4"
|
|
4089
|
+
* @throws {TapsilatError} With `apiCode` "session_not_found" and `statusCode` 404 for an unknown session
|
|
4090
|
+
*/
|
|
4091
|
+
getElementsSession(id: string): Promise<ElementsSession>;
|
|
4092
|
+
/**
|
|
4093
|
+
* Cancels an Elements session that is still waiting for a card
|
|
4094
|
+
*
|
|
4095
|
+
* @summary Cancel an Elements session
|
|
4096
|
+
* @description
|
|
4097
|
+
* Sends POST /elements/sessions/{id}/cancel with no body. A session that is confirming or has
|
|
4098
|
+
* completed comes back unchanged, so check `status` in the result.
|
|
4099
|
+
*
|
|
4100
|
+
* @param id - Session ID, such as "es_test_8Kq2nV0rX4"
|
|
4101
|
+
*/
|
|
4102
|
+
cancelElementsSession(id: string): Promise<ElementsSession>;
|
|
3897
4103
|
listOrganizationCurrencyPresets(): Promise<OrganizationCurrencyPresetsResponse>;
|
|
3898
4104
|
/**
|
|
3899
4105
|
* Adds a currency to the organization by ISO code, for example "USD"
|
|
@@ -4050,6 +4256,159 @@ declare class TapsilatSDK {
|
|
|
4050
4256
|
getSystemConfig(): Promise<GetSystemConfigResponse>;
|
|
4051
4257
|
}
|
|
4052
4258
|
|
|
4259
|
+
declare const CODES: {
|
|
4260
|
+
readonly RECEIVED: 1;
|
|
4261
|
+
readonly UNPAID: 2;
|
|
4262
|
+
readonly PAID: 3;
|
|
4263
|
+
readonly PROCESSING: 4;
|
|
4264
|
+
readonly SHIPPED: 5;
|
|
4265
|
+
readonly ON_HOLD: 6;
|
|
4266
|
+
readonly WAITING_FOR_PAYMENT: 7;
|
|
4267
|
+
readonly CANCELLED: 8;
|
|
4268
|
+
readonly COMPLETED: 9;
|
|
4269
|
+
readonly REFUNDED: 10;
|
|
4270
|
+
readonly FRAUD: 11;
|
|
4271
|
+
readonly REJECTED: 12;
|
|
4272
|
+
readonly FAILURE: 13;
|
|
4273
|
+
readonly RETRYING: 14;
|
|
4274
|
+
readonly PARTIALLY_REFUNDED: 15;
|
|
4275
|
+
readonly SUB_MERCHANT_PAYMENT_APPROVED: 16;
|
|
4276
|
+
readonly SUB_MERCHANT_PAYMENT_DISAPPROVED: 17;
|
|
4277
|
+
readonly SUB_MERCHANT_PAYMENT_ERRORED: 18;
|
|
4278
|
+
readonly STILL_HAS_UNPAID_INSTALLMENTS: 19;
|
|
4279
|
+
readonly STILL_HAS_UNPAID_TERMS: 20;
|
|
4280
|
+
readonly EXPIRED: 21;
|
|
4281
|
+
readonly STILL_HAS_UNPAID_SUB_MERCHANT_PAYMENTS: 22;
|
|
4282
|
+
readonly PARTIALLY_PAID: 23;
|
|
4283
|
+
readonly TERMINATED: 24;
|
|
4284
|
+
readonly CARD_TOKENIZATION: 25;
|
|
4285
|
+
readonly PRE_AUTHORIZED: 26;
|
|
4286
|
+
readonly DISPUTED: 27;
|
|
4287
|
+
readonly PARTIALLY_DISPUTED: 28;
|
|
4288
|
+
readonly SUSPECT: 29;
|
|
4289
|
+
};
|
|
4290
|
+
/**
|
|
4291
|
+
* @category Order Management
|
|
4292
|
+
* @summary Numeric order status code, as callbacks and order details carry it
|
|
4293
|
+
*/
|
|
4294
|
+
type OrderStatusCode = (typeof CODES)[keyof typeof CODES];
|
|
4295
|
+
/**
|
|
4296
|
+
* @category Order Management
|
|
4297
|
+
* @summary Order status codes, their names and the paid, failed and refunded groups
|
|
4298
|
+
* @description
|
|
4299
|
+
* The numeric codes that callbacks and order details carry, and the names that
|
|
4300
|
+
* GET /order/{reference_id}/status returns for them. Every helper accepts a code, a numeric string or
|
|
4301
|
+
* a name.
|
|
4302
|
+
*
|
|
4303
|
+
* @example
|
|
4304
|
+
* ```typescript
|
|
4305
|
+
* const { status } = await tapsilat.getOrderStatus(referenceId); // e.g. "Waiting for payment"
|
|
4306
|
+
* OrderStatus.isPaid(status); // Paid, Completed, Sub merchant payment approved
|
|
4307
|
+
* OrderStatus.code(status); // 7; also accepts "7" or 7
|
|
4308
|
+
* ```
|
|
4309
|
+
*/
|
|
4310
|
+
declare const OrderStatus: Readonly<{
|
|
4311
|
+
readonly NAMES: Readonly<Record<OrderStatusCode, string>>;
|
|
4312
|
+
readonly PAID_STATUSES: readonly OrderStatusCode[];
|
|
4313
|
+
readonly FAILED_STATUSES: readonly OrderStatusCode[];
|
|
4314
|
+
readonly REFUNDED_STATUSES: readonly OrderStatusCode[];
|
|
4315
|
+
/** The code for a code, a numeric string or a name (case-insensitive), or null */
|
|
4316
|
+
readonly code: (status: unknown) => OrderStatusCode | null;
|
|
4317
|
+
/** The status name, such as "Paid", or null */
|
|
4318
|
+
readonly name: (status: unknown) => string | null;
|
|
4319
|
+
/** Paid, Completed or Sub merchant payment approved */
|
|
4320
|
+
readonly isPaid: (status: unknown) => boolean;
|
|
4321
|
+
/** Cancelled, Fraud, Rejected, Failure, Expired or Terminated */
|
|
4322
|
+
readonly isFailed: (status: unknown) => boolean;
|
|
4323
|
+
/** Refunded or Partially refunded */
|
|
4324
|
+
readonly isRefunded: (status: unknown) => boolean;
|
|
4325
|
+
readonly RECEIVED: 1;
|
|
4326
|
+
readonly UNPAID: 2;
|
|
4327
|
+
readonly PAID: 3;
|
|
4328
|
+
readonly PROCESSING: 4;
|
|
4329
|
+
readonly SHIPPED: 5;
|
|
4330
|
+
readonly ON_HOLD: 6;
|
|
4331
|
+
readonly WAITING_FOR_PAYMENT: 7;
|
|
4332
|
+
readonly CANCELLED: 8;
|
|
4333
|
+
readonly COMPLETED: 9;
|
|
4334
|
+
readonly REFUNDED: 10;
|
|
4335
|
+
readonly FRAUD: 11;
|
|
4336
|
+
readonly REJECTED: 12;
|
|
4337
|
+
readonly FAILURE: 13;
|
|
4338
|
+
readonly RETRYING: 14;
|
|
4339
|
+
readonly PARTIALLY_REFUNDED: 15;
|
|
4340
|
+
readonly SUB_MERCHANT_PAYMENT_APPROVED: 16;
|
|
4341
|
+
readonly SUB_MERCHANT_PAYMENT_DISAPPROVED: 17;
|
|
4342
|
+
readonly SUB_MERCHANT_PAYMENT_ERRORED: 18;
|
|
4343
|
+
readonly STILL_HAS_UNPAID_INSTALLMENTS: 19;
|
|
4344
|
+
readonly STILL_HAS_UNPAID_TERMS: 20;
|
|
4345
|
+
readonly EXPIRED: 21;
|
|
4346
|
+
readonly STILL_HAS_UNPAID_SUB_MERCHANT_PAYMENTS: 22;
|
|
4347
|
+
readonly PARTIALLY_PAID: 23;
|
|
4348
|
+
readonly TERMINATED: 24;
|
|
4349
|
+
readonly CARD_TOKENIZATION: 25;
|
|
4350
|
+
readonly PRE_AUTHORIZED: 26;
|
|
4351
|
+
readonly DISPUTED: 27;
|
|
4352
|
+
readonly PARTIALLY_DISPUTED: 28;
|
|
4353
|
+
readonly SUSPECT: 29;
|
|
4354
|
+
}>;
|
|
4355
|
+
|
|
4356
|
+
type JsonObject = Record<string, unknown>;
|
|
4357
|
+
/**
|
|
4358
|
+
* @category Webhooks
|
|
4359
|
+
* @summary A callback Tapsilat posts to an organization's callback URLs
|
|
4360
|
+
* @description
|
|
4361
|
+
* Tapsilat posts {"type": "...", "data": {...}, "token": "<delivery id>"} to the organization's callback
|
|
4362
|
+
* URLs and to an order's payment_success_url and payment_failure_url. The shape of "data" depends on the
|
|
4363
|
+
* type, which each organization chooses in the panel: "order_lite" (the default), "order",
|
|
4364
|
+
* "order_payment_detail", "extended_order" or "payment_facilitator". The getters read the order's
|
|
4365
|
+
* reference ID, conversation ID and status from whichever shape arrived.
|
|
4366
|
+
*
|
|
4367
|
+
* Verify the Tapsilat-Signature header with `verifyWebhook()` before trusting a callback.
|
|
4368
|
+
*
|
|
4369
|
+
* @example
|
|
4370
|
+
* ```typescript
|
|
4371
|
+
* const event = WebhookEvent.fromPayload(rawBody);
|
|
4372
|
+
* if (event.isPaid()) {
|
|
4373
|
+
* await fulfil(event.referenceId);
|
|
4374
|
+
* }
|
|
4375
|
+
* ```
|
|
4376
|
+
*/
|
|
4377
|
+
declare class WebhookEvent {
|
|
4378
|
+
static readonly TYPE_ORDER = "order";
|
|
4379
|
+
static readonly TYPE_ORDER_LITE = "order_lite";
|
|
4380
|
+
static readonly TYPE_ORDER_PAYMENT_DETAIL = "order_payment_detail";
|
|
4381
|
+
static readonly TYPE_EXTENDED_ORDER = "extended_order";
|
|
4382
|
+
static readonly TYPE_PAYMENT_FACILITATOR = "payment_facilitator";
|
|
4383
|
+
/** The callback type, such as "order_lite" */
|
|
4384
|
+
readonly type: string | null;
|
|
4385
|
+
/** Unique per delivery */
|
|
4386
|
+
readonly token: string | null;
|
|
4387
|
+
/** The callback's "data" object, or the whole payload when it has none */
|
|
4388
|
+
readonly data: JsonObject;
|
|
4389
|
+
/** The decoded payload */
|
|
4390
|
+
readonly payload: JsonObject;
|
|
4391
|
+
constructor(payload: JsonObject);
|
|
4392
|
+
/**
|
|
4393
|
+
* Decodes a raw callback body
|
|
4394
|
+
*
|
|
4395
|
+
* @param payload - The raw request body
|
|
4396
|
+
* @throws {TapsilatValidationError} When the body is not a JSON object
|
|
4397
|
+
*/
|
|
4398
|
+
static fromPayload(payload: string | Uint8Array): WebhookEvent;
|
|
4399
|
+
/** The order's reference ID */
|
|
4400
|
+
get referenceId(): string | null;
|
|
4401
|
+
/** The conversation ID the order was created with */
|
|
4402
|
+
get conversationId(): string | null;
|
|
4403
|
+
/** The order status code (see OrderStatus), or null when this callback type carries none */
|
|
4404
|
+
get statusCode(): OrderStatusCode | null;
|
|
4405
|
+
/** The order status name, such as "Paid" */
|
|
4406
|
+
get status(): string | null;
|
|
4407
|
+
isPaid(): boolean;
|
|
4408
|
+
isFailed(): boolean;
|
|
4409
|
+
isRefunded(): boolean;
|
|
4410
|
+
}
|
|
4411
|
+
|
|
4053
4412
|
/**
|
|
4054
4413
|
* @category Errors
|
|
4055
4414
|
* @module TapsilatError
|
|
@@ -4073,6 +4432,8 @@ declare class TapsilatError extends Error {
|
|
|
4073
4432
|
apiStatus?: string;
|
|
4074
4433
|
/** Per-field validation messages from the API response body */
|
|
4075
4434
|
errors?: Record<string, unknown>;
|
|
4435
|
+
/** Whether the API error says the request can be retried, as Elements errors do */
|
|
4436
|
+
retryable?: boolean;
|
|
4076
4437
|
/** Raw API response body */
|
|
4077
4438
|
rawBody?: string;
|
|
4078
4439
|
/**
|
|
@@ -4275,5 +4636,5 @@ declare function validateInstallments(installments: string | number | number[]):
|
|
|
4275
4636
|
*/
|
|
4276
4637
|
declare function cleanGsmNumber(phone: string): string;
|
|
4277
4638
|
|
|
4278
|
-
export { BusinessType, ConfigManager, CurrencyResolver, MarketplaceService, SubmerchantService, TapsilatAuthenticationError, TapsilatError, TapsilatNetworkError, TapsilatRateLimitError, TapsilatSDK, TapsilatValidationError, TokenizationService, VposService, cleanGsmNumber, isValidCurrency, isValidPaymentMethod, isValidUrl, sanitizeMetadata, validateEmail, validateGsmNumber, validateInstallments, validatePaymentRequest };
|
|
4279
|
-
export type { APIError, APIResponse, AddBasketItemRequest, AddBasketItemResponse, Address, BasketItem, BasketItemDTO, BasketItemPayerDTO, BasketItemPaymentDTO, BillingAddress, BillingAddressDTO, Buyer, BuyerDTO, CallbackURLDTO, CancelOrderRequest, CancelOrderResponse, CancelSubscriptionResponse, CardInstallment, CardInstallmentsRequest, CardInstallmentsResponse, CardScheme, CardSchemeListResponse, CardTokenizeRequest, CardTokenizeResponse, CheckoutDesignDTO, CreateOrganizationCurrencyResponse, Currency, Customer, DeleteSavedCardResponse, GetMetaResponse, GetOrderPaymentDetailsResponse, GetOrderPaymentsRequest, GetOrderPaymentsResponse, GetOrderResponse, GetOrderSubmerchantsRequest, GetOrderSubmerchantsResponse, GetOrderTermResponse, GetOrderTransactionsResponse, GetOrdersListItem, GetOrdersRequest, GetOrdersResponse, GetOrganizationCurrenciesResponse, GetOrganizationLimitsResponse, GetOrganizationScopesResponse, GetSubOrganizationListResponse, GetSubmerchantResponse, GetSuborganizationsRequest, GetSystemOrderStatusesResponse, GetUserLimitRequest, GetUserLimitResponse, GetVposRequest, GetVposResponse, GsmValidationResult, InstallmentTableGroup, InstallmentTableRequest, InstallmentTableResponse, InstallmentTableRow, InstallmentsValidationResult, ListSavedCardsResponse, ListSubmerchantsResponse, ListSubscriptionsRequest, ListSubscriptionsResponse, Locale, MarketplaceAccountAction, MarketplaceAccountTarget, MarketplaceApprovalPolicies, MarketplaceApprovalPolicy, MarketplaceApprovalPolicyInput, MarketplaceApprovalSettings, MarketplaceContractFilter, MarketplaceContracts, MarketplacePayout, MarketplacePayoutAcceptance, MarketplacePayoutApproval, MarketplacePayoutFilter, MarketplacePayoutList, MarketplacePayoutOperation, MarketplacePayoutOperationInput, MarketplaceProfileUpdate, MarketplaceProfileUpdateResponse, MarketplaceReleasePolicies, MarketplaceReleasePolicy, MarketplaceReleasePolicyInput, MarketplaceSeller, MarketplaceSellerAccount, MarketplaceSellerAccounts, MarketplaceSellerContract, MarketplaceSellerList, MarketplaceSellerListParams, MarketplaceSubmerchantCreateRequest, MarketplaceSubmerchantCreateResponse, MarketplaceSubmerchantProvisioning, MarketplaceSynchronization, MetadataDTO, Order, OrderAccountingRequest, OrderAccountingResponse, OrderCardDTO, OrderChargeRequest, OrderChargeResponse, OrderCreateDTO, OrderCreateRequest, OrderCreateResponse, OrderManualCallbackRequest, OrderManualCallbackResponse, OrderOIPDTO, OrderOIPResponse, OrderPFSubMerchantDTO, OrderPayment, OrderPaymentDetail, OrderPaymentDetailDTO, OrderPaymentTermActionResponse, OrderPaymentTermCreateDTO, OrderPaymentTermUpdateDTO, OrderPaymentsRequest, OrderPaymentsResponse, OrderPostAuthRequest, OrderPostAuthResponse, OrderRefundRequest, OrderRefundResponse, OrderRelatedUpdateRequest, OrderRelatedUpdateResponse, OrderResponse, OrderStatusResponse, OrderSubmerchant, OrderSubmerchantListItem, OrderSubmerchantListResponse, OrderTermRefundRequest, OrderTerminateRequest, OrderTerminateResponse, OrderTransaction, OrgCreateBusinessRequest, OrgCreateBusinessResponse, OrgCreateUserReq, OrgCreateUserRequest, OrgCreateUserResponse, OrgUserMobileVerifyReq, OrgUserMobileVerifyRequest, OrgUserMobileVerifyResponse, OrgUserTokenCreateReq, OrgUserTokenCreateRequest, OrgUserTokenCreateResponse, OrgUserVerifyReq, OrgUserVerifyRequest, OrgUserVerifyResponse, OrganizationCurrenciesResponse, OrganizationCurrency$1 as OrganizationCurrency, OrganizationCurrencyPreset, OrganizationCurrencyPresetsResponse, OrganizationResponse, OrganizationSettings, PaginatedResponse, PaginationParams, PaymentMethod, PaymentOption, PaymentRequest, PaymentResponse, PaymentStatus, PaymentTermDTO, PaymentTermDeleteRequest, PaymentTermRefundResponse, PaymentTermResponse, PaymentTermTerminateRequest, RefundAllOrderDTO, RefundOrderDTO, RefundRequest, RefundResponse, RemoveBasketItemRequest, RemoveBasketItemResponse, SavedCard, SetLimitUserRequest, SetLimitUserResponse, ShippingAddressDTO, SubOrganizationDTO, Submerchant, SubmerchantCreateDTO, SubmerchantCreateRequest, SubmerchantDTO, SubmerchantListItem, SubmerchantListResponse, SubmerchantMutationResponse, SubmerchantPaymentAction, SubmerchantPaymentActionResponse, SubmerchantPaymentItemUpdate, SubmerchantPaymentItemUpdateResponse, SubmerchantPayoutEventRequest, SubmerchantPayoutEventResponse, SubmerchantSuborganizationMapping, SubmerchantUpdateDTO, SubmerchantUpdateRequest, SuborganizationDetail, SuborganizationListItem, SuborganizationListResponse, SuborganizationSubmerchantMapping, SubscriptionBilling, SubscriptionCancelRequest, SubscriptionCreateRequest, SubscriptionCreateResponse, SubscriptionDetail, SubscriptionGetRequest, SubscriptionListItem, SubscriptionOrder, SubscriptionRedirectRequest, SubscriptionRedirectResponse, SubscriptionUser, SystemOrderStatus, TapsilatConfig, TimestampDTO, UpdateBasketItemRequest, UpdateBasketItemResponse, Vpos, VposAcquirer, VposAcquirerListResponse, VposAcquirerTemplate, VposAcquirerTemplateDefaults, VposAcquirerTemplateListResponse, VposCreateRequest, VposListItem, VposListParams, VposListResponse, VposMutationResponse, VposSubmerchant, VposSubmerchantCreateRequest, VposSubmerchantListItem, VposSubmerchantListParams, VposSubmerchantListResponse, VposSubmerchantMutationResponse, VposSubmerchantUpdateRequest, VposUpdateRequest,
|
|
4639
|
+
export { BusinessType, ConfigManager, CurrencyResolver, ElementsCardBrand, ElementsSessionPurpose, ElementsSessionStatus, ElementsTokenizeMode, MarketplaceService, OrderStatus, SubmerchantService, TapsilatAuthenticationError, TapsilatError, TapsilatNetworkError, TapsilatRateLimitError, TapsilatSDK, TapsilatValidationError, TokenizationService, VposService, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_TOLERANCE, WebhookEvent, cleanGsmNumber, isValidCurrency, isValidPaymentMethod, isValidUrl, sanitizeMetadata, validateEmail, validateGsmNumber, validateInstallments, validatePaymentRequest };
|
|
4640
|
+
export type { APIError, APIResponse, AddBasketItemRequest, AddBasketItemResponse, Address, BasketItem, BasketItemDTO, BasketItemPayerDTO, BasketItemPaymentDTO, BillingAddress, BillingAddressDTO, Buyer, BuyerDTO, CallbackURLDTO, CancelOrderRequest, CancelOrderResponse, CancelSubscriptionResponse, CardInstallment, CardInstallmentsRequest, CardInstallmentsResponse, CardScheme, CardSchemeListResponse, CardTokenizeRequest, CardTokenizeResponse, CheckoutDesignDTO, CreateOrganizationCurrencyResponse, Currency, Customer, DeleteSavedCardResponse, ElementsCardSummary, ElementsSession, ElementsSessionCreateRequest, ElementsSessionCreateResponse, ElementsSessionError, GetMetaResponse, GetOrderPaymentDetailsResponse, GetOrderPaymentsRequest, GetOrderPaymentsResponse, GetOrderResponse, GetOrderSubmerchantsRequest, GetOrderSubmerchantsResponse, GetOrderTermResponse, GetOrderTransactionsResponse, GetOrdersListItem, GetOrdersRequest, GetOrdersResponse, GetOrganizationCurrenciesResponse, GetOrganizationLimitsResponse, GetOrganizationScopesResponse, GetSubOrganizationListResponse, GetSubmerchantResponse, GetSuborganizationsRequest, GetSystemOrderStatusesResponse, GetUserLimitRequest, GetUserLimitResponse, GetVposRequest, GetVposResponse, GsmValidationResult, InstallmentTableGroup, InstallmentTableRequest, InstallmentTableResponse, InstallmentTableRow, InstallmentsValidationResult, ListSavedCardsResponse, ListSubmerchantsResponse, ListSubscriptionsRequest, ListSubscriptionsResponse, Locale, MarketplaceAccountAction, MarketplaceAccountTarget, MarketplaceApprovalPolicies, MarketplaceApprovalPolicy, MarketplaceApprovalPolicyInput, MarketplaceApprovalSettings, MarketplaceContractFilter, MarketplaceContracts, MarketplacePayout, MarketplacePayoutAcceptance, MarketplacePayoutApproval, MarketplacePayoutFilter, MarketplacePayoutList, MarketplacePayoutOperation, MarketplacePayoutOperationInput, MarketplaceProfileUpdate, MarketplaceProfileUpdateResponse, MarketplaceReleasePolicies, MarketplaceReleasePolicy, MarketplaceReleasePolicyInput, MarketplaceSeller, MarketplaceSellerAccount, MarketplaceSellerAccounts, MarketplaceSellerContract, MarketplaceSellerList, MarketplaceSellerListParams, MarketplaceSubmerchantCreateRequest, MarketplaceSubmerchantCreateResponse, MarketplaceSubmerchantProvisioning, MarketplaceSynchronization, MetadataDTO, Order, OrderAccountingRequest, OrderAccountingResponse, OrderCardDTO, OrderChargeRequest, OrderChargeResponse, OrderCreateDTO, OrderCreateRequest, OrderCreateResponse, OrderManualCallbackRequest, OrderManualCallbackResponse, OrderOIPDTO, OrderOIPResponse, OrderPFSubMerchantDTO, OrderPayment, OrderPaymentDetail, OrderPaymentDetailDTO, OrderPaymentTermActionResponse, OrderPaymentTermCreateDTO, OrderPaymentTermUpdateDTO, OrderPaymentsRequest, OrderPaymentsResponse, OrderPostAuthRequest, OrderPostAuthResponse, OrderRefundRequest, OrderRefundResponse, OrderRelatedUpdateRequest, OrderRelatedUpdateResponse, OrderResponse, OrderStatusCode, OrderStatusResponse, OrderSubmerchant, OrderSubmerchantListItem, OrderSubmerchantListResponse, OrderTermRefundRequest, OrderTerminateRequest, OrderTerminateResponse, OrderTransaction, OrgCreateBusinessRequest, OrgCreateBusinessResponse, OrgCreateUserReq, OrgCreateUserRequest, OrgCreateUserResponse, OrgUserMobileVerifyReq, OrgUserMobileVerifyRequest, OrgUserMobileVerifyResponse, OrgUserTokenCreateReq, OrgUserTokenCreateRequest, OrgUserTokenCreateResponse, OrgUserVerifyReq, OrgUserVerifyRequest, OrgUserVerifyResponse, OrganizationCurrenciesResponse, OrganizationCurrency$1 as OrganizationCurrency, OrganizationCurrencyPreset, OrganizationCurrencyPresetsResponse, OrganizationResponse, OrganizationSettings, PaginatedResponse, PaginationParams, PaymentMethod, PaymentOption, PaymentRequest, PaymentResponse, PaymentStatus, PaymentTermDTO, PaymentTermDeleteRequest, PaymentTermRefundResponse, PaymentTermResponse, PaymentTermTerminateRequest, RefundAllOrderDTO, RefundOrderDTO, RefundRequest, RefundResponse, RemoveBasketItemRequest, RemoveBasketItemResponse, SavedCard, SetLimitUserRequest, SetLimitUserResponse, ShippingAddressDTO, SubOrganizationDTO, Submerchant, SubmerchantCreateDTO, SubmerchantCreateRequest, SubmerchantDTO, SubmerchantListItem, SubmerchantListResponse, SubmerchantMutationResponse, SubmerchantPaymentAction, SubmerchantPaymentActionResponse, SubmerchantPaymentItemUpdate, SubmerchantPaymentItemUpdateResponse, SubmerchantPayoutEventRequest, SubmerchantPayoutEventResponse, SubmerchantSuborganizationMapping, SubmerchantUpdateDTO, SubmerchantUpdateRequest, SuborganizationDetail, SuborganizationListItem, SuborganizationListResponse, SuborganizationSubmerchantMapping, SubscriptionBilling, SubscriptionCancelRequest, SubscriptionCreateRequest, SubscriptionCreateResponse, SubscriptionDetail, SubscriptionGetRequest, SubscriptionListItem, SubscriptionOrder, SubscriptionRedirectRequest, SubscriptionRedirectResponse, SubscriptionUser, SystemOrderStatus, TapsilatConfig, TimestampDTO, UpdateBasketItemRequest, UpdateBasketItemResponse, Vpos, VposAcquirer, VposAcquirerListResponse, VposAcquirerTemplate, VposAcquirerTemplateDefaults, VposAcquirerTemplateListResponse, VposCreateRequest, VposListItem, VposListParams, VposListResponse, VposMutationResponse, VposSubmerchant, VposSubmerchantCreateRequest, VposSubmerchantListItem, VposSubmerchantListParams, VposSubmerchantListResponse, VposSubmerchantMutationResponse, VposSubmerchantUpdateRequest, VposUpdateRequest, WebhookVerifyOptions };
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,YAAY,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,QAAQ,EACR,cAAc,EACd,eAAe,EACf,QAAQ,EACR,OAAO,EACP,cAAc,EACd,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,YAAY,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,QAAQ,EACR,cAAc,EACd,eAAe,EACf,QAAQ,EACR,OAAO,EACP,cAAc,EACd,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,EACN,KAAK,EACL,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,8BAA8B,EAC9B,8BAA8B,EAC9B,kBAAkB,EAClB,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,4BAA4B,EAC5B,gBAAgB,EAChB,4BAA4B,EAC5B,gBAAgB,EAChB,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,gBAAgB,EAChB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,EACjC,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,6BAA6B,EAC7B,eAAe,EACf,6BAA6B,EAC7B,0BAA0B,EAC1B,8BAA8B,EAC9B,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAGvB,mBAAmB,eAAe,CAAC;AAGnC,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,4BAA4B,EAC5B,6BAA6B,EAC7B,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC"}
|