1import type {
2 IssuingCard as StripeIssuingCard,
3 CreateIssuingCardError,
4 CreateIssuingCardRequest,
5} from "@distilled.cloud/stripe/stripe";
6import type * as Effect from "effect/Effect";
7import * as Binding from "../Binding.ts";
8import type { RuntimeContext } from "../RuntimeContext.ts";
9
10/**
11 * Create a Stripe Issuing Card over HTTP. Account-scoped — binds the API
12 * key onto the host, not a specific card resource.
13 *
14 * ### Creating a Card at runtime
15 * **Example:** Bind and create
16 * ```typescript
17 * const create = yield* Stripe.CreateIssuingCard();
18 * const card = yield* create({
19 * cardholder: cardholder.id,
20 * currency: "usd",
21 * type: "virtual",
22 * });
23 * ```
24 *
25 * @binding
26 * @product Issuing
27 */
28export interface CreateIssuingCard extends Binding.Service<
29 CreateIssuingCard,
30 "Stripe.CreateIssuingCard",
31 () => Effect.Effect<
32 (
33 request: CreateIssuingCardRequest,
34 ) => Effect.Effect<
35 StripeIssuingCard,
36 CreateIssuingCardError,
37 RuntimeContext
38 >
39 >
40> {}
41
42export const CreateIssuingCard = Binding.Service<CreateIssuingCard>(
43 "Stripe.CreateIssuingCard",
44);