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
@@ -0,0 +1,53 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ class StripeCryptoCustomerNone < Privy::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Privy::StripeCryptoCustomerNone, Privy::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(Privy::StripeCryptoCustomerNone::Status::OrSymbol) }
12
+ attr_accessor :status
13
+
14
+ # No onramp session. User must authenticate via Link.
15
+ sig do
16
+ params(
17
+ status: Privy::StripeCryptoCustomerNone::Status::OrSymbol
18
+ ).returns(T.attached_class)
19
+ end
20
+ def self.new(status:)
21
+ end
22
+
23
+ sig do
24
+ override.returns(
25
+ { status: Privy::StripeCryptoCustomerNone::Status::OrSymbol }
26
+ )
27
+ end
28
+ def to_hash
29
+ end
30
+
31
+ module Status
32
+ extend Privy::Internal::Type::Enum
33
+
34
+ TaggedSymbol =
35
+ T.type_alias do
36
+ T.all(Symbol, Privy::StripeCryptoCustomerNone::Status)
37
+ end
38
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
39
+
40
+ NONE =
41
+ T.let(:none, Privy::StripeCryptoCustomerNone::Status::TaggedSymbol)
42
+
43
+ sig do
44
+ override.returns(
45
+ T::Array[Privy::StripeCryptoCustomerNone::Status::TaggedSymbol]
46
+ )
47
+ end
48
+ def self.values
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,51 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ class StripeOnrampCheckoutResponse < Privy::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Privy::StripeOnrampCheckoutResponse, Privy::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(String) }
12
+ attr_accessor :client_secret
13
+
14
+ # Transaction details from checkout.
15
+ sig { returns(T.nilable(Privy::StripeTransactionDetails)) }
16
+ attr_reader :transaction_details
17
+
18
+ sig do
19
+ params(
20
+ transaction_details: Privy::StripeTransactionDetails::OrHash
21
+ ).void
22
+ end
23
+ attr_writer :transaction_details
24
+
25
+ # Checkout confirmation with client secret.
26
+ sig do
27
+ params(
28
+ client_secret: String,
29
+ transaction_details: Privy::StripeTransactionDetails::OrHash
30
+ ).returns(T.attached_class)
31
+ end
32
+ def self.new(
33
+ client_secret:,
34
+ # Transaction details from checkout.
35
+ transaction_details: nil
36
+ )
37
+ end
38
+
39
+ sig do
40
+ override.returns(
41
+ {
42
+ client_secret: String,
43
+ transaction_details: Privy::StripeTransactionDetails
44
+ }
45
+ )
46
+ end
47
+ def to_hash
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,26 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ # The state of the user's Stripe onramp session.
6
+ module StripeOnrampSessionStatus
7
+ extend Privy::Internal::Type::Enum
8
+
9
+ TaggedSymbol =
10
+ T.type_alias { T.all(Symbol, Privy::StripeOnrampSessionStatus) }
11
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
12
+
13
+ ACTIVE = T.let(:active, Privy::StripeOnrampSessionStatus::TaggedSymbol)
14
+ EXPIRED = T.let(:expired, Privy::StripeOnrampSessionStatus::TaggedSymbol)
15
+ NONE = T.let(:none, Privy::StripeOnrampSessionStatus::TaggedSymbol)
16
+
17
+ sig do
18
+ override.returns(
19
+ T::Array[Privy::StripeOnrampSessionStatus::TaggedSymbol]
20
+ )
21
+ end
22
+ def self.values
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ class StripePaymentToken < Privy::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Privy::StripePaymentToken, Privy::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(String) }
12
+ attr_accessor :id
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :type
16
+
17
+ # A saved payment token.
18
+ sig { params(id: String, type: String).returns(T.attached_class) }
19
+ def self.new(id:, type:)
20
+ end
21
+
22
+ sig { override.returns({ id: String, type: String }) }
23
+ def to_hash
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,22 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ class StripeQuote < Privy::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Privy::StripeQuote, Privy::Internal::AnyHash) }
8
+
9
+ sig { returns(Float) }
10
+ attr_accessor :expires_at
11
+
12
+ # A refreshed quote.
13
+ sig { params(expires_at: Float).returns(T.attached_class) }
14
+ def self.new(expires_at:)
15
+ end
16
+
17
+ sig { override.returns({ expires_at: Float }) }
18
+ def to_hash
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ class StripeTransactionDetails < Privy::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Privy::StripeTransactionDetails, Privy::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(T.nilable(String)) }
12
+ attr_accessor :last_error
13
+
14
+ # Transaction details from checkout.
15
+ sig { params(last_error: T.nilable(String)).returns(T.attached_class) }
16
+ def self.new(last_error: nil)
17
+ end
18
+
19
+ sig { override.returns({ last_error: T.nilable(String) }) }
20
+ def to_hash
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ class StripeVerification < Privy::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Privy::StripeVerification, Privy::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(String) }
12
+ attr_accessor :name
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :status
16
+
17
+ # A verification entry on a CryptoCustomer.
18
+ sig { params(name: String, status: String).returns(T.attached_class) }
19
+ def self.new(name:, status:)
20
+ end
21
+
22
+ sig { override.returns({ name: String, status: String }) }
23
+ def to_hash
24
+ end
25
+ end
26
+ end
27
+ end
@@ -37,16 +37,23 @@ module Privy
37
37
  attr_accessor :output_token
38
38
 
39
39
  # Status of a wallet action.
40
- sig { returns(Privy::WalletActionStatus::OrSymbol) }
40
+ sig { returns(Privy::WalletActionStatus::TaggedSymbol) }
41
41
  attr_accessor :status
42
42
 
43
- sig { returns(Privy::SwapActionResponse::Type::OrSymbol) }
43
+ sig { returns(Privy::SwapActionResponse::Type::TaggedSymbol) }
44
44
  attr_accessor :type
45
45
 
46
46
  # The ID of the wallet involved in the action.
47
47
  sig { returns(String) }
48
48
  attr_accessor :wallet_id
49
49
 
50
+ # Destination chain CAIP-2 identifier. Present for cross-chain swaps.
51
+ sig { returns(T.nilable(String)) }
52
+ attr_reader :destination_caip2
53
+
54
+ sig { params(destination_caip2: String).void }
55
+ attr_writer :destination_caip2
56
+
50
57
  # A description of why a wallet action (or a step within a wallet action) failed.
51
58
  sig { returns(T.nilable(Privy::FailureReason)) }
52
59
  attr_reader :failure_reason
@@ -55,20 +62,7 @@ module Privy
55
62
  attr_writer :failure_reason
56
63
 
57
64
  # The steps of the wallet action. Only returned if `?include=steps` is provided.
58
- sig do
59
- returns(
60
- T.nilable(
61
- T::Array[
62
- T.any(
63
- Privy::EvmTransactionWalletActionStep,
64
- Privy::EvmUserOperationWalletActionStep,
65
- Privy::SvmTransactionWalletActionStep,
66
- Privy::ExternalTransactionWalletActionStep
67
- )
68
- ]
69
- )
70
- )
71
- end
65
+ sig { returns(T.nilable(T::Array[Privy::WalletActionStep::Variants])) }
72
66
  attr_reader :steps
73
67
 
74
68
  sig do
@@ -99,6 +93,7 @@ module Privy
99
93
  status: Privy::WalletActionStatus::OrSymbol,
100
94
  type: Privy::SwapActionResponse::Type::OrSymbol,
101
95
  wallet_id: String,
96
+ destination_caip2: String,
102
97
  failure_reason: Privy::FailureReason::OrHash,
103
98
  steps:
104
99
  T::Array[
@@ -131,6 +126,8 @@ module Privy
131
126
  type:,
132
127
  # The ID of the wallet involved in the action.
133
128
  wallet_id:,
129
+ # Destination chain CAIP-2 identifier. Present for cross-chain swaps.
130
+ destination_caip2: nil,
134
131
  # A description of why a wallet action (or a step within a wallet action) failed.
135
132
  failure_reason: nil,
136
133
  # The steps of the wallet action. Only returned if `?include=steps` is provided.
@@ -148,19 +145,12 @@ module Privy
148
145
  input_token: String,
149
146
  output_amount: T.nilable(String),
150
147
  output_token: String,
151
- status: Privy::WalletActionStatus::OrSymbol,
152
- type: Privy::SwapActionResponse::Type::OrSymbol,
148
+ status: Privy::WalletActionStatus::TaggedSymbol,
149
+ type: Privy::SwapActionResponse::Type::TaggedSymbol,
153
150
  wallet_id: String,
151
+ destination_caip2: String,
154
152
  failure_reason: Privy::FailureReason,
155
- steps:
156
- T::Array[
157
- T.any(
158
- Privy::EvmTransactionWalletActionStep,
159
- Privy::EvmUserOperationWalletActionStep,
160
- Privy::SvmTransactionWalletActionStep,
161
- Privy::ExternalTransactionWalletActionStep
162
- )
163
- ]
153
+ steps: T::Array[Privy::WalletActionStep::Variants]
164
154
  }
165
155
  )
166
156
  end
@@ -10,28 +10,47 @@ module Privy
10
10
  sig { returns(String) }
11
11
  attr_accessor :asset_address
12
12
 
13
- # CAIP-2 chain identifier for the destination. Must match source chain
14
- # cross-chain swaps are not yet supported. Defaults to source chain if omitted.
13
+ # CAIP-2 chain identifier for the destination. Defaults to source chain if
14
+ # omitted. Specify a different chain for cross-chain swaps.
15
15
  sig { returns(T.nilable(String)) }
16
16
  attr_reader :caip2
17
17
 
18
18
  sig { params(caip2: String).void }
19
19
  attr_writer :caip2
20
20
 
21
+ # Address to receive the output tokens. Defaults to the swapping wallet address.
22
+ # Required when swapping between different chain types (e.g. EVM to Solana).
23
+ sig { returns(T.nilable(String)) }
24
+ attr_reader :destination_address
25
+
26
+ sig { params(destination_address: String).void }
27
+ attr_writer :destination_address
28
+
21
29
  # The output side of a swap execution request.
22
30
  sig do
23
- params(asset_address: String, caip2: String).returns(T.attached_class)
31
+ params(
32
+ asset_address: String,
33
+ caip2: String,
34
+ destination_address: String
35
+ ).returns(T.attached_class)
24
36
  end
25
37
  def self.new(
26
38
  # Token contract address to buy, or "native" for the chain's native token.
27
39
  asset_address:,
28
- # CAIP-2 chain identifier for the destination. Must match source chain
29
- # cross-chain swaps are not yet supported. Defaults to source chain if omitted.
30
- caip2: nil
40
+ # CAIP-2 chain identifier for the destination. Defaults to source chain if
41
+ # omitted. Specify a different chain for cross-chain swaps.
42
+ caip2: nil,
43
+ # Address to receive the output tokens. Defaults to the swapping wallet address.
44
+ # Required when swapping between different chain types (e.g. EVM to Solana).
45
+ destination_address: nil
31
46
  )
32
47
  end
33
48
 
34
- sig { override.returns({ asset_address: String, caip2: String }) }
49
+ sig do
50
+ override.returns(
51
+ { asset_address: String, caip2: String, destination_address: String }
52
+ )
53
+ end
35
54
  def to_hash
36
55
  end
37
56
  end
@@ -12,28 +12,51 @@ module Privy
12
12
  sig { returns(String) }
13
13
  attr_accessor :asset_address
14
14
 
15
- # CAIP-2 chain identifier for the destination. Must match source chain
16
- # cross-chain swaps are not yet supported. Defaults to source chain if omitted.
15
+ # CAIP-2 chain identifier for the destination. Defaults to source chain if
16
+ # omitted. Will result in a cross-chain swap if source and destination chains
17
+ # differ.
17
18
  sig { returns(T.nilable(String)) }
18
19
  attr_reader :caip2
19
20
 
20
21
  sig { params(caip2: String).void }
21
22
  attr_writer :caip2
22
23
 
24
+ # Address to receive the output tokens. Defaults to the swapping wallet address.
25
+ # Required when swapping between chains with different address types (e.g. EVM to
26
+ # Solana).
27
+ sig { returns(T.nilable(String)) }
28
+ attr_reader :destination_address
29
+
30
+ sig { params(destination_address: String).void }
31
+ attr_writer :destination_address
32
+
23
33
  # The output side of a swap quote request.
24
34
  sig do
25
- params(asset_address: String, caip2: String).returns(T.attached_class)
35
+ params(
36
+ asset_address: String,
37
+ caip2: String,
38
+ destination_address: String
39
+ ).returns(T.attached_class)
26
40
  end
27
41
  def self.new(
28
42
  # Token contract address to buy, or "native" for the chain's native token.
29
43
  asset_address:,
30
- # CAIP-2 chain identifier for the destination. Must match source chain
31
- # cross-chain swaps are not yet supported. Defaults to source chain if omitted.
32
- caip2: nil
44
+ # CAIP-2 chain identifier for the destination. Defaults to source chain if
45
+ # omitted. Will result in a cross-chain swap if source and destination chains
46
+ # differ.
47
+ caip2: nil,
48
+ # Address to receive the output tokens. Defaults to the swapping wallet address.
49
+ # Required when swapping between chains with different address types (e.g. EVM to
50
+ # Solana).
51
+ destination_address: nil
33
52
  )
34
53
  end
35
54
 
36
- sig { override.returns({ asset_address: String, caip2: String }) }
55
+ sig do
56
+ override.returns(
57
+ { asset_address: String, caip2: String, destination_address: String }
58
+ )
59
+ end
37
60
  def to_hash
38
61
  end
39
62
  end
@@ -33,6 +33,13 @@ module Privy
33
33
  sig { params(amount_type: Privy::AmountType::OrSymbol).void }
34
34
  attr_writer :amount_type
35
35
 
36
+ # Total fees assessed on a transfer, in BPS
37
+ sig { returns(T.nilable(Privy::FeeConfiguration)) }
38
+ attr_reader :fee_configuration
39
+
40
+ sig { params(fee_configuration: Privy::FeeConfiguration::OrHash).void }
41
+ attr_writer :fee_configuration
42
+
36
43
  # Maximum slippage tolerance in basis points (e.g., 50 for 0.5%). If omitted,
37
44
  # auto-slippage is used.
38
45
  sig { returns(T.nilable(Float)) }
@@ -48,6 +55,7 @@ module Privy
48
55
  destination: Privy::SwapQuoteDestination::OrHash,
49
56
  source: Privy::SwapSource::OrHash,
50
57
  amount_type: Privy::AmountType::OrSymbol,
58
+ fee_configuration: Privy::FeeConfiguration::OrHash,
51
59
  slippage_bps: Float
52
60
  ).returns(T.attached_class)
53
61
  end
@@ -60,6 +68,8 @@ module Privy
60
68
  source:,
61
69
  # Whether the amount refers to the input token or output token.
62
70
  amount_type: nil,
71
+ # Total fees assessed on a transfer, in BPS
72
+ fee_configuration: nil,
63
73
  # Maximum slippage tolerance in basis points (e.g., 50 for 0.5%). If omitted,
64
74
  # auto-slippage is used.
65
75
  slippage_bps: nil
@@ -73,6 +83,7 @@ module Privy
73
83
  destination: Privy::SwapQuoteDestination,
74
84
  source: Privy::SwapSource,
75
85
  amount_type: Privy::AmountType::OrSymbol,
86
+ fee_configuration: Privy::FeeConfiguration,
76
87
  slippage_bps: Float
77
88
  }
78
89
  )
@@ -36,6 +36,38 @@ module Privy
36
36
  sig { returns(String) }
37
37
  attr_accessor :output_token
38
38
 
39
+ # Destination chain CAIP-2 identifier for cross-chain swaps.
40
+ sig { returns(T.nilable(String)) }
41
+ attr_reader :destination_caip2
42
+
43
+ sig { params(destination_caip2: String).void }
44
+ attr_writer :destination_caip2
45
+
46
+ # Estimated fees in USD.
47
+ sig { returns(T.nilable(T::Array[Privy::FeeLineItem::Variants])) }
48
+ attr_reader :estimated_fees
49
+
50
+ sig do
51
+ params(
52
+ estimated_fees:
53
+ T::Array[
54
+ T.any(
55
+ Privy::RelayerFee::OrHash,
56
+ Privy::PrivyFee::OrHash,
57
+ Privy::DeveloperFee::OrHash
58
+ )
59
+ ]
60
+ ).void
61
+ end
62
+ attr_writer :estimated_fees
63
+
64
+ # Quote expiry as Unix timestamp (seconds). Present for cross-chain quotes.
65
+ sig { returns(T.nilable(Float)) }
66
+ attr_reader :expires_at
67
+
68
+ sig { params(expires_at: Float).void }
69
+ attr_writer :expires_at
70
+
39
71
  # Pricing data for a token swap.
40
72
  sig do
41
73
  params(
@@ -45,7 +77,17 @@ module Privy
45
77
  input_amount: String,
46
78
  input_token: String,
47
79
  minimum_output_amount: String,
48
- output_token: String
80
+ output_token: String,
81
+ destination_caip2: String,
82
+ estimated_fees:
83
+ T::Array[
84
+ T.any(
85
+ Privy::RelayerFee::OrHash,
86
+ Privy::PrivyFee::OrHash,
87
+ Privy::DeveloperFee::OrHash
88
+ )
89
+ ],
90
+ expires_at: Float
49
91
  ).returns(T.attached_class)
50
92
  end
51
93
  def self.new(
@@ -62,7 +104,13 @@ module Privy
62
104
  # Minimum output amount accounting for slippage, in base units.
63
105
  minimum_output_amount:,
64
106
  # Token address being bought.
65
- output_token:
107
+ output_token:,
108
+ # Destination chain CAIP-2 identifier for cross-chain swaps.
109
+ destination_caip2: nil,
110
+ # Estimated fees in USD.
111
+ estimated_fees: nil,
112
+ # Quote expiry as Unix timestamp (seconds). Present for cross-chain quotes.
113
+ expires_at: nil
66
114
  )
67
115
  end
68
116
 
@@ -75,7 +123,10 @@ module Privy
75
123
  input_amount: String,
76
124
  input_token: String,
77
125
  minimum_output_amount: String,
78
- output_token: String
126
+ output_token: String,
127
+ destination_caip2: String,
128
+ estimated_fees: T::Array[Privy::FeeLineItem::Variants],
129
+ expires_at: Float
79
130
  }
80
131
  )
81
132
  end
@@ -31,6 +31,13 @@ module Privy
31
31
  sig { params(amount_type: Privy::AmountType::OrSymbol).void }
32
32
  attr_writer :amount_type
33
33
 
34
+ # Total fees assessed on a transfer, in BPS
35
+ sig { returns(T.nilable(Privy::FeeConfiguration)) }
36
+ attr_reader :fee_configuration
37
+
38
+ sig { params(fee_configuration: Privy::FeeConfiguration::OrHash).void }
39
+ attr_writer :fee_configuration
40
+
34
41
  # Maximum slippage tolerance in basis points (e.g., 50 for 0.5%).
35
42
  sig { returns(T.nilable(Float)) }
36
43
  attr_reader :slippage_bps
@@ -45,6 +52,7 @@ module Privy
45
52
  destination: Privy::SwapDestination::OrHash,
46
53
  source: Privy::SwapSource::OrHash,
47
54
  amount_type: Privy::AmountType::OrSymbol,
55
+ fee_configuration: Privy::FeeConfiguration::OrHash,
48
56
  slippage_bps: Float
49
57
  ).returns(T.attached_class)
50
58
  end
@@ -57,6 +65,8 @@ module Privy
57
65
  source:,
58
66
  # Whether the amount refers to the input token or output token.
59
67
  amount_type: nil,
68
+ # Total fees assessed on a transfer, in BPS
69
+ fee_configuration: nil,
60
70
  # Maximum slippage tolerance in basis points (e.g., 50 for 0.5%).
61
71
  slippage_bps: nil
62
72
  )
@@ -69,6 +79,7 @@ module Privy
69
79
  destination: Privy::SwapDestination,
70
80
  source: Privy::SwapSource,
71
81
  amount_type: Privy::AmountType::OrSymbol,
82
+ fee_configuration: Privy::FeeConfiguration,
72
83
  slippage_bps: Float
73
84
  }
74
85
  )
@@ -0,0 +1,71 @@
1
+ # typed: strong
2
+
3
+ module Privy
4
+ module Models
5
+ module Wallets
6
+ class SwapExecuteParams < Privy::Models::SwapRequestBody
7
+ extend Privy::Internal::Type::RequestParameters::Converter
8
+ include Privy::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(Privy::Wallets::SwapExecuteParams, Privy::Internal::AnyHash)
13
+ end
14
+
15
+ # ID of the wallet.
16
+ sig { returns(String) }
17
+ attr_accessor :wallet_id
18
+
19
+ # Request authorization signature. If multiple signatures are required, they
20
+ # should be comma separated.
21
+ sig { returns(T.nilable(String)) }
22
+ attr_reader :privy_authorization_signature
23
+
24
+ sig { params(privy_authorization_signature: String).void }
25
+ attr_writer :privy_authorization_signature
26
+
27
+ # Idempotency keys ensure API requests are executed only once within a 24-hour
28
+ # window.
29
+ sig { returns(T.nilable(String)) }
30
+ attr_reader :privy_idempotency_key
31
+
32
+ sig { params(privy_idempotency_key: String).void }
33
+ attr_writer :privy_idempotency_key
34
+
35
+ sig do
36
+ params(
37
+ wallet_id: String,
38
+ privy_authorization_signature: String,
39
+ privy_idempotency_key: String,
40
+ request_options: Privy::RequestOptions::OrHash
41
+ ).returns(T.attached_class)
42
+ end
43
+ def self.new(
44
+ # ID of the wallet.
45
+ wallet_id:,
46
+ # Request authorization signature. If multiple signatures are required, they
47
+ # should be comma separated.
48
+ privy_authorization_signature: nil,
49
+ # Idempotency keys ensure API requests are executed only once within a 24-hour
50
+ # window.
51
+ privy_idempotency_key: nil,
52
+ request_options: {}
53
+ )
54
+ end
55
+
56
+ sig do
57
+ override.returns(
58
+ {
59
+ wallet_id: String,
60
+ privy_authorization_signature: String,
61
+ privy_idempotency_key: String,
62
+ request_options: Privy::RequestOptions
63
+ }
64
+ )
65
+ end
66
+ def to_hash
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end