@payark/sdk-effect 0.1.3 → 0.1.5
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/dist/index.d.mts +511 -199
- package/dist/index.d.ts +511 -199
- package/dist/index.js +102 -46
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +98 -47
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -2,6 +2,21 @@ import { Schema, Context, Data, Layer, Effect } from 'effect';
|
|
|
2
2
|
import { HttpApiMiddleware, HttpApiSecurity, HttpApiGroup, HttpApiEndpoint, HttpApi, HttpApiClient, HttpClient, HttpClientRequest } from '@effect/platform';
|
|
3
3
|
|
|
4
4
|
// src/index.ts
|
|
5
|
+
var NonEmptyString = Schema.String.pipe(
|
|
6
|
+
Schema.nonEmptyString(),
|
|
7
|
+
Schema.brand("NonEmptyString")
|
|
8
|
+
);
|
|
9
|
+
var UrlString = Schema.String.pipe(
|
|
10
|
+
Schema.pattern(/^https?:\/\/.+/),
|
|
11
|
+
Schema.brand("UrlString")
|
|
12
|
+
);
|
|
13
|
+
var MinorUnitsInt = Schema.Number.pipe(
|
|
14
|
+
Schema.int(),
|
|
15
|
+
Schema.greaterThan(0),
|
|
16
|
+
Schema.brand("MinorUnitsInt")
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
// src/schemas.ts
|
|
5
20
|
var Id = Schema.String.pipe(Schema.brand("Id"));
|
|
6
21
|
var ProjectId = Schema.String.pipe(Schema.brand("ProjectId"));
|
|
7
22
|
var PaymentId = Schema.String.pipe(Schema.brand("PaymentId"));
|
|
@@ -44,9 +59,9 @@ var SubscriptionStatus = Schema.Literal(
|
|
|
44
59
|
var SubscriptionInterval = Schema.Literal("month", "year", "week");
|
|
45
60
|
var Customer = Schema.Struct({
|
|
46
61
|
id: CustomerId,
|
|
47
|
-
merchant_customer_id:
|
|
62
|
+
merchant_customer_id: NonEmptyString,
|
|
48
63
|
email: Schema.NullOr(Email),
|
|
49
|
-
name: Schema.NullOr(
|
|
64
|
+
name: Schema.NullOr(NonEmptyString),
|
|
50
65
|
phone: Schema.NullOr(Schema.String),
|
|
51
66
|
project_id: ProjectId,
|
|
52
67
|
metadata: Schema.NullOr(Metadata),
|
|
@@ -76,7 +91,7 @@ var Subscription = Schema.Struct({
|
|
|
76
91
|
interval_count: Schema.Number,
|
|
77
92
|
current_period_start: Timestamp,
|
|
78
93
|
current_period_end: Timestamp,
|
|
79
|
-
payment_link:
|
|
94
|
+
payment_link: UrlString,
|
|
80
95
|
auto_send_link: Schema.Boolean,
|
|
81
96
|
metadata: Schema.optional(Schema.NullOr(Metadata)),
|
|
82
97
|
canceled_at: Schema.optional(Schema.NullOr(Timestamp)),
|
|
@@ -85,13 +100,13 @@ var Subscription = Schema.Struct({
|
|
|
85
100
|
});
|
|
86
101
|
var Project = Schema.Struct({
|
|
87
102
|
id: ProjectId,
|
|
88
|
-
name:
|
|
103
|
+
name: NonEmptyString,
|
|
89
104
|
api_key_secret: Schema.String,
|
|
90
105
|
created_at: Timestamp
|
|
91
106
|
});
|
|
92
107
|
var Token = Schema.Struct({
|
|
93
108
|
id: TokenId,
|
|
94
|
-
name:
|
|
109
|
+
name: NonEmptyString,
|
|
95
110
|
scopes: Schema.Array(Schema.String),
|
|
96
111
|
last_used_at: Schema.NullOr(Timestamp),
|
|
97
112
|
expires_at: Schema.NullOr(Timestamp),
|
|
@@ -106,20 +121,55 @@ var PaginatedResponse = (schema) => Schema.Struct({
|
|
|
106
121
|
data: Schema.Array(schema),
|
|
107
122
|
meta: PaginationMeta
|
|
108
123
|
});
|
|
124
|
+
var WebhookEventType = Schema.Literal(
|
|
125
|
+
"payment.success",
|
|
126
|
+
"payment.failed",
|
|
127
|
+
"subscription.created",
|
|
128
|
+
"subscription.payment_succeeded",
|
|
129
|
+
"subscription.payment_failed",
|
|
130
|
+
"subscription.renewal_due",
|
|
131
|
+
"subscription.canceled"
|
|
132
|
+
);
|
|
133
|
+
var WebhookEvent = Schema.Struct({
|
|
134
|
+
type: WebhookEventType,
|
|
135
|
+
id: Schema.optional(Schema.String),
|
|
136
|
+
data: Schema.Union(
|
|
137
|
+
Payment,
|
|
138
|
+
Subscription,
|
|
139
|
+
Customer,
|
|
140
|
+
Schema.Struct({
|
|
141
|
+
id: Schema.String,
|
|
142
|
+
amount: Schema.optional(Schema.Number),
|
|
143
|
+
currency: Schema.optional(Schema.String),
|
|
144
|
+
status: Schema.String,
|
|
145
|
+
metadata: Schema.optional(Metadata)
|
|
146
|
+
})
|
|
147
|
+
),
|
|
148
|
+
is_test: Schema.Boolean,
|
|
149
|
+
created: Schema.optional(Schema.Number)
|
|
150
|
+
});
|
|
109
151
|
var CreateCheckoutParams = Schema.Struct({
|
|
110
|
-
amount: Schema.
|
|
152
|
+
amount: Schema.optional(MinorUnitsInt),
|
|
111
153
|
currency: Schema.optionalWith(Schema.String, { default: () => "NPR" }),
|
|
112
154
|
provider: Provider,
|
|
113
|
-
returnUrl:
|
|
114
|
-
cancelUrl: Schema.optional(
|
|
115
|
-
metadata: Schema.optional(Metadata)
|
|
116
|
-
|
|
155
|
+
returnUrl: UrlString,
|
|
156
|
+
cancelUrl: Schema.optional(UrlString),
|
|
157
|
+
metadata: Schema.optional(Metadata),
|
|
158
|
+
subscriptionId: Schema.optional(SubscriptionId)
|
|
159
|
+
}).pipe(
|
|
160
|
+
Schema.filter((data) => {
|
|
161
|
+
if (!data.subscriptionId && !data.amount) {
|
|
162
|
+
return "amount is required when subscriptionId is not provided";
|
|
163
|
+
}
|
|
164
|
+
return true;
|
|
165
|
+
})
|
|
166
|
+
);
|
|
117
167
|
var CheckoutSession = Schema.Struct({
|
|
118
168
|
id: CheckoutSessionId,
|
|
119
|
-
checkout_url:
|
|
169
|
+
checkout_url: UrlString,
|
|
120
170
|
payment_method: Schema.Struct({
|
|
121
171
|
type: Provider,
|
|
122
|
-
url: Schema.optional(
|
|
172
|
+
url: Schema.optional(UrlString),
|
|
123
173
|
method: Schema.optional(Schema.Literal("GET", "POST")),
|
|
124
174
|
fields: Schema.optional(
|
|
125
175
|
Schema.Record({ key: Schema.String, value: Schema.String })
|
|
@@ -127,9 +177,9 @@ var CheckoutSession = Schema.Struct({
|
|
|
127
177
|
})
|
|
128
178
|
});
|
|
129
179
|
var CreateCustomerParams = Schema.Struct({
|
|
130
|
-
merchant_customer_id:
|
|
131
|
-
email: Schema.optional(
|
|
132
|
-
name: Schema.optional(
|
|
180
|
+
merchant_customer_id: NonEmptyString,
|
|
181
|
+
email: Schema.optional(Email),
|
|
182
|
+
name: Schema.optional(NonEmptyString),
|
|
133
183
|
phone: Schema.optional(Schema.String),
|
|
134
184
|
project_id: Schema.optional(ProjectId),
|
|
135
185
|
metadata: Schema.optional(Metadata)
|
|
@@ -143,17 +193,18 @@ var ListCustomersParams = Schema.Struct({
|
|
|
143
193
|
limit: Schema.optional(Schema.NumberFromString),
|
|
144
194
|
offset: Schema.optional(Schema.NumberFromString),
|
|
145
195
|
email: Schema.optional(Schema.String),
|
|
196
|
+
merchant_customer_id: Schema.optional(Schema.String),
|
|
146
197
|
projectId: Schema.optional(ProjectId)
|
|
147
198
|
});
|
|
148
199
|
var UpdateCustomerParams = Schema.Struct({
|
|
149
|
-
email: Schema.optional(
|
|
150
|
-
name: Schema.optional(
|
|
200
|
+
email: Schema.optional(Email),
|
|
201
|
+
name: Schema.optional(NonEmptyString),
|
|
151
202
|
phone: Schema.optional(Schema.String),
|
|
152
203
|
metadata: Schema.optional(Metadata)
|
|
153
204
|
});
|
|
154
205
|
var CreateSubscriptionParams = Schema.Struct({
|
|
155
206
|
customer_id: CustomerId,
|
|
156
|
-
amount:
|
|
207
|
+
amount: MinorUnitsInt,
|
|
157
208
|
currency: Schema.optionalWith(Schema.String, { default: () => "NPR" }),
|
|
158
209
|
interval: SubscriptionInterval,
|
|
159
210
|
interval_count: Schema.optional(Schema.Number),
|
|
@@ -161,6 +212,11 @@ var CreateSubscriptionParams = Schema.Struct({
|
|
|
161
212
|
auto_send_link: Schema.optional(Schema.Boolean),
|
|
162
213
|
metadata: Schema.optional(Metadata)
|
|
163
214
|
});
|
|
215
|
+
var CallbackQueryParams = Schema.Struct({
|
|
216
|
+
payment_id: Schema.optional(Schema.String),
|
|
217
|
+
data: Schema.optional(Schema.String),
|
|
218
|
+
pidx: Schema.optional(Schema.String)
|
|
219
|
+
});
|
|
164
220
|
var ListSubscriptionsParams = Schema.Struct({
|
|
165
221
|
limit: Schema.optional(Schema.NumberFromString),
|
|
166
222
|
offset: Schema.optional(Schema.NumberFromString),
|
|
@@ -168,6 +224,10 @@ var ListSubscriptionsParams = Schema.Struct({
|
|
|
168
224
|
customerId: Schema.optional(CustomerId),
|
|
169
225
|
status: Schema.optional(SubscriptionStatus)
|
|
170
226
|
});
|
|
227
|
+
var RealtimeTriggerPayload = Schema.Struct({
|
|
228
|
+
event: Schema.optional(WebhookEventType),
|
|
229
|
+
data: Schema.optional(Schema.Any)
|
|
230
|
+
});
|
|
171
231
|
var PayArkConfig = Schema.Struct({
|
|
172
232
|
apiKey: Schema.String,
|
|
173
233
|
baseUrl: Schema.optional(Schema.String),
|
|
@@ -175,33 +235,6 @@ var PayArkConfig = Schema.Struct({
|
|
|
175
235
|
maxRetries: Schema.optional(Schema.Number),
|
|
176
236
|
sandbox: Schema.optional(Schema.Boolean)
|
|
177
237
|
});
|
|
178
|
-
var WebhookEventType = Schema.Literal(
|
|
179
|
-
"payment.success",
|
|
180
|
-
"payment.failed",
|
|
181
|
-
"subscription.created",
|
|
182
|
-
"subscription.payment_succeeded",
|
|
183
|
-
"subscription.payment_failed",
|
|
184
|
-
"subscription.renewal_due",
|
|
185
|
-
"subscription.canceled"
|
|
186
|
-
);
|
|
187
|
-
var WebhookEvent = Schema.Struct({
|
|
188
|
-
type: WebhookEventType,
|
|
189
|
-
id: Schema.optional(Schema.String),
|
|
190
|
-
data: Schema.Union(
|
|
191
|
-
Payment,
|
|
192
|
-
Subscription,
|
|
193
|
-
Customer,
|
|
194
|
-
Schema.Struct({
|
|
195
|
-
id: Schema.String,
|
|
196
|
-
amount: Schema.optional(Schema.Number),
|
|
197
|
-
currency: Schema.optional(Schema.String),
|
|
198
|
-
status: Schema.String,
|
|
199
|
-
metadata: Schema.optional(Metadata)
|
|
200
|
-
})
|
|
201
|
-
),
|
|
202
|
-
is_test: Schema.Boolean,
|
|
203
|
-
created: Schema.optional(Schema.Number)
|
|
204
|
-
});
|
|
205
238
|
var PayArkErrorBody = Schema.Struct({
|
|
206
239
|
error: Schema.String,
|
|
207
240
|
details: Schema.optional(Schema.Any)
|
|
@@ -288,6 +321,8 @@ var PaymentsGroup = HttpApiGroup.make("payments").add(
|
|
|
288
321
|
).prefix("/v1/payments").middleware(SecurityMiddleware);
|
|
289
322
|
var CustomersGroup = HttpApiGroup.make("customers").add(
|
|
290
323
|
HttpApiEndpoint.post("create", "/").addSuccess(Customer, { status: 201 }).setPayload(CreateCustomerParams).addError(AuthenticationError, { status: 401 }).addError(ConflictError, { status: 409 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
|
|
324
|
+
).add(
|
|
325
|
+
HttpApiEndpoint.get("list", "/").addSuccess(PaginatedResponse(Customer)).setUrlParams(ListCustomersParams).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
|
|
291
326
|
).add(
|
|
292
327
|
HttpApiEndpoint.get("retrieve", "/:id").addSuccess(Customer).setPath(Schema.Struct({ id: Id })).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
|
|
293
328
|
).add(
|
|
@@ -352,7 +387,23 @@ var TokensGroup = HttpApiGroup.make("tokens").add(
|
|
|
352
387
|
).add(
|
|
353
388
|
HttpApiEndpoint.del("delete", "/:id").setPath(Schema.Struct({ id: TokenId })).addSuccess(Schema.Null).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 })
|
|
354
389
|
).prefix("/v1/tokens").middleware(UserSecurity);
|
|
355
|
-
var
|
|
390
|
+
var ProjectsGroup = HttpApiGroup.make("projects").add(
|
|
391
|
+
HttpApiEndpoint.get("list", "/").addSuccess(Schema.Array(Project)).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 })
|
|
392
|
+
).prefix("/v1/projects").middleware(SecurityMiddleware);
|
|
393
|
+
var CallbacksGroup = HttpApiGroup.make("callbacks").add(
|
|
394
|
+
HttpApiEndpoint.get("handle", "/:provider").addSuccess(Schema.Any).setPath(Schema.Struct({ provider: Schema.String })).setUrlParams(CallbackQueryParams).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
|
|
395
|
+
).prefix("/v1/callback");
|
|
396
|
+
var RealtimeGroup = HttpApiGroup.make("realtime").add(
|
|
397
|
+
HttpApiEndpoint.get("connect", "/").addSuccess(Schema.Any).setUrlParams(Schema.Struct({ token: Schema.String })).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 })
|
|
398
|
+
).add(
|
|
399
|
+
HttpApiEndpoint.post("trigger", "/trigger").addSuccess(
|
|
400
|
+
Schema.Struct({
|
|
401
|
+
status: Schema.String,
|
|
402
|
+
event: Schema.optional(Schema.String)
|
|
403
|
+
})
|
|
404
|
+
).setPayload(RealtimeTriggerPayload).setUrlParams(Schema.Struct({ token: Schema.optional(Schema.String) })).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 })
|
|
405
|
+
).prefix("/v1/realtime");
|
|
406
|
+
var PayArkApi = HttpApi.make("PayArkApi").add(CheckoutGroup).add(PaymentsGroup).add(CustomersGroup).add(SubscriptionsGroup).add(AutomationGroup).add(TokensGroup).add(ProjectsGroup).add(CallbacksGroup).add(RealtimeGroup).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(ConflictError, { status: 409 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 });
|
|
356
407
|
var PayArkEffectError = class extends Data.TaggedError("PayArkEffectError") {
|
|
357
408
|
/** Human-readable representation for logging/debugging. */
|
|
358
409
|
toString() {
|
|
@@ -575,6 +626,6 @@ var PayArk = class _PayArk extends Context.Tag("@payark/sdk-effect/PayArk")() {
|
|
|
575
626
|
static Live = (config) => Layer.succeed(_PayArk, new PayArkEffect(config));
|
|
576
627
|
};
|
|
577
628
|
|
|
578
|
-
export { AuthContext, AuthenticationError, AutomationGroup, CheckoutGroup, CheckoutSession, CheckoutSessionId, ConflictError, CreateCheckoutParams, CreateCustomerParams, CreateSubscriptionParams, CronSecurity, Customer, CustomerId, CustomersGroup, Email, Id, IndustrialError, InternalServerError, ListCustomersParams, ListPaymentsParams, ListSubscriptionsParams, Metadata, NotFoundError, PaginatedResponse, PaginationMeta, PayArk, PayArkApi, PayArkClient, PayArkConfig, PayArkEffect, PayArkEffectError, PayArkErrorBody, Payment, PaymentId, PaymentStatus, PaymentsGroup, Project, ProjectId, Provider, SecurityMiddleware, Subscription, SubscriptionId, SubscriptionInterval, SubscriptionStatus, SubscriptionsGroup, Timestamp, Timestamps, Token, TokenId, TokensGroup, UpdateCustomerParams, UserSecurity, WebhookEvent, WebhookEventType, makeClient };
|
|
629
|
+
export { AuthContext, AuthenticationError, AutomationGroup, CallbackQueryParams, CallbacksGroup, CheckoutGroup, CheckoutSession, CheckoutSessionId, ConflictError, CreateCheckoutParams, CreateCustomerParams, CreateSubscriptionParams, CronSecurity, Customer, CustomerId, CustomersGroup, Email, Id, IndustrialError, InternalServerError, ListCustomersParams, ListPaymentsParams, ListSubscriptionsParams, Metadata, NotFoundError, PaginatedResponse, PaginationMeta, PayArk, PayArkApi, PayArkClient, PayArkConfig, PayArkEffect, PayArkEffectError, PayArkErrorBody, Payment, PaymentId, PaymentStatus, PaymentsGroup, Project, ProjectId, ProjectsGroup, Provider, RealtimeGroup, RealtimeTriggerPayload, SecurityMiddleware, Subscription, SubscriptionId, SubscriptionInterval, SubscriptionStatus, SubscriptionsGroup, Timestamp, Timestamps, Token, TokenId, TokensGroup, UpdateCustomerParams, UserSecurity, WebhookEvent, WebhookEventType, makeClient };
|
|
579
630
|
//# sourceMappingURL=index.mjs.map
|
|
580
631
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas.ts","../src/api-spec.ts","../src/errors.ts","../src/http.ts","../src/resources/checkout.ts","../src/resources/payments.ts","../src/resources/projects.ts","../src/index.ts"],"names":["Schema","Context","Effect"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Schema } from \"effect\";\n\n/**\n * ── Branded Types ──\n */\nexport const Id = Schema.String.pipe(Schema.brand(\"Id\"));\nexport const ProjectId = Schema.String.pipe(Schema.brand(\"ProjectId\"));\nexport const PaymentId = Schema.String.pipe(Schema.brand(\"PaymentId\"));\nexport const CheckoutSessionId = Schema.String.pipe(\n Schema.brand(\"CheckoutSessionId\"),\n);\nexport const SubscriptionId = Schema.String.pipe(\n Schema.brand(\"SubscriptionId\"),\n);\nexport const CustomerId = Schema.String.pipe(Schema.brand(\"CustomerId\"));\nexport const TokenId = Schema.String.pipe(Schema.brand(\"TokenId\"));\n\nexport type Id = Schema.Schema.Type<typeof Id>;\nexport type ProjectId = Schema.Schema.Type<typeof ProjectId>;\nexport type PaymentId = Schema.Schema.Type<typeof PaymentId>;\nexport type CheckoutSessionId = Schema.Schema.Type<typeof CheckoutSessionId>;\nexport type SubscriptionId = Schema.Schema.Type<typeof SubscriptionId>;\nexport type CustomerId = Schema.Schema.Type<typeof CustomerId>;\nexport type TokenId = Schema.Schema.Type<typeof TokenId>;\n\n/**\n * ── Atomic Atoms ──\n */\nexport const Email = Schema.String.pipe(\n Schema.filter((s) => s.includes(\"@\")),\n Schema.brand(\"Email\"),\n);\nexport type Email = Schema.Schema.Type<typeof Email>;\n\nexport const Timestamp = Schema.String.pipe(Schema.brand(\"Timestamp\"));\nexport type Timestamp = Schema.Schema.Type<typeof Timestamp>;\n\nexport const Metadata = Schema.Record({\n key: Schema.String,\n value: Schema.Any,\n});\nexport type Metadata = Schema.Schema.Type<typeof Metadata>;\n\nexport const Timestamps = Schema.Struct({\n created_at: Timestamp,\n updated_at: Timestamp,\n});\nexport type Timestamps = Schema.Schema.Type<typeof Timestamps>;\n\n/**\n * ── Enums ──\n */\nexport const Provider = Schema.Literal(\n \"esewa\",\n \"khalti\",\n \"connectips\",\n \"imepay\",\n \"fonepay\",\n \"sandbox\",\n);\nexport type Provider = Schema.Schema.Type<typeof Provider>;\n\nexport const PaymentStatus = Schema.Literal(\"pending\", \"success\", \"failed\");\nexport type PaymentStatus = Schema.Schema.Type<typeof PaymentStatus>;\n\nexport const SubscriptionStatus = Schema.Literal(\n \"active\",\n \"past_due\",\n \"canceled\",\n \"paused\",\n);\nexport type SubscriptionStatus = Schema.Schema.Type<typeof SubscriptionStatus>;\n\nexport const SubscriptionInterval = Schema.Literal(\"month\", \"year\", \"week\");\nexport type SubscriptionInterval = Schema.Schema.Type<\n typeof SubscriptionInterval\n>;\n\n/**\n * ── Models ──\n */\n\nexport const Customer = Schema.Struct({\n id: CustomerId,\n merchant_customer_id: Schema.String,\n email: Schema.NullOr(Email),\n name: Schema.NullOr(Schema.String),\n phone: Schema.NullOr(Schema.String),\n project_id: ProjectId,\n metadata: Schema.NullOr(Metadata),\n created_at: Timestamp,\n updated_at: Schema.optional(Timestamp),\n});\nexport type Customer = Schema.Schema.Type<typeof Customer>;\n\nexport const Payment = Schema.Struct({\n id: PaymentId,\n project_id: ProjectId,\n amount: Schema.Number,\n currency: Schema.String,\n status: PaymentStatus,\n provider_ref: Schema.optional(Schema.NullOr(Schema.String)),\n metadata_json: Schema.optional(Schema.NullOr(Metadata)),\n gateway_response: Schema.optional(Schema.NullOr(Schema.Any)),\n created_at: Timestamp,\n updated_at: Schema.optional(Timestamp),\n});\nexport type Payment = Schema.Schema.Type<typeof Payment>;\n\nexport const Subscription = Schema.Struct({\n id: SubscriptionId,\n project_id: ProjectId,\n customer_id: CustomerId,\n status: SubscriptionStatus,\n amount: Schema.Number,\n currency: Schema.String,\n interval: SubscriptionInterval,\n interval_count: Schema.Number,\n current_period_start: Timestamp,\n current_period_end: Timestamp,\n payment_link: Schema.String,\n auto_send_link: Schema.Boolean,\n metadata: Schema.optional(Schema.NullOr(Metadata)),\n canceled_at: Schema.optional(Schema.NullOr(Timestamp)),\n created_at: Timestamp,\n updated_at: Schema.optional(Timestamp),\n});\nexport type Subscription = Schema.Schema.Type<typeof Subscription>;\n\nexport const Project = Schema.Struct({\n id: ProjectId,\n name: Schema.String,\n api_key_secret: Schema.String,\n created_at: Timestamp,\n});\nexport type Project = Schema.Schema.Type<typeof Project>;\n\nexport const Token = Schema.Struct({\n id: TokenId,\n name: Schema.String,\n scopes: Schema.Array(Schema.String),\n last_used_at: Schema.NullOr(Timestamp),\n expires_at: Schema.NullOr(Timestamp),\n created_at: Timestamp,\n});\nexport type Token = Schema.Schema.Type<typeof Token>;\n\n/**\n * ── Pagination ──\n */\nexport const PaginationMeta = Schema.Struct({\n total: Schema.NullOr(Schema.Number),\n limit: Schema.Number,\n offset: Schema.Number,\n});\nexport type PaginationMeta = Schema.Schema.Type<typeof PaginationMeta>;\n\nexport const PaginatedResponse = <A, I, R>(schema: Schema.Schema<A, I, R>) =>\n Schema.Struct({\n data: Schema.Array(schema),\n meta: PaginationMeta,\n });\n\nexport interface PaginatedResponse<T> {\n readonly data: readonly T[];\n readonly meta: PaginationMeta;\n}\n\n/**\n * ── Params & Inputs ──\n */\n\nexport const CreateCheckoutParams = Schema.Struct({\n amount: Schema.Number.pipe(Schema.greaterThan(0)),\n currency: Schema.optionalWith(Schema.String, { default: () => \"NPR\" }),\n provider: Provider,\n returnUrl: Schema.String,\n cancelUrl: Schema.optional(Schema.String),\n metadata: Schema.optional(Metadata),\n});\nexport type CreateCheckoutParams = Schema.Schema.Type<\n typeof CreateCheckoutParams\n>;\n\nexport const CheckoutSession = Schema.Struct({\n id: CheckoutSessionId,\n checkout_url: Schema.String,\n payment_method: Schema.Struct({\n type: Provider,\n url: Schema.optional(Schema.String),\n method: Schema.optional(Schema.Literal(\"GET\", \"POST\")),\n fields: Schema.optional(\n Schema.Record({ key: Schema.String, value: Schema.String }),\n ),\n }),\n});\nexport type CheckoutSession = Schema.Schema.Type<typeof CheckoutSession>;\n\nexport const CreateCustomerParams = Schema.Struct({\n merchant_customer_id: Schema.String,\n email: Schema.optional(Schema.String),\n name: Schema.optional(Schema.String),\n phone: Schema.optional(Schema.String),\n project_id: Schema.optional(ProjectId),\n metadata: Schema.optional(Metadata),\n});\nexport type CreateCustomerParams = Schema.Schema.Type<\n typeof CreateCustomerParams\n>;\n\nexport const ListPaymentsParams = Schema.Struct({\n limit: Schema.optional(Schema.NumberFromString),\n offset: Schema.optional(Schema.NumberFromString),\n projectId: Schema.optional(ProjectId),\n});\nexport type ListPaymentsParams = Schema.Schema.Type<typeof ListPaymentsParams>;\n\nexport const ListCustomersParams = Schema.Struct({\n limit: Schema.optional(Schema.NumberFromString),\n offset: Schema.optional(Schema.NumberFromString),\n email: Schema.optional(Schema.String),\n projectId: Schema.optional(ProjectId),\n});\nexport type ListCustomersParams = Schema.Schema.Type<\n typeof ListCustomersParams\n>;\n\nexport const UpdateCustomerParams = Schema.Struct({\n email: Schema.optional(Schema.String),\n name: Schema.optional(Schema.String),\n phone: Schema.optional(Schema.String),\n metadata: Schema.optional(Metadata),\n});\nexport type UpdateCustomerParams = Schema.Schema.Type<\n typeof UpdateCustomerParams\n>;\n\nexport const CreateSubscriptionParams = Schema.Struct({\n customer_id: CustomerId,\n amount: Schema.Number.pipe(Schema.greaterThan(0)),\n currency: Schema.optionalWith(Schema.String, { default: () => \"NPR\" }),\n interval: SubscriptionInterval,\n interval_count: Schema.optional(Schema.Number),\n project_id: Schema.optional(ProjectId),\n auto_send_link: Schema.optional(Schema.Boolean),\n metadata: Schema.optional(Metadata),\n});\nexport type CreateSubscriptionParams = Schema.Schema.Type<\n typeof CreateSubscriptionParams\n>;\n\nexport const ListSubscriptionsParams = Schema.Struct({\n limit: Schema.optional(Schema.NumberFromString),\n offset: Schema.optional(Schema.NumberFromString),\n projectId: Schema.optional(ProjectId),\n customerId: Schema.optional(CustomerId),\n status: Schema.optional(SubscriptionStatus),\n});\nexport type ListSubscriptionsParams = Schema.Schema.Type<\n typeof ListSubscriptionsParams\n>;\n\n/**\n * ── Client Config ──\n */\nexport const PayArkConfig = Schema.Struct({\n apiKey: Schema.String,\n baseUrl: Schema.optional(Schema.String),\n timeout: Schema.optional(Schema.Number),\n maxRetries: Schema.optional(Schema.Number),\n sandbox: Schema.optional(Schema.Boolean),\n});\nexport type PayArkConfig = Schema.Schema.Type<typeof PayArkConfig>;\n\n/**\n * ── Webhooks ──\n */\nexport const WebhookEventType = Schema.Literal(\n \"payment.success\",\n \"payment.failed\",\n \"subscription.created\",\n \"subscription.payment_succeeded\",\n \"subscription.payment_failed\",\n \"subscription.renewal_due\",\n \"subscription.canceled\",\n);\nexport type WebhookEventType = Schema.Schema.Type<typeof WebhookEventType>;\n\nexport const WebhookEvent = Schema.Struct({\n type: WebhookEventType,\n id: Schema.optional(Schema.String),\n data: Schema.Union(\n Payment,\n Subscription,\n Customer,\n Schema.Struct({\n id: Schema.String,\n amount: Schema.optional(Schema.Number),\n currency: Schema.optional(Schema.String),\n status: Schema.String,\n metadata: Schema.optional(Metadata),\n }),\n ),\n is_test: Schema.Boolean,\n created: Schema.optional(Schema.Number),\n});\nexport type WebhookEvent = Schema.Schema.Type<typeof WebhookEvent>;\n\n/**\n * ── Error Schemas ──\n */\nexport const PayArkErrorBody = Schema.Struct({\n error: Schema.String,\n details: Schema.optional(Schema.Any),\n});\nexport type PayArkErrorBody = Schema.Schema.Type<typeof PayArkErrorBody>;\n","import {\n HttpApi,\n HttpApiEndpoint,\n HttpApiGroup,\n HttpApiMiddleware,\n HttpApiSecurity,\n} from \"@effect/platform\";\nimport * as S from \"./schemas\";\nimport { Schema, Context } from \"effect\";\n\n/**\n * Industrial Error Schema with Status mapping.\n */\nexport class IndustrialError extends Schema.TaggedError<IndustrialError>()(\n \"IndustrialError\",\n {\n error: Schema.String,\n details: Schema.optional(Schema.Any),\n },\n) {}\n\nexport class AuthenticationError extends Schema.TaggedError<AuthenticationError>()(\n \"AuthenticationError\",\n {\n error: Schema.String,\n },\n) {}\n\nexport class NotFoundError extends Schema.TaggedError<NotFoundError>()(\n \"NotFoundError\",\n {\n error: Schema.String,\n },\n) {}\n\nexport class InternalServerError extends Schema.TaggedError<InternalServerError>()(\n \"InternalServerError\",\n {\n error: Schema.String,\n details: Schema.optional(Schema.Any),\n },\n) {}\n\nexport class ConflictError extends Schema.TaggedError<ConflictError>()(\n \"ConflictError\",\n {\n error: Schema.String,\n },\n) {}\n\n/**\n * PayArk Industrial API Specification.\n * Single source of truth for the entire platform.\n */\n\n// ── Security ─────────────────────────────────────────────────────────────\n\nexport interface AuthContext {\n readonly project?: { readonly id: string };\n readonly user?: { readonly id: string };\n}\n\nexport const AuthContext = Context.GenericTag<AuthContext>(\n \"@payark/sdk-effect/AuthContext\",\n);\n\nexport class SecurityMiddleware extends HttpApiMiddleware.Tag<SecurityMiddleware>()(\n \"SecurityMiddleware\",\n {\n security: {\n bearer: HttpApiSecurity.bearer,\n },\n provides: AuthContext,\n failure: Schema.Union(AuthenticationError, IndustrialError),\n },\n) {}\n\nexport class CronSecurity extends HttpApiMiddleware.Tag<CronSecurity>()(\n \"CronSecurity\",\n {\n security: {\n secret: HttpApiSecurity.apiKey({ in: \"header\", key: \"x-cron-secret\" }),\n },\n failure: Schema.Union(AuthenticationError, IndustrialError),\n },\n) {}\n\nexport class UserSecurity extends HttpApiMiddleware.Tag<UserSecurity>()(\n \"UserSecurity\",\n {\n security: {\n bearer: HttpApiSecurity.bearer,\n },\n provides: AuthContext,\n failure: Schema.Union(AuthenticationError, IndustrialError),\n },\n) {}\n\n// ── Checkout Group ───────────────────────────────────────────────────────\n\nexport const CheckoutGroup = HttpApiGroup.make(\"checkout\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(S.CheckoutSession)\n .setPayload(S.CreateCheckoutParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/checkout\")\n .middleware(SecurityMiddleware);\n\n// ── Payments Group ───────────────────────────────────────────────────────\n\nexport const PaymentsGroup = HttpApiGroup.make(\"payments\")\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(S.PaginatedResponse(S.Payment))\n .setUrlParams(S.ListPaymentsParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.get(\"retrieve\", \"/:id\")\n .addSuccess(S.Payment)\n .setPath(Schema.Struct({ id: S.Id }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/payments\")\n .middleware(SecurityMiddleware);\n\n// ── Customers Group ──────────────────────────────────────────────────────\n\nexport const CustomersGroup = HttpApiGroup.make(\"customers\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(S.Customer, { status: 201 })\n .setPayload(S.CreateCustomerParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.get(\"retrieve\", \"/:id\")\n .addSuccess(S.Customer)\n .setPath(Schema.Struct({ id: S.Id }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.patch(\"update\", \"/:id\")\n .addSuccess(S.Customer)\n .setPath(Schema.Struct({ id: S.Id }))\n .setPayload(S.UpdateCustomerParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.del(\"delete\", \"/:id\")\n .setPath(Schema.Struct({ id: S.Id }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/customers\")\n .middleware(SecurityMiddleware);\n\n// ── Subscriptions Group ──────────────────────────────────────────────────\n\nexport const SubscriptionsGroup = HttpApiGroup.make(\"subscriptions\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(S.Subscription, { status: 201 })\n .setPayload(S.CreateSubscriptionParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.get(\"retrieve\", \"/:id\")\n .addSuccess(S.Subscription)\n .setPath(Schema.Struct({ id: S.SubscriptionId }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(S.PaginatedResponse(S.Subscription))\n .setUrlParams(S.ListSubscriptionsParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.post(\"cancel\", \"/:id/cancel\")\n .addSuccess(S.Subscription)\n .setPath(Schema.Struct({ id: S.SubscriptionId }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.post(\"activate\", \"/:id/activate\")\n .addSuccess(\n Schema.Struct({\n checkout_url: Schema.String,\n payment_id: Schema.String,\n }),\n )\n .setPath(Schema.Struct({ id: S.SubscriptionId }))\n .setPayload(\n Schema.Struct({\n provider: S.Provider,\n returnUrl: Schema.String,\n cancelUrl: Schema.optional(Schema.String),\n }),\n )\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/subscriptions\");\n\n// ── Automation Group ─────────────────────────────────────────────────────\n\nexport const AutomationGroup = HttpApiGroup.make(\"automation\")\n .add(\n HttpApiEndpoint.post(\"reminders\", \"/reminders\")\n .addSuccess(\n Schema.Struct({\n message: Schema.String,\n count: Schema.Number,\n }),\n )\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.post(\"reaper\", \"/reaper\")\n .addSuccess(\n Schema.Struct({\n message: Schema.String,\n count: Schema.Number,\n }),\n )\n .addError(InternalServerError, { status: 500 }),\n )\n .prefix(\"/v1/automation\")\n .middleware(CronSecurity);\n\n// ── Tokens Group ─────────────────────────────────────────────────────────\n\nexport const TokensGroup = HttpApiGroup.make(\"tokens\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(\n Schema.Struct({\n ...S.Token.fields,\n token: Schema.String,\n }),\n )\n .setPayload(\n Schema.Struct({\n name: Schema.String,\n scopes: Schema.optionalWith(Schema.Array(Schema.String), {\n default: () => [],\n }),\n expires_in_days: Schema.optional(Schema.Number),\n }),\n )\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(Schema.Array(S.Token))\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.del(\"delete\", \"/:id\")\n .setPath(Schema.Struct({ id: S.TokenId }))\n .addSuccess(Schema.Null)\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 }),\n )\n .prefix(\"/v1/tokens\")\n .middleware(UserSecurity);\n\n// ── Unified API ──────────────────────────────────────────────────────────\n\nexport const PayArkApi = HttpApi.make(\"PayArkApi\")\n .add(CheckoutGroup)\n .add(PaymentsGroup)\n .add(CustomersGroup)\n .add(SubscriptionsGroup)\n .add(AutomationGroup)\n .add(TokensGroup)\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 });\n","import { Data } from \"effect\";\n\n/** Machine-readable error codes. */\nexport type PayArkErrorCode =\n | \"authentication_error\"\n | \"permission_error\"\n | \"invalid_request_error\"\n | \"not_found_error\"\n | \"rate_limit_error\"\n | \"api_error\"\n | \"connection_error\"\n | \"unknown_error\";\n\n/** Raw error payload from the API. */\nexport interface PayArkErrorBody {\n readonly error: string;\n readonly details?: any;\n}\n/**\n * Effect-compatible error class for PayArk SDK.\n * Extends Data.TaggedError for easy matching in Effect.catchTag.\n */\nexport class PayArkEffectError extends Data.TaggedError(\"PayArkEffectError\")<{\n readonly message: string;\n readonly statusCode: number;\n readonly code: PayArkErrorCode;\n readonly raw?: PayArkErrorBody;\n}> {\n /** Human-readable representation for logging/debugging. */\n override toString(): string {\n return `[PayArkEffectError: ${this.code}] ${this.message} (HTTP ${this.statusCode})`;\n }\n}\n","import { Effect, Context } from \"effect\";\nimport { HttpClient, HttpClientRequest } from \"@effect/platform\";\nimport { PayArkEffectError, type PayArkErrorCode } from \"./errors\";\nimport { PayArkConfig } from \"./schemas\";\n\n/** SDK version string for runtime introspection. */\nexport const SDK_VERSION = \"0.1.0\" as const;\n\n/**\n * Service tag for the PayArk configuration.\n */\nexport class PayArkConfigService extends Context.Tag(\"PayArkConfigService\")<\n PayArkConfigService,\n PayArkConfig\n>() {}\n\n/**\n * Executes an HTTP request using Effect and returns the JSON body or a PayArkEffectError.\n */\nexport const request = <T>(\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n path: string,\n options?: {\n readonly query?: Record<string, string | number | undefined>;\n readonly body?: any;\n readonly headers?: Record<string, string>;\n },\n): Effect.Effect<\n T,\n PayArkEffectError,\n PayArkConfigService | HttpClient.HttpClient\n> =>\n Effect.gen(function* (_) {\n const config = yield* _(PayArkConfigService);\n const client = yield* _(HttpClient.HttpClient);\n\n const baseUrl = (\n config.baseUrl ?? \"https://payark-api.codimo-dev.workers.dev\"\n ).replace(/\\/+$/, \"\");\n const url = new URL(`${baseUrl}${path}`);\n\n if (options?.query) {\n for (const [key, value] of Object.entries(options.query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${config.apiKey}`,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n \"User-Agent\": `payark-sdk-effect/${SDK_VERSION}`,\n ...options?.headers,\n };\n\n if (config.sandbox) {\n headers[\"x-sandbox-mode\"] = \"true\";\n }\n\n let req = HttpClientRequest.make(method)(url.toString()).pipe(\n HttpClientRequest.setHeaders(headers),\n );\n\n if (options?.body) {\n req = yield* _(\n HttpClientRequest.bodyJson(options.body)(req).pipe(\n Effect.mapError(\n (e) =>\n new PayArkEffectError({\n message: `Invalid request body: ${String(e)}`,\n statusCode: 400,\n code: \"invalid_request_error\",\n }),\n ),\n ),\n );\n }\n\n const response = yield* _(\n client.execute(req).pipe(\n Effect.mapError(\n (e) =>\n new PayArkEffectError({\n message: `Network error: ${e.message}`,\n statusCode: 0,\n code: \"connection_error\",\n }),\n ),\n ),\n );\n\n if (response.status >= 200 && response.status < 300) {\n if (response.status === 204) return {} as T;\n return (yield* _(\n response.json.pipe(\n Effect.mapError(\n (e) =>\n new PayArkEffectError({\n message: `Failed to parse response: ${String(e)}`,\n statusCode: response.status,\n code: \"api_error\",\n }),\n ),\n ),\n )) as T;\n }\n\n const errorBody: any = yield* _(\n response.json.pipe(\n Effect.catchAll(() => Effect.succeed({ error: undefined })),\n ),\n );\n\n return yield* _(\n Effect.fail(\n new PayArkEffectError({\n message:\n errorBody?.error || `Request failed with status ${response.status}`,\n statusCode: response.status,\n code: mapStatusToCode(response.status),\n raw: errorBody,\n }),\n ),\n );\n });\n\nfunction mapStatusToCode(status: number): PayArkErrorCode {\n if (status === 401) return \"authentication_error\";\n if (status === 403) return \"permission_error\";\n if (status === 400 || status === 422) return \"invalid_request_error\";\n if (status === 404) return \"not_found_error\";\n if (status === 429) return \"rate_limit_error\";\n if (status >= 500) return \"api_error\";\n return \"unknown_error\";\n}\n","import { Schema, ParseResult, Effect } from \"effect\";\nimport { PayArkConfigService, request } from \"../http\";\nimport {\n CheckoutSession,\n PayArkConfig,\n CreateCheckoutParams,\n} from \"../schemas\";\nimport { PayArkEffectError } from \"../errors\";\nimport type { HttpClient } from \"@effect/platform\";\n\n/**\n * Effect-based resource for PayArk Checkout.\n */\nexport class CheckoutEffect {\n constructor(private readonly config: PayArkConfig) {}\n\n /**\n * Create a new checkout session.\n *\n * @param params - Configuration for the checkout session.\n * @returns Effect that resolves to the created checkout session.\n */\n create(\n params: CreateCheckoutParams,\n ): Effect.Effect<\n CheckoutSession,\n PayArkEffectError | ParseResult.ParseError,\n HttpClient.HttpClient\n > {\n return request<unknown>(\"POST\", \"/v1/checkout\", { body: params }).pipe(\n Effect.flatMap(Schema.decodeUnknown(CheckoutSession)),\n Effect.provideService(PayArkConfigService, this.config),\n );\n }\n}\n","import { Schema, ParseResult, Effect } from \"effect\";\nimport { PayArkConfigService, request } from \"../http\";\nimport {\n Payment,\n PaginatedResponse,\n PayArkConfig,\n ListPaymentsParams,\n} from \"../schemas\";\nimport { PayArkEffectError } from \"../errors\";\nimport type { HttpClient } from \"@effect/platform\";\n\n/**\n * Effect-based resource for PayArk Payments.\n */\nexport class PaymentsEffect {\n constructor(private readonly config: PayArkConfig) {}\n\n /**\n * List payments for the authenticated project.\n *\n * @param params - Optional pagination parameters.\n * @returns Effect that resolves to paginated payments.\n */\n list(\n params: ListPaymentsParams = {},\n ): Effect.Effect<\n PaginatedResponse<Payment>,\n PayArkEffectError | ParseResult.ParseError,\n HttpClient.HttpClient\n > {\n return request<unknown>(\"GET\", \"/v1/payments\", {\n query: {\n limit: params.limit,\n offset: params.offset,\n projectId: params.projectId,\n },\n }).pipe(\n Effect.flatMap(Schema.decodeUnknown(PaginatedResponse(Payment))),\n Effect.provideService(PayArkConfigService, this.config),\n );\n }\n\n /**\n * Retrieve a single payment by its ID.\n *\n * @param id - The payment identifier.\n * @returns Effect that resolves to the payment object.\n */\n retrieve(\n id: string,\n ): Effect.Effect<\n Payment,\n PayArkEffectError | ParseResult.ParseError,\n HttpClient.HttpClient\n > {\n return request<unknown>(\n \"GET\",\n `/v1/payments/${encodeURIComponent(id)}`,\n ).pipe(\n Effect.flatMap(Schema.decodeUnknown(Payment)),\n Effect.provideService(PayArkConfigService, this.config),\n );\n }\n}\n","import { Schema, ParseResult, Effect } from \"effect\";\nimport { PayArkConfigService, request } from \"../http\";\nimport { Project, PayArkConfig } from \"../schemas\";\nimport { PayArkEffectError } from \"../errors\";\nimport type { HttpClient } from \"@effect/platform\";\n\n/**\n * Effect-based resource for PayArk Projects.\n */\nexport class ProjectsEffect {\n constructor(private readonly config: PayArkConfig) {}\n\n /**\n * List all projects belonging to the authenticated account.\n *\n * @returns Effect that resolves to an array of projects.\n */\n list(): Effect.Effect<\n readonly Project[],\n PayArkEffectError | ParseResult.ParseError,\n HttpClient.HttpClient\n > {\n return request<unknown>(\"GET\", \"/v1/projects\").pipe(\n Effect.flatMap(Schema.decodeUnknown(Schema.Array(Project))),\n Effect.provideService(PayArkConfigService, this.config),\n );\n }\n}\n","import { Context, Layer, Effect } from \"effect\";\nimport { HttpApiClient, HttpClient } from \"@effect/platform\";\nimport { PayArkApi } from \"./api-spec\";\nimport type { PayArkConfig } from \"./schemas\";\nimport { CheckoutEffect } from \"./resources/checkout\";\nimport { PaymentsEffect } from \"./resources/payments\";\nimport { ProjectsEffect } from \"./resources/projects\";\n\n/**\n * The Industrial SDK Client.\n * Automatically derived from the PayArk HttpApi specification.\n *\n * This provides perfect type-sync between the server and client.\n */\nexport const makeClient = (options?: {\n readonly baseUrl?: string;\n readonly httpClient?: HttpClient.HttpClient;\n}) => HttpApiClient.make(PayArkApi, options);\n\n/**\n * Service Tag for the Industrial Client.\n */\nexport class PayArkClient extends Context.Tag(\n \"@payark/sdk-effect/PayArkClient\",\n)<PayArkClient, Effect.Effect.Success<ReturnType<typeof makeClient>>>() {\n static readonly Live = (options?: {\n readonly baseUrl?: string;\n readonly httpClient?: HttpClient.HttpClient;\n }) => Layer.effect(PayArkClient, makeClient(options));\n}\n\n/**\n * Main entry point for the Effect-based PayArk API (Legacy wrapper).\n */\nexport class PayArkEffect {\n private _checkout?: CheckoutEffect;\n private _payments?: PaymentsEffect;\n private _projects?: ProjectsEffect;\n\n constructor(private readonly config: PayArkConfig) {}\n\n /**\n * Checkout sessions resource (Effect).\n */\n get checkout(): CheckoutEffect {\n if (!this._checkout) {\n this._checkout = new CheckoutEffect(this.config);\n }\n return this._checkout;\n }\n\n /**\n * Payments resource (Effect).\n */\n get payments(): PaymentsEffect {\n if (!this._payments) {\n this._payments = new PaymentsEffect(this.config);\n }\n return this._payments;\n }\n\n /**\n * Projects resource (Effect).\n */\n get projects(): ProjectsEffect {\n if (!this._projects) {\n this._projects = new ProjectsEffect(this.config);\n }\n return this._projects;\n }\n}\n\n/**\n * Service tag for the PayArk API (Legacy).\n */\nexport class PayArk extends Context.Tag(\"@payark/sdk-effect/PayArk\")<\n PayArk,\n PayArkEffect\n>() {\n /**\n * Create a Layer that provides the PayArk service.\n */\n static readonly Live = (config: PayArkConfig) =>\n Layer.succeed(PayArk, new PayArkEffect(config));\n}\n\nexport * from \"./api-spec\";\nexport { PayArkEffectError } from \"./errors\";\nexport * from \"./schemas\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/schemas/validation.ts","../src/schemas.ts","../src/api-spec.ts","../src/errors.ts","../src/http.ts","../src/resources/checkout.ts","../src/resources/payments.ts","../src/resources/projects.ts","../src/index.ts"],"names":["Schema","Context","Effect"],"mappings":";;;;AAMO,IAAM,cAAA,GAAiB,OAAO,MAAA,CAAO,IAAA;AAAA,EAC1C,OAAO,cAAA,EAAe;AAAA,EACtB,MAAA,CAAO,MAAM,gBAAgB;AAC/B,CAAA;AAGO,IAAM,SAAA,GAAY,OAAO,MAAA,CAAO,IAAA;AAAA,EACrC,MAAA,CAAO,QAAQ,gBAAgB,CAAA;AAAA,EAC/B,MAAA,CAAO,MAAM,WAAW;AAC1B,CAAA;AAGO,IAAM,aAAA,GAAgB,OAAO,MAAA,CAAO,IAAA;AAAA,EACzC,OAAO,GAAA,EAAI;AAAA,EACX,MAAA,CAAO,YAAY,CAAC,CAAA;AAAA,EACpB,MAAA,CAAO,MAAM,eAAe;AAC9B,CAAA;;;AChBO,IAAM,KAAKA,MAAAA,CAAO,MAAA,CAAO,KAAKA,MAAAA,CAAO,KAAA,CAAM,IAAI,CAAC;AAChD,IAAM,YAAYA,MAAAA,CAAO,MAAA,CAAO,KAAKA,MAAAA,CAAO,KAAA,CAAM,WAAW,CAAC;AAC9D,IAAM,YAAYA,MAAAA,CAAO,MAAA,CAAO,KAAKA,MAAAA,CAAO,KAAA,CAAM,WAAW,CAAC;AAC9D,IAAM,iBAAA,GAAoBA,OAAO,MAAA,CAAO,IAAA;AAAA,EAC7CA,MAAAA,CAAO,MAAM,mBAAmB;AAClC;AACO,IAAM,cAAA,GAAiBA,OAAO,MAAA,CAAO,IAAA;AAAA,EAC1CA,MAAAA,CAAO,MAAM,gBAAgB;AAC/B;AACO,IAAM,aAAaA,MAAAA,CAAO,MAAA,CAAO,KAAKA,MAAAA,CAAO,KAAA,CAAM,YAAY,CAAC;AAChE,IAAM,UAAUA,MAAAA,CAAO,MAAA,CAAO,KAAKA,MAAAA,CAAO,KAAA,CAAM,SAAS,CAAC;AAa1D,IAAM,KAAA,GAAQA,OAAO,MAAA,CAAO,IAAA;AAAA,EACjCA,OAAO,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA,EACpCA,MAAAA,CAAO,MAAM,OAAO;AACtB;AAGO,IAAM,YAAYA,MAAAA,CAAO,MAAA,CAAO,KAAKA,MAAAA,CAAO,KAAA,CAAM,WAAW,CAAC;AAG9D,IAAM,QAAA,GAAWA,OAAO,MAAA,CAAO;AAAA,EACpC,KAAKA,MAAAA,CAAO,MAAA;AAAA,EACZ,OAAOA,MAAAA,CAAO;AAChB,CAAC;AAGM,IAAM,UAAA,GAAaA,OAAO,MAAA,CAAO;AAAA,EACtC,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAC;AAMM,IAAM,WAAWA,MAAAA,CAAO,OAAA;AAAA,EAC7B,OAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF;AAGO,IAAM,aAAA,GAAgBA,MAAAA,CAAO,OAAA,CAAQ,SAAA,EAAW,WAAW,QAAQ;AAGnE,IAAM,qBAAqBA,MAAAA,CAAO,OAAA;AAAA,EACvC,QAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF;AAGO,IAAM,oBAAA,GAAuBA,MAAAA,CAAO,OAAA,CAAQ,OAAA,EAAS,QAAQ,MAAM;AASnE,IAAM,QAAA,GAAWA,OAAO,MAAA,CAAO;AAAA,EACpC,EAAA,EAAI,UAAA;AAAA,EACJ,oBAAA,EAAwB,cAAA;AAAA,EACxB,KAAA,EAAOA,MAAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AAAA,EAC1B,IAAA,EAAMA,MAAAA,CAAO,MAAA,CAAS,cAAc,CAAA;AAAA,EACpC,KAAA,EAAOA,MAAAA,CAAO,MAAA,CAAOA,MAAAA,CAAO,MAAM,CAAA;AAAA,EAClC,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAUA,MAAAA,CAAO,MAAA,CAAO,QAAQ,CAAA;AAAA,EAChC,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAYA,MAAAA,CAAO,QAAA,CAAS,SAAS;AACvC,CAAC;AAGM,IAAM,OAAA,GAAUA,OAAO,MAAA,CAAO;AAAA,EACnC,EAAA,EAAI,SAAA;AAAA,EACJ,UAAA,EAAY,SAAA;AAAA,EACZ,QAAQA,MAAAA,CAAO,MAAA;AAAA,EACf,UAAUA,MAAAA,CAAO,MAAA;AAAA,EACjB,MAAA,EAAQ,aAAA;AAAA,EACR,cAAcA,MAAAA,CAAO,QAAA,CAASA,OAAO,MAAA,CAAOA,MAAAA,CAAO,MAAM,CAAC,CAAA;AAAA,EAC1D,eAAeA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,EACtD,kBAAkBA,MAAAA,CAAO,QAAA,CAASA,OAAO,MAAA,CAAOA,MAAAA,CAAO,GAAG,CAAC,CAAA;AAAA,EAC3D,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAYA,MAAAA,CAAO,QAAA,CAAS,SAAS;AACvC,CAAC;AAGM,IAAM,YAAA,GAAeA,OAAO,MAAA,CAAO;AAAA,EACxC,EAAA,EAAI,cAAA;AAAA,EACJ,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EAAa,UAAA;AAAA,EACb,MAAA,EAAQ,kBAAA;AAAA,EACR,QAAQA,MAAAA,CAAO,MAAA;AAAA,EACf,UAAUA,MAAAA,CAAO,MAAA;AAAA,EACjB,QAAA,EAAU,oBAAA;AAAA,EACV,gBAAgBA,MAAAA,CAAO,MAAA;AAAA,EACvB,oBAAA,EAAsB,SAAA;AAAA,EACtB,kBAAA,EAAoB,SAAA;AAAA,EACpB,YAAA,EAAgB,SAAA;AAAA,EAChB,gBAAgBA,MAAAA,CAAO,OAAA;AAAA,EACvB,UAAUA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,EACjD,aAAaA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,EACrD,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAYA,MAAAA,CAAO,QAAA,CAAS,SAAS;AACvC,CAAC;AAGM,IAAM,OAAA,GAAUA,OAAO,MAAA,CAAO;AAAA,EACnC,EAAA,EAAI,SAAA;AAAA,EACJ,IAAA,EAAQ,cAAA;AAAA,EACR,gBAAgBA,MAAAA,CAAO,MAAA;AAAA,EACvB,UAAA,EAAY;AACd,CAAC;AAGM,IAAM,KAAA,GAAQA,OAAO,MAAA,CAAO;AAAA,EACjC,EAAA,EAAI,OAAA;AAAA,EACJ,IAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQA,MAAAA,CAAO,KAAA,CAAMA,MAAAA,CAAO,MAAM,CAAA;AAAA,EAClC,YAAA,EAAcA,MAAAA,CAAO,MAAA,CAAO,SAAS,CAAA;AAAA,EACrC,UAAA,EAAYA,MAAAA,CAAO,MAAA,CAAO,SAAS,CAAA;AAAA,EACnC,UAAA,EAAY;AACd,CAAC;AAMM,IAAM,cAAA,GAAiBA,OAAO,MAAA,CAAO;AAAA,EAC1C,KAAA,EAAOA,MAAAA,CAAO,MAAA,CAAOA,MAAAA,CAAO,MAAM,CAAA;AAAA,EAClC,OAAOA,MAAAA,CAAO,MAAA;AAAA,EACd,QAAQA,MAAAA,CAAO;AACjB,CAAC;AAGM,IAAM,iBAAA,GAAoB,CAAU,MAAA,KACzCA,MAAAA,CAAO,MAAA,CAAO;AAAA,EACZ,IAAA,EAAMA,MAAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAAA,EACzB,IAAA,EAAM;AACR,CAAC;AAUI,IAAM,mBAAmBA,MAAAA,CAAO,OAAA;AAAA,EACrC,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,gCAAA;AAAA,EACA,6BAAA;AAAA,EACA,0BAAA;AAAA,EACA;AACF;AAGO,IAAM,YAAA,GAAeA,OAAO,MAAA,CAAO;AAAA,EACxC,IAAA,EAAM,gBAAA;AAAA,EACN,EAAA,EAAIA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EACjC,MAAMA,MAAAA,CAAO,KAAA;AAAA,IACX,OAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACAA,OAAO,MAAA,CAAO;AAAA,MACZ,IAAIA,MAAAA,CAAO,MAAA;AAAA,MACX,MAAA,EAAQA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,MACrC,QAAA,EAAUA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,MACvC,QAAQA,MAAAA,CAAO,MAAA;AAAA,MACf,QAAA,EAAUA,MAAAA,CAAO,QAAA,CAAS,QAAQ;AAAA,KACnC;AAAA,GACH;AAAA,EACA,SAASA,MAAAA,CAAO,OAAA;AAAA,EAChB,OAAA,EAASA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM;AACxC,CAAC;AAOM,IAAM,oBAAA,GAAuBA,OAAO,MAAA,CAAO;AAAA,EAChD,MAAA,EAAQA,MAAAA,CAAO,QAAA,CAAW,aAAa,CAAA;AAAA,EACvC,QAAA,EAAUA,OAAO,YAAA,CAAaA,MAAAA,CAAO,QAAQ,EAAE,OAAA,EAAS,MAAM,KAAA,EAAO,CAAA;AAAA,EACrE,QAAA,EAAU,QAAA;AAAA,EACV,SAAA,EAAa,SAAA;AAAA,EACb,SAAA,EAAWA,MAAAA,CAAO,QAAA,CAAW,SAAS,CAAA;AAAA,EACtC,QAAA,EAAUA,MAAAA,CAAO,QAAA,CAAS,QAAQ,CAAA;AAAA,EAClC,cAAA,EAAgBA,MAAAA,CAAO,QAAA,CAAS,cAAc;AAChD,CAAC,CAAA,CAAE,IAAA;AAAA,EACDA,MAAAA,CAAO,MAAA,CAAO,CAAC,IAAA,KAAS;AACtB,IAAA,IAAI,CAAC,IAAA,CAAK,cAAA,IAAkB,CAAC,KAAK,MAAA,EAAQ;AACxC,MAAA,OAAO,wDAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAC;AACH;AAKO,IAAM,eAAA,GAAkBA,OAAO,MAAA,CAAO;AAAA,EAC3C,EAAA,EAAI,iBAAA;AAAA,EACJ,YAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgBA,OAAO,MAAA,CAAO;AAAA,IAC5B,IAAA,EAAM,QAAA;AAAA,IACN,GAAA,EAAKA,MAAAA,CAAO,QAAA,CAAW,SAAS,CAAA;AAAA,IAChC,QAAQA,MAAAA,CAAO,QAAA,CAASA,OAAO,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAC,CAAA;AAAA,IACrD,QAAQA,MAAAA,CAAO,QAAA;AAAA,MACbA,MAAAA,CAAO,OAAO,EAAE,GAAA,EAAKA,OAAO,MAAA,EAAQ,KAAA,EAAOA,MAAAA,CAAO,MAAA,EAAQ;AAAA;AAC5D,GACD;AACH,CAAC;AAGM,IAAM,oBAAA,GAAuBA,OAAO,MAAA,CAAO;AAAA,EAChD,oBAAA,EAAwB,cAAA;AAAA,EACxB,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAAS,KAAK,CAAA;AAAA,EAC5B,IAAA,EAAMA,MAAAA,CAAO,QAAA,CAAW,cAAc,CAAA;AAAA,EACtC,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EACpC,UAAA,EAAYA,MAAAA,CAAO,QAAA,CAAS,SAAS,CAAA;AAAA,EACrC,QAAA,EAAUA,MAAAA,CAAO,QAAA,CAAS,QAAQ;AACpC,CAAC;AAKM,IAAM,kBAAA,GAAqBA,OAAO,MAAA,CAAO;AAAA,EAC9C,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,gBAAgB,CAAA;AAAA,EAC9C,MAAA,EAAQA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,gBAAgB,CAAA;AAAA,EAC/C,SAAA,EAAWA,MAAAA,CAAO,QAAA,CAAS,SAAS;AACtC,CAAC;AAGM,IAAM,mBAAA,GAAsBA,OAAO,MAAA,CAAO;AAAA,EAC/C,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,gBAAgB,CAAA;AAAA,EAC9C,MAAA,EAAQA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,gBAAgB,CAAA;AAAA,EAC/C,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EACpC,oBAAA,EAAsBA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EACnD,SAAA,EAAWA,MAAAA,CAAO,QAAA,CAAS,SAAS;AACtC,CAAC;AAKM,IAAM,oBAAA,GAAuBA,OAAO,MAAA,CAAO;AAAA,EAChD,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAAS,KAAK,CAAA;AAAA,EAC5B,IAAA,EAAMA,MAAAA,CAAO,QAAA,CAAW,cAAc,CAAA;AAAA,EACtC,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EACpC,QAAA,EAAUA,MAAAA,CAAO,QAAA,CAAS,QAAQ;AACpC,CAAC;AAKM,IAAM,wBAAA,GAA2BA,OAAO,MAAA,CAAO;AAAA,EACpD,WAAA,EAAa,UAAA;AAAA,EACb,MAAA,EAAU,aAAA;AAAA,EACV,QAAA,EAAUA,OAAO,YAAA,CAAaA,MAAAA,CAAO,QAAQ,EAAE,OAAA,EAAS,MAAM,KAAA,EAAO,CAAA;AAAA,EACrE,QAAA,EAAU,oBAAA;AAAA,EACV,cAAA,EAAgBA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EAC7C,UAAA,EAAYA,MAAAA,CAAO,QAAA,CAAS,SAAS,CAAA;AAAA,EACrC,cAAA,EAAgBA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,OAAO,CAAA;AAAA,EAC9C,QAAA,EAAUA,MAAAA,CAAO,QAAA,CAAS,QAAQ;AACpC,CAAC;AAKM,IAAM,mBAAA,GAAsBA,OAAO,MAAA,CAAO;AAAA,EAC/C,UAAA,EAAYA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EACzC,IAAA,EAAMA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EACnC,IAAA,EAAMA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM;AACrC,CAAC;AAKM,IAAM,uBAAA,GAA0BA,OAAO,MAAA,CAAO;AAAA,EACnD,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,gBAAgB,CAAA;AAAA,EAC9C,MAAA,EAAQA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,gBAAgB,CAAA;AAAA,EAC/C,SAAA,EAAWA,MAAAA,CAAO,QAAA,CAAS,SAAS,CAAA;AAAA,EACpC,UAAA,EAAYA,MAAAA,CAAO,QAAA,CAAS,UAAU,CAAA;AAAA,EACtC,MAAA,EAAQA,MAAAA,CAAO,QAAA,CAAS,kBAAkB;AAC5C,CAAC;AAKM,IAAM,sBAAA,GAAyBA,OAAO,MAAA,CAAO;AAAA,EAClD,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAAS,gBAAgB,CAAA;AAAA,EACvC,IAAA,EAAMA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,GAAG;AAClC,CAAC;AAQM,IAAM,YAAA,GAAeA,OAAO,MAAA,CAAO;AAAA,EACxC,QAAQA,MAAAA,CAAO,MAAA;AAAA,EACf,OAAA,EAASA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EACtC,OAAA,EAASA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EACtC,UAAA,EAAYA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA;AAAA,EACzC,OAAA,EAASA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,OAAO;AACzC,CAAC;AAMM,IAAM,eAAA,GAAkBA,OAAO,MAAA,CAAO;AAAA,EAC3C,OAAOA,MAAAA,CAAO,MAAA;AAAA,EACd,OAAA,EAASA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,GAAG;AACrC,CAAC;ACxUM,IAAM,eAAA,GAAN,cAA8BA,MAAAA,CAAO,WAAA,EAA6B;AAAA,EACvE,iBAAA;AAAA,EACA;AAAA,IACE,OAAOA,MAAAA,CAAO,MAAA;AAAA,IACd,OAAA,EAASA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,GAAG;AAAA;AAEvC,CAAA,CAAE;AAAC;AAEI,IAAM,mBAAA,GAAN,cAAkCA,MAAAA,CAAO,WAAA,EAAiC;AAAA,EAC/E,qBAAA;AAAA,EACA;AAAA,IACE,OAAOA,MAAAA,CAAO;AAAA;AAElB,CAAA,CAAE;AAAC;AAEI,IAAM,aAAA,GAAN,cAA4BA,MAAAA,CAAO,WAAA,EAA2B;AAAA,EACnE,eAAA;AAAA,EACA;AAAA,IACE,OAAOA,MAAAA,CAAO;AAAA;AAElB,CAAA,CAAE;AAAC;AAEI,IAAM,mBAAA,GAAN,cAAkCA,MAAAA,CAAO,WAAA,EAAiC;AAAA,EAC/E,qBAAA;AAAA,EACA;AAAA,IACE,OAAOA,MAAAA,CAAO,MAAA;AAAA,IACd,OAAA,EAASA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,GAAG;AAAA;AAEvC,CAAA,CAAE;AAAC;AAEI,IAAM,aAAA,GAAN,cAA4BA,MAAAA,CAAO,WAAA,EAA2B;AAAA,EACnE,eAAA;AAAA,EACA;AAAA,IACE,OAAOA,MAAAA,CAAO;AAAA;AAElB,CAAA,CAAE;AAAC;AAcI,IAAM,cAAc,OAAA,CAAQ,UAAA;AAAA,EACjC;AACF;AAEO,IAAM,kBAAA,GAAN,cAAiC,iBAAA,CAAkB,GAAA,EAAwB;AAAA,EAChF,oBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,QAAQ,eAAA,CAAgB;AAAA,KAC1B;AAAA,IACA,QAAA,EAAU,WAAA;AAAA,IACV,OAAA,EAASA,MAAAA,CAAO,KAAA,CAAM,mBAAA,EAAqB,eAAe;AAAA;AAE9D,CAAA,CAAE;AAAC;AAEI,IAAM,YAAA,GAAN,cAA2B,iBAAA,CAAkB,GAAA,EAAkB;AAAA,EACpE,cAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ,gBAAgB,MAAA,CAAO,EAAE,IAAI,QAAA,EAAU,GAAA,EAAK,iBAAiB;AAAA,KACvE;AAAA,IACA,OAAA,EAASA,MAAAA,CAAO,KAAA,CAAM,mBAAA,EAAqB,eAAe;AAAA;AAE9D,CAAA,CAAE;AAAC;AAEI,IAAM,YAAA,GAAN,cAA2B,iBAAA,CAAkB,GAAA,EAAkB;AAAA,EACpE,cAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,QAAQ,eAAA,CAAgB;AAAA,KAC1B;AAAA,IACA,QAAA,EAAU,WAAA;AAAA,IACV,OAAA,EAASA,MAAAA,CAAO,KAAA,CAAM,mBAAA,EAAqB,eAAe;AAAA;AAE9D,CAAA,CAAE;AAAC;AAII,IAAM,aAAA,GAAgB,YAAA,CAAa,IAAA,CAAK,UAAU,CAAA,CACtD,GAAA;AAAA,EACC,eAAA,CAAgB,IAAA,CAAK,QAAA,EAAU,GAAG,CAAA,CAC/B,UAAA,CAAa,eAAe,CAAA,CAC5B,UAAA,CAAa,oBAAoB,CAAA,CACjC,QAAA,CAAS,qBAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,eAAA,EAAiB,EAAE,MAAA,EAAQ,KAAK;AAC9C,CAAA,CACC,MAAA,CAAO,cAAc,CAAA,CACrB,UAAA,CAAW,kBAAkB;AAIzB,IAAM,aAAA,GAAgB,YAAA,CAAa,IAAA,CAAK,UAAU,CAAA,CACtD,GAAA;AAAA,EACC,eAAA,CAAgB,GAAA,CAAI,MAAA,EAAQ,GAAG,EAC5B,UAAA,CAAa,iBAAA,CAAoB,OAAO,CAAC,CAAA,CACzC,YAAA,CAAe,kBAAkB,CAAA,CACjC,SAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,eAAA,EAAiB,EAAE,MAAA,EAAQ,KAAK;AAC9C,CAAA,CACC,GAAA;AAAA,EACC,gBAAgB,GAAA,CAAI,UAAA,EAAY,MAAM,CAAA,CACnC,UAAA,CAAa,OAAO,CAAA,CACpB,OAAA,CAAQA,OAAO,MAAA,CAAO,EAAE,IAAM,EAAA,EAAI,CAAC,CAAA,CACnC,QAAA,CAAS,qBAAqB,EAAE,MAAA,EAAQ,KAAK,CAAA,CAC7C,SAAS,aAAA,EAAe,EAAE,QAAQ,GAAA,EAAK,EACvC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,iBAAiB,EAAE,MAAA,EAAQ,KAAK;AAC9C,CAAA,CACC,MAAA,CAAO,cAAc,CAAA,CACrB,UAAA,CAAW,kBAAkB;AAIzB,IAAM,cAAA,GAAiB,YAAA,CAAa,IAAA,CAAK,WAAW,CAAA,CACxD,GAAA;AAAA,EACC,gBAAgB,IAAA,CAAK,QAAA,EAAU,GAAG,CAAA,CAC/B,UAAA,CAAa,UAAU,EAAE,MAAA,EAAQ,GAAA,EAAK,EACtC,UAAA,CAAa,oBAAoB,EACjC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,SAAS,aAAA,EAAe,EAAE,QAAQ,GAAA,EAAK,EACvC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,iBAAiB,EAAE,MAAA,EAAQ,KAAK;AAC9C,CAAA,CACC,GAAA;AAAA,EACC,eAAA,CAAgB,GAAA,CAAI,MAAA,EAAQ,GAAG,EAC5B,UAAA,CAAa,iBAAA,CAAoB,QAAQ,CAAC,CAAA,CAC1C,YAAA,CAAe,mBAAmB,CAAA,CAClC,SAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,eAAA,EAAiB,EAAE,MAAA,EAAQ,KAAK;AAC9C,CAAA,CACC,GAAA;AAAA,EACC,gBAAgB,GAAA,CAAI,UAAA,EAAY,MAAM,CAAA,CACnC,UAAA,CAAa,QAAQ,CAAA,CACrB,OAAA,CAAQA,OAAO,MAAA,CAAO,EAAE,IAAM,EAAA,EAAI,CAAC,CAAA,CACnC,QAAA,CAAS,qBAAqB,EAAE,MAAA,EAAQ,KAAK,CAAA,CAC7C,SAAS,aAAA,EAAe,EAAE,QAAQ,GAAA,EAAK,EACvC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,iBAAiB,EAAE,MAAA,EAAQ,KAAK;AAC9C,CAAA,CACC,GAAA;AAAA,EACC,eAAA,CAAgB,KAAA,CAAM,QAAA,EAAU,MAAM,CAAA,CACnC,WAAa,QAAQ,CAAA,CACrB,OAAA,CAAQA,MAAAA,CAAO,MAAA,CAAO,EAAE,IAAM,EAAA,EAAI,CAAC,CAAA,CACnC,UAAA,CAAa,oBAAoB,EACjC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,EAC7C,QAAA,CAAS,aAAA,EAAe,EAAE,MAAA,EAAQ,GAAA,EAAK,EACvC,QAAA,CAAS,aAAA,EAAe,EAAE,MAAA,EAAQ,GAAA,EAAK,EACvC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,eAAA,EAAiB,EAAE,MAAA,EAAQ,GAAA,EAAK;AAC9C,CAAA,CACC,GAAA;AAAA,EACC,eAAA,CAAgB,IAAI,QAAA,EAAU,MAAM,EACjC,OAAA,CAAQA,MAAAA,CAAO,OAAO,EAAE,EAAA,EAAM,IAAI,CAAC,EACnC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,aAAA,EAAe,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CACvC,QAAA,CAAS,eAAe,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CACvC,QAAA,CAAS,qBAAqB,EAAE,MAAA,EAAQ,KAAK,CAAA,CAC7C,SAAS,eAAA,EAAiB,EAAE,MAAA,EAAQ,GAAA,EAAK;AAC9C,CAAA,CACC,MAAA,CAAO,eAAe,CAAA,CACtB,UAAA,CAAW,kBAAkB;AAIzB,IAAM,kBAAA,GAAqB,YAAA,CAAa,IAAA,CAAK,eAAe,CAAA,CAChE,GAAA;AAAA,EACC,gBAAgB,IAAA,CAAK,QAAA,EAAU,GAAG,CAAA,CAC/B,WAAa,YAAA,EAAc,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC1C,UAAA,CAAa,wBAAwB,CAAA,CACrC,SAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,mBAAA,EAAqB,EAAE,QAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,iBAAiB,EAAE,MAAA,EAAQ,KAAK,CAAA,CACzC,WAAW,kBAAkB;AAClC,CAAA,CACC,GAAA;AAAA,EACC,gBAAgB,GAAA,CAAI,UAAA,EAAY,MAAM,CAAA,CACnC,WAAa,YAAY,CAAA,CACzB,OAAA,CAAQA,MAAAA,CAAO,OAAO,EAAE,EAAA,EAAM,gBAAgB,CAAC,EAC/C,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,KAAK,CAAA,CAC7C,SAAS,aAAA,EAAe,EAAE,QAAQ,GAAA,EAAK,CAAA,CACvC,QAAA,CAAS,qBAAqB,EAAE,MAAA,EAAQ,KAAK,CAAA,CAC7C,WAAW,kBAAkB;AAClC,CAAA,CACC,GAAA;AAAA,EACC,eAAA,CAAgB,GAAA,CAAI,MAAA,EAAQ,GAAG,CAAA,CAC5B,UAAA,CAAa,iBAAA,CAAoB,YAAY,CAAC,CAAA,CAC9C,YAAA,CAAe,uBAAuB,CAAA,CACtC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,UAAA,CAAW,kBAAkB;AAClC,CAAA,CACC,GAAA;AAAA,EACC,gBAAgB,IAAA,CAAK,QAAA,EAAU,aAAa,CAAA,CACzC,WAAa,YAAY,CAAA,CACzB,OAAA,CAAQA,MAAAA,CAAO,OAAO,EAAE,EAAA,EAAM,gBAAgB,CAAC,EAC/C,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,KAAK,CAAA,CAC7C,SAAS,aAAA,EAAe,EAAE,QAAQ,GAAA,EAAK,CAAA,CACvC,QAAA,CAAS,qBAAqB,EAAE,MAAA,EAAQ,KAAK,CAAA,CAC7C,WAAW,kBAAkB;AAClC,CAAA,CACC,GAAA;AAAA,EACC,eAAA,CAAgB,IAAA,CAAK,UAAA,EAAY,eAAe,CAAA,CAC7C,UAAA;AAAA,IACCA,OAAO,MAAA,CAAO;AAAA,MACZ,cAAcA,MAAAA,CAAO,MAAA;AAAA,MACrB,YAAYA,MAAAA,CAAO;AAAA,KACpB;AAAA,GACH,CACC,QAAQA,MAAAA,CAAO,MAAA,CAAO,EAAE,EAAA,EAAM,cAAA,EAAgB,CAAC,CAAA,CAC/C,UAAA;AAAA,IACCA,OAAO,MAAA,CAAO;AAAA,MACZ,QAAA,EAAY,QAAA;AAAA,MACZ,WAAWA,MAAAA,CAAO,MAAA;AAAA,MAClB,SAAA,EAAWA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM;AAAA,KACzC;AAAA,GACH,CACC,SAAS,aAAA,EAAe,EAAE,QAAQ,GAAA,EAAK,EACvC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,iBAAiB,EAAE,MAAA,EAAQ,KAAK;AAC9C,CAAA,CACC,OAAO,mBAAmB;AAItB,IAAM,eAAA,GAAkB,YAAA,CAAa,IAAA,CAAK,YAAY,CAAA,CAC1D,GAAA;AAAA,EACC,eAAA,CAAgB,IAAA,CAAK,WAAA,EAAa,YAAY,CAAA,CAC3C,UAAA;AAAA,IACCA,OAAO,MAAA,CAAO;AAAA,MACZ,SAASA,MAAAA,CAAO,MAAA;AAAA,MAChB,OAAOA,MAAAA,CAAO;AAAA,KACf;AAAA,IAEF,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,KAAK;AAClD,CAAA,CACC,GAAA;AAAA,EACC,eAAA,CAAgB,IAAA,CAAK,QAAA,EAAU,SAAS,CAAA,CACrC,UAAA;AAAA,IACCA,OAAO,MAAA,CAAO;AAAA,MACZ,SAASA,MAAAA,CAAO,MAAA;AAAA,MAChB,OAAOA,MAAAA,CAAO;AAAA,KACf;AAAA,IAEF,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,KAAK;AAClD,CAAA,CACC,MAAA,CAAO,gBAAgB,CAAA,CACvB,UAAA,CAAW,YAAY;AAInB,IAAM,WAAA,GAAc,YAAA,CAAa,IAAA,CAAK,QAAQ,CAAA,CAClD,GAAA;AAAA,EACC,eAAA,CAAgB,IAAA,CAAK,QAAA,EAAU,GAAG,CAAA,CAC/B,UAAA;AAAA,IACCA,OAAO,MAAA,CAAO;AAAA,MACZ,GAAK,KAAA,CAAM,MAAA;AAAA,MACX,OAAOA,MAAAA,CAAO;AAAA,KACf;AAAA,GACH,CACC,UAAA;AAAA,IACCA,OAAO,MAAA,CAAO;AAAA,MACZ,MAAMA,MAAAA,CAAO,MAAA;AAAA,MACb,QAAQA,MAAAA,CAAO,YAAA,CAAaA,OAAO,KAAA,CAAMA,MAAAA,CAAO,MAAM,CAAA,EAAG;AAAA,QACvD,OAAA,EAAS,MAAM;AAAC,OACjB,CAAA;AAAA,MACD,eAAA,EAAiBA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM;AAAA,KAC/C;AAAA,GACH,CACC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,KAAK;AAClD,CAAA,CACC,GAAA;AAAA,EACC,eAAA,CAAgB,IAAI,MAAA,EAAQ,GAAG,EAC5B,UAAA,CAAWA,MAAAA,CAAO,KAAA,CAAQ,KAAK,CAAC,CAAA,CAChC,SAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,SAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK;AAClD,CAAA,CACC,GAAA;AAAA,EACC,gBAAgB,GAAA,CAAI,QAAA,EAAU,MAAM,CAAA,CACjC,QAAQA,MAAAA,CAAO,MAAA,CAAO,EAAE,EAAA,EAAM,SAAS,CAAC,CAAA,CACxC,UAAA,CAAWA,OAAO,IAAI,CAAA,CACtB,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,SAAS,aAAA,EAAe,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CACvC,QAAA,CAAS,qBAAqB,EAAE,MAAA,EAAQ,KAAK;AAClD,CAAA,CACC,MAAA,CAAO,YAAY,CAAA,CACnB,UAAA,CAAW,YAAY;AAInB,IAAM,aAAA,GAAgB,YAAA,CAAa,IAAA,CAAK,UAAU,CAAA,CACtD,GAAA;AAAA,EACC,eAAA,CAAgB,IAAI,MAAA,EAAQ,GAAG,EAC5B,UAAA,CAAWA,MAAAA,CAAO,KAAA,CAAQ,OAAO,CAAC,CAAA,CAClC,SAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,SAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK;AAClD,CAAA,CACC,MAAA,CAAO,cAAc,CAAA,CACrB,UAAA,CAAW,kBAAkB;AAIzB,IAAM,cAAA,GAAiB,YAAA,CAAa,IAAA,CAAK,WAAW,CAAA,CACxD,GAAA;AAAA,EACC,gBAAgB,GAAA,CAAI,QAAA,EAAU,YAAY,CAAA,CACvC,UAAA,CAAWA,OAAO,GAAG,CAAA,CACrB,OAAA,CAAQA,MAAAA,CAAO,OAAO,EAAE,QAAA,EAAUA,OAAO,MAAA,EAAQ,CAAC,CAAA,CAClD,YAAA,CAAe,mBAAmB,CAAA,CAClC,SAAS,aAAA,EAAe,EAAE,QAAQ,GAAA,EAAK,EACvC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,iBAAiB,EAAE,MAAA,EAAQ,KAAK;AAC9C,CAAA,CACC,OAAO,cAAc;AAIjB,IAAM,aAAA,GAAgB,YAAA,CAAa,IAAA,CAAK,UAAU,CAAA,CACtD,GAAA;AAAA,EACC,eAAA,CAAgB,GAAA,CAAI,SAAA,EAAW,GAAG,CAAA,CAC/B,UAAA,CAAWA,MAAAA,CAAO,GAAG,CAAA,CACrB,YAAA,CAAaA,MAAAA,CAAO,MAAA,CAAO,EAAE,KAAA,EAAOA,MAAAA,CAAO,MAAA,EAAQ,CAAC,CAAA,CACpD,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,KAAK;AAClD,CAAA,CACC,GAAA;AAAA,EACC,eAAA,CAAgB,IAAA,CAAK,SAAA,EAAW,UAAU,CAAA,CACvC,UAAA;AAAA,IACCA,OAAO,MAAA,CAAO;AAAA,MACZ,QAAQA,MAAAA,CAAO,MAAA;AAAA,MACf,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM;AAAA,KACrC;AAAA,GACH,CACC,UAAA,CAAa,sBAAsB,CAAA,CACnC,YAAA,CAAaA,MAAAA,CAAO,MAAA,CAAO,EAAE,KAAA,EAAOA,MAAAA,CAAO,QAAA,CAASA,MAAAA,CAAO,MAAM,CAAA,EAAG,CAAC,CAAA,CACrE,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,KAAK;AAClD,CAAA,CACC,OAAO,cAAc;AAIjB,IAAM,SAAA,GAAY,OAAA,CAAQ,IAAA,CAAK,WAAW,CAAA,CAC9C,GAAA,CAAI,aAAa,CAAA,CACjB,GAAA,CAAI,aAAa,CAAA,CACjB,GAAA,CAAI,cAAc,CAAA,CAClB,GAAA,CAAI,kBAAkB,CAAA,CACtB,GAAA,CAAI,eAAe,CAAA,CACnB,GAAA,CAAI,WAAW,CAAA,CACf,GAAA,CAAI,aAAa,CAAA,CACjB,GAAA,CAAI,cAAc,CAAA,CAClB,IAAI,aAAa,CAAA,CACjB,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,aAAA,EAAe,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CACvC,SAAS,aAAA,EAAe,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CACvC,QAAA,CAAS,mBAAA,EAAqB,EAAE,MAAA,EAAQ,GAAA,EAAK,CAAA,CAC7C,QAAA,CAAS,eAAA,EAAiB,EAAE,MAAA,EAAQ,KAAK;ACtWrC,IAAM,iBAAA,GAAN,cAAgC,IAAA,CAAK,WAAA,CAAY,mBAAmB,CAAA,CAKxE;AAAA;AAAA,EAEQ,QAAA,GAAmB;AAC1B,IAAA,OAAO,CAAA,oBAAA,EAAuB,KAAK,IAAI,CAAA,EAAA,EAAK,KAAK,OAAO,CAAA,OAAA,EAAU,KAAK,UAAU,CAAA,CAAA,CAAA;AAAA,EACnF;AACF;;;AC1BO,IAAM,WAAA,GAAc,OAAA;AAKpB,IAAM,sBAAN,cAAkCC,OAAAA,CAAQ,GAAA,CAAI,qBAAqB,GAGxE,CAAE;AAAC,CAAA;AAKE,IAAM,OAAA,GAAU,CACrB,MAAA,EACA,IAAA,EACA,YAUA,MAAA,CAAO,GAAA,CAAI,WAAW,CAAA,EAAG;AACvB,EAAA,MAAM,MAAA,GAAS,OAAO,CAAA,CAAE,mBAAmB,CAAA;AAC3C,EAAA,MAAM,MAAA,GAAS,OAAO,CAAA,CAAE,UAAA,CAAW,UAAU,CAAA;AAE7C,EAAA,MAAM,WACJ,MAAA,CAAO,OAAA,IAAW,2CAAA,EAClB,OAAA,CAAQ,QAAQ,EAAE,CAAA;AACpB,EAAA,MAAM,MAAM,IAAI,GAAA,CAAI,GAAG,OAAO,CAAA,EAAG,IAAI,CAAA,CAAE,CAAA;AAEvC,EAAA,IAAI,SAAS,KAAA,EAAO;AAClB,IAAA,KAAA,MAAW,CAAC,KAAK,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxD,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAkC;AAAA,IACtC,aAAA,EAAe,CAAA,OAAA,EAAU,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,IACtC,cAAA,EAAgB,kBAAA;AAAA,IAChB,MAAA,EAAQ,kBAAA;AAAA,IACR,YAAA,EAAc,qBAAqB,WAAW,CAAA,CAAA;AAAA,IAC9C,GAAG,OAAA,EAAS;AAAA,GACd;AAEA,EAAA,IAAI,OAAO,OAAA,EAAS;AAClB,IAAA,OAAA,CAAQ,gBAAgB,CAAA,GAAI,MAAA;AAAA,EAC9B;AAEA,EAAA,IAAI,GAAA,GAAM,kBAAkB,IAAA,CAAK,MAAM,EAAE,GAAA,CAAI,QAAA,EAAU,CAAA,CAAE,IAAA;AAAA,IACvD,iBAAA,CAAkB,WAAW,OAAO;AAAA,GACtC;AAEA,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,GAAA,GAAM,OAAO,CAAA;AAAA,MACX,kBAAkB,QAAA,CAAS,OAAA,CAAQ,IAAI,CAAA,CAAE,GAAG,CAAA,CAAE,IAAA;AAAA,QAC5C,MAAA,CAAO,QAAA;AAAA,UACL,CAAC,CAAA,KACC,IAAI,iBAAA,CAAkB;AAAA,YACpB,OAAA,EAAS,CAAA,sBAAA,EAAyB,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA;AAAA,YAC3C,UAAA,EAAY,GAAA;AAAA,YACZ,IAAA,EAAM;AAAA,WACP;AAAA;AACL;AACF,KACF;AAAA,EACF;AAEA,EAAA,MAAM,WAAW,OAAO,CAAA;AAAA,IACtB,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,CAAE,IAAA;AAAA,MAClB,MAAA,CAAO,QAAA;AAAA,QACL,CAAC,CAAA,KACC,IAAI,iBAAA,CAAkB;AAAA,UACpB,OAAA,EAAS,CAAA,eAAA,EAAkB,CAAA,CAAE,OAAO,CAAA,CAAA;AAAA,UACpC,UAAA,EAAY,CAAA;AAAA,UACZ,IAAA,EAAM;AAAA,SACP;AAAA;AACL;AACF,GACF;AAEA,EAAA,IAAI,QAAA,CAAS,MAAA,IAAU,GAAA,IAAO,QAAA,CAAS,SAAS,GAAA,EAAK;AACnD,IAAA,IAAI,QAAA,CAAS,MAAA,KAAW,GAAA,EAAK,OAAO,EAAC;AACrC,IAAA,OAAQ,OAAO,CAAA;AAAA,MACb,SAAS,IAAA,CAAK,IAAA;AAAA,QACZ,MAAA,CAAO,QAAA;AAAA,UACL,CAAC,CAAA,KACC,IAAI,iBAAA,CAAkB;AAAA,YACpB,OAAA,EAAS,CAAA,0BAAA,EAA6B,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA;AAAA,YAC/C,YAAY,QAAA,CAAS,MAAA;AAAA,YACrB,IAAA,EAAM;AAAA,WACP;AAAA;AACL;AACF,KACF;AAAA,EACF;AAEA,EAAA,MAAM,YAAiB,OAAO,CAAA;AAAA,IAC5B,SAAS,IAAA,CAAK,IAAA;AAAA,MACZ,MAAA,CAAO,SAAS,MAAM,MAAA,CAAO,QAAQ,EAAE,KAAA,EAAO,MAAA,EAAW,CAAC;AAAA;AAC5D,GACF;AAEA,EAAA,OAAO,OAAO,CAAA;AAAA,IACZ,MAAA,CAAO,IAAA;AAAA,MACL,IAAI,iBAAA,CAAkB;AAAA,QACpB,OAAA,EACE,SAAA,EAAW,KAAA,IAAS,CAAA,2BAAA,EAA8B,SAAS,MAAM,CAAA,CAAA;AAAA,QACnE,YAAY,QAAA,CAAS,MAAA;AAAA,QACrB,IAAA,EAAM,eAAA,CAAgB,QAAA,CAAS,MAAM,CAAA;AAAA,QACrC,GAAA,EAAK;AAAA,OACN;AAAA;AACH,GACF;AACF,CAAC,CAAA;AAEH,SAAS,gBAAgB,MAAA,EAAiC;AACxD,EAAA,IAAI,MAAA,KAAW,KAAK,OAAO,sBAAA;AAC3B,EAAA,IAAI,MAAA,KAAW,KAAK,OAAO,kBAAA;AAC3B,EAAA,IAAI,MAAA,KAAW,GAAA,IAAO,MAAA,KAAW,GAAA,EAAK,OAAO,uBAAA;AAC7C,EAAA,IAAI,MAAA,KAAW,KAAK,OAAO,iBAAA;AAC3B,EAAA,IAAI,MAAA,KAAW,KAAK,OAAO,kBAAA;AAC3B,EAAA,IAAI,MAAA,IAAU,KAAK,OAAO,WAAA;AAC1B,EAAA,OAAO,eAAA;AACT;;;AC3HO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAA6B,MAAA,EAAsB;AAAtB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQpD,OACE,MAAA,EAKA;AACA,IAAA,OAAO,QAAiB,MAAA,EAAQ,cAAA,EAAgB,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA,CAAE,IAAA;AAAA,MAChEC,MAAAA,CAAO,OAAA,CAAQF,MAAAA,CAAO,aAAA,CAAc,eAAe,CAAC,CAAA;AAAA,MACpDE,MAAAA,CAAO,cAAA,CAAe,mBAAA,EAAqB,IAAA,CAAK,MAAM;AAAA,KACxD;AAAA,EACF;AACF,CAAA;ACpBO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAA6B,MAAA,EAAsB;AAAtB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQpD,IAAA,CACE,MAAA,GAA6B,EAAC,EAK9B;AACA,IAAA,OAAO,OAAA,CAAiB,OAAO,cAAA,EAAgB;AAAA,MAC7C,KAAA,EAAO;AAAA,QACL,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,WAAW,MAAA,CAAO;AAAA;AACpB,KACD,CAAA,CAAE,IAAA;AAAA,MACDA,OAAO,OAAA,CAAQF,MAAAA,CAAO,cAAc,iBAAA,CAAkB,OAAO,CAAC,CAAC,CAAA;AAAA,MAC/DE,MAAAA,CAAO,cAAA,CAAe,mBAAA,EAAqB,IAAA,CAAK,MAAM;AAAA,KACxD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SACE,EAAA,EAKA;AACA,IAAA,OAAO,OAAA;AAAA,MACL,KAAA;AAAA,MACA,CAAA,aAAA,EAAgB,kBAAA,CAAmB,EAAE,CAAC,CAAA;AAAA,KACxC,CAAE,IAAA;AAAA,MACAA,MAAAA,CAAO,OAAA,CAAQF,MAAAA,CAAO,aAAA,CAAc,OAAO,CAAC,CAAA;AAAA,MAC5CE,MAAAA,CAAO,cAAA,CAAe,mBAAA,EAAqB,IAAA,CAAK,MAAM;AAAA,KACxD;AAAA,EACF;AACF,CAAA;ACtDO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAA6B,MAAA,EAAsB;AAAtB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpD,IAAA,GAIE;AACA,IAAA,OAAO,OAAA,CAAiB,KAAA,EAAO,cAAc,CAAA,CAAE,IAAA;AAAA,MAC7CA,MAAAA,CAAO,QAAQF,MAAAA,CAAO,aAAA,CAAcA,OAAO,KAAA,CAAM,OAAO,CAAC,CAAC,CAAA;AAAA,MAC1DE,MAAAA,CAAO,cAAA,CAAe,mBAAA,EAAqB,IAAA,CAAK,MAAM;AAAA,KACxD;AAAA,EACF;AACF,CAAA;;;ACbO,IAAM,aAAa,CAAC,OAAA,KAGrB,aAAA,CAAc,IAAA,CAAK,WAAW,OAAO;AAKpC,IAAM,YAAA,GAAN,MAAM,aAAA,SAAqBD,OAAAA,CAAQ,GAAA;AAAA,EACxC;AACF,CAAA,EAAsE,CAAE;AAAA,EACtE,OAAgB,OAAO,CAAC,OAAA,KAGlB,MAAM,MAAA,CAAO,aAAA,EAAc,UAAA,CAAW,OAAO,CAAC,CAAA;AACtD;AAKO,IAAM,eAAN,MAAmB;AAAA,EAKxB,YAA6B,MAAA,EAAsB;AAAtB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAAuB;AAAA,EAJ5C,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA;AAAA;AAAA;AAAA,EAOR,IAAI,QAAA,GAA2B;AAC7B,IAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,MAAA,IAAA,CAAK,SAAA,GAAY,IAAI,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA;AAAA,IACjD;AACA,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,QAAA,GAA2B;AAC7B,IAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,MAAA,IAAA,CAAK,SAAA,GAAY,IAAI,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA;AAAA,IACjD;AACA,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,QAAA,GAA2B;AAC7B,IAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACnB,MAAA,IAAA,CAAK,SAAA,GAAY,IAAI,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA;AAAA,IACjD;AACA,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AACF;AAKO,IAAM,SAAN,MAAM,OAAA,SAAeA,QAAQ,GAAA,CAAI,2BAA2B,GAGjE,CAAE;AAAA;AAAA;AAAA;AAAA,EAIF,OAAgB,IAAA,GAAO,CAAC,MAAA,KACtB,KAAA,CAAM,QAAQ,OAAA,EAAQ,IAAI,YAAA,CAAa,MAAM,CAAC,CAAA;AAClD","file":"index.mjs","sourcesContent":["import { Schema } from \"effect\";\n\n/**\n * ── Refinements ──\n */\n\nexport const NonEmptyString = Schema.String.pipe(\n Schema.nonEmptyString(),\n Schema.brand(\"NonEmptyString\"),\n);\nexport type NonEmptyString = Schema.Schema.Type<typeof NonEmptyString>;\n\nexport const UrlString = Schema.String.pipe(\n Schema.pattern(/^https?:\\/\\/.+/),\n Schema.brand(\"UrlString\"),\n);\nexport type UrlString = Schema.Schema.Type<typeof UrlString>;\n\nexport const MinorUnitsInt = Schema.Number.pipe(\n Schema.int(),\n Schema.greaterThan(0),\n Schema.brand(\"MinorUnitsInt\"),\n);\nexport type MinorUnitsInt = Schema.Schema.Type<typeof MinorUnitsInt>;\n","import { Schema } from \"effect\";\nimport * as V from \"./schemas/validation\";\n\n/**\n * ── Branded Types ──\n */\nexport const Id = Schema.String.pipe(Schema.brand(\"Id\"));\nexport const ProjectId = Schema.String.pipe(Schema.brand(\"ProjectId\"));\nexport const PaymentId = Schema.String.pipe(Schema.brand(\"PaymentId\"));\nexport const CheckoutSessionId = Schema.String.pipe(\n Schema.brand(\"CheckoutSessionId\"),\n);\nexport const SubscriptionId = Schema.String.pipe(\n Schema.brand(\"SubscriptionId\"),\n);\nexport const CustomerId = Schema.String.pipe(Schema.brand(\"CustomerId\"));\nexport const TokenId = Schema.String.pipe(Schema.brand(\"TokenId\"));\n\nexport type Id = Schema.Schema.Type<typeof Id>;\nexport type ProjectId = Schema.Schema.Type<typeof ProjectId>;\nexport type PaymentId = Schema.Schema.Type<typeof PaymentId>;\nexport type CheckoutSessionId = Schema.Schema.Type<typeof CheckoutSessionId>;\nexport type SubscriptionId = Schema.Schema.Type<typeof SubscriptionId>;\nexport type CustomerId = Schema.Schema.Type<typeof CustomerId>;\nexport type TokenId = Schema.Schema.Type<typeof TokenId>;\n\n/**\n * ── Atomic Atoms ──\n */\nexport const Email = Schema.String.pipe(\n Schema.filter((s) => s.includes(\"@\")),\n Schema.brand(\"Email\"),\n);\nexport type Email = Schema.Schema.Type<typeof Email>;\n\nexport const Timestamp = Schema.String.pipe(Schema.brand(\"Timestamp\"));\nexport type Timestamp = Schema.Schema.Type<typeof Timestamp>;\n\nexport const Metadata = Schema.Record({\n key: Schema.String,\n value: Schema.Any,\n});\nexport type Metadata = Schema.Schema.Type<typeof Metadata>;\n\nexport const Timestamps = Schema.Struct({\n created_at: Timestamp,\n updated_at: Timestamp,\n});\nexport type Timestamps = Schema.Schema.Type<typeof Timestamps>;\n\n/**\n * ── Enums ──\n */\nexport const Provider = Schema.Literal(\n \"esewa\",\n \"khalti\",\n \"connectips\",\n \"imepay\",\n \"fonepay\",\n \"sandbox\",\n);\nexport type Provider = Schema.Schema.Type<typeof Provider>;\n\nexport const PaymentStatus = Schema.Literal(\"pending\", \"success\", \"failed\");\nexport type PaymentStatus = Schema.Schema.Type<typeof PaymentStatus>;\n\nexport const SubscriptionStatus = Schema.Literal(\n \"active\",\n \"past_due\",\n \"canceled\",\n \"paused\",\n);\nexport type SubscriptionStatus = Schema.Schema.Type<typeof SubscriptionStatus>;\n\nexport const SubscriptionInterval = Schema.Literal(\"month\", \"year\", \"week\");\nexport type SubscriptionInterval = Schema.Schema.Type<\n typeof SubscriptionInterval\n>;\n\n/**\n * ── Models ──\n */\n\nexport const Customer = Schema.Struct({\n id: CustomerId,\n merchant_customer_id: V.NonEmptyString,\n email: Schema.NullOr(Email),\n name: Schema.NullOr(V.NonEmptyString),\n phone: Schema.NullOr(Schema.String),\n project_id: ProjectId,\n metadata: Schema.NullOr(Metadata),\n created_at: Timestamp,\n updated_at: Schema.optional(Timestamp),\n});\nexport type Customer = Schema.Schema.Type<typeof Customer>;\n\nexport const Payment = Schema.Struct({\n id: PaymentId,\n project_id: ProjectId,\n amount: Schema.Number,\n currency: Schema.String,\n status: PaymentStatus,\n provider_ref: Schema.optional(Schema.NullOr(Schema.String)),\n metadata_json: Schema.optional(Schema.NullOr(Metadata)),\n gateway_response: Schema.optional(Schema.NullOr(Schema.Any)),\n created_at: Timestamp,\n updated_at: Schema.optional(Timestamp),\n});\nexport type Payment = Schema.Schema.Type<typeof Payment>;\n\nexport const Subscription = Schema.Struct({\n id: SubscriptionId,\n project_id: ProjectId,\n customer_id: CustomerId,\n status: SubscriptionStatus,\n amount: Schema.Number,\n currency: Schema.String,\n interval: SubscriptionInterval,\n interval_count: Schema.Number,\n current_period_start: Timestamp,\n current_period_end: Timestamp,\n payment_link: V.UrlString,\n auto_send_link: Schema.Boolean,\n metadata: Schema.optional(Schema.NullOr(Metadata)),\n canceled_at: Schema.optional(Schema.NullOr(Timestamp)),\n created_at: Timestamp,\n updated_at: Schema.optional(Timestamp),\n});\nexport type Subscription = Schema.Schema.Type<typeof Subscription>;\n\nexport const Project = Schema.Struct({\n id: ProjectId,\n name: V.NonEmptyString,\n api_key_secret: Schema.String,\n created_at: Timestamp,\n});\nexport type Project = Schema.Schema.Type<typeof Project>;\n\nexport const Token = Schema.Struct({\n id: TokenId,\n name: V.NonEmptyString,\n scopes: Schema.Array(Schema.String),\n last_used_at: Schema.NullOr(Timestamp),\n expires_at: Schema.NullOr(Timestamp),\n created_at: Timestamp,\n});\nexport type Token = Schema.Schema.Type<typeof Token>;\n\n/**\n * ── Pagination ──\n */\nexport const PaginationMeta = Schema.Struct({\n total: Schema.NullOr(Schema.Number),\n limit: Schema.Number,\n offset: Schema.Number,\n});\nexport type PaginationMeta = Schema.Schema.Type<typeof PaginationMeta>;\n\nexport const PaginatedResponse = <A, I, R>(schema: Schema.Schema<A, I, R>) =>\n Schema.Struct({\n data: Schema.Array(schema),\n meta: PaginationMeta,\n });\n\nexport interface PaginatedResponse<T> {\n readonly data: readonly T[];\n readonly meta: PaginationMeta;\n}\n\n/**\n * ── Webhooks ──\n */\nexport const WebhookEventType = Schema.Literal(\n \"payment.success\",\n \"payment.failed\",\n \"subscription.created\",\n \"subscription.payment_succeeded\",\n \"subscription.payment_failed\",\n \"subscription.renewal_due\",\n \"subscription.canceled\",\n);\nexport type WebhookEventType = Schema.Schema.Type<typeof WebhookEventType>;\n\nexport const WebhookEvent = Schema.Struct({\n type: WebhookEventType,\n id: Schema.optional(Schema.String),\n data: Schema.Union(\n Payment,\n Subscription,\n Customer,\n Schema.Struct({\n id: Schema.String,\n amount: Schema.optional(Schema.Number),\n currency: Schema.optional(Schema.String),\n status: Schema.String,\n metadata: Schema.optional(Metadata),\n }),\n ),\n is_test: Schema.Boolean,\n created: Schema.optional(Schema.Number),\n});\nexport type WebhookEvent = Schema.Schema.Type<typeof WebhookEvent>;\n\n/**\n * ── Params & Inputs ──\n */\n\nexport const CreateCheckoutParams = Schema.Struct({\n amount: Schema.optional(V.MinorUnitsInt),\n currency: Schema.optionalWith(Schema.String, { default: () => \"NPR\" }),\n provider: Provider,\n returnUrl: V.UrlString,\n cancelUrl: Schema.optional(V.UrlString),\n metadata: Schema.optional(Metadata),\n subscriptionId: Schema.optional(SubscriptionId),\n}).pipe(\n Schema.filter((data) => {\n if (!data.subscriptionId && !data.amount) {\n return \"amount is required when subscriptionId is not provided\";\n }\n return true;\n }),\n);\nexport type CreateCheckoutParams = Schema.Schema.Type<\n typeof CreateCheckoutParams\n>;\n\nexport const CheckoutSession = Schema.Struct({\n id: CheckoutSessionId,\n checkout_url: V.UrlString,\n payment_method: Schema.Struct({\n type: Provider,\n url: Schema.optional(V.UrlString),\n method: Schema.optional(Schema.Literal(\"GET\", \"POST\")),\n fields: Schema.optional(\n Schema.Record({ key: Schema.String, value: Schema.String }),\n ),\n }),\n});\nexport type CheckoutSession = Schema.Schema.Type<typeof CheckoutSession>;\n\nexport const CreateCustomerParams = Schema.Struct({\n merchant_customer_id: V.NonEmptyString,\n email: Schema.optional(Email),\n name: Schema.optional(V.NonEmptyString),\n phone: Schema.optional(Schema.String),\n project_id: Schema.optional(ProjectId),\n metadata: Schema.optional(Metadata),\n});\nexport type CreateCustomerParams = Schema.Schema.Type<\n typeof CreateCustomerParams\n>;\n\nexport const ListPaymentsParams = Schema.Struct({\n limit: Schema.optional(Schema.NumberFromString),\n offset: Schema.optional(Schema.NumberFromString),\n projectId: Schema.optional(ProjectId),\n});\nexport type ListPaymentsParams = Schema.Schema.Type<typeof ListPaymentsParams>;\n\nexport const ListCustomersParams = Schema.Struct({\n limit: Schema.optional(Schema.NumberFromString),\n offset: Schema.optional(Schema.NumberFromString),\n email: Schema.optional(Schema.String),\n merchant_customer_id: Schema.optional(Schema.String),\n projectId: Schema.optional(ProjectId),\n});\nexport type ListCustomersParams = Schema.Schema.Type<\n typeof ListCustomersParams\n>;\n\nexport const UpdateCustomerParams = Schema.Struct({\n email: Schema.optional(Email),\n name: Schema.optional(V.NonEmptyString),\n phone: Schema.optional(Schema.String),\n metadata: Schema.optional(Metadata),\n});\nexport type UpdateCustomerParams = Schema.Schema.Type<\n typeof UpdateCustomerParams\n>;\n\nexport const CreateSubscriptionParams = Schema.Struct({\n customer_id: CustomerId,\n amount: V.MinorUnitsInt,\n currency: Schema.optionalWith(Schema.String, { default: () => \"NPR\" }),\n interval: SubscriptionInterval,\n interval_count: Schema.optional(Schema.Number),\n project_id: Schema.optional(ProjectId),\n auto_send_link: Schema.optional(Schema.Boolean),\n metadata: Schema.optional(Metadata),\n});\nexport type CreateSubscriptionParams = Schema.Schema.Type<\n typeof CreateSubscriptionParams\n>;\n\nexport const CallbackQueryParams = Schema.Struct({\n payment_id: Schema.optional(Schema.String),\n data: Schema.optional(Schema.String),\n pidx: Schema.optional(Schema.String),\n});\nexport type CallbackQueryParams = Schema.Schema.Type<\n typeof CallbackQueryParams\n>;\n\nexport const ListSubscriptionsParams = Schema.Struct({\n limit: Schema.optional(Schema.NumberFromString),\n offset: Schema.optional(Schema.NumberFromString),\n projectId: Schema.optional(ProjectId),\n customerId: Schema.optional(CustomerId),\n status: Schema.optional(SubscriptionStatus),\n});\nexport type ListSubscriptionsParams = Schema.Schema.Type<\n typeof ListSubscriptionsParams\n>;\n\nexport const RealtimeTriggerPayload = Schema.Struct({\n event: Schema.optional(WebhookEventType),\n data: Schema.optional(Schema.Any),\n});\nexport type RealtimeTriggerPayload = Schema.Schema.Type<\n typeof RealtimeTriggerPayload\n>;\n\n/**\n * ── Client Config ──\n */\nexport const PayArkConfig = Schema.Struct({\n apiKey: Schema.String,\n baseUrl: Schema.optional(Schema.String),\n timeout: Schema.optional(Schema.Number),\n maxRetries: Schema.optional(Schema.Number),\n sandbox: Schema.optional(Schema.Boolean),\n});\nexport type PayArkConfig = Schema.Schema.Type<typeof PayArkConfig>;\n\n/**\n * ── Error Schemas ──\n */\nexport const PayArkErrorBody = Schema.Struct({\n error: Schema.String,\n details: Schema.optional(Schema.Any),\n});\nexport type PayArkErrorBody = Schema.Schema.Type<typeof PayArkErrorBody>;\n","import {\n HttpApi,\n HttpApiEndpoint,\n HttpApiGroup,\n HttpApiMiddleware,\n HttpApiSecurity,\n} from \"@effect/platform\";\nimport * as S from \"./schemas\";\nimport { Schema, Context } from \"effect\";\n\n/**\n * Industrial Error Schema with Status mapping.\n */\nexport class IndustrialError extends Schema.TaggedError<IndustrialError>()(\n \"IndustrialError\",\n {\n error: Schema.String,\n details: Schema.optional(Schema.Any),\n },\n) {}\n\nexport class AuthenticationError extends Schema.TaggedError<AuthenticationError>()(\n \"AuthenticationError\",\n {\n error: Schema.String,\n },\n) {}\n\nexport class NotFoundError extends Schema.TaggedError<NotFoundError>()(\n \"NotFoundError\",\n {\n error: Schema.String,\n },\n) {}\n\nexport class InternalServerError extends Schema.TaggedError<InternalServerError>()(\n \"InternalServerError\",\n {\n error: Schema.String,\n details: Schema.optional(Schema.Any),\n },\n) {}\n\nexport class ConflictError extends Schema.TaggedError<ConflictError>()(\n \"ConflictError\",\n {\n error: Schema.String,\n },\n) {}\n\n/**\n * PayArk Industrial API Specification.\n * Single source of truth for the entire platform.\n */\n\n// ── Security ─────────────────────────────────────────────────────────────\n\nexport interface AuthContext {\n readonly project?: { readonly id: string };\n readonly user?: { readonly id: string };\n}\n\nexport const AuthContext = Context.GenericTag<AuthContext>(\n \"@payark/sdk-effect/AuthContext\",\n);\n\nexport class SecurityMiddleware extends HttpApiMiddleware.Tag<SecurityMiddleware>()(\n \"SecurityMiddleware\",\n {\n security: {\n bearer: HttpApiSecurity.bearer,\n },\n provides: AuthContext,\n failure: Schema.Union(AuthenticationError, IndustrialError),\n },\n) {}\n\nexport class CronSecurity extends HttpApiMiddleware.Tag<CronSecurity>()(\n \"CronSecurity\",\n {\n security: {\n secret: HttpApiSecurity.apiKey({ in: \"header\", key: \"x-cron-secret\" }),\n },\n failure: Schema.Union(AuthenticationError, IndustrialError),\n },\n) {}\n\nexport class UserSecurity extends HttpApiMiddleware.Tag<UserSecurity>()(\n \"UserSecurity\",\n {\n security: {\n bearer: HttpApiSecurity.bearer,\n },\n provides: AuthContext,\n failure: Schema.Union(AuthenticationError, IndustrialError),\n },\n) {}\n\n// ── Checkout Group ───────────────────────────────────────────────────────\n\nexport const CheckoutGroup = HttpApiGroup.make(\"checkout\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(S.CheckoutSession)\n .setPayload(S.CreateCheckoutParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/checkout\")\n .middleware(SecurityMiddleware);\n\n// ── Payments Group ───────────────────────────────────────────────────────\n\nexport const PaymentsGroup = HttpApiGroup.make(\"payments\")\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(S.PaginatedResponse(S.Payment))\n .setUrlParams(S.ListPaymentsParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.get(\"retrieve\", \"/:id\")\n .addSuccess(S.Payment)\n .setPath(Schema.Struct({ id: S.Id }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/payments\")\n .middleware(SecurityMiddleware);\n\n// ── Customers Group ──────────────────────────────────────────────────────\n\nexport const CustomersGroup = HttpApiGroup.make(\"customers\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(S.Customer, { status: 201 })\n .setPayload(S.CreateCustomerParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(S.PaginatedResponse(S.Customer))\n .setUrlParams(S.ListCustomersParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.get(\"retrieve\", \"/:id\")\n .addSuccess(S.Customer)\n .setPath(Schema.Struct({ id: S.Id }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.patch(\"update\", \"/:id\")\n .addSuccess(S.Customer)\n .setPath(Schema.Struct({ id: S.Id }))\n .setPayload(S.UpdateCustomerParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.del(\"delete\", \"/:id\")\n .setPath(Schema.Struct({ id: S.Id }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/customers\")\n .middleware(SecurityMiddleware);\n\n// ── Subscriptions Group ──────────────────────────────────────────────────\n\nexport const SubscriptionsGroup = HttpApiGroup.make(\"subscriptions\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(S.Subscription, { status: 201 })\n .setPayload(S.CreateSubscriptionParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.get(\"retrieve\", \"/:id\")\n .addSuccess(S.Subscription)\n .setPath(Schema.Struct({ id: S.SubscriptionId }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(S.PaginatedResponse(S.Subscription))\n .setUrlParams(S.ListSubscriptionsParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.post(\"cancel\", \"/:id/cancel\")\n .addSuccess(S.Subscription)\n .setPath(Schema.Struct({ id: S.SubscriptionId }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.post(\"activate\", \"/:id/activate\")\n .addSuccess(\n Schema.Struct({\n checkout_url: Schema.String,\n payment_id: Schema.String,\n }),\n )\n .setPath(Schema.Struct({ id: S.SubscriptionId }))\n .setPayload(\n Schema.Struct({\n provider: S.Provider,\n returnUrl: Schema.String,\n cancelUrl: Schema.optional(Schema.String),\n }),\n )\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/subscriptions\");\n\n// ── Automation Group ─────────────────────────────────────────────────────\n\nexport const AutomationGroup = HttpApiGroup.make(\"automation\")\n .add(\n HttpApiEndpoint.post(\"reminders\", \"/reminders\")\n .addSuccess(\n Schema.Struct({\n message: Schema.String,\n count: Schema.Number,\n }),\n )\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.post(\"reaper\", \"/reaper\")\n .addSuccess(\n Schema.Struct({\n message: Schema.String,\n count: Schema.Number,\n }),\n )\n .addError(InternalServerError, { status: 500 }),\n )\n .prefix(\"/v1/automation\")\n .middleware(CronSecurity);\n\n// ── Tokens Group ─────────────────────────────────────────────────────────\n\nexport const TokensGroup = HttpApiGroup.make(\"tokens\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(\n Schema.Struct({\n ...S.Token.fields,\n token: Schema.String,\n }),\n )\n .setPayload(\n Schema.Struct({\n name: Schema.String,\n scopes: Schema.optionalWith(Schema.Array(Schema.String), {\n default: () => [],\n }),\n expires_in_days: Schema.optional(Schema.Number),\n }),\n )\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(Schema.Array(S.Token))\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.del(\"delete\", \"/:id\")\n .setPath(Schema.Struct({ id: S.TokenId }))\n .addSuccess(Schema.Null)\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 }),\n )\n .prefix(\"/v1/tokens\")\n .middleware(UserSecurity);\n\n// ── Projects Group ────────────────────────────────────────────────────────\n\nexport const ProjectsGroup = HttpApiGroup.make(\"projects\")\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(Schema.Array(S.Project))\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .prefix(\"/v1/projects\")\n .middleware(SecurityMiddleware);\n\n// ── Callbacks Group ──────────────────────────────────────────────────────\n\nexport const CallbacksGroup = HttpApiGroup.make(\"callbacks\")\n .add(\n HttpApiEndpoint.get(\"handle\", \"/:provider\")\n .addSuccess(Schema.Any)\n .setPath(Schema.Struct({ provider: Schema.String }))\n .setUrlParams(S.CallbackQueryParams)\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/callback\");\n\n// ── Realtime Group ───────────────────────────────────────────────────────\n\nexport const RealtimeGroup = HttpApiGroup.make(\"realtime\")\n .add(\n HttpApiEndpoint.get(\"connect\", \"/\")\n .addSuccess(Schema.Any)\n .setUrlParams(Schema.Struct({ token: Schema.String }))\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.post(\"trigger\", \"/trigger\")\n .addSuccess(\n Schema.Struct({\n status: Schema.String,\n event: Schema.optional(Schema.String),\n }),\n )\n .setPayload(S.RealtimeTriggerPayload)\n .setUrlParams(Schema.Struct({ token: Schema.optional(Schema.String) }))\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .prefix(\"/v1/realtime\");\n\n// ── Unified API ──────────────────────────────────────────────────────────\n\nexport const PayArkApi = HttpApi.make(\"PayArkApi\")\n .add(CheckoutGroup)\n .add(PaymentsGroup)\n .add(CustomersGroup)\n .add(SubscriptionsGroup)\n .add(AutomationGroup)\n .add(TokensGroup)\n .add(ProjectsGroup)\n .add(CallbacksGroup)\n .add(RealtimeGroup)\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 });\n","import { Data } from \"effect\";\n\n/** Machine-readable error codes. */\nexport type PayArkErrorCode =\n | \"authentication_error\"\n | \"permission_error\"\n | \"invalid_request_error\"\n | \"not_found_error\"\n | \"rate_limit_error\"\n | \"api_error\"\n | \"connection_error\"\n | \"unknown_error\";\n\n/** Raw error payload from the API. */\nexport interface PayArkErrorBody {\n readonly error: string;\n readonly details?: any;\n}\n/**\n * Effect-compatible error class for PayArk SDK.\n * Extends Data.TaggedError for easy matching in Effect.catchTag.\n */\nexport class PayArkEffectError extends Data.TaggedError(\"PayArkEffectError\")<{\n readonly message: string;\n readonly statusCode: number;\n readonly code: PayArkErrorCode;\n readonly raw?: PayArkErrorBody;\n}> {\n /** Human-readable representation for logging/debugging. */\n override toString(): string {\n return `[PayArkEffectError: ${this.code}] ${this.message} (HTTP ${this.statusCode})`;\n }\n}\n","import { Effect, Context } from \"effect\";\nimport { HttpClient, HttpClientRequest } from \"@effect/platform\";\nimport { PayArkEffectError, type PayArkErrorCode } from \"./errors\";\nimport { PayArkConfig } from \"./schemas\";\n\n/** SDK version string for runtime introspection. */\nexport const SDK_VERSION = \"0.1.0\" as const;\n\n/**\n * Service tag for the PayArk configuration.\n */\nexport class PayArkConfigService extends Context.Tag(\"PayArkConfigService\")<\n PayArkConfigService,\n PayArkConfig\n>() {}\n\n/**\n * Executes an HTTP request using Effect and returns the JSON body or a PayArkEffectError.\n */\nexport const request = <T>(\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n path: string,\n options?: {\n readonly query?: Record<string, string | number | undefined>;\n readonly body?: any;\n readonly headers?: Record<string, string>;\n },\n): Effect.Effect<\n T,\n PayArkEffectError,\n PayArkConfigService | HttpClient.HttpClient\n> =>\n Effect.gen(function* (_) {\n const config = yield* _(PayArkConfigService);\n const client = yield* _(HttpClient.HttpClient);\n\n const baseUrl = (\n config.baseUrl ?? \"https://payark-api.codimo-dev.workers.dev\"\n ).replace(/\\/+$/, \"\");\n const url = new URL(`${baseUrl}${path}`);\n\n if (options?.query) {\n for (const [key, value] of Object.entries(options.query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${config.apiKey}`,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n \"User-Agent\": `payark-sdk-effect/${SDK_VERSION}`,\n ...options?.headers,\n };\n\n if (config.sandbox) {\n headers[\"x-sandbox-mode\"] = \"true\";\n }\n\n let req = HttpClientRequest.make(method)(url.toString()).pipe(\n HttpClientRequest.setHeaders(headers),\n );\n\n if (options?.body) {\n req = yield* _(\n HttpClientRequest.bodyJson(options.body)(req).pipe(\n Effect.mapError(\n (e) =>\n new PayArkEffectError({\n message: `Invalid request body: ${String(e)}`,\n statusCode: 400,\n code: \"invalid_request_error\",\n }),\n ),\n ),\n );\n }\n\n const response = yield* _(\n client.execute(req).pipe(\n Effect.mapError(\n (e) =>\n new PayArkEffectError({\n message: `Network error: ${e.message}`,\n statusCode: 0,\n code: \"connection_error\",\n }),\n ),\n ),\n );\n\n if (response.status >= 200 && response.status < 300) {\n if (response.status === 204) return {} as T;\n return (yield* _(\n response.json.pipe(\n Effect.mapError(\n (e) =>\n new PayArkEffectError({\n message: `Failed to parse response: ${String(e)}`,\n statusCode: response.status,\n code: \"api_error\",\n }),\n ),\n ),\n )) as T;\n }\n\n const errorBody: any = yield* _(\n response.json.pipe(\n Effect.catchAll(() => Effect.succeed({ error: undefined })),\n ),\n );\n\n return yield* _(\n Effect.fail(\n new PayArkEffectError({\n message:\n errorBody?.error || `Request failed with status ${response.status}`,\n statusCode: response.status,\n code: mapStatusToCode(response.status),\n raw: errorBody,\n }),\n ),\n );\n });\n\nfunction mapStatusToCode(status: number): PayArkErrorCode {\n if (status === 401) return \"authentication_error\";\n if (status === 403) return \"permission_error\";\n if (status === 400 || status === 422) return \"invalid_request_error\";\n if (status === 404) return \"not_found_error\";\n if (status === 429) return \"rate_limit_error\";\n if (status >= 500) return \"api_error\";\n return \"unknown_error\";\n}\n","import { Schema, ParseResult, Effect } from \"effect\";\nimport { PayArkConfigService, request } from \"../http\";\nimport {\n CheckoutSession,\n PayArkConfig,\n CreateCheckoutParams,\n} from \"../schemas\";\nimport { PayArkEffectError } from \"../errors\";\nimport type { HttpClient } from \"@effect/platform\";\n\n/**\n * Effect-based resource for PayArk Checkout.\n */\nexport class CheckoutEffect {\n constructor(private readonly config: PayArkConfig) {}\n\n /**\n * Create a new checkout session.\n *\n * @param params - Configuration for the checkout session.\n * @returns Effect that resolves to the created checkout session.\n */\n create(\n params: CreateCheckoutParams,\n ): Effect.Effect<\n CheckoutSession,\n PayArkEffectError | ParseResult.ParseError,\n HttpClient.HttpClient\n > {\n return request<unknown>(\"POST\", \"/v1/checkout\", { body: params }).pipe(\n Effect.flatMap(Schema.decodeUnknown(CheckoutSession)),\n Effect.provideService(PayArkConfigService, this.config),\n );\n }\n}\n","import { Schema, ParseResult, Effect } from \"effect\";\nimport { PayArkConfigService, request } from \"../http\";\nimport {\n Payment,\n PaginatedResponse,\n PayArkConfig,\n ListPaymentsParams,\n} from \"../schemas\";\nimport { PayArkEffectError } from \"../errors\";\nimport type { HttpClient } from \"@effect/platform\";\n\n/**\n * Effect-based resource for PayArk Payments.\n */\nexport class PaymentsEffect {\n constructor(private readonly config: PayArkConfig) {}\n\n /**\n * List payments for the authenticated project.\n *\n * @param params - Optional pagination parameters.\n * @returns Effect that resolves to paginated payments.\n */\n list(\n params: ListPaymentsParams = {},\n ): Effect.Effect<\n PaginatedResponse<Payment>,\n PayArkEffectError | ParseResult.ParseError,\n HttpClient.HttpClient\n > {\n return request<unknown>(\"GET\", \"/v1/payments\", {\n query: {\n limit: params.limit,\n offset: params.offset,\n projectId: params.projectId,\n },\n }).pipe(\n Effect.flatMap(Schema.decodeUnknown(PaginatedResponse(Payment))),\n Effect.provideService(PayArkConfigService, this.config),\n );\n }\n\n /**\n * Retrieve a single payment by its ID.\n *\n * @param id - The payment identifier.\n * @returns Effect that resolves to the payment object.\n */\n retrieve(\n id: string,\n ): Effect.Effect<\n Payment,\n PayArkEffectError | ParseResult.ParseError,\n HttpClient.HttpClient\n > {\n return request<unknown>(\n \"GET\",\n `/v1/payments/${encodeURIComponent(id)}`,\n ).pipe(\n Effect.flatMap(Schema.decodeUnknown(Payment)),\n Effect.provideService(PayArkConfigService, this.config),\n );\n }\n}\n","import { Schema, ParseResult, Effect } from \"effect\";\nimport { PayArkConfigService, request } from \"../http\";\nimport { Project, PayArkConfig } from \"../schemas\";\nimport { PayArkEffectError } from \"../errors\";\nimport type { HttpClient } from \"@effect/platform\";\n\n/**\n * Effect-based resource for PayArk Projects.\n */\nexport class ProjectsEffect {\n constructor(private readonly config: PayArkConfig) {}\n\n /**\n * List all projects belonging to the authenticated account.\n *\n * @returns Effect that resolves to an array of projects.\n */\n list(): Effect.Effect<\n readonly Project[],\n PayArkEffectError | ParseResult.ParseError,\n HttpClient.HttpClient\n > {\n return request<unknown>(\"GET\", \"/v1/projects\").pipe(\n Effect.flatMap(Schema.decodeUnknown(Schema.Array(Project))),\n Effect.provideService(PayArkConfigService, this.config),\n );\n }\n}\n","import { Context, Layer, Effect } from \"effect\";\nimport { HttpApiClient, HttpClient } from \"@effect/platform\";\nimport { PayArkApi } from \"./api-spec\";\nimport type { PayArkConfig } from \"./schemas\";\nimport { CheckoutEffect } from \"./resources/checkout\";\nimport { PaymentsEffect } from \"./resources/payments\";\nimport { ProjectsEffect } from \"./resources/projects\";\n\n/**\n * The Industrial SDK Client.\n * Automatically derived from the PayArk HttpApi specification.\n *\n * This provides perfect type-sync between the server and client.\n */\nexport const makeClient = (options?: {\n readonly baseUrl?: string;\n readonly httpClient?: HttpClient.HttpClient;\n}) => HttpApiClient.make(PayArkApi, options);\n\n/**\n * Service Tag for the Industrial Client.\n */\nexport class PayArkClient extends Context.Tag(\n \"@payark/sdk-effect/PayArkClient\",\n)<PayArkClient, Effect.Effect.Success<ReturnType<typeof makeClient>>>() {\n static readonly Live = (options?: {\n readonly baseUrl?: string;\n readonly httpClient?: HttpClient.HttpClient;\n }) => Layer.effect(PayArkClient, makeClient(options));\n}\n\n/**\n * Main entry point for the Effect-based PayArk API (Legacy wrapper).\n */\nexport class PayArkEffect {\n private _checkout?: CheckoutEffect;\n private _payments?: PaymentsEffect;\n private _projects?: ProjectsEffect;\n\n constructor(private readonly config: PayArkConfig) {}\n\n /**\n * Checkout sessions resource (Effect).\n */\n get checkout(): CheckoutEffect {\n if (!this._checkout) {\n this._checkout = new CheckoutEffect(this.config);\n }\n return this._checkout;\n }\n\n /**\n * Payments resource (Effect).\n */\n get payments(): PaymentsEffect {\n if (!this._payments) {\n this._payments = new PaymentsEffect(this.config);\n }\n return this._payments;\n }\n\n /**\n * Projects resource (Effect).\n */\n get projects(): ProjectsEffect {\n if (!this._projects) {\n this._projects = new ProjectsEffect(this.config);\n }\n return this._projects;\n }\n}\n\n/**\n * Service tag for the PayArk API (Legacy).\n */\nexport class PayArk extends Context.Tag(\"@payark/sdk-effect/PayArk\")<\n PayArk,\n PayArkEffect\n>() {\n /**\n * Create a Layer that provides the PayArk service.\n */\n static readonly Live = (config: PayArkConfig) =>\n Layer.succeed(PayArk, new PayArkEffect(config));\n}\n\nexport * from \"./api-spec\";\nexport { PayArkEffectError } from \"./errors\";\nexport * from \"./schemas\";\n"]}
|