1import type {
2 IssuingCardholder as StripeIssuingCardholder,
3 UpdateIssuingCardholderError,
4 UpdateIssuingCardholderRequest as DistilledUpdateIssuingCardholderRequest,
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";
9import type { IssuingCardholder } from "./IssuingCardholder.ts";
10
11export interface UpdateIssuingCardholderRequest extends Omit<
12 DistilledUpdateIssuingCardholderRequest,
13 "cardholder"
14> {}
15
16/**
17 * Update a bound Stripe Issuing Cardholder over HTTP.
18 *
19 * ### Updating a Cardholder
20 * **Example:** Bind and update
21 * ```typescript
22 * const update = yield* Stripe.UpdateIssuingCardholder(alice);
23 * const live = yield* update({ email: "alice@example.com" });
24 * ```
25 *
26 * @binding
27 * @product Issuing
28 */
29export interface UpdateIssuingCardholder extends Binding.Service<
30 UpdateIssuingCardholder,
31 "Stripe.UpdateIssuingCardholder",
32 (
33 cardholder: IssuingCardholder,
34 ) => Effect.Effect<
35 (
36 request?: UpdateIssuingCardholderRequest,
37 ) => Effect.Effect<
38 StripeIssuingCardholder,
39 UpdateIssuingCardholderError,
40 RuntimeContext
41 >
42 >
43> {}
44
45export const UpdateIssuingCardholder = Binding.Service<UpdateIssuingCardholder>(
46 "Stripe.UpdateIssuingCardholder",
47);