@payark/sdk-effect 0.1.2 → 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.mjs CHANGED
@@ -1,15 +1,418 @@
1
- import { Data, Context, Layer, Effect } from 'effect';
2
- import { Schema } from '@effect/schema';
3
- import { HttpClient, HttpClientRequest } from '@effect/platform';
4
- import { SDK_VERSION } from '@payark/sdk';
1
+ import { Schema, Context, Data, Layer, Effect } from 'effect';
2
+ import { HttpApiMiddleware, HttpApiSecurity, HttpApiGroup, HttpApiEndpoint, HttpApi, HttpApiClient, HttpClient, HttpClientRequest } from '@effect/platform';
5
3
 
6
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
20
+ var Id = Schema.String.pipe(Schema.brand("Id"));
21
+ var ProjectId = Schema.String.pipe(Schema.brand("ProjectId"));
22
+ var PaymentId = Schema.String.pipe(Schema.brand("PaymentId"));
23
+ var CheckoutSessionId = Schema.String.pipe(
24
+ Schema.brand("CheckoutSessionId")
25
+ );
26
+ var SubscriptionId = Schema.String.pipe(
27
+ Schema.brand("SubscriptionId")
28
+ );
29
+ var CustomerId = Schema.String.pipe(Schema.brand("CustomerId"));
30
+ var TokenId = Schema.String.pipe(Schema.brand("TokenId"));
31
+ var Email = Schema.String.pipe(
32
+ Schema.filter((s) => s.includes("@")),
33
+ Schema.brand("Email")
34
+ );
35
+ var Timestamp = Schema.String.pipe(Schema.brand("Timestamp"));
36
+ var Metadata = Schema.Record({
37
+ key: Schema.String,
38
+ value: Schema.Any
39
+ });
40
+ var Timestamps = Schema.Struct({
41
+ created_at: Timestamp,
42
+ updated_at: Timestamp
43
+ });
44
+ var Provider = Schema.Literal(
45
+ "esewa",
46
+ "khalti",
47
+ "connectips",
48
+ "imepay",
49
+ "fonepay",
50
+ "sandbox"
51
+ );
52
+ var PaymentStatus = Schema.Literal("pending", "success", "failed");
53
+ var SubscriptionStatus = Schema.Literal(
54
+ "active",
55
+ "past_due",
56
+ "canceled",
57
+ "paused"
58
+ );
59
+ var SubscriptionInterval = Schema.Literal("month", "year", "week");
60
+ var Customer = Schema.Struct({
61
+ id: CustomerId,
62
+ merchant_customer_id: NonEmptyString,
63
+ email: Schema.NullOr(Email),
64
+ name: Schema.NullOr(NonEmptyString),
65
+ phone: Schema.NullOr(Schema.String),
66
+ project_id: ProjectId,
67
+ metadata: Schema.NullOr(Metadata),
68
+ created_at: Timestamp,
69
+ updated_at: Schema.optional(Timestamp)
70
+ });
71
+ var Payment = Schema.Struct({
72
+ id: PaymentId,
73
+ project_id: ProjectId,
74
+ amount: Schema.Number,
75
+ currency: Schema.String,
76
+ status: PaymentStatus,
77
+ provider_ref: Schema.optional(Schema.NullOr(Schema.String)),
78
+ metadata_json: Schema.optional(Schema.NullOr(Metadata)),
79
+ gateway_response: Schema.optional(Schema.NullOr(Schema.Any)),
80
+ created_at: Timestamp,
81
+ updated_at: Schema.optional(Timestamp)
82
+ });
83
+ var Subscription = Schema.Struct({
84
+ id: SubscriptionId,
85
+ project_id: ProjectId,
86
+ customer_id: CustomerId,
87
+ status: SubscriptionStatus,
88
+ amount: Schema.Number,
89
+ currency: Schema.String,
90
+ interval: SubscriptionInterval,
91
+ interval_count: Schema.Number,
92
+ current_period_start: Timestamp,
93
+ current_period_end: Timestamp,
94
+ payment_link: UrlString,
95
+ auto_send_link: Schema.Boolean,
96
+ metadata: Schema.optional(Schema.NullOr(Metadata)),
97
+ canceled_at: Schema.optional(Schema.NullOr(Timestamp)),
98
+ created_at: Timestamp,
99
+ updated_at: Schema.optional(Timestamp)
100
+ });
101
+ var Project = Schema.Struct({
102
+ id: ProjectId,
103
+ name: NonEmptyString,
104
+ api_key_secret: Schema.String,
105
+ created_at: Timestamp
106
+ });
107
+ var Token = Schema.Struct({
108
+ id: TokenId,
109
+ name: NonEmptyString,
110
+ scopes: Schema.Array(Schema.String),
111
+ last_used_at: Schema.NullOr(Timestamp),
112
+ expires_at: Schema.NullOr(Timestamp),
113
+ created_at: Timestamp
114
+ });
115
+ var PaginationMeta = Schema.Struct({
116
+ total: Schema.NullOr(Schema.Number),
117
+ limit: Schema.Number,
118
+ offset: Schema.Number
119
+ });
120
+ var PaginatedResponse = (schema) => Schema.Struct({
121
+ data: Schema.Array(schema),
122
+ meta: PaginationMeta
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
+ });
151
+ var CreateCheckoutParams = Schema.Struct({
152
+ amount: Schema.optional(MinorUnitsInt),
153
+ currency: Schema.optionalWith(Schema.String, { default: () => "NPR" }),
154
+ provider: Provider,
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
+ );
167
+ var CheckoutSession = Schema.Struct({
168
+ id: CheckoutSessionId,
169
+ checkout_url: UrlString,
170
+ payment_method: Schema.Struct({
171
+ type: Provider,
172
+ url: Schema.optional(UrlString),
173
+ method: Schema.optional(Schema.Literal("GET", "POST")),
174
+ fields: Schema.optional(
175
+ Schema.Record({ key: Schema.String, value: Schema.String })
176
+ )
177
+ })
178
+ });
179
+ var CreateCustomerParams = Schema.Struct({
180
+ merchant_customer_id: NonEmptyString,
181
+ email: Schema.optional(Email),
182
+ name: Schema.optional(NonEmptyString),
183
+ phone: Schema.optional(Schema.String),
184
+ project_id: Schema.optional(ProjectId),
185
+ metadata: Schema.optional(Metadata)
186
+ });
187
+ var ListPaymentsParams = Schema.Struct({
188
+ limit: Schema.optional(Schema.NumberFromString),
189
+ offset: Schema.optional(Schema.NumberFromString),
190
+ projectId: Schema.optional(ProjectId)
191
+ });
192
+ var ListCustomersParams = Schema.Struct({
193
+ limit: Schema.optional(Schema.NumberFromString),
194
+ offset: Schema.optional(Schema.NumberFromString),
195
+ email: Schema.optional(Schema.String),
196
+ merchant_customer_id: Schema.optional(Schema.String),
197
+ projectId: Schema.optional(ProjectId)
198
+ });
199
+ var UpdateCustomerParams = Schema.Struct({
200
+ email: Schema.optional(Email),
201
+ name: Schema.optional(NonEmptyString),
202
+ phone: Schema.optional(Schema.String),
203
+ metadata: Schema.optional(Metadata)
204
+ });
205
+ var CreateSubscriptionParams = Schema.Struct({
206
+ customer_id: CustomerId,
207
+ amount: MinorUnitsInt,
208
+ currency: Schema.optionalWith(Schema.String, { default: () => "NPR" }),
209
+ interval: SubscriptionInterval,
210
+ interval_count: Schema.optional(Schema.Number),
211
+ project_id: Schema.optional(ProjectId),
212
+ auto_send_link: Schema.optional(Schema.Boolean),
213
+ metadata: Schema.optional(Metadata)
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
+ });
220
+ var ListSubscriptionsParams = Schema.Struct({
221
+ limit: Schema.optional(Schema.NumberFromString),
222
+ offset: Schema.optional(Schema.NumberFromString),
223
+ projectId: Schema.optional(ProjectId),
224
+ customerId: Schema.optional(CustomerId),
225
+ status: Schema.optional(SubscriptionStatus)
226
+ });
227
+ var RealtimeTriggerPayload = Schema.Struct({
228
+ event: Schema.optional(WebhookEventType),
229
+ data: Schema.optional(Schema.Any)
230
+ });
231
+ var PayArkConfig = Schema.Struct({
232
+ apiKey: Schema.String,
233
+ baseUrl: Schema.optional(Schema.String),
234
+ timeout: Schema.optional(Schema.Number),
235
+ maxRetries: Schema.optional(Schema.Number),
236
+ sandbox: Schema.optional(Schema.Boolean)
237
+ });
238
+ var PayArkErrorBody = Schema.Struct({
239
+ error: Schema.String,
240
+ details: Schema.optional(Schema.Any)
241
+ });
242
+ var IndustrialError = class extends Schema.TaggedError()(
243
+ "IndustrialError",
244
+ {
245
+ error: Schema.String,
246
+ details: Schema.optional(Schema.Any)
247
+ }
248
+ ) {
249
+ };
250
+ var AuthenticationError = class extends Schema.TaggedError()(
251
+ "AuthenticationError",
252
+ {
253
+ error: Schema.String
254
+ }
255
+ ) {
256
+ };
257
+ var NotFoundError = class extends Schema.TaggedError()(
258
+ "NotFoundError",
259
+ {
260
+ error: Schema.String
261
+ }
262
+ ) {
263
+ };
264
+ var InternalServerError = class extends Schema.TaggedError()(
265
+ "InternalServerError",
266
+ {
267
+ error: Schema.String,
268
+ details: Schema.optional(Schema.Any)
269
+ }
270
+ ) {
271
+ };
272
+ var ConflictError = class extends Schema.TaggedError()(
273
+ "ConflictError",
274
+ {
275
+ error: Schema.String
276
+ }
277
+ ) {
278
+ };
279
+ var AuthContext = Context.GenericTag(
280
+ "@payark/sdk-effect/AuthContext"
281
+ );
282
+ var SecurityMiddleware = class extends HttpApiMiddleware.Tag()(
283
+ "SecurityMiddleware",
284
+ {
285
+ security: {
286
+ bearer: HttpApiSecurity.bearer
287
+ },
288
+ provides: AuthContext,
289
+ failure: Schema.Union(AuthenticationError, IndustrialError)
290
+ }
291
+ ) {
292
+ };
293
+ var CronSecurity = class extends HttpApiMiddleware.Tag()(
294
+ "CronSecurity",
295
+ {
296
+ security: {
297
+ secret: HttpApiSecurity.apiKey({ in: "header", key: "x-cron-secret" })
298
+ },
299
+ failure: Schema.Union(AuthenticationError, IndustrialError)
300
+ }
301
+ ) {
302
+ };
303
+ var UserSecurity = class extends HttpApiMiddleware.Tag()(
304
+ "UserSecurity",
305
+ {
306
+ security: {
307
+ bearer: HttpApiSecurity.bearer
308
+ },
309
+ provides: AuthContext,
310
+ failure: Schema.Union(AuthenticationError, IndustrialError)
311
+ }
312
+ ) {
313
+ };
314
+ var CheckoutGroup = HttpApiGroup.make("checkout").add(
315
+ HttpApiEndpoint.post("create", "/").addSuccess(CheckoutSession).setPayload(CreateCheckoutParams).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
316
+ ).prefix("/v1/checkout").middleware(SecurityMiddleware);
317
+ var PaymentsGroup = HttpApiGroup.make("payments").add(
318
+ HttpApiEndpoint.get("list", "/").addSuccess(PaginatedResponse(Payment)).setUrlParams(ListPaymentsParams).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
319
+ ).add(
320
+ HttpApiEndpoint.get("retrieve", "/:id").addSuccess(Payment).setPath(Schema.Struct({ id: Id })).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
321
+ ).prefix("/v1/payments").middleware(SecurityMiddleware);
322
+ var CustomersGroup = HttpApiGroup.make("customers").add(
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 })
326
+ ).add(
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 })
328
+ ).add(
329
+ HttpApiEndpoint.patch("update", "/:id").addSuccess(Customer).setPath(Schema.Struct({ id: Id })).setPayload(UpdateCustomerParams).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(ConflictError, { status: 409 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
330
+ ).add(
331
+ HttpApiEndpoint.del("delete", "/:id").setPath(Schema.Struct({ id: Id })).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(ConflictError, { status: 409 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
332
+ ).prefix("/v1/customers").middleware(SecurityMiddleware);
333
+ var SubscriptionsGroup = HttpApiGroup.make("subscriptions").add(
334
+ HttpApiEndpoint.post("create", "/").addSuccess(Subscription, { status: 201 }).setPayload(CreateSubscriptionParams).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 }).middleware(SecurityMiddleware)
335
+ ).add(
336
+ HttpApiEndpoint.get("retrieve", "/:id").addSuccess(Subscription).setPath(Schema.Struct({ id: SubscriptionId })).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).middleware(SecurityMiddleware)
337
+ ).add(
338
+ HttpApiEndpoint.get("list", "/").addSuccess(PaginatedResponse(Subscription)).setUrlParams(ListSubscriptionsParams).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 }).middleware(SecurityMiddleware)
339
+ ).add(
340
+ HttpApiEndpoint.post("cancel", "/:id/cancel").addSuccess(Subscription).setPath(Schema.Struct({ id: SubscriptionId })).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).middleware(SecurityMiddleware)
341
+ ).add(
342
+ HttpApiEndpoint.post("activate", "/:id/activate").addSuccess(
343
+ Schema.Struct({
344
+ checkout_url: Schema.String,
345
+ payment_id: Schema.String
346
+ })
347
+ ).setPath(Schema.Struct({ id: SubscriptionId })).setPayload(
348
+ Schema.Struct({
349
+ provider: Provider,
350
+ returnUrl: Schema.String,
351
+ cancelUrl: Schema.optional(Schema.String)
352
+ })
353
+ ).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
354
+ ).prefix("/v1/subscriptions");
355
+ var AutomationGroup = HttpApiGroup.make("automation").add(
356
+ HttpApiEndpoint.post("reminders", "/reminders").addSuccess(
357
+ Schema.Struct({
358
+ message: Schema.String,
359
+ count: Schema.Number
360
+ })
361
+ ).addError(InternalServerError, { status: 500 })
362
+ ).add(
363
+ HttpApiEndpoint.post("reaper", "/reaper").addSuccess(
364
+ Schema.Struct({
365
+ message: Schema.String,
366
+ count: Schema.Number
367
+ })
368
+ ).addError(InternalServerError, { status: 500 })
369
+ ).prefix("/v1/automation").middleware(CronSecurity);
370
+ var TokensGroup = HttpApiGroup.make("tokens").add(
371
+ HttpApiEndpoint.post("create", "/").addSuccess(
372
+ Schema.Struct({
373
+ ...Token.fields,
374
+ token: Schema.String
375
+ })
376
+ ).setPayload(
377
+ Schema.Struct({
378
+ name: Schema.String,
379
+ scopes: Schema.optionalWith(Schema.Array(Schema.String), {
380
+ default: () => []
381
+ }),
382
+ expires_in_days: Schema.optional(Schema.Number)
383
+ })
384
+ ).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 })
385
+ ).add(
386
+ HttpApiEndpoint.get("list", "/").addSuccess(Schema.Array(Token)).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 })
387
+ ).add(
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 })
389
+ ).prefix("/v1/tokens").middleware(UserSecurity);
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 });
7
407
  var PayArkEffectError = class extends Data.TaggedError("PayArkEffectError") {
8
408
  /** Human-readable representation for logging/debugging. */
9
409
  toString() {
10
410
  return `[PayArkEffectError: ${this.code}] ${this.message} (HTTP ${this.statusCode})`;
11
411
  }
12
412
  };
413
+
414
+ // src/http.ts
415
+ var SDK_VERSION = "0.1.0";
13
416
  var PayArkConfigService = class extends Context.Tag("PayArkConfigService")() {
14
417
  };
15
418
  var request = (method, path, options) => Effect.gen(function* (_) {
@@ -100,81 +503,6 @@ function mapStatusToCode(status) {
100
503
  if (status >= 500) return "api_error";
101
504
  return "unknown_error";
102
505
  }
103
- var ProviderSchema = Schema.Union(
104
- Schema.Literal(
105
- "esewa",
106
- "khalti",
107
- "connectips",
108
- "imepay",
109
- "fonepay",
110
- "sandbox"
111
- )
112
- );
113
- var CheckoutSessionId = Schema.String.pipe(
114
- Schema.brand("CheckoutSessionId")
115
- );
116
- var PaymentId = Schema.String.pipe(Schema.brand("PaymentId"));
117
- var ProjectId = Schema.String.pipe(Schema.brand("ProjectId"));
118
- var CreateCheckoutSchema = Schema.Struct({
119
- amount: Schema.Number,
120
- currency: Schema.optionalWith(Schema.String, {
121
- default: () => "NPR"
122
- }),
123
- provider: ProviderSchema,
124
- returnUrl: Schema.String,
125
- cancelUrl: Schema.optional(Schema.String),
126
- metadata: Schema.optional(
127
- Schema.Record({ key: Schema.String, value: Schema.Any })
128
- )
129
- });
130
- var CheckoutSessionSchema = Schema.Struct({
131
- id: CheckoutSessionId,
132
- checkout_url: Schema.String,
133
- payment_method: Schema.Struct({
134
- type: ProviderSchema,
135
- url: Schema.optional(Schema.String),
136
- method: Schema.optional(
137
- Schema.Union(Schema.Literal("GET"), Schema.Literal("POST"))
138
- ),
139
- fields: Schema.optional(
140
- Schema.Record({ key: Schema.String, value: Schema.String })
141
- )
142
- })
143
- });
144
- var PaymentSchema = Schema.Struct({
145
- id: PaymentId,
146
- project_id: ProjectId,
147
- amount: Schema.Number,
148
- currency: Schema.String,
149
- status: Schema.Union(
150
- Schema.Literal("pending"),
151
- Schema.Literal("success"),
152
- Schema.Literal("failed")
153
- ),
154
- provider_ref: Schema.optional(Schema.NullOr(Schema.String)),
155
- metadata_json: Schema.optional(
156
- Schema.NullOr(Schema.Record({ key: Schema.String, value: Schema.Any }))
157
- ),
158
- gateway_response: Schema.optional(
159
- Schema.NullOr(Schema.Record({ key: Schema.String, value: Schema.Any }))
160
- ),
161
- created_at: Schema.String,
162
- updated_at: Schema.optional(Schema.String)
163
- });
164
- var ProjectSchema = Schema.Struct({
165
- id: ProjectId,
166
- name: Schema.String,
167
- api_key_secret: Schema.String,
168
- created_at: Schema.String
169
- });
170
- var PaginatedResponseSchema = (item) => Schema.Struct({
171
- data: Schema.Array(item),
172
- meta: Schema.Struct({
173
- total: Schema.NullOr(Schema.Number),
174
- limit: Schema.Number,
175
- offset: Schema.Number
176
- })
177
- });
178
506
 
179
507
  // src/resources/checkout.ts
180
508
  var CheckoutEffect = class {
@@ -189,7 +517,7 @@ var CheckoutEffect = class {
189
517
  */
190
518
  create(params) {
191
519
  return request("POST", "/v1/checkout", { body: params }).pipe(
192
- Effect.flatMap(Schema.decodeUnknown(CheckoutSessionSchema)),
520
+ Effect.flatMap(Schema.decodeUnknown(CheckoutSession)),
193
521
  Effect.provideService(PayArkConfigService, this.config)
194
522
  );
195
523
  }
@@ -212,9 +540,7 @@ var PaymentsEffect = class {
212
540
  projectId: params.projectId
213
541
  }
214
542
  }).pipe(
215
- Effect.flatMap(
216
- Schema.decodeUnknown(PaginatedResponseSchema(PaymentSchema))
217
- ),
543
+ Effect.flatMap(Schema.decodeUnknown(PaginatedResponse(Payment))),
218
544
  Effect.provideService(PayArkConfigService, this.config)
219
545
  );
220
546
  }
@@ -229,7 +555,7 @@ var PaymentsEffect = class {
229
555
  "GET",
230
556
  `/v1/payments/${encodeURIComponent(id)}`
231
557
  ).pipe(
232
- Effect.flatMap(Schema.decodeUnknown(PaymentSchema)),
558
+ Effect.flatMap(Schema.decodeUnknown(Payment)),
233
559
  Effect.provideService(PayArkConfigService, this.config)
234
560
  );
235
561
  }
@@ -245,13 +571,19 @@ var ProjectsEffect = class {
245
571
  */
246
572
  list() {
247
573
  return request("GET", "/v1/projects").pipe(
248
- Effect.flatMap(Schema.decodeUnknown(Schema.Array(ProjectSchema))),
574
+ Effect.flatMap(Schema.decodeUnknown(Schema.Array(Project))),
249
575
  Effect.provideService(PayArkConfigService, this.config)
250
576
  );
251
577
  }
252
578
  };
253
579
 
254
580
  // src/index.ts
581
+ var makeClient = (options) => HttpApiClient.make(PayArkApi, options);
582
+ var PayArkClient = class _PayArkClient extends Context.Tag(
583
+ "@payark/sdk-effect/PayArkClient"
584
+ )() {
585
+ static Live = (options) => Layer.effect(_PayArkClient, makeClient(options));
586
+ };
255
587
  var PayArkEffect = class {
256
588
  constructor(config) {
257
589
  this.config = config;
@@ -294,6 +626,6 @@ var PayArk = class _PayArk extends Context.Tag("@payark/sdk-effect/PayArk")() {
294
626
  static Live = (config) => Layer.succeed(_PayArk, new PayArkEffect(config));
295
627
  };
296
628
 
297
- export { CheckoutSessionId, CheckoutSessionSchema, CreateCheckoutSchema, PaginatedResponseSchema, PayArk, PayArkEffect, PayArkEffectError, PaymentId, PaymentSchema, ProjectId, ProjectSchema, ProviderSchema };
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 };
298
630
  //# sourceMappingURL=index.mjs.map
299
631
  //# sourceMappingURL=index.mjs.map