defmodule Stripe.Types do @moduledoc """ A module that contains shared types matching Stripe schemas. """ @type address :: %{ city: String.t() | nil, country: String.t() | nil, line1: String.t() | nil, line2: String.t() | nil, postal_code: String.t() | nil, state: String.t() | nil } @type dob :: %{ day: 1..31 | nil, month: 1..12 | nil, year: pos_integer | nil } @type fee :: %{ amount: integer, application: String.t() | nil, currency: String.t(), description: String.t() | nil, type: String.t() } @type japan_address :: %{ city: String.t() | nil, country: String.t() | nil, line1: String.t() | nil, line2: String.t() | nil, postal_code: String.t() | nil, state: String.t() | nil, town: String.t() | nil } @type metadata :: %{ optional(String.t()) => String.t() } @type shipping :: %{ address: Stripe.Types.address(), carrier: String.t() | nil, eta: Stripe.timestamp() | nil, name: String.t(), phone: String.t() | nil, status: String.t() | nil, tracking_number: String.t() | nil, tracking_url: String.t() | nil } @type collection_method_thresholds :: %{ amount_gte: integer | nil, reset_billing_cycle_anchor: boolean | nil } @type transfer_schedule :: %{ delay_days: non_neg_integer, interval: String.t(), monthly_anchor: non_neg_integer | nil, weekly_anchor: String.t() | nil } end