@payark/sdk-effect 0.1.3 → 0.1.6

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.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: Schema.String,
62
+ merchant_customer_id: NonEmptyString,
48
63
  email: Schema.NullOr(Email),
49
- name: Schema.NullOr(Schema.String),
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: Schema.String,
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: Schema.String,
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: Schema.String,
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.Number.pipe(Schema.greaterThan(0)),
152
+ amount: Schema.optional(MinorUnitsInt),
111
153
  currency: Schema.optionalWith(Schema.String, { default: () => "NPR" }),
112
154
  provider: Provider,
113
- returnUrl: Schema.String,
114
- cancelUrl: Schema.optional(Schema.String),
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: Schema.String,
169
+ checkout_url: UrlString,
120
170
  payment_method: Schema.Struct({
121
171
  type: Provider,
122
- url: Schema.optional(Schema.String),
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: Schema.String,
131
- email: Schema.optional(Schema.String),
132
- name: Schema.optional(Schema.String),
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(Schema.String),
150
- name: Schema.optional(Schema.String),
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: Schema.Number.pipe(Schema.greaterThan(0)),
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 PayArkApi = HttpApi.make("PayArkApi").add(CheckoutGroup).add(PaymentsGroup).add(CustomersGroup).add(SubscriptionsGroup).add(AutomationGroup).add(TokensGroup).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(ConflictError, { status: 409 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 });
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
@@ -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":"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","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"]}