privy_ruby 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +1 -1
  4. data/lib/privy/authorization/canonicalization.rb +2 -0
  5. data/lib/privy/models/custom_token_transfer_source.rb +14 -13
  6. data/lib/privy/models/ethereum_yield_provider.rb +1 -0
  7. data/lib/privy/models/named_token_transfer_source.rb +14 -13
  8. data/lib/privy/models/rpc_intent_request_details.rb +2 -2
  9. data/lib/privy/models/rpc_intent_response.rb +2 -2
  10. data/lib/privy/models/spark_coop_exit_fee_quote.rb +101 -0
  11. data/lib/privy/models/spark_coop_exit_request.rb +90 -0
  12. data/lib/privy/models/spark_currency_amount.rb +23 -0
  13. data/lib/privy/models/spark_exit_speed.rb +17 -0
  14. data/lib/privy/models/spark_get_withdrawal_fee_quote_rpc_input.rb +43 -0
  15. data/lib/privy/models/spark_get_withdrawal_fee_quote_rpc_input_params.rb +23 -0
  16. data/lib/privy/models/spark_get_withdrawal_fee_quote_rpc_response.rb +35 -0
  17. data/lib/privy/models/spark_rpc_input.rb +7 -1
  18. data/lib/privy/models/spark_rpc_response.rb +7 -1
  19. data/lib/privy/models/spark_withdraw_rpc_input.rb +43 -0
  20. data/lib/privy/models/spark_withdraw_rpc_input_params.rb +53 -0
  21. data/lib/privy/models/spark_withdraw_rpc_response.rb +35 -0
  22. data/lib/privy/models/transaction_chain_name_input.rb +25 -0
  23. data/lib/privy/models/transfer_received_transaction_detail.rb +6 -0
  24. data/lib/privy/models/transfer_sent_transaction_detail.rb +6 -0
  25. data/lib/privy/models/unsafe_unwrap_webhook_event.rb +17 -1
  26. data/lib/privy/models/wallet_action_earn_fee_collect_created_webhook_payload.rb +153 -0
  27. data/lib/privy/models/wallet_action_earn_fee_collect_failed_webhook_payload.rb +178 -0
  28. data/lib/privy/models/wallet_action_earn_fee_collect_rejected_webhook_payload.rb +177 -0
  29. data/lib/privy/models/wallet_action_earn_fee_collect_succeeded_webhook_payload.rb +169 -0
  30. data/lib/privy/models/wallet_asset.rb +2 -0
  31. data/lib/privy/models/wallet_asset_chain_name_input.rb +3 -0
  32. data/lib/privy/models/wallet_creation_input.rb +11 -1
  33. data/lib/privy/models/wallet_ethereum_asset.rb +1 -0
  34. data/lib/privy/models/wallet_rpc_request_body.rb +7 -1
  35. data/lib/privy/models/wallet_rpc_response.rb +7 -1
  36. data/lib/privy/models/wallet_tron_asset.rb +17 -0
  37. data/lib/privy/models/wallets/aave_vault_details.rb +130 -0
  38. data/lib/privy/models/wallets/balance_get_params.rb +6 -0
  39. data/lib/privy/models/wallets/balance_get_response.rb +6 -0
  40. data/lib/privy/models/wallets/earn_fee_collect_action_response.rb +149 -0
  41. data/lib/privy/models/wallets/earn_fee_collect_request_body.rb +20 -0
  42. data/lib/privy/models/wallets/ethereum_earn_provider.rb +1 -0
  43. data/lib/privy/models/wallets/ethereum_earn_vault_details_response.rb +13 -83
  44. data/lib/privy/models/wallets/list_wallet_actions_response.rb +2 -2
  45. data/lib/privy/models/wallets/morpho_vault_details.rb +130 -0
  46. data/lib/privy/models/wallets/transaction_get_params.rb +10 -20
  47. data/lib/privy/models/wallets/veda_vault_details.rb +122 -0
  48. data/lib/privy/models/wallets/wallet_action_response.rb +4 -1
  49. data/lib/privy/models/wallets/wallet_action_type.rb +1 -0
  50. data/lib/privy/models/webhook_payload.rb +13 -1
  51. data/lib/privy/models.rb +36 -0
  52. data/lib/privy/public_api/services/tron.rb +103 -0
  53. data/lib/privy/public_api/services/wallets.rb +4 -0
  54. data/lib/privy/resources/intents.rb +1 -1
  55. data/lib/privy/resources/wallets/actions.rb +1 -1
  56. data/lib/privy/resources/wallets/transactions.rb +1 -1
  57. data/lib/privy/resources/wallets.rb +2 -2
  58. data/lib/privy/resources/webhooks.rb +1 -1
  59. data/lib/privy/version.rb +1 -1
  60. data/lib/privy.rb +22 -0
  61. data/rbi/privy/models/custom_token_transfer_source.rbi +18 -13
  62. data/rbi/privy/models/ethereum_yield_provider.rbi +1 -0
  63. data/rbi/privy/models/named_token_transfer_source.rbi +18 -13
  64. data/rbi/privy/models/rpc_intent_request_details.rbi +6 -0
  65. data/rbi/privy/models/rpc_intent_response.rbi +2 -0
  66. data/rbi/privy/models/spark_coop_exit_fee_quote.rbi +143 -0
  67. data/rbi/privy/models/spark_coop_exit_request.rbi +114 -0
  68. data/rbi/privy/models/spark_currency_amount.rbi +31 -0
  69. data/rbi/privy/models/spark_exit_speed.rbi +21 -0
  70. data/rbi/privy/models/spark_get_withdrawal_fee_quote_rpc_input.rbi +94 -0
  71. data/rbi/privy/models/spark_get_withdrawal_fee_quote_rpc_input_params.rbi +34 -0
  72. data/rbi/privy/models/spark_get_withdrawal_fee_quote_rpc_response.rbi +82 -0
  73. data/rbi/privy/models/spark_rpc_input.rbi +3 -1
  74. data/rbi/privy/models/spark_rpc_response.rbi +3 -1
  75. data/rbi/privy/models/spark_withdraw_rpc_input.rbi +77 -0
  76. data/rbi/privy/models/spark_withdraw_rpc_input_params.rbi +80 -0
  77. data/rbi/privy/models/spark_withdraw_rpc_response.rbi +71 -0
  78. data/rbi/privy/models/transaction_chain_name_input.rbi +38 -0
  79. data/rbi/privy/models/transfer_received_transaction_detail.rbi +10 -0
  80. data/rbi/privy/models/transfer_sent_transaction_detail.rbi +4 -0
  81. data/rbi/privy/models/unsafe_unwrap_webhook_event.rbi +4 -0
  82. data/rbi/privy/models/wallet_action_earn_fee_collect_created_webhook_payload.rbi +232 -0
  83. data/rbi/privy/models/wallet_action_earn_fee_collect_failed_webhook_payload.rbi +271 -0
  84. data/rbi/privy/models/wallet_action_earn_fee_collect_rejected_webhook_payload.rbi +269 -0
  85. data/rbi/privy/models/wallet_action_earn_fee_collect_succeeded_webhook_payload.rbi +258 -0
  86. data/rbi/privy/models/wallet_asset.rbi +2 -0
  87. data/rbi/privy/models/wallet_asset_chain_name_input.rbi +4 -0
  88. data/rbi/privy/models/wallet_creation_input.rbi +15 -0
  89. data/rbi/privy/models/wallet_ethereum_asset.rbi +1 -0
  90. data/rbi/privy/models/wallet_rpc_request_body.rbi +2 -0
  91. data/rbi/privy/models/wallet_rpc_response.rbi +2 -0
  92. data/rbi/privy/models/wallet_tron_asset.rbi +21 -0
  93. data/rbi/privy/models/wallets/aave_vault_details.rbi +165 -0
  94. data/rbi/privy/models/wallets/balance_get_params.rbi +4 -0
  95. data/rbi/privy/models/wallets/balance_get_response.rbi +10 -0
  96. data/rbi/privy/models/wallets/earn_fee_collect_action_response.rbi +236 -0
  97. data/rbi/privy/models/wallets/earn_fee_collect_request_body.rbi +33 -0
  98. data/rbi/privy/models/wallets/ethereum_earn_provider.rbi +1 -0
  99. data/rbi/privy/models/wallets/ethereum_earn_vault_details_response.rbi +11 -103
  100. data/rbi/privy/models/wallets/list_wallet_actions_response.rbi +6 -3
  101. data/rbi/privy/models/wallets/morpho_vault_details.rbi +167 -0
  102. data/rbi/privy/models/wallets/transaction_get_params.rbi +15 -69
  103. data/rbi/privy/models/wallets/veda_vault_details.rbi +157 -0
  104. data/rbi/privy/models/wallets/wallet_action_response.rbi +2 -1
  105. data/rbi/privy/models/wallets/wallet_action_type.rbi +5 -0
  106. data/rbi/privy/models/webhook_payload.rbi +5 -1
  107. data/rbi/privy/models.rbi +39 -0
  108. data/rbi/privy/resources/intents.rbi +2 -0
  109. data/rbi/privy/resources/wallets/transactions.rbi +2 -1
  110. data/rbi/privy/resources/wallets.rbi +2 -0
  111. data/rbi/privy/resources/webhooks.rbi +4 -0
  112. data/sig/privy/models/custom_token_transfer_source.rbs +8 -6
  113. data/sig/privy/models/ethereum_yield_provider.rbs +2 -1
  114. data/sig/privy/models/named_token_transfer_source.rbs +7 -5
  115. data/sig/privy/models/spark_coop_exit_fee_quote.rbs +75 -0
  116. data/sig/privy/models/spark_coop_exit_request.rbs +76 -0
  117. data/sig/privy/models/spark_currency_amount.rbs +16 -0
  118. data/sig/privy/models/spark_exit_speed.rbs +15 -0
  119. data/sig/privy/models/spark_get_withdrawal_fee_quote_rpc_input.rbs +44 -0
  120. data/sig/privy/models/spark_get_withdrawal_fee_quote_rpc_input_params.rbs +16 -0
  121. data/sig/privy/models/spark_get_withdrawal_fee_quote_rpc_response.rbs +37 -0
  122. data/sig/privy/models/spark_rpc_input.rbs +2 -0
  123. data/sig/privy/models/spark_rpc_response.rbs +2 -0
  124. data/sig/privy/models/spark_withdraw_rpc_input.rbs +44 -0
  125. data/sig/privy/models/spark_withdraw_rpc_input_params.rbs +53 -0
  126. data/sig/privy/models/spark_withdraw_rpc_response.rbs +37 -0
  127. data/sig/privy/models/transaction_chain_name_input.rbs +34 -0
  128. data/sig/privy/models/transfer_received_transaction_detail.rbs +4 -0
  129. data/sig/privy/models/transfer_sent_transaction_detail.rbs +4 -0
  130. data/sig/privy/models/unsafe_unwrap_webhook_event.rbs +4 -0
  131. data/sig/privy/models/wallet_action_earn_fee_collect_created_webhook_payload.rbs +111 -0
  132. data/sig/privy/models/wallet_action_earn_fee_collect_failed_webhook_payload.rbs +126 -0
  133. data/sig/privy/models/wallet_action_earn_fee_collect_rejected_webhook_payload.rbs +126 -0
  134. data/sig/privy/models/wallet_action_earn_fee_collect_succeeded_webhook_payload.rbs +121 -0
  135. data/sig/privy/models/wallet_asset.rbs +13 -1
  136. data/sig/privy/models/wallet_asset_chain_name_input.rbs +6 -0
  137. data/sig/privy/models/wallet_creation_input.rbs +7 -0
  138. data/sig/privy/models/wallet_ethereum_asset.rbs +2 -1
  139. data/sig/privy/models/wallet_rpc_request_body.rbs +2 -0
  140. data/sig/privy/models/wallet_rpc_response.rbs +2 -0
  141. data/sig/privy/models/wallet_tron_asset.rbs +15 -0
  142. data/sig/privy/models/wallets/aave_vault_details.rbs +92 -0
  143. data/sig/privy/models/wallets/balance_get_params.rbs +4 -0
  144. data/sig/privy/models/wallets/balance_get_response.rbs +4 -0
  145. data/sig/privy/models/wallets/earn_fee_collect_action_response.rbs +114 -0
  146. data/sig/privy/models/wallets/earn_fee_collect_request_body.rbs +15 -0
  147. data/sig/privy/models/wallets/ethereum_earn_provider.rbs +2 -1
  148. data/sig/privy/models/wallets/ethereum_earn_vault_details_response.rbs +6 -57
  149. data/sig/privy/models/wallets/morpho_vault_details.rbs +92 -0
  150. data/sig/privy/models/wallets/transaction_get_params.rbs +8 -31
  151. data/sig/privy/models/wallets/veda_vault_details.rbs +87 -0
  152. data/sig/privy/models/wallets/wallet_action_response.rbs +1 -0
  153. data/sig/privy/models/wallets/wallet_action_type.rbs +2 -0
  154. data/sig/privy/models/webhook_payload.rbs +4 -0
  155. data/sig/privy/models.rbs +32 -0
  156. data/sig/privy/resources/wallets/transactions.rbs +1 -1
  157. data/sig/privy/resources/webhooks.rbs +4 -0
  158. metadata +66 -2
@@ -0,0 +1,165 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ module Wallets
6
+ class AaveVaultDetails < Privy::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(Privy::Wallets::AaveVaultDetails, Privy::Internal::AnyHash)
10
+ end
11
+
12
+ # Vault identifier.
13
+ sig { returns(String) }
14
+ attr_accessor :id
15
+
16
+ # EVM address of the vault admin wallet.
17
+ sig { returns(String) }
18
+ attr_accessor :admin_wallet_address
19
+
20
+ # Privy wallet ID of the vault admin.
21
+ sig { returns(String) }
22
+ attr_accessor :admin_wallet_id
23
+
24
+ # Annual percentage yield earned by the app from fee wrapper fees, in basis
25
+ # points.
26
+ sig { returns(T.nilable(Float)) }
27
+ attr_accessor :app_apy
28
+
29
+ # Asset metadata for an earn vault position.
30
+ sig { returns(Privy::Wallets::EarnAsset) }
31
+ attr_reader :asset
32
+
33
+ sig { params(asset: Privy::Wallets::EarnAsset::OrHash).void }
34
+ attr_writer :asset
35
+
36
+ # Fees available to collect, in smallest unit of the underlying asset.
37
+ sig { returns(String) }
38
+ attr_accessor :available_fees
39
+
40
+ # Available liquidity in USD.
41
+ sig { returns(T.nilable(Float)) }
42
+ attr_accessor :available_liquidity_usd
43
+
44
+ # CAIP-2 chain identifier (e.g. "eip155:8453").
45
+ sig { returns(String) }
46
+ attr_accessor :caip2
47
+
48
+ # Human-readable vault name from the yield provider.
49
+ sig { returns(String) }
50
+ attr_accessor :name
51
+
52
+ sig { returns(Privy::Wallets::AaveVaultDetails::Provider::OrSymbol) }
53
+ attr_accessor :provider
54
+
55
+ # Total value locked in USD.
56
+ sig { returns(T.nilable(Float)) }
57
+ attr_accessor :tvl_usd
58
+
59
+ # Annual percentage yield available to the user, after fees and excluding rewards,
60
+ # in basis points (e.g. 500 for 5%). 1 basis point = 0.01%.
61
+ sig { returns(T.nilable(Float)) }
62
+ attr_accessor :user_apy
63
+
64
+ # Onchain vault contract address.
65
+ sig { returns(String) }
66
+ attr_accessor :vault_address
67
+
68
+ # Vault details for an Aave earn vault, including fee visibility.
69
+ sig do
70
+ params(
71
+ id: String,
72
+ admin_wallet_address: String,
73
+ admin_wallet_id: String,
74
+ app_apy: T.nilable(Float),
75
+ asset: Privy::Wallets::EarnAsset::OrHash,
76
+ available_fees: String,
77
+ available_liquidity_usd: T.nilable(Float),
78
+ caip2: String,
79
+ name: String,
80
+ provider: Privy::Wallets::AaveVaultDetails::Provider::OrSymbol,
81
+ tvl_usd: T.nilable(Float),
82
+ user_apy: T.nilable(Float),
83
+ vault_address: String
84
+ ).returns(T.attached_class)
85
+ end
86
+ def self.new(
87
+ # Vault identifier.
88
+ id:,
89
+ # EVM address of the vault admin wallet.
90
+ admin_wallet_address:,
91
+ # Privy wallet ID of the vault admin.
92
+ admin_wallet_id:,
93
+ # Annual percentage yield earned by the app from fee wrapper fees, in basis
94
+ # points.
95
+ app_apy:,
96
+ # Asset metadata for an earn vault position.
97
+ asset:,
98
+ # Fees available to collect, in smallest unit of the underlying asset.
99
+ available_fees:,
100
+ # Available liquidity in USD.
101
+ available_liquidity_usd:,
102
+ # CAIP-2 chain identifier (e.g. "eip155:8453").
103
+ caip2:,
104
+ # Human-readable vault name from the yield provider.
105
+ name:,
106
+ provider:,
107
+ # Total value locked in USD.
108
+ tvl_usd:,
109
+ # Annual percentage yield available to the user, after fees and excluding rewards,
110
+ # in basis points (e.g. 500 for 5%). 1 basis point = 0.01%.
111
+ user_apy:,
112
+ # Onchain vault contract address.
113
+ vault_address:
114
+ )
115
+ end
116
+
117
+ sig do
118
+ override.returns(
119
+ {
120
+ id: String,
121
+ admin_wallet_address: String,
122
+ admin_wallet_id: String,
123
+ app_apy: T.nilable(Float),
124
+ asset: Privy::Wallets::EarnAsset,
125
+ available_fees: String,
126
+ available_liquidity_usd: T.nilable(Float),
127
+ caip2: String,
128
+ name: String,
129
+ provider: Privy::Wallets::AaveVaultDetails::Provider::OrSymbol,
130
+ tvl_usd: T.nilable(Float),
131
+ user_apy: T.nilable(Float),
132
+ vault_address: String
133
+ }
134
+ )
135
+ end
136
+ def to_hash
137
+ end
138
+
139
+ module Provider
140
+ extend Privy::Internal::Type::Enum
141
+
142
+ TaggedSymbol =
143
+ T.type_alias do
144
+ T.all(Symbol, Privy::Wallets::AaveVaultDetails::Provider)
145
+ end
146
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
147
+
148
+ AAVE =
149
+ T.let(
150
+ :aave,
151
+ Privy::Wallets::AaveVaultDetails::Provider::TaggedSymbol
152
+ )
153
+
154
+ sig do
155
+ override.returns(
156
+ T::Array[Privy::Wallets::AaveVaultDetails::Provider::TaggedSymbol]
157
+ )
158
+ end
159
+ def self.values
160
+ end
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end
@@ -238,6 +238,8 @@ module Privy
238
238
  T.let(:avax, Privy::Wallets::BalanceGetParams::Asset::TaggedSymbol)
239
239
  POL =
240
240
  T.let(:pol, Privy::Wallets::BalanceGetParams::Asset::TaggedSymbol)
241
+ BNB =
242
+ T.let(:bnb, Privy::Wallets::BalanceGetParams::Asset::TaggedSymbol)
241
243
  USDT =
242
244
  T.let(:usdt, Privy::Wallets::BalanceGetParams::Asset::TaggedSymbol)
243
245
  EURC =
@@ -246,6 +248,8 @@ module Privy
246
248
  T.let(:usdb, Privy::Wallets::BalanceGetParams::Asset::TaggedSymbol)
247
249
  SOL =
248
250
  T.let(:sol, Privy::Wallets::BalanceGetParams::Asset::TaggedSymbol)
251
+ TRX =
252
+ T.let(:trx, Privy::Wallets::BalanceGetParams::Asset::TaggedSymbol)
249
253
 
250
254
  WalletAssetArray =
251
255
  T.let(
@@ -161,6 +161,11 @@ module Privy
161
161
  :pol,
162
162
  Privy::Models::Wallets::BalanceGetResponse::Balance::Asset::TaggedSymbol
163
163
  )
164
+ BNB =
165
+ T.let(
166
+ :bnb,
167
+ Privy::Models::Wallets::BalanceGetResponse::Balance::Asset::TaggedSymbol
168
+ )
164
169
  USDT =
165
170
  T.let(
166
171
  :usdt,
@@ -181,6 +186,11 @@ module Privy
181
186
  :sol,
182
187
  Privy::Models::Wallets::BalanceGetResponse::Balance::Asset::TaggedSymbol
183
188
  )
189
+ TRX =
190
+ T.let(
191
+ :trx,
192
+ Privy::Models::Wallets::BalanceGetResponse::Balance::Asset::TaggedSymbol
193
+ )
184
194
  end
185
195
  end
186
196
  end
@@ -0,0 +1,236 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ module Wallets
6
+ class EarnFeeCollectActionResponse < Privy::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ Privy::Wallets::EarnFeeCollectActionResponse,
11
+ Privy::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # The ID of the wallet action.
16
+ sig { returns(String) }
17
+ attr_accessor :id
18
+
19
+ # Underlying asset token address.
20
+ sig { returns(String) }
21
+ attr_accessor :asset_address
22
+
23
+ # CAIP-2 chain identifier.
24
+ sig { returns(String) }
25
+ attr_accessor :caip2
26
+
27
+ # ISO 8601 timestamp of when the wallet action was created.
28
+ sig { returns(Time) }
29
+ attr_accessor :created_at
30
+
31
+ # Base-unit amount of fees collected (e.g. "1500000"). Populated after on-chain
32
+ # confirmation.
33
+ sig { returns(T.nilable(String)) }
34
+ attr_accessor :raw_amount
35
+
36
+ # Status of a wallet action.
37
+ sig { returns(Privy::Wallets::WalletActionStatus::TaggedSymbol) }
38
+ attr_accessor :status
39
+
40
+ sig do
41
+ returns(
42
+ Privy::Wallets::EarnFeeCollectActionResponse::Type::TaggedSymbol
43
+ )
44
+ end
45
+ attr_accessor :type
46
+
47
+ # ERC-4626 vault contract address.
48
+ sig { returns(String) }
49
+ attr_accessor :vault_address
50
+
51
+ # The vault ID.
52
+ sig { returns(String) }
53
+ attr_accessor :vault_id
54
+
55
+ # The ID of the wallet involved in the action.
56
+ sig { returns(String) }
57
+ attr_accessor :wallet_id
58
+
59
+ # Human-readable decimal amount of fees collected (e.g. "1.5"). Omitted when the
60
+ # token is not in the asset registry. Null while the action is pending; populated
61
+ # after on-chain confirmation.
62
+ sig { returns(T.nilable(String)) }
63
+ attr_accessor :amount
64
+
65
+ # Asset identifier (e.g. "usdc", "eth"). Only present when the token is known in
66
+ # the asset registry.
67
+ sig { returns(T.nilable(String)) }
68
+ attr_reader :asset
69
+
70
+ sig { params(asset: String).void }
71
+ attr_writer :asset
72
+
73
+ # Number of decimals for the underlying asset (e.g. 6 for USDC, 18 for ETH). Only
74
+ # present when the token is known in the asset registry.
75
+ sig { returns(T.nilable(Integer)) }
76
+ attr_reader :decimals
77
+
78
+ sig { params(decimals: Integer).void }
79
+ attr_writer :decimals
80
+
81
+ # A description of why a wallet action (or a step within a wallet action) failed.
82
+ sig { returns(T.nilable(Privy::Wallets::FailureReason)) }
83
+ attr_reader :failure_reason
84
+
85
+ sig do
86
+ params(failure_reason: Privy::Wallets::FailureReason::OrHash).void
87
+ end
88
+ attr_writer :failure_reason
89
+
90
+ # The steps of the wallet action. Only returned if `?include=steps` is provided.
91
+ sig do
92
+ returns(
93
+ T.nilable(T::Array[Privy::Wallets::WalletActionStep::Variants])
94
+ )
95
+ end
96
+ attr_reader :steps
97
+
98
+ sig do
99
+ params(
100
+ steps:
101
+ T::Array[
102
+ T.any(
103
+ Privy::Wallets::EvmTransactionWalletActionStep::OrHash,
104
+ Privy::Wallets::EvmUserOperationWalletActionStep::OrHash,
105
+ Privy::Wallets::SvmTransactionWalletActionStep::OrHash,
106
+ Privy::Wallets::TvmTransactionWalletActionStep::OrHash,
107
+ Privy::Wallets::ExternalTransactionWalletActionStep::OrHash,
108
+ Privy::Wallets::CustodianTransactionWalletActionStep::OrHash
109
+ )
110
+ ]
111
+ ).void
112
+ end
113
+ attr_writer :steps
114
+
115
+ # Response for an earn fee collect action.
116
+ sig do
117
+ params(
118
+ id: String,
119
+ asset_address: String,
120
+ caip2: String,
121
+ created_at: Time,
122
+ raw_amount: T.nilable(String),
123
+ status: Privy::Wallets::WalletActionStatus::OrSymbol,
124
+ type: Privy::Wallets::EarnFeeCollectActionResponse::Type::OrSymbol,
125
+ vault_address: String,
126
+ vault_id: String,
127
+ wallet_id: String,
128
+ amount: T.nilable(String),
129
+ asset: String,
130
+ decimals: Integer,
131
+ failure_reason: Privy::Wallets::FailureReason::OrHash,
132
+ steps:
133
+ T::Array[
134
+ T.any(
135
+ Privy::Wallets::EvmTransactionWalletActionStep::OrHash,
136
+ Privy::Wallets::EvmUserOperationWalletActionStep::OrHash,
137
+ Privy::Wallets::SvmTransactionWalletActionStep::OrHash,
138
+ Privy::Wallets::TvmTransactionWalletActionStep::OrHash,
139
+ Privy::Wallets::ExternalTransactionWalletActionStep::OrHash,
140
+ Privy::Wallets::CustodianTransactionWalletActionStep::OrHash
141
+ )
142
+ ]
143
+ ).returns(T.attached_class)
144
+ end
145
+ def self.new(
146
+ # The ID of the wallet action.
147
+ id:,
148
+ # Underlying asset token address.
149
+ asset_address:,
150
+ # CAIP-2 chain identifier.
151
+ caip2:,
152
+ # ISO 8601 timestamp of when the wallet action was created.
153
+ created_at:,
154
+ # Base-unit amount of fees collected (e.g. "1500000"). Populated after on-chain
155
+ # confirmation.
156
+ raw_amount:,
157
+ # Status of a wallet action.
158
+ status:,
159
+ type:,
160
+ # ERC-4626 vault contract address.
161
+ vault_address:,
162
+ # The vault ID.
163
+ vault_id:,
164
+ # The ID of the wallet involved in the action.
165
+ wallet_id:,
166
+ # Human-readable decimal amount of fees collected (e.g. "1.5"). Omitted when the
167
+ # token is not in the asset registry. Null while the action is pending; populated
168
+ # after on-chain confirmation.
169
+ amount: nil,
170
+ # Asset identifier (e.g. "usdc", "eth"). Only present when the token is known in
171
+ # the asset registry.
172
+ asset: nil,
173
+ # Number of decimals for the underlying asset (e.g. 6 for USDC, 18 for ETH). Only
174
+ # present when the token is known in the asset registry.
175
+ decimals: nil,
176
+ # A description of why a wallet action (or a step within a wallet action) failed.
177
+ failure_reason: nil,
178
+ # The steps of the wallet action. Only returned if `?include=steps` is provided.
179
+ steps: nil
180
+ )
181
+ end
182
+
183
+ sig do
184
+ override.returns(
185
+ {
186
+ id: String,
187
+ asset_address: String,
188
+ caip2: String,
189
+ created_at: Time,
190
+ raw_amount: T.nilable(String),
191
+ status: Privy::Wallets::WalletActionStatus::TaggedSymbol,
192
+ type:
193
+ Privy::Wallets::EarnFeeCollectActionResponse::Type::TaggedSymbol,
194
+ vault_address: String,
195
+ vault_id: String,
196
+ wallet_id: String,
197
+ amount: T.nilable(String),
198
+ asset: String,
199
+ decimals: Integer,
200
+ failure_reason: Privy::Wallets::FailureReason,
201
+ steps: T::Array[Privy::Wallets::WalletActionStep::Variants]
202
+ }
203
+ )
204
+ end
205
+ def to_hash
206
+ end
207
+
208
+ module Type
209
+ extend Privy::Internal::Type::Enum
210
+
211
+ TaggedSymbol =
212
+ T.type_alias do
213
+ T.all(Symbol, Privy::Wallets::EarnFeeCollectActionResponse::Type)
214
+ end
215
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
216
+
217
+ EARN_FEE_COLLECT =
218
+ T.let(
219
+ :earn_fee_collect,
220
+ Privy::Wallets::EarnFeeCollectActionResponse::Type::TaggedSymbol
221
+ )
222
+
223
+ sig do
224
+ override.returns(
225
+ T::Array[
226
+ Privy::Wallets::EarnFeeCollectActionResponse::Type::TaggedSymbol
227
+ ]
228
+ )
229
+ end
230
+ def self.values
231
+ end
232
+ end
233
+ end
234
+ end
235
+ end
236
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ module Wallets
6
+ class EarnFeeCollectRequestBody < Privy::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ Privy::Wallets::EarnFeeCollectRequestBody,
11
+ Privy::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # The ID of the vault to collect fees from.
16
+ sig { returns(String) }
17
+ attr_accessor :vault_id
18
+
19
+ # Input for collecting accumulated fees from an Aave vault.
20
+ sig { params(vault_id: String).returns(T.attached_class) }
21
+ def self.new(
22
+ # The ID of the vault to collect fees from.
23
+ vault_id:
24
+ )
25
+ end
26
+
27
+ sig { override.returns({ vault_id: String }) }
28
+ def to_hash
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -14,6 +14,7 @@ module Privy
14
14
  MORPHO =
15
15
  T.let(:morpho, Privy::Wallets::EthereumEarnProvider::TaggedSymbol)
16
16
  AAVE = T.let(:aave, Privy::Wallets::EthereumEarnProvider::TaggedSymbol)
17
+ VEDA = T.let(:veda, Privy::Wallets::EthereumEarnProvider::TaggedSymbol)
17
18
 
18
19
  sig do
19
20
  override.returns(
@@ -3,118 +3,26 @@
3
3
  module Privy
4
4
  module Models
5
5
  module Wallets
6
- class EthereumEarnVaultDetailsResponse < Privy::Internal::Type::BaseModel
7
- OrHash =
6
+ # Detailed vault information including current APY, liquidity, and asset metadata.
7
+ # Discriminated on provider.
8
+ module EthereumEarnVaultDetailsResponse
9
+ extend Privy::Internal::Type::Union
10
+
11
+ Variants =
8
12
  T.type_alias do
9
13
  T.any(
10
- Privy::Wallets::EthereumEarnVaultDetailsResponse,
11
- Privy::Internal::AnyHash
14
+ Privy::Wallets::AaveVaultDetails,
15
+ Privy::Wallets::MorphoVaultDetails,
16
+ Privy::Wallets::VedaVaultDetails
12
17
  )
13
18
  end
14
19
 
15
- # Vault identifier.
16
- sig { returns(String) }
17
- attr_accessor :id
18
-
19
- # Annual percentage yield earned by the app from fee wrapper fees, in basis
20
- # points.
21
- sig { returns(T.nilable(Float)) }
22
- attr_accessor :app_apy
23
-
24
- # Asset metadata for an earn vault position.
25
- sig { returns(Privy::Wallets::EarnAsset) }
26
- attr_reader :asset
27
-
28
- sig { params(asset: Privy::Wallets::EarnAsset::OrHash).void }
29
- attr_writer :asset
30
-
31
- # Available liquidity in USD.
32
- sig { returns(T.nilable(Float)) }
33
- attr_accessor :available_liquidity_usd
34
-
35
- # CAIP-2 chain identifier (e.g. "eip155:8453").
36
- sig { returns(String) }
37
- attr_accessor :caip2
38
-
39
- # Human-readable vault name from the yield provider.
40
- sig { returns(String) }
41
- attr_accessor :name
42
-
43
- # Supported earn provider protocols.
44
- sig { returns(Privy::Wallets::EthereumEarnProvider::OrSymbol) }
45
- attr_accessor :provider
46
-
47
- # Total value locked in USD.
48
- sig { returns(T.nilable(Float)) }
49
- attr_accessor :tvl_usd
50
-
51
- # Current annual percentage yield in basis points (e.g. 500 for 5%). 1 basis point
52
- # = 0.01%.
53
- sig { returns(T.nilable(Float)) }
54
- attr_accessor :user_apy
55
-
56
- # Onchain vault contract address.
57
- sig { returns(String) }
58
- attr_accessor :vault_address
59
-
60
- # Detailed vault information including current APY, liquidity, and asset metadata.
61
- sig do
62
- params(
63
- id: String,
64
- app_apy: T.nilable(Float),
65
- asset: Privy::Wallets::EarnAsset::OrHash,
66
- available_liquidity_usd: T.nilable(Float),
67
- caip2: String,
68
- name: String,
69
- provider: Privy::Wallets::EthereumEarnProvider::OrSymbol,
70
- tvl_usd: T.nilable(Float),
71
- user_apy: T.nilable(Float),
72
- vault_address: String
73
- ).returns(T.attached_class)
74
- end
75
- def self.new(
76
- # Vault identifier.
77
- id:,
78
- # Annual percentage yield earned by the app from fee wrapper fees, in basis
79
- # points.
80
- app_apy:,
81
- # Asset metadata for an earn vault position.
82
- asset:,
83
- # Available liquidity in USD.
84
- available_liquidity_usd:,
85
- # CAIP-2 chain identifier (e.g. "eip155:8453").
86
- caip2:,
87
- # Human-readable vault name from the yield provider.
88
- name:,
89
- # Supported earn provider protocols.
90
- provider:,
91
- # Total value locked in USD.
92
- tvl_usd:,
93
- # Current annual percentage yield in basis points (e.g. 500 for 5%). 1 basis point
94
- # = 0.01%.
95
- user_apy:,
96
- # Onchain vault contract address.
97
- vault_address:
98
- )
99
- end
100
-
101
20
  sig do
102
21
  override.returns(
103
- {
104
- id: String,
105
- app_apy: T.nilable(Float),
106
- asset: Privy::Wallets::EarnAsset,
107
- available_liquidity_usd: T.nilable(Float),
108
- caip2: String,
109
- name: String,
110
- provider: Privy::Wallets::EthereumEarnProvider::OrSymbol,
111
- tvl_usd: T.nilable(Float),
112
- user_apy: T.nilable(Float),
113
- vault_address: String
114
- }
22
+ T::Array[Privy::Wallets::EthereumEarnVaultDetailsResponse::Variants]
115
23
  )
116
24
  end
117
- def to_hash
25
+ def self.variants
118
26
  end
119
27
  end
120
28
  end
@@ -20,7 +20,8 @@ module Privy
20
20
  Privy::Wallets::TransferActionResponse,
21
21
  Privy::Wallets::EarnDepositActionResponse,
22
22
  Privy::Wallets::EarnWithdrawActionResponse,
23
- Privy::Wallets::EarnIncentiveClaimActionResponse
23
+ Privy::Wallets::EarnIncentiveClaimActionResponse,
24
+ Privy::Wallets::EarnFeeCollectActionResponse
24
25
  )
25
26
  ]
26
27
  )
@@ -40,7 +41,8 @@ module Privy
40
41
  Privy::Wallets::TransferActionResponse::OrHash,
41
42
  Privy::Wallets::EarnDepositActionResponse::OrHash,
42
43
  Privy::Wallets::EarnWithdrawActionResponse::OrHash,
43
- Privy::Wallets::EarnIncentiveClaimActionResponse::OrHash
44
+ Privy::Wallets::EarnIncentiveClaimActionResponse::OrHash,
45
+ Privy::Wallets::EarnFeeCollectActionResponse::OrHash
44
46
  )
45
47
  ],
46
48
  next_cursor: T.nilable(String)
@@ -59,7 +61,8 @@ module Privy
59
61
  Privy::Wallets::TransferActionResponse,
60
62
  Privy::Wallets::EarnDepositActionResponse,
61
63
  Privy::Wallets::EarnWithdrawActionResponse,
62
- Privy::Wallets::EarnIncentiveClaimActionResponse
64
+ Privy::Wallets::EarnIncentiveClaimActionResponse,
65
+ Privy::Wallets::EarnFeeCollectActionResponse
63
66
  )
64
67
  ],
65
68
  next_cursor: T.nilable(String)