Represents an approval decision.
@type decision() :: :allow | :deny | atom() | String.t() | nil
@type t() :: %CliSubprocessCore.Payload.ApprovalResolved{ approval_id: String.t() | nil, decision: decision(), extra: map(), metadata: map(), reason: String.t() | nil }
@spec new(keyword() | map() | struct()) :: struct()
@spec parse(keyword() | map() | struct()) :: {:ok, struct()} | {:error, {:invalid_payload, module(), CliSubprocessCore.Schema.error_detail()}}
@spec parse!(keyword() | map() | struct()) :: struct()
@spec schema() :: Zoi.schema()
@spec to_map(struct()) :: map()