import * as Schema from "effect/Schema";
import { API } from "../client";
import * as T from "../traits";
// Input Schema
export const GetCustomersCustomerPaymentMethodsInput = 
/*@__PURE__*/ /*#__PURE__*/ Schema.Struct({
    customer: Schema.String.pipe(T.PathParam()),
    allow_redisplay: Schema.optional(Schema.Literals(["always", "limited", "unspecified"])),
    ending_before: Schema.optional(Schema.String),
    expand: Schema.optional(Schema.String),
    limit: Schema.optional(Schema.Number),
    starting_after: Schema.optional(Schema.String),
    type: Schema.optional(Schema.Literals([
        "acss_debit",
        "affirm",
        "afterpay_clearpay",
        "alipay",
        "alma",
        "amazon_pay",
        "au_becs_debit",
        "bacs_debit",
        "bancontact",
        "billie",
        "blik",
        "boleto",
        "card",
        "cashapp",
        "crypto",
        "custom",
        "customer_balance",
        "eps",
        "fpx",
        "giropay",
        "grabpay",
        "ideal",
        "kakao_pay",
        "klarna",
        "konbini",
        "kr_card",
        "link",
        "mb_way",
        "mobilepay",
        "multibanco",
        "naver_pay",
        "nz_bank_account",
        "oxxo",
        "p24",
        "pay_by_bank",
        "payco",
        "paynow",
        "paypal",
        "payto",
        "pix",
        "promptpay",
        "revolut_pay",
        "samsung_pay",
        "satispay",
        "sepa_debit",
        "sofort",
        "swish",
        "twint",
        "us_bank_account",
        "wechat_pay",
        "zip",
    ])),
}).pipe(T.Http({
    method: "GET",
    path: "/v1/customers/{customer}/payment_methods",
    contentType: "form-urlencoded",
}));
// Output Schema
export const GetCustomersCustomerPaymentMethodsOutput = 
/*@__PURE__*/ /*#__PURE__*/ Schema.Struct({
    data: Schema.Array(Schema.Struct({
        acss_debit: Schema.optional(Schema.Struct({
            bank_name: Schema.NullOr(Schema.String),
            fingerprint: Schema.NullOr(Schema.String),
            institution_number: Schema.NullOr(Schema.String),
            last4: Schema.NullOr(Schema.String),
            transit_number: Schema.NullOr(Schema.String),
        })),
        affirm: Schema.optional(Schema.Struct({})),
        afterpay_clearpay: Schema.optional(Schema.Struct({})),
        alipay: Schema.optional(Schema.Struct({})),
        allow_redisplay: Schema.optional(Schema.Literals(["always", "limited", "unspecified"])),
        alma: Schema.optional(Schema.Struct({})),
        amazon_pay: Schema.optional(Schema.Struct({})),
        au_becs_debit: Schema.optional(Schema.Struct({
            bsb_number: Schema.NullOr(Schema.String),
            fingerprint: Schema.NullOr(Schema.String),
            last4: Schema.NullOr(Schema.String),
        })),
        bacs_debit: Schema.optional(Schema.Struct({
            fingerprint: Schema.NullOr(Schema.String),
            last4: Schema.NullOr(Schema.String),
            sort_code: Schema.NullOr(Schema.String),
        })),
        bancontact: Schema.optional(Schema.Struct({})),
        billie: Schema.optional(Schema.Struct({})),
        billing_details: Schema.Struct({
            address: Schema.Unknown,
            email: Schema.NullOr(Schema.String),
            name: Schema.NullOr(Schema.String),
            phone: Schema.NullOr(Schema.String),
            tax_id: Schema.NullOr(Schema.String),
        }),
        blik: Schema.optional(Schema.Struct({})),
        boleto: Schema.optional(Schema.Struct({
            tax_id: Schema.String,
        })),
        card: Schema.optional(Schema.Struct({
            brand: Schema.String,
            checks: Schema.Unknown,
            country: Schema.NullOr(Schema.String),
            description: Schema.optional(Schema.NullOr(Schema.String)),
            display_brand: Schema.NullOr(Schema.String),
            exp_month: Schema.Number,
            exp_year: Schema.Number,
            fingerprint: Schema.optional(Schema.NullOr(Schema.String)),
            funding: Schema.String,
            generated_from: Schema.Unknown,
            iin: Schema.optional(Schema.NullOr(Schema.String)),
            issuer: Schema.optional(Schema.NullOr(Schema.String)),
            last4: Schema.String,
            networks: Schema.Unknown,
            regulated_status: Schema.NullOr(Schema.Literals(["regulated", "unregulated"])),
            three_d_secure_usage: Schema.Unknown,
            wallet: Schema.Unknown,
        })),
        card_present: Schema.optional(Schema.Struct({
            brand: Schema.NullOr(Schema.String),
            brand_product: Schema.NullOr(Schema.String),
            cardholder_name: Schema.NullOr(Schema.String),
            country: Schema.NullOr(Schema.String),
            description: Schema.optional(Schema.NullOr(Schema.String)),
            exp_month: Schema.Number,
            exp_year: Schema.Number,
            fingerprint: Schema.NullOr(Schema.String),
            funding: Schema.NullOr(Schema.String),
            iin: Schema.optional(Schema.NullOr(Schema.String)),
            issuer: Schema.optional(Schema.NullOr(Schema.String)),
            last4: Schema.NullOr(Schema.String),
            networks: Schema.Unknown,
            offline: Schema.Unknown,
            preferred_locales: Schema.NullOr(Schema.Array(Schema.String)),
            read_method: Schema.NullOr(Schema.Literals([
                "contact_emv",
                "contactless_emv",
                "contactless_magstripe_mode",
                "magnetic_stripe_fallback",
                "magnetic_stripe_track2",
            ])),
            wallet: Schema.optional(Schema.Struct({
                type: Schema.Literals([
                    "apple_pay",
                    "google_pay",
                    "samsung_pay",
                    "unknown",
                ]),
            })),
        })),
        cashapp: Schema.optional(Schema.Struct({
            buyer_id: Schema.NullOr(Schema.String),
            cashtag: Schema.NullOr(Schema.String),
        })),
        created: Schema.Number,
        crypto: Schema.optional(Schema.Struct({})),
        custom: Schema.optional(Schema.Struct({
            display_name: Schema.NullOr(Schema.String),
            logo: Schema.Unknown,
            type: Schema.String,
        })),
        customer: Schema.Unknown,
        customer_account: Schema.NullOr(Schema.String),
        customer_balance: Schema.optional(Schema.Struct({})),
        eps: Schema.optional(Schema.Struct({
            bank: Schema.NullOr(Schema.Literals([
                "arzte_und_apotheker_bank",
                "austrian_anadi_bank_ag",
                "bank_austria",
                "bankhaus_carl_spangler",
                "bankhaus_schelhammer_und_schattera_ag",
                "bawag_psk_ag",
                "bks_bank_ag",
                "brull_kallmus_bank_ag",
                "btv_vier_lander_bank",
                "capital_bank_grawe_gruppe_ag",
                "deutsche_bank_ag",
                "dolomitenbank",
                "easybank_ag",
                "erste_bank_und_sparkassen",
                "hypo_alpeadriabank_international_ag",
                "hypo_bank_burgenland_aktiengesellschaft",
                "hypo_noe_lb_fur_niederosterreich_u_wien",
                "hypo_oberosterreich_salzburg_steiermark",
                "hypo_tirol_bank_ag",
                "hypo_vorarlberg_bank_ag",
                "marchfelder_bank",
                "oberbank_ag",
                "raiffeisen_bankengruppe_osterreich",
                "schoellerbank_ag",
                "sparda_bank_wien",
                "volksbank_gruppe",
                "volkskreditbank_ag",
                "vr_bank_braunau",
            ])),
        })),
        fpx: Schema.optional(Schema.Struct({
            account_holder_type: Schema.NullOr(Schema.Literals(["company", "individual"])),
            bank: Schema.Literals([
                "affin_bank",
                "agrobank",
                "alliance_bank",
                "ambank",
                "bank_islam",
                "bank_muamalat",
                "bank_of_china",
                "bank_rakyat",
                "bsn",
                "cimb",
                "deutsche_bank",
                "hong_leong_bank",
                "hsbc",
                "kfh",
                "maybank2e",
                "maybank2u",
                "ocbc",
                "pb_enterprise",
                "public_bank",
                "rhb",
                "standard_chartered",
                "uob",
            ]),
        })),
        giropay: Schema.optional(Schema.Struct({})),
        grabpay: Schema.optional(Schema.Struct({})),
        id: Schema.String,
        ideal: Schema.optional(Schema.Struct({
            bank: Schema.NullOr(Schema.Literals([
                "abn_amro",
                "adyen",
                "asn_bank",
                "bunq",
                "buut",
                "finom",
                "handelsbanken",
                "ing",
                "knab",
                "mollie",
                "moneyou",
                "n26",
                "nn",
                "rabobank",
                "regiobank",
                "revolut",
                "sns_bank",
                "triodos_bank",
                "van_lanschot",
                "yoursafe",
            ])),
            bic: Schema.NullOr(Schema.Literals([
                "ABNANL2A",
                "ADYBNL2A",
                "ASNBNL21",
                "BITSNL2A",
                "BUNQNL2A",
                "BUUTNL2A",
                "FNOMNL22",
                "FVLBNL22",
                "HANDNL2A",
                "INGBNL2A",
                "KNABNL2H",
                "MLLENL2A",
                "MOYONL21",
                "NNBANL2G",
                "NTSBDEB1",
                "RABONL2U",
                "RBRBNL21",
                "REVOIE23",
                "REVOLT21",
                "SNSBNL2A",
                "TRIONL2U",
            ])),
        })),
        interac_present: Schema.optional(Schema.Struct({
            brand: Schema.NullOr(Schema.String),
            cardholder_name: Schema.NullOr(Schema.String),
            country: Schema.NullOr(Schema.String),
            description: Schema.optional(Schema.NullOr(Schema.String)),
            exp_month: Schema.Number,
            exp_year: Schema.Number,
            fingerprint: Schema.NullOr(Schema.String),
            funding: Schema.NullOr(Schema.String),
            iin: Schema.optional(Schema.NullOr(Schema.String)),
            issuer: Schema.optional(Schema.NullOr(Schema.String)),
            last4: Schema.NullOr(Schema.String),
            networks: Schema.Unknown,
            preferred_locales: Schema.NullOr(Schema.Array(Schema.String)),
            read_method: Schema.NullOr(Schema.Literals([
                "contact_emv",
                "contactless_emv",
                "contactless_magstripe_mode",
                "magnetic_stripe_fallback",
                "magnetic_stripe_track2",
            ])),
        })),
        kakao_pay: Schema.optional(Schema.Struct({})),
        klarna: Schema.optional(Schema.Struct({
            dob: Schema.optional(Schema.Unknown),
        })),
        konbini: Schema.optional(Schema.Struct({})),
        kr_card: Schema.optional(Schema.Struct({
            brand: Schema.NullOr(Schema.Literals([
                "bc",
                "citi",
                "hana",
                "hyundai",
                "jeju",
                "jeonbuk",
                "kakaobank",
                "kbank",
                "kdbbank",
                "kookmin",
                "kwangju",
                "lotte",
                "mg",
                "nh",
                "post",
                "samsung",
                "savingsbank",
                "shinhan",
                "shinhyup",
                "suhyup",
                "tossbank",
                "woori",
            ])),
            last4: Schema.NullOr(Schema.String),
        })),
        link: Schema.optional(Schema.Struct({
            email: Schema.NullOr(Schema.String),
            persistent_token: Schema.optional(Schema.String),
        })),
        livemode: Schema.Boolean,
        mb_way: Schema.optional(Schema.Struct({})),
        metadata: Schema.NullOr(Schema.Record(Schema.String, Schema.String)),
        mobilepay: Schema.optional(Schema.Struct({})),
        multibanco: Schema.optional(Schema.Struct({})),
        naver_pay: Schema.optional(Schema.Struct({
            buyer_id: Schema.NullOr(Schema.String),
            funding: Schema.Literals(["card", "points"]),
        })),
        nz_bank_account: Schema.optional(Schema.Struct({
            account_holder_name: Schema.NullOr(Schema.String),
            bank_code: Schema.String,
            bank_name: Schema.String,
            branch_code: Schema.String,
            last4: Schema.String,
            suffix: Schema.NullOr(Schema.String),
        })),
        object: Schema.Literals(["payment_method"]),
        oxxo: Schema.optional(Schema.Struct({})),
        p24: Schema.optional(Schema.Struct({
            bank: Schema.NullOr(Schema.Literals([
                "alior_bank",
                "bank_millennium",
                "bank_nowy_bfg_sa",
                "bank_pekao_sa",
                "banki_spbdzielcze",
                "blik",
                "bnp_paribas",
                "boz",
                "citi_handlowy",
                "credit_agricole",
                "envelobank",
                "etransfer_pocztowy24",
                "getin_bank",
                "ideabank",
                "ing",
                "inteligo",
                "mbank_mtransfer",
                "nest_przelew",
                "noble_pay",
                "pbac_z_ipko",
                "plus_bank",
                "santander_przelew24",
                "tmobile_usbugi_bankowe",
                "toyota_bank",
                "velobank",
                "volkswagen_bank",
            ])),
        })),
        pay_by_bank: Schema.optional(Schema.Struct({})),
        payco: Schema.optional(Schema.Struct({})),
        paynow: Schema.optional(Schema.Struct({})),
        paypal: Schema.optional(Schema.Struct({
            country: Schema.NullOr(Schema.String),
            payer_email: Schema.NullOr(Schema.String),
            payer_id: Schema.NullOr(Schema.String),
        })),
        payto: Schema.optional(Schema.Struct({
            bsb_number: Schema.NullOr(Schema.String),
            last4: Schema.NullOr(Schema.String),
            pay_id: Schema.NullOr(Schema.String),
        })),
        pix: Schema.optional(Schema.Struct({})),
        promptpay: Schema.optional(Schema.Struct({})),
        radar_options: Schema.optional(Schema.Struct({
            session: Schema.optional(Schema.String),
        })),
        revolut_pay: Schema.optional(Schema.Struct({})),
        samsung_pay: Schema.optional(Schema.Struct({})),
        satispay: Schema.optional(Schema.Struct({})),
        sepa_debit: Schema.optional(Schema.Struct({
            bank_code: Schema.NullOr(Schema.String),
            branch_code: Schema.NullOr(Schema.String),
            country: Schema.NullOr(Schema.String),
            fingerprint: Schema.NullOr(Schema.String),
            generated_from: Schema.Unknown,
            last4: Schema.NullOr(Schema.String),
        })),
        sofort: Schema.optional(Schema.Struct({
            country: Schema.NullOr(Schema.String),
        })),
        swish: Schema.optional(Schema.Struct({})),
        twint: Schema.optional(Schema.Struct({})),
        type: Schema.Literals([
            "acss_debit",
            "affirm",
            "afterpay_clearpay",
            "alipay",
            "alma",
            "amazon_pay",
            "au_becs_debit",
            "bacs_debit",
            "bancontact",
            "billie",
            "blik",
            "boleto",
            "card",
            "card_present",
            "cashapp",
            "crypto",
            "custom",
            "customer_balance",
            "eps",
            "fpx",
            "giropay",
            "grabpay",
            "ideal",
            "interac_present",
            "kakao_pay",
            "klarna",
            "konbini",
            "kr_card",
            "link",
            "mb_way",
            "mobilepay",
            "multibanco",
            "naver_pay",
            "nz_bank_account",
            "oxxo",
            "p24",
            "pay_by_bank",
            "payco",
            "paynow",
            "paypal",
            "payto",
            "pix",
            "promptpay",
            "revolut_pay",
            "samsung_pay",
            "satispay",
            "sepa_debit",
            "sofort",
            "swish",
            "twint",
            "us_bank_account",
            "wechat_pay",
            "zip",
        ]),
        us_bank_account: Schema.optional(Schema.Struct({
            account_holder_type: Schema.NullOr(Schema.Literals(["company", "individual"])),
            account_type: Schema.NullOr(Schema.Literals(["checking", "savings"])),
            bank_name: Schema.NullOr(Schema.String),
            financial_connections_account: Schema.NullOr(Schema.String),
            fingerprint: Schema.NullOr(Schema.String),
            last4: Schema.NullOr(Schema.String),
            networks: Schema.Unknown,
            routing_number: Schema.NullOr(Schema.String),
            status_details: Schema.Unknown,
        })),
        wechat_pay: Schema.optional(Schema.Struct({})),
        zip: Schema.optional(Schema.Struct({})),
    })),
    has_more: Schema.Boolean,
    object: Schema.Literals(["list"]),
    url: Schema.String,
});
// The operation
/**
 * List a Customer's PaymentMethods
 *
 * <p>Returns a list of PaymentMethods for a given Customer</p>
 *
 * @param allow_redisplay - This field indicates whether this payment method can be shown again to its customer in a checkout flow. Stripe products such as Checkout and Elements use this field to determine whether a payment method can be shown as a saved payment method in a checkout flow.
 * @param ending_before - A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with `obj_bar`, your subsequent call can include `ending_before=obj_bar` in order to fetch the previous page of the list.
 * @param expand - Specifies which fields in the response should be expanded.
 * @param limit - A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
 * @param starting_after - A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with `obj_foo`, your subsequent call can include `starting_after=obj_foo` in order to fetch the next page of the list.
 * @param type - An optional filter on the list, based on the object `type` field. Without the filter, the list includes all current and future payment method types. If your integration expects only one type of payment method in the response, make sure to provide a type value in the request.
 */
export const GetCustomersCustomerPaymentMethods = 
/*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    inputSchema: GetCustomersCustomerPaymentMethodsInput,
    outputSchema: GetCustomersCustomerPaymentMethodsOutput,
}));
//# sourceMappingURL=GetCustomersCustomerPaymentMethods.js.map