MPP.Session.Payload (mpp v0.15.0)

Copy Markdown View Source

Session credential payload schema, discriminated on action.

Wire JSON uses camelCase action names ("open" / "topUp" / "voucher" / "close"). Elixir atoms are snake_case (:open / :top_up / :voucher / :close). Field names match the TIP-1034 precompile payloads in mppx Protocol.ts and mpp-rs SessionCredentialPayload.

Summary

Functions

Parse a session credential payload map into a typed struct.

Serialize a session payload to the camelCase wire map.

Types

action()

@type action() :: MPP.Session.Channel.action()

descriptor()

@type descriptor() :: %{
  payer: String.t(),
  payee: String.t(),
  operator: String.t(),
  token: String.t(),
  salt: String.t(),
  authorized_signer: String.t(),
  expiring_nonce_hash: String.t()
}

parse_error()

@type parse_error() ::
  :invalid_action
  | :invalid_payload
  | :invalid_transaction_type
  | :invalid_descriptor
  | :invalid_settlement_route
  | {:invalid_channel_id, term()}
  | {:invalid_hex, atom()}
  | {:invalid_amount, atom()}
  | {:invalid_address, atom()}
  | {:invalid_hash, atom()}

settlement_route()

@type settlement_route() :: %{
  adapter: String.t(),
  recipient: String.t(),
  target_token: String.t(),
  route_salt: String.t()
}

t()

@type t() :: %MPP.Session.Payload{
  action: action(),
  additional_deposit: non_neg_integer() | nil,
  authorized_signer: String.t() | nil,
  channel_id: String.t(),
  cumulative_amount: non_neg_integer() | nil,
  descriptor: descriptor() | nil,
  settlement_route: settlement_route() | nil,
  signature: String.t() | nil,
  transaction: String.t() | nil,
  type: String.t() | nil
}

Functions

parse(payload)

@spec parse(term()) :: {:ok, t()} | {:error, parse_error()}

Parse a session credential payload map into a typed struct.

to_map(payload)

@spec to_map(t()) :: map()

Serialize a session payload to the camelCase wire map.