# `Accrue.Processor.Fake.State`
[🔗](https://github.com/szTheory/accrue/blob/accrue-v0.3.0/lib/accrue/processor/fake/state.ex#L1)

Internal state struct for `Accrue.Processor.Fake`.

Shape is intentionally wider than Phase 1 needs so Phase 3+ can grow the
Fake's callback list without state-shape churn (per-resource counters for
subscriptions/invoices/payment_intents/setup_intents/payment_methods/
charges/refunds are already provisioned — D-20, D3-60).

# `id`

```elixir
@type id() :: String.t()
```

# `t`

```elixir
@type t() :: %Accrue.Processor.Fake.State{
  billing_portal_sessions: %{optional(id()) =&gt; map()},
  call_counts: %{optional(atom()) =&gt; non_neg_integer()},
  charges: %{optional(id()) =&gt; map()},
  checkout_sessions: %{optional(id()) =&gt; map()},
  clock: DateTime.t(),
  connect_accounts: %{optional(id()) =&gt; map()},
  counters: %{
    customer: non_neg_integer(),
    subscription: non_neg_integer(),
    subscription_item: non_neg_integer(),
    subscription_schedule: non_neg_integer(),
    invoice: non_neg_integer(),
    payment_intent: non_neg_integer(),
    setup_intent: non_neg_integer(),
    payment_method: non_neg_integer(),
    charge: non_neg_integer(),
    transfer: non_neg_integer(),
    refund: non_neg_integer(),
    coupon: non_neg_integer(),
    promotion_code: non_neg_integer(),
    checkout_session: non_neg_integer(),
    billing_portal_session: non_neg_integer(),
    connect_account: non_neg_integer(),
    event: non_neg_integer()
  },
  coupons: %{optional(id()) =&gt; map()},
  customers: %{optional(id()) =&gt; map()},
  idempotency_cache: %{optional(String.t()) =&gt; term()},
  invoices: %{optional(id()) =&gt; map()},
  meter_events: %{optional(id()) =&gt; map()},
  payment_intents: %{optional(id()) =&gt; map()},
  payment_methods: %{optional(id()) =&gt; map()},
  promotion_codes: %{optional(id()) =&gt; map()},
  refunds: %{optional(id()) =&gt; map()},
  scripts: %{optional(atom()) =&gt; term()},
  setup_intents: %{optional(id()) =&gt; map()},
  stubs: %{optional(atom()) =&gt; (... -&gt; term())},
  subscription_items: %{optional(id()) =&gt; map()},
  subscription_schedules: %{optional(id()) =&gt; map()},
  subscriptions: %{optional(id()) =&gt; map()},
  transfers: %{optional(id()) =&gt; map()}
}
```

# `epoch`

```elixir
@spec epoch() :: DateTime.t()
```

The module's epoch DateTime — the value `clock` is reset to on `reset/0`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
