privy_ruby 0.0.2 → 0.1.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 (177) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +1 -1
  4. data/lib/privy/base58.rb +41 -0
  5. data/lib/privy/client.rb +8 -0
  6. data/lib/privy/cryptography.rb +34 -0
  7. data/lib/privy/models/create_link_auth_intent_input.rb +17 -0
  8. data/lib/privy/models/create_link_auth_intent_response.rb +36 -0
  9. data/lib/privy/models/create_stripe_onramp_session_input.rb +33 -0
  10. data/lib/privy/models/create_stripe_onramp_session_response.rb +23 -0
  11. data/lib/privy/models/device_authorization_response.rb +63 -0
  12. data/lib/privy/models/earn_incentive_reward_entry.rb +50 -0
  13. data/lib/privy/models/earn_incentive_rewards_query.rb +18 -0
  14. data/lib/privy/models/earn_incentive_rewards_response.rb +19 -0
  15. data/lib/privy/models/exchange_stripe_tokens_input.rb +23 -0
  16. data/lib/privy/models/exchange_stripe_tokens_response.rb +17 -0
  17. data/lib/privy/models/fiat_onramp_provider.rb +2 -0
  18. data/lib/privy/models/fiat_onramp_stripe_sdk_session_response.rb +45 -0
  19. data/lib/privy/models/fiat_onramp_url_session_response.rb +39 -0
  20. data/lib/privy/models/get_fiat_onramp_url_response.rb +12 -14
  21. data/lib/privy/models/get_stripe_crypto_customer_response.rb +39 -0
  22. data/lib/privy/models/kraken_embed_custom_order_cancelled_webhook_payload.rb +66 -0
  23. data/lib/privy/models/kraken_embed_custom_order_executed_webhook_payload.rb +54 -0
  24. data/lib/privy/models/kraken_embed_custom_order_execution_failed_webhook_payload.rb +67 -0
  25. data/lib/privy/models/link_auth_intent_created.rb +35 -0
  26. data/lib/privy/models/link_auth_intent_no_account.rb +27 -0
  27. data/lib/privy/models/list_stripe_consumer_wallets_response.rb +17 -0
  28. data/lib/privy/models/list_stripe_payment_tokens_response.rb +17 -0
  29. data/lib/privy/models/onramp_session_params.rb +61 -0
  30. data/lib/privy/models/refresh_stripe_quote_response.rb +18 -0
  31. data/lib/privy/models/rule_delete_intent_response.rb +63 -0
  32. data/lib/privy/models/rule_intent_response.rb +0 -1
  33. data/lib/privy/models/rule_mutate_intent_response.rb +64 -0
  34. data/lib/privy/models/stripe_consumer_wallet.rb +29 -0
  35. data/lib/privy/models/stripe_crypto_customer_active.rb +39 -0
  36. data/lib/privy/models/stripe_crypto_customer_expired.rb +33 -0
  37. data/lib/privy/models/stripe_crypto_customer_none.rb +27 -0
  38. data/lib/privy/models/stripe_onramp_checkout_response.rb +25 -0
  39. data/lib/privy/models/stripe_onramp_session_status.rb +17 -0
  40. data/lib/privy/models/stripe_payment_token.rb +23 -0
  41. data/lib/privy/models/stripe_quote.rb +17 -0
  42. data/lib/privy/models/stripe_transaction_details.rb +17 -0
  43. data/lib/privy/models/stripe_verification.rb +23 -0
  44. data/lib/privy/models/swap_action_response.rb +9 -1
  45. data/lib/privy/models/swap_destination.rb +13 -4
  46. data/lib/privy/models/swap_quote_destination.rb +15 -4
  47. data/lib/privy/models/swap_quote_request_body.rb +9 -1
  48. data/lib/privy/models/swap_quote_response.rb +25 -1
  49. data/lib/privy/models/swap_request_body.rb +9 -1
  50. data/lib/privy/models/wallets/swap_execute_params.rb +45 -0
  51. data/lib/privy/models/wallets/swap_quote_params.rb +36 -0
  52. data/lib/privy/models.rb +71 -4
  53. data/lib/privy/public_api/privy_client.rb +2 -1
  54. data/lib/privy/public_api/services/earn/ethereum/incentive.rb +61 -0
  55. data/lib/privy/public_api/services/earn/ethereum.rb +131 -0
  56. data/lib/privy/public_api/services/earn.rb +18 -0
  57. data/lib/privy/public_api/services/key_quorums.rb +7 -1
  58. data/lib/privy/public_api/services/policies.rb +21 -3
  59. data/lib/privy/public_api/services/transactions.rb +14 -0
  60. data/lib/privy/public_api/services/wallets.rb +153 -1
  61. data/lib/privy/resources/intents.rb +6 -6
  62. data/lib/privy/resources/oauth.rb +14 -0
  63. data/lib/privy/resources/onramps.rb +14 -0
  64. data/lib/privy/resources/wallets/swap.rb +105 -0
  65. data/lib/privy/resources/wallets.rb +10 -2
  66. data/lib/privy/version.rb +1 -1
  67. data/lib/privy/wallet_entropy.rb +60 -0
  68. data/lib/privy.rb +47 -4
  69. data/rbi/privy/client.rbi +6 -0
  70. data/rbi/privy/models/create_link_auth_intent_input.rbi +27 -0
  71. data/rbi/privy/models/create_link_auth_intent_response.rbi +68 -0
  72. data/rbi/privy/models/create_stripe_onramp_session_input.rbi +55 -0
  73. data/rbi/privy/models/create_stripe_onramp_session_response.rbi +30 -0
  74. data/rbi/privy/models/device_authorization_response.rbi +81 -0
  75. data/rbi/privy/models/earn_incentive_reward_entry.rbi +73 -0
  76. data/rbi/privy/models/earn_incentive_rewards_query.rbi +28 -0
  77. data/rbi/privy/models/earn_incentive_rewards_response.rbi +35 -0
  78. data/rbi/privy/models/exchange_stripe_tokens_input.rbi +33 -0
  79. data/rbi/privy/models/exchange_stripe_tokens_response.rbi +24 -0
  80. data/rbi/privy/models/fiat_onramp_provider.rbi +3 -0
  81. data/rbi/privy/models/fiat_onramp_stripe_sdk_session_response.rbi +78 -0
  82. data/rbi/privy/models/fiat_onramp_url_session_response.rbi +65 -0
  83. data/rbi/privy/models/get_fiat_onramp_url_response.rbi +12 -15
  84. data/rbi/privy/models/get_stripe_crypto_customer_response.rbi +81 -0
  85. data/rbi/privy/models/kraken_embed_custom_order_cancelled_webhook_payload.rbi +111 -0
  86. data/rbi/privy/models/kraken_embed_custom_order_executed_webhook_payload.rbi +101 -0
  87. data/rbi/privy/models/kraken_embed_custom_order_execution_failed_webhook_payload.rbi +111 -0
  88. data/rbi/privy/models/link_auth_intent_created.rbi +60 -0
  89. data/rbi/privy/models/link_auth_intent_no_account.rbi +54 -0
  90. data/rbi/privy/models/list_stripe_consumer_wallets_response.rbi +31 -0
  91. data/rbi/privy/models/list_stripe_payment_tokens_response.rbi +31 -0
  92. data/rbi/privy/models/onramp_session_params.rbi +76 -0
  93. data/rbi/privy/models/refresh_stripe_quote_response.rbi +33 -0
  94. data/rbi/privy/models/rule_delete_intent_response.rbi +113 -0
  95. data/rbi/privy/models/rule_mutate_intent_response.rbi +113 -0
  96. data/rbi/privy/models/stripe_consumer_wallet.rbi +38 -0
  97. data/rbi/privy/models/stripe_crypto_customer_active.rbi +68 -0
  98. data/rbi/privy/models/stripe_crypto_customer_expired.rbi +63 -0
  99. data/rbi/privy/models/stripe_crypto_customer_none.rbi +53 -0
  100. data/rbi/privy/models/stripe_onramp_checkout_response.rbi +51 -0
  101. data/rbi/privy/models/stripe_onramp_session_status.rbi +26 -0
  102. data/rbi/privy/models/stripe_payment_token.rbi +27 -0
  103. data/rbi/privy/models/stripe_quote.rbi +22 -0
  104. data/rbi/privy/models/stripe_transaction_details.rbi +24 -0
  105. data/rbi/privy/models/stripe_verification.rbi +27 -0
  106. data/rbi/privy/models/swap_action_response.rbi +17 -27
  107. data/rbi/privy/models/swap_destination.rbi +26 -7
  108. data/rbi/privy/models/swap_quote_destination.rbi +30 -7
  109. data/rbi/privy/models/swap_quote_request_body.rbi +11 -0
  110. data/rbi/privy/models/swap_quote_response.rbi +54 -3
  111. data/rbi/privy/models/swap_request_body.rbi +11 -0
  112. data/rbi/privy/models/wallets/swap_execute_params.rbi +71 -0
  113. data/rbi/privy/models/wallets/swap_quote_params.rbi +58 -0
  114. data/rbi/privy/models.rbi +76 -5
  115. data/rbi/privy/resources/intents.rbi +3 -3
  116. data/rbi/privy/resources/oauth.rbi +12 -0
  117. data/rbi/privy/resources/onramps.rbi +12 -0
  118. data/rbi/privy/resources/wallets/swap.rbi +94 -0
  119. data/rbi/privy/resources/wallets.rbi +9 -2
  120. data/sig/privy/client.rbs +4 -0
  121. data/sig/privy/models/create_link_auth_intent_input.rbs +15 -0
  122. data/sig/privy/models/create_link_auth_intent_response.rbs +26 -0
  123. data/sig/privy/models/create_stripe_onramp_session_input.rbs +30 -0
  124. data/sig/privy/models/create_stripe_onramp_session_response.rbs +16 -0
  125. data/sig/privy/models/device_authorization_response.rbs +45 -0
  126. data/sig/privy/models/earn_incentive_reward_entry.rbs +42 -0
  127. data/sig/privy/models/earn_incentive_rewards_query.rbs +13 -0
  128. data/sig/privy/models/earn_incentive_rewards_response.rbs +16 -0
  129. data/sig/privy/models/exchange_stripe_tokens_input.rbs +19 -0
  130. data/sig/privy/models/exchange_stripe_tokens_response.rbs +13 -0
  131. data/sig/privy/models/fiat_onramp_provider.rbs +4 -0
  132. data/sig/privy/models/fiat_onramp_stripe_sdk_session_response.rbs +45 -0
  133. data/sig/privy/models/fiat_onramp_url_session_response.rbs +40 -0
  134. data/sig/privy/models/get_fiat_onramp_url_response.rbs +6 -8
  135. data/sig/privy/models/get_stripe_crypto_customer_response.rbs +29 -0
  136. data/sig/privy/models/kraken_embed_custom_order_cancelled_webhook_payload.rbs +50 -0
  137. data/sig/privy/models/kraken_embed_custom_order_executed_webhook_payload.rbs +45 -0
  138. data/sig/privy/models/kraken_embed_custom_order_execution_failed_webhook_payload.rbs +50 -0
  139. data/sig/privy/models/link_auth_intent_created.rbs +32 -0
  140. data/sig/privy/models/link_auth_intent_no_account.rbs +26 -0
  141. data/sig/privy/models/list_stripe_consumer_wallets_response.rbs +14 -0
  142. data/sig/privy/models/list_stripe_payment_tokens_response.rbs +14 -0
  143. data/sig/privy/models/onramp_session_params.rbs +50 -0
  144. data/sig/privy/models/refresh_stripe_quote_response.rbs +13 -0
  145. data/sig/privy/models/rule_delete_intent_response.rbs +66 -0
  146. data/sig/privy/models/rule_mutate_intent_response.rbs +66 -0
  147. data/sig/privy/models/stripe_consumer_wallet.rbs +22 -0
  148. data/sig/privy/models/stripe_crypto_customer_active.rbs +40 -0
  149. data/sig/privy/models/stripe_crypto_customer_expired.rbs +35 -0
  150. data/sig/privy/models/stripe_crypto_customer_none.rbs +28 -0
  151. data/sig/privy/models/stripe_onramp_checkout_response.rbs +29 -0
  152. data/sig/privy/models/stripe_onramp_session_status.rbs +15 -0
  153. data/sig/privy/models/stripe_payment_token.rbs +15 -0
  154. data/sig/privy/models/stripe_quote.rbs +13 -0
  155. data/sig/privy/models/stripe_transaction_details.rbs +13 -0
  156. data/sig/privy/models/stripe_verification.rbs +15 -0
  157. data/sig/privy/models/swap_action_response.rbs +7 -0
  158. data/sig/privy/models/swap_destination.rbs +16 -3
  159. data/sig/privy/models/swap_quote_destination.rbs +16 -3
  160. data/sig/privy/models/swap_quote_request_body.rbs +9 -0
  161. data/sig/privy/models/swap_quote_response.rbs +26 -3
  162. data/sig/privy/models/swap_request_body.rbs +9 -0
  163. data/sig/privy/models/wallets/swap_execute_params.rbs +44 -0
  164. data/sig/privy/models/wallets/swap_quote_params.rbs +34 -0
  165. data/sig/privy/models.rbs +69 -5
  166. data/sig/privy/resources/intents.rbs +3 -3
  167. data/sig/privy/resources/oauth.rbs +7 -0
  168. data/sig/privy/resources/onramps.rbs +7 -0
  169. data/sig/privy/resources/wallets/swap.rbs +34 -0
  170. data/sig/privy/resources/wallets.rbs +2 -0
  171. metadata +125 -8
  172. data/lib/privy/models/gas_sponsorship_configuration.rb +0 -29
  173. data/lib/privy/models/gas_sponsorship_configuration_input.rb +0 -29
  174. data/rbi/privy/models/gas_sponsorship_configuration.rbi +0 -48
  175. data/rbi/privy/models/gas_sponsorship_configuration_input.rbi +0 -60
  176. data/sig/privy/models/gas_sponsorship_configuration.rbs +0 -30
  177. data/sig/privy/models/gas_sponsorship_configuration_input.rbs +0 -36
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 51e25ac71d2aa91eb15e1f25786474dab96e24a923c19aba56ddc8e4eafd30aa
4
- data.tar.gz: f6adf206cd6d68890b264536771bde67ab3b4e713a7427a69e0ace6c930ce2f9
3
+ metadata.gz: 24f26f4a50959cdf4a425471cc6eccb7bf9c9b12ee3beaeac5180c8cc3764cf1
4
+ data.tar.gz: 75f5e38ff6e8ff9a1be67f976e7a56165bc4d0f7ba8c7d7290d2a687b1a84342
5
5
  SHA512:
6
- metadata.gz: 9363c7b9cc66d84ba4daa2060d2316eca42a728f2ebe05b0cae6fc2447d4b8c64e651bc754da42443d161d5007e9a4165445450e527b674d1fd28895351c87d4
7
- data.tar.gz: db7de0267ee175d3f5adc0792cd71dbbce20057322b2a695f9f2391ac7fada81817df8ea9cf2b2d59b3e58af96f4a168dbe038edeefb67ba5271440b7df9a044
6
+ metadata.gz: a2e6be7e846dfb8d5698713754e0f745a37aa3a2bb7ba886bf797b8ba4820f6b937aa496eacdc10051279917e7c50899da410a688ba5ef57cc76abbead4edf6a
7
+ data.tar.gz: '0857860b67f021ba365409f8341fcb3e6f11672e13fc1e8449e5bab77710b934d9e0cecf6492e53f96d86f65b980a89e6ea9511131c11854187d68fa042556d6'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0 (2026-06-01)
4
+
5
+ Full Changelog: [v0.0.2...v0.1.0](https://github.com/privy-io/ruby-sdk/compare/v0.0.2...v0.1.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([c3f99bb](https://github.com/privy-io/ruby-sdk/commit/c3f99bb1fb234e765d8916413ea41291159fbc2d))
10
+ * **api:** api update ([5394738](https://github.com/privy-io/ruby-sdk/commit/539473886ed5be1af9f03caf7e132471563a6596))
11
+ * **api:** api update ([c6f6a31](https://github.com/privy-io/ruby-sdk/commit/c6f6a31171dc2f12fb990fd11084eaff3a658a42))
12
+ * **api:** api update ([124a1eb](https://github.com/privy-io/ruby-sdk/commit/124a1eb8d4b60bbf215ce6d7c44eba7df4066e25))
13
+ * **api:** api update ([54ac7a9](https://github.com/privy-io/ruby-sdk/commit/54ac7a985a01f4205b670f0dc3b627ac6c0cd214))
14
+ * **api:** api update ([47b8c13](https://github.com/privy-io/ruby-sdk/commit/47b8c13516892c9d1138fd7e890c00dbe78b0210))
15
+ * transaction.get ([#55](https://github.com/privy-io/ruby-sdk/issues/55)) ([d0623c4](https://github.com/privy-io/ruby-sdk/commit/d0623c43e75f362e50c545580fba9b4182d9d553))
16
+ * wallet actions earn ([#53](https://github.com/privy-io/ruby-sdk/issues/53)) ([96b1d76](https://github.com/privy-io/ruby-sdk/commit/96b1d76a440936e64d18785033aec72aa3a921e1))
17
+ * wallet export and import ([#50](https://github.com/privy-io/ruby-sdk/issues/50)) ([2f9e563](https://github.com/privy-io/ruby-sdk/commit/2f9e56383d46ab9bfc0baed95036ff5bb1f81c18))
18
+
19
+
20
+ ### Chores
21
+
22
+ * formatting ([#54](https://github.com/privy-io/ruby-sdk/issues/54)) ([58658ee](https://github.com/privy-io/ruby-sdk/commit/58658ee0a4a7c5bacf0a3ebef78f22fc8d2171be))
23
+
3
24
  ## 0.0.2 (2026-05-21)
4
25
 
5
26
  Full Changelog: [v0.0.1...v0.0.2](https://github.com/privy-io/ruby-sdk/compare/v0.0.1...v0.0.2)
data/README.md CHANGED
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "privy_ruby", "~> 0.0.2"
20
+ gem "privy_ruby", "~> 0.1.0"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Base58
5
+ ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
6
+ INDEX = ALPHABET.chars.each_with_index.to_h.freeze
7
+
8
+ module_function
9
+
10
+ def encode(bytes)
11
+ integer = bytes.unpack1("H*").to_i(16)
12
+ encoded = +""
13
+ while integer.positive?
14
+ integer, remainder = integer.divmod(58)
15
+ encoded.prepend(ALPHABET[remainder])
16
+ end
17
+
18
+ leading_zeroes = bytes.bytes.take_while(&:zero?).length
19
+ ("1" * leading_zeroes) + encoded
20
+ end
21
+
22
+ def decode(value)
23
+ integer = 0
24
+ value.each_char do |char|
25
+ digit = INDEX[char]
26
+ raise ArgumentError, "invalid base58 character: #{char.inspect}" if digit.nil?
27
+
28
+ integer = (integer * 58) + digit
29
+ end
30
+
31
+ bytes = []
32
+ while integer.positive?
33
+ bytes.unshift(integer & 0xff)
34
+ integer >>= 8
35
+ end
36
+
37
+ leading_zeroes = value.each_char.take_while { |char| char == "1" }.length
38
+ ("\x00".b * leading_zeroes) + bytes.pack("C*")
39
+ end
40
+ end
41
+ end
data/lib/privy/client.rb CHANGED
@@ -72,6 +72,9 @@ module Privy
72
72
  # @return [Privy::Resources::ClientAuth]
73
73
  attr_reader :client_auth
74
74
 
75
+ # @return [Privy::Resources::Onramps]
76
+ attr_reader :onramps
77
+
75
78
  # @return [Privy::Resources::Funding]
76
79
  attr_reader :funding
77
80
 
@@ -84,6 +87,9 @@ module Privy
84
87
  # @return [Privy::Resources::Shared]
85
88
  attr_reader :shared
86
89
 
90
+ # @return [Privy::Resources::OAuth]
91
+ attr_reader :oauth
92
+
87
93
  # @return [Privy::Resources::WalletActions]
88
94
  attr_reader :wallet_actions
89
95
 
@@ -190,10 +196,12 @@ module Privy
190
196
  @embedded_wallets = Privy::Resources::EmbeddedWallets.new(client: self)
191
197
  @analytics = Privy::Resources::Analytics.new(client: self)
192
198
  @client_auth = Privy::Resources::ClientAuth.new(client: self)
199
+ @onramps = Privy::Resources::Onramps.new(client: self)
193
200
  @funding = Privy::Resources::Funding.new(client: self)
194
201
  @organizations = Privy::Resources::Organizations.new(client: self)
195
202
  @cross_app = Privy::Resources::CrossApp.new(client: self)
196
203
  @shared = Privy::Resources::Shared.new(client: self)
204
+ @oauth = Privy::Resources::OAuth.new(client: self)
197
205
  @wallet_actions = Privy::Resources::WalletActions.new(client: self)
198
206
  @yield_ = Privy::Resources::Yield.new(client: self)
199
207
  @kraken_embed = Privy::Resources::KrakenEmbed.new(client: self)
@@ -48,5 +48,39 @@ module Privy
48
48
  OpenSSL::PKey.read(@public_key_spki)
49
49
  end
50
50
  end
51
+
52
+ HpkeEncryptedPayload = Data.define(:encapsulated_key, :ciphertext)
53
+
54
+ class HpkeSender
55
+ def initialize
56
+ @hpke = HPKE.new(HPKE::DHKEM_P256_HKDF_SHA256, HPKE::HKDF_SHA256, HPKE::CHACHA20_POLY1305)
57
+ end
58
+
59
+ # Encrypts a payload for a recipient using HPKE base mode.
60
+ #
61
+ # @param public_key_spki [String] Raw DER bytes of the recipient's SPKI-encoded public key,
62
+ # or a raw uncompressed P-256 public key point.
63
+ # @param payload [String] Raw plaintext bytes
64
+ # @return [Privy::Cryptography::HpkeEncryptedPayload]
65
+ def encrypt(public_key_spki, payload)
66
+ recipient_public_key = OpenSSL::PKey.read(normalize_public_key_spki(public_key_spki))
67
+ encrypted = @hpke.setup_base_s(recipient_public_key, "")
68
+ ciphertext = encrypted.fetch(:context_s).seal("", payload)
69
+
70
+ HpkeEncryptedPayload.new(encapsulated_key: encrypted.fetch(:enc), ciphertext: ciphertext)
71
+ end
72
+
73
+ private
74
+
75
+ def normalize_public_key_spki(public_key)
76
+ return p256_uncompressed_point_to_spki(public_key) if public_key.bytesize == 65 && public_key.getbyte(0) == 0x04
77
+
78
+ public_key
79
+ end
80
+
81
+ def p256_uncompressed_point_to_spki(public_key)
82
+ ["3059301306072a8648ce3d020106082a8648ce3d030107034200"].pack("H*") + public_key
83
+ end
84
+ end
51
85
  end
52
86
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class CreateLinkAuthIntentInput < Privy::Internal::Type::BaseModel
6
+ # @!attribute email
7
+ #
8
+ # @return [String, nil]
9
+ optional :email, String
10
+
11
+ # @!method initialize(email: nil)
12
+ # Input for creating a Link auth intent to initiate Stripe onramp authentication.
13
+ #
14
+ # @param email [String]
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class CreateLinkAuthIntentResponse < Privy::Internal::Type::BaseModel
6
+ # @!attribute data
7
+ # Auth intent created. Pass id to authenticate().
8
+ #
9
+ # @return [Privy::Models::LinkAuthIntentCreated, Privy::Models::LinkAuthIntentNoAccount]
10
+ required :data, union: -> { Privy::CreateLinkAuthIntentResponse::Data }
11
+
12
+ # @!method initialize(data:)
13
+ # The created Link auth intent.
14
+ #
15
+ # @param data [Privy::Models::LinkAuthIntentCreated, Privy::Models::LinkAuthIntentNoAccount] Auth intent created. Pass id to authenticate().
16
+
17
+ # Auth intent created. Pass id to authenticate().
18
+ #
19
+ # @see Privy::Models::CreateLinkAuthIntentResponse#data
20
+ module Data
21
+ extend Privy::Internal::Type::Union
22
+
23
+ discriminator :status
24
+
25
+ # Auth intent created. Pass id to authenticate().
26
+ variant :created, -> { Privy::LinkAuthIntentCreated }
27
+
28
+ # No Link account for this email. Call registerLinkUser() then retry.
29
+ variant :no_account, -> { Privy::LinkAuthIntentNoAccount }
30
+
31
+ # @!method self.variants
32
+ # @return [Array(Privy::Models::LinkAuthIntentCreated, Privy::Models::LinkAuthIntentNoAccount)]
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class CreateStripeOnrampSessionInput < Privy::Internal::Type::BaseModel
6
+ # @!attribute environment
7
+ # Whether to use the sandbox or production environment for fiat onramp.
8
+ #
9
+ # @return [Symbol, Privy::Models::FiatOnrampEnvironment]
10
+ required :environment, enum: -> { Privy::FiatOnrampEnvironment }
11
+
12
+ # @!attribute session
13
+ # Parameters for creating a Stripe onramp session.
14
+ #
15
+ # @return [Privy::Models::OnrampSessionParams]
16
+ required :session, -> { Privy::OnrampSessionParams }
17
+
18
+ # @!attribute session_id
19
+ #
20
+ # @return [String]
21
+ required :session_id, String
22
+
23
+ # @!method initialize(environment:, session:, session_id:)
24
+ # Input for creating a Stripe onramp session.
25
+ #
26
+ # @param environment [Symbol, Privy::Models::FiatOnrampEnvironment] Whether to use the sandbox or production environment for fiat onramp.
27
+ #
28
+ # @param session [Privy::Models::OnrampSessionParams] Parameters for creating a Stripe onramp session.
29
+ #
30
+ # @param session_id [String]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class CreateStripeOnrampSessionResponse < Privy::Internal::Type::BaseModel
6
+ # @!attribute id
7
+ #
8
+ # @return [String]
9
+ required :id, String
10
+
11
+ # @!attribute session_id
12
+ #
13
+ # @return [String]
14
+ required :session_id, String
15
+
16
+ # @!method initialize(id:, session_id:)
17
+ # The created onramp session.
18
+ #
19
+ # @param id [String]
20
+ # @param session_id [String]
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class DeviceAuthorizationResponse < Privy::Internal::Type::BaseModel
6
+ # @!attribute device_code
7
+ # A long-lived code used by the device to poll for authorization status.
8
+ #
9
+ # @return [String]
10
+ required :device_code, String
11
+
12
+ # @!attribute expires_in
13
+ # The lifetime in seconds of the device_code and user_code.
14
+ #
15
+ # @return [Integer]
16
+ required :expires_in, Integer
17
+
18
+ # @!attribute interval
19
+ # The minimum number of seconds the device should wait between polling requests.
20
+ #
21
+ # @return [Integer]
22
+ required :interval, Integer
23
+
24
+ # @!attribute user_code
25
+ # A short code displayed to the user, who enters it at the verification URI to
26
+ # authorize the device.
27
+ #
28
+ # @return [String]
29
+ required :user_code, String
30
+
31
+ # @!attribute verification_uri
32
+ # The URI where the user navigates to enter the user_code.
33
+ #
34
+ # @return [String]
35
+ required :verification_uri, String
36
+
37
+ # @!attribute verification_uri_complete
38
+ # The verification URI with the user_code pre-filled as a query parameter.
39
+ #
40
+ # @return [String]
41
+ required :verification_uri_complete, String
42
+
43
+ # @!method initialize(device_code:, expires_in:, interval:, user_code:, verification_uri:, verification_uri_complete:)
44
+ # Some parameter documentations has been truncated, see
45
+ # {Privy::Models::DeviceAuthorizationResponse} for more details.
46
+ #
47
+ # Response from the device authorization endpoint per RFC 8628. Contains codes and
48
+ # URIs for the device flow.
49
+ #
50
+ # @param device_code [String] A long-lived code used by the device to poll for authorization status.
51
+ #
52
+ # @param expires_in [Integer] The lifetime in seconds of the device_code and user_code.
53
+ #
54
+ # @param interval [Integer] The minimum number of seconds the device should wait between polling requests.
55
+ #
56
+ # @param user_code [String] A short code displayed to the user, who enters it at the verification URI to aut
57
+ #
58
+ # @param verification_uri [String] The URI where the user navigates to enter the user_code.
59
+ #
60
+ # @param verification_uri_complete [String] The verification URI with the user_code pre-filled as a query parameter.
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class EarnIncentiveRewardEntry < Privy::Internal::Type::BaseModel
6
+ # @!attribute amount_claimed
7
+ # Total amount already claimed, in smallest unit.
8
+ #
9
+ # @return [String]
10
+ required :amount_claimed, String
11
+
12
+ # @!attribute amount_unclaimed
13
+ # Amount available to claim on-chain but not yet claimed, in smallest unit.
14
+ #
15
+ # @return [String]
16
+ required :amount_unclaimed, String
17
+
18
+ # @!attribute token_address
19
+ # Address of the reward token.
20
+ #
21
+ # @return [String]
22
+ required :token_address, String
23
+
24
+ # @!attribute token_symbol
25
+ # Symbol of the reward token (e.g. "MORPHO").
26
+ #
27
+ # @return [String]
28
+ required :token_symbol, String
29
+
30
+ # @!attribute token_decimals
31
+ # Number of decimals for the reward token.
32
+ #
33
+ # @return [Integer, nil]
34
+ optional :token_decimals, Integer
35
+
36
+ # @!method initialize(amount_claimed:, amount_unclaimed:, token_address:, token_symbol:, token_decimals: nil)
37
+ # A reward token with claimed and unclaimed amounts.
38
+ #
39
+ # @param amount_claimed [String] Total amount already claimed, in smallest unit.
40
+ #
41
+ # @param amount_unclaimed [String] Amount available to claim on-chain but not yet claimed, in smallest unit.
42
+ #
43
+ # @param token_address [String] Address of the reward token.
44
+ #
45
+ # @param token_symbol [String] Symbol of the reward token (e.g. "MORPHO").
46
+ #
47
+ # @param token_decimals [Integer] Number of decimals for the reward token.
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class EarnIncentiveRewardsQuery < Privy::Internal::Type::BaseModel
6
+ # @!attribute chain
7
+ # Chain name to fetch rewards for (e.g. "base", "ethereum").
8
+ #
9
+ # @return [String]
10
+ required :chain, String
11
+
12
+ # @!method initialize(chain:)
13
+ # Query parameters for fetching incentive rewards.
14
+ #
15
+ # @param chain [String] Chain name to fetch rewards for (e.g. "base", "ethereum").
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class EarnIncentiveRewardsResponse < Privy::Internal::Type::BaseModel
6
+ # @!attribute rewards
7
+ # Reward tokens with their claimed and unclaimed amounts.
8
+ #
9
+ # @return [Array<Privy::Models::EarnIncentiveRewardEntry>]
10
+ required :rewards, -> { Privy::Internal::Type::ArrayOf[Privy::EarnIncentiveRewardEntry] }
11
+
12
+ # @!method initialize(rewards:)
13
+ # All incentive rewards for a wallet, with claimed and unclaimed amounts per
14
+ # token.
15
+ #
16
+ # @param rewards [Array<Privy::Models::EarnIncentiveRewardEntry>] Reward tokens with their claimed and unclaimed amounts.
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class ExchangeStripeTokensInput < Privy::Internal::Type::BaseModel
6
+ # @!attribute auth_intent_id
7
+ #
8
+ # @return [String]
9
+ required :auth_intent_id, String
10
+
11
+ # @!attribute crypto_customer_id
12
+ #
13
+ # @return [String]
14
+ required :crypto_customer_id, String
15
+
16
+ # @!method initialize(auth_intent_id:, crypto_customer_id:)
17
+ # Input for exchanging a Link auth intent for OAuth tokens.
18
+ #
19
+ # @param auth_intent_id [String]
20
+ # @param crypto_customer_id [String]
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class ExchangeStripeTokensResponse < Privy::Internal::Type::BaseModel
6
+ # @!attribute crypto_customer_id
7
+ #
8
+ # @return [String]
9
+ required :crypto_customer_id, String
10
+
11
+ # @!method initialize(crypto_customer_id:)
12
+ # Confirmation that tokens were exchanged and stored.
13
+ #
14
+ # @param crypto_customer_id [String]
15
+ end
16
+ end
17
+ end
@@ -12,6 +12,8 @@ module Privy
12
12
  MOONPAY_SANDBOX = :"moonpay-sandbox"
13
13
  COINBASE = :coinbase
14
14
  COINBASE_SANDBOX = :"coinbase-sandbox"
15
+ STRIPE = :stripe
16
+ STRIPE_SANDBOX = :"stripe-sandbox"
15
17
 
16
18
  # @!method self.values
17
19
  # @return [Array<Symbol>]
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class FiatOnrampStripeSDKSessionResponse < Privy::Internal::Type::BaseModel
6
+ # @!attribute network
7
+ #
8
+ # @return [String]
9
+ required :network, String
10
+
11
+ # @!attribute publishable_key
12
+ #
13
+ # @return [String]
14
+ required :publishable_key, String
15
+
16
+ # @!attribute session_id
17
+ #
18
+ # @return [String]
19
+ required :session_id, String
20
+
21
+ # @!attribute type
22
+ #
23
+ # @return [Symbol, Privy::Models::FiatOnrampStripeSDKSessionResponse::Type]
24
+ required :type, enum: -> { Privy::FiatOnrampStripeSDKSessionResponse::Type }
25
+
26
+ # @!method initialize(network:, publishable_key:, session_id:, type:)
27
+ # Provider session initialization for embedded SDK providers (Stripe).
28
+ #
29
+ # @param network [String]
30
+ # @param publishable_key [String]
31
+ # @param session_id [String]
32
+ # @param type [Symbol, Privy::Models::FiatOnrampStripeSDKSessionResponse::Type]
33
+
34
+ # @see Privy::Models::FiatOnrampStripeSDKSessionResponse#type
35
+ module Type
36
+ extend Privy::Internal::Type::Enum
37
+
38
+ STRIPE_SDK = :"stripe-sdk"
39
+
40
+ # @!method self.values
41
+ # @return [Array<Symbol>]
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class FiatOnrampURLSessionResponse < Privy::Internal::Type::BaseModel
6
+ # @!attribute session_id
7
+ #
8
+ # @return [String]
9
+ required :session_id, String
10
+
11
+ # @!attribute type
12
+ #
13
+ # @return [Symbol, Privy::Models::FiatOnrampURLSessionResponse::Type]
14
+ required :type, enum: -> { Privy::FiatOnrampURLSessionResponse::Type }
15
+
16
+ # @!attribute url
17
+ #
18
+ # @return [String]
19
+ required :url, String
20
+
21
+ # @!method initialize(session_id:, type:, url:)
22
+ # Provider session initialization for popup-based providers.
23
+ #
24
+ # @param session_id [String]
25
+ # @param type [Symbol, Privy::Models::FiatOnrampURLSessionResponse::Type]
26
+ # @param url [String]
27
+
28
+ # @see Privy::Models::FiatOnrampURLSessionResponse#type
29
+ module Type
30
+ extend Privy::Internal::Type::Enum
31
+
32
+ URL = :url
33
+
34
+ # @!method self.values
35
+ # @return [Array<Symbol>]
36
+ end
37
+ end
38
+ end
39
+ end
@@ -2,22 +2,20 @@
2
2
 
3
3
  module Privy
4
4
  module Models
5
- class GetFiatOnrampURLResponse < Privy::Internal::Type::BaseModel
6
- # @!attribute session_id
7
- #
8
- # @return [String]
9
- required :session_id, String
5
+ # Provider session initialization — either a hosted URL or embedded SDK config.
6
+ module GetFiatOnrampURLResponse
7
+ extend Privy::Internal::Type::Union
10
8
 
11
- # @!attribute url
12
- #
13
- # @return [String]
14
- required :url, String
9
+ discriminator :type
15
10
 
16
- # @!method initialize(session_id:, url:)
17
- # The response containing a fiat onramp provider session URL.
18
- #
19
- # @param session_id [String]
20
- # @param url [String]
11
+ # Provider session initialization for popup-based providers.
12
+ variant :url, -> { Privy::FiatOnrampURLSessionResponse }
13
+
14
+ # Provider session initialization for embedded SDK providers (Stripe).
15
+ variant :"stripe-sdk", -> { Privy::FiatOnrampStripeSDKSessionResponse }
16
+
17
+ # @!method self.variants
18
+ # @return [Array(Privy::Models::FiatOnrampURLSessionResponse, Privy::Models::FiatOnrampStripeSDKSessionResponse)]
21
19
  end
22
20
  end
23
21
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Privy
4
+ module Models
5
+ class GetStripeCryptoCustomerResponse < Privy::Internal::Type::BaseModel
6
+ # @!attribute data
7
+ # Active onramp session with customer verifications.
8
+ #
9
+ # @return [Privy::Models::StripeCryptoCustomerActive, Privy::Models::StripeCryptoCustomerExpired, Privy::Models::StripeCryptoCustomerNone]
10
+ required :data, union: -> { Privy::GetStripeCryptoCustomerResponse::Data }
11
+
12
+ # @!method initialize(data:)
13
+ # Stripe onramp session status and customer verification info.
14
+ #
15
+ # @param data [Privy::Models::StripeCryptoCustomerActive, Privy::Models::StripeCryptoCustomerExpired, Privy::Models::StripeCryptoCustomerNone] Active onramp session with customer verifications.
16
+
17
+ # Active onramp session with customer verifications.
18
+ #
19
+ # @see Privy::Models::GetStripeCryptoCustomerResponse#data
20
+ module Data
21
+ extend Privy::Internal::Type::Union
22
+
23
+ discriminator :status
24
+
25
+ # Active onramp session with customer verifications.
26
+ variant :active, -> { Privy::StripeCryptoCustomerActive }
27
+
28
+ # Expired onramp session. Token refresh failed, re-authentication required.
29
+ variant :expired, -> { Privy::StripeCryptoCustomerExpired }
30
+
31
+ # No onramp session. User must authenticate via Link.
32
+ variant :none, -> { Privy::StripeCryptoCustomerNone }
33
+
34
+ # @!method self.variants
35
+ # @return [Array(Privy::Models::StripeCryptoCustomerActive, Privy::Models::StripeCryptoCustomerExpired, Privy::Models::StripeCryptoCustomerNone)]
36
+ end
37
+ end
38
+ end
39
+ end