coinbase-sdk 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1c8786bfb21ed8e6e8533244582389e90f94a7b5587b4995666ad5e02424fb30
4
- data.tar.gz: cb4dca1f054511410761372ced09d65491ee38e21b1d9ad8b2fb90ce08e80869
3
+ metadata.gz: eb99df68459ac0ded3425479c79a09a0eb0aba9a9eb213939254b049e582f6d3
4
+ data.tar.gz: c4bb9230a726749208267afae1ce4af39c198e619273c4c38c44fa08f3729e60
5
5
  SHA512:
6
- metadata.gz: 2226115a66b26e4bd42429506b91ce04617440e4ce79744eddea43881d53b6814341e110fb4adf0e6967ef7e2ee57b5f13aacb44d074bb170564808bc86ec216
7
- data.tar.gz: 7ee730264721461357d56f0ad7e0630036ca85d28ab120101c6813e64fca9427d919fc1a35d8c49ffc39cf1eb9a8ca34fa492211c4c86397afd88a82f685f0c8
6
+ metadata.gz: 41190c14711f7f1ce56ce668b60fc0e0319a9d1aa0b382f46242db330961a3bfda950ab4e619eb9202595ce172111da8eb3bcd4cb133ac030ca0bf2e4d7d6247
7
+ data.tar.gz: a471b10bff8d80dda05183b855967907357c5f84feabc0ee40ed37b6ca081d4c6bb75d72e91a6edc8ca67fadcc3d30437db67ee16c557b89c22291f02bab01e0
@@ -95,11 +95,12 @@ module Coinbase
95
95
  trade
96
96
  end
97
97
 
98
- # Stakes the given amount of the given Asset
98
+ # Stakes the given amount of the given Asset. The stake operation
99
+ # may take a few minutes to complete in the case when infrastructure is spun up.
99
100
  # @param amount [Integer, Float, BigDecimal] The amount of the Asset to stake.
100
101
  # @param asset_id [Symbol] The ID of the Asset to stake. For Ether, :eth, :gwei, and :wei are supported.
101
102
  # @param mode [Symbol] The staking mode. Defaults to :default.
102
- # @param options [Hash] Additional options for the stake operation
103
+ # @param options [Hash] (Optional) Additional options for the stake operation. ({StakingOperation#create see_more})
103
104
  # @param interval_seconds [Integer] The number of seconds to wait between polling for updates. Defaults to 5.
104
105
  # @param timeout_seconds [Integer] The number of seconds to wait before timing out. Defaults to 600.
105
106
  # @return [Coinbase::StakingOperation] The staking operation
@@ -116,7 +117,8 @@ module Coinbase
116
117
  # @param amount [Integer, Float, BigDecimal] The amount of the Asset to unstake.
117
118
  # @param asset_id [Symbol] The ID of the Asset to stake. For Ether, :eth, :gwei, and :wei are supported.
118
119
  # @param mode [Symbol] The staking mode. Defaults to :default.
119
- # @param options [Hash] Additional options for the stake operation
120
+ # @param options [Hash] (Optional) Additional options for the unstake operation.
121
+ # ({StakingOperation#create see_more})
120
122
  # @param interval_seconds [Integer] The number of seconds to wait between polling for updates. Defaults to 5.
121
123
  # @param timeout_seconds [Integer] The number of seconds to wait before timing out. Defaults to 600.
122
124
  # @return [Coinbase::StakingOperation] The staking operation
@@ -133,7 +135,8 @@ module Coinbase
133
135
  # @param amount [Integer, Float, BigDecimal] The amount of the Asset to claim.
134
136
  # @param asset_id [Symbol] The ID of the Asset to stake. For Ether, :eth, :gwei, and :wei are supported.
135
137
  # @param mode [Symbol] The staking mode. Defaults to :default.
136
- # @param options [Hash] Additional options for the stake operation
138
+ # @param options [Hash] (Optional) Additional options for the claim_stake operation.
139
+ # ({StakingOperation#create see_more})
137
140
  # @param interval_seconds [Integer] The number of seconds to wait between polling for updates. Defaults to 5.
138
141
  # @param timeout_seconds [Integer] The number of seconds to wait before timing out. Defaults to 600.
139
142
  # @return [Coinbase::StakingOperation] The staking operation
@@ -74,13 +74,16 @@ module Coinbase
74
74
 
75
75
  # Requests funds for the address from the faucet and returns the faucet transaction.
76
76
  # This is only supported on testnet networks.
77
+ # @param asset_id [Symbol] The ID of the Asset to transfer to the wallet.
77
78
  # @return [Coinbase::FaucetTransaction] The successful faucet transaction
78
79
  # @raise [Coinbase::FaucetLimitReachedError] If the faucet limit has been reached for the address or user.
79
80
  # @raise [Coinbase::Client::ApiError] If an unexpected error occurs while requesting faucet funds.
80
- def faucet
81
+ def faucet(asset_id: nil)
82
+ opts = { asset_id: asset_id }.compact
83
+
81
84
  Coinbase.call_api do
82
85
  Coinbase::FaucetTransaction.new(
83
- addresses_api.request_external_faucet_funds(network.normalized_id, id)
86
+ addresses_api.request_external_faucet_funds(network.normalized_id, id, opts)
84
87
  )
85
88
  end
86
89
  end
@@ -90,7 +93,7 @@ module Coinbase
90
93
  # @param amount [Integer,String,BigDecimal] The amount of the asset to stake
91
94
  # @param asset_id [Symbol] The asset to stake
92
95
  # @param mode [Symbol] The staking mode. Defaults to :default.
93
- # @param options [Hash] Additional options for the stake operation
96
+ # @param options [Hash] (Optional) Additional options for the stake operation. ({StakingOperation#build see_more})
94
97
  # @return [Coinbase::StakingOperation] The stake operation
95
98
  def build_stake_operation(amount, asset_id, mode: :default, options: {})
96
99
  validate_can_perform_staking_action!(amount, asset_id, 'stakeable_balance', mode, options)
@@ -102,7 +105,7 @@ module Coinbase
102
105
  # @param amount [Integer,String,BigDecimal] The amount of the asset to unstake
103
106
  # @param asset_id [Symbol] The asset to unstake
104
107
  # @param mode [Symbol] The staking mode. Defaults to :default.
105
- # @param options [Hash] Additional options for the unstake operation
108
+ # @param options [Hash] (Optional) Additional options for the unstake operation. ({StakingOperation#build see_more})
106
109
  # @return [Coinbase::StakingOperation] The unstake operation
107
110
  def build_unstake_operation(amount, asset_id, mode: :default, options: {})
108
111
  validate_can_perform_staking_action!(amount, asset_id, 'unstakeable_balance', mode, options)
@@ -114,7 +117,8 @@ module Coinbase
114
117
  # @param amount [Integer,String,BigDecimal] The amount of the asset to claim
115
118
  # @param asset_id [Symbol] The asset to claim
116
119
  # @param mode [Symbol] The staking mode. Defaults to :default.
117
- # @param options [Hash] Additional options for the claim_stake operation
120
+ # @param options [Hash] (Optional) Additional options for the claim_stake operation.
121
+ # ({StakingOperation#build see_more})
118
122
  # @return [Coinbase::StakingOperation] The claim_stake operation
119
123
  def build_claim_stake_operation(amount, asset_id, mode: :default, options: {})
120
124
  validate_can_perform_staking_action!(amount, asset_id, 'claimable_balance', mode, options)
@@ -125,7 +129,9 @@ module Coinbase
125
129
  # Retrieves the balances used for staking for the supplied asset.
126
130
  # @param asset_id [Symbol] The asset to retrieve staking balances for
127
131
  # @param mode [Symbol] The staking mode. Defaults to :default.
128
- # @param options [Hash] Additional options for the staking operation
132
+ # @param options [Hash] (Optional) Additional options for fetching the staking balances
133
+ # @option options [String] (Optional) :validator_pub_keys List of comma separated validator public keys to retrieve
134
+ # staking balances for. (default: all validators) [asset_id: :eth, mode: :native]
129
135
  # @return [Hash] The staking balances
130
136
  # @return [BigDecimal] :stakeable_balance The amount of the asset that can be staked
131
137
  # @return [BigDecimal] :unstakeable_balance The amount of the asset that is currently staked and cannot be unstaked
@@ -163,7 +169,7 @@ module Coinbase
163
169
  # Retrieves the stakeable balance for the supplied asset.
164
170
  # @param asset_id [Symbol] The asset to retrieve the stakeable balance for
165
171
  # @param mode [Symbol] The staking mode. Defaults to :default.
166
- # @param options [Hash] Additional options for the staking operation
172
+ # @param options [Hash] Additional options for fetching the stakeable balance
167
173
  # @return [BigDecimal] The stakeable balance
168
174
  def stakeable_balance(asset_id, mode: :default, options: {})
169
175
  staking_balances(asset_id, mode: mode, options: options)[:stakeable_balance]
@@ -172,7 +178,7 @@ module Coinbase
172
178
  # Retrieves the unstakeable balance for the supplied asset.
173
179
  # @param asset_id [Symbol] The asset to retrieve the unstakeable balance for
174
180
  # @param mode [Symbol] The staking mode. Defaults to :default.
175
- # @param options [Hash] Additional options for the staking operation
181
+ # @param options [Hash] Additional options for fetching the unstakeable balance
176
182
  # @return [BigDecimal] The unstakeable balance
177
183
  def unstakeable_balance(asset_id, mode: :default, options: {})
178
184
  staking_balances(asset_id, mode: mode, options: options)[:unstakeable_balance]
@@ -181,7 +187,7 @@ module Coinbase
181
187
  # Retrieves the claimable balance for the supplied asset.
182
188
  # @param asset_id [Symbol] The asset to retrieve the claimable balance for
183
189
  # @param mode [Symbol] The staking mode. Defaults to :default.
184
- # @param options [Hash] Additional options for the staking operation
190
+ # @param options [Hash] Additional options for fetching the claimable balance
185
191
  # @return [BigDecimal] The claimable balance
186
192
  def claimable_balance(asset_id, mode: :default, options: {})
187
193
  staking_balances(asset_id, mode: mode, options: options)[:claimable_balance]
@@ -387,6 +387,7 @@ module Coinbase::Client
387
387
  # @param wallet_id [String] The ID of the wallet the address belongs to.
388
388
  # @param address_id [String] The onchain address of the address that is being fetched.
389
389
  # @param [Hash] opts the optional parameters
390
+ # @option opts [String] :asset_id The ID of the asset to transfer from the faucet.
390
391
  # @return [FaucetTransaction]
391
392
  def request_faucet_funds(wallet_id, address_id, opts = {})
392
393
  data, _status_code, _headers = request_faucet_funds_with_http_info(wallet_id, address_id, opts)
@@ -398,6 +399,7 @@ module Coinbase::Client
398
399
  # @param wallet_id [String] The ID of the wallet the address belongs to.
399
400
  # @param address_id [String] The onchain address of the address that is being fetched.
400
401
  # @param [Hash] opts the optional parameters
402
+ # @option opts [String] :asset_id The ID of the asset to transfer from the faucet.
401
403
  # @return [Array<(FaucetTransaction, Integer, Hash)>] FaucetTransaction data, response status code and response headers
402
404
  def request_faucet_funds_with_http_info(wallet_id, address_id, opts = {})
403
405
  if @api_client.config.debugging
@@ -416,6 +418,7 @@ module Coinbase::Client
416
418
 
417
419
  # query parameters
418
420
  query_params = opts[:query_params] || {}
421
+ query_params[:'asset_id'] = opts[:'asset_id'] if !opts[:'asset_id'].nil?
419
422
 
420
423
  # header parameters
421
424
  header_params = opts[:header_params] || {}
@@ -224,7 +224,7 @@ module Coinbase::Client
224
224
  # header parameters
225
225
  header_params = opts[:header_params] || {}
226
226
  # HTTP header 'Accept' (if needed)
227
- header_params['Accept'] = @api_client.select_header_accept(['application/json'])
227
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
228
228
 
229
229
  # form parameters
230
230
  form_params = opts[:form_params] || {}
@@ -260,6 +260,7 @@ module Coinbase::Client
260
260
  # @param network_id [String] The ID of the wallet the address belongs to.
261
261
  # @param address_id [String] The onchain address of the address that is being fetched.
262
262
  # @param [Hash] opts the optional parameters
263
+ # @option opts [String] :asset_id The ID of the asset to transfer from the faucet.
263
264
  # @return [FaucetTransaction]
264
265
  def request_external_faucet_funds(network_id, address_id, opts = {})
265
266
  data, _status_code, _headers = request_external_faucet_funds_with_http_info(network_id, address_id, opts)
@@ -271,6 +272,7 @@ module Coinbase::Client
271
272
  # @param network_id [String] The ID of the wallet the address belongs to.
272
273
  # @param address_id [String] The onchain address of the address that is being fetched.
273
274
  # @param [Hash] opts the optional parameters
275
+ # @option opts [String] :asset_id The ID of the asset to transfer from the faucet.
274
276
  # @return [Array<(FaucetTransaction, Integer, Hash)>] FaucetTransaction data, response status code and response headers
275
277
  def request_external_faucet_funds_with_http_info(network_id, address_id, opts = {})
276
278
  if @api_client.config.debugging
@@ -289,6 +291,7 @@ module Coinbase::Client
289
291
 
290
292
  # query parameters
291
293
  query_params = opts[:query_params] || {}
294
+ query_params[:'asset_id'] = opts[:'asset_id'] if !opts[:'asset_id'].nil?
292
295
 
293
296
  # header parameters
294
297
  header_params = opts[:header_params] || {}
@@ -17,6 +17,19 @@ module Coinbase
17
17
  # @param action [Symbol] The action to perform
18
18
  # @param mode [Symbol] The staking mode
19
19
  # @param options [Hash] Additional options
20
+ # @option options [String] :integrator_contract_address The integrator contract
21
+ # address. [asset_id: :eth, mode: :partial, action: all]
22
+ # @option options [String] :funding_address The address funding the 32 ETH
23
+ # (default: :address_id) [asset_id: :eth, mode: :native, action: :stake]
24
+ # @option options [String] :withdrawal_address The address receiving rewards and withdrawal funds.
25
+ # (default: :address_id) [asset_id: :eth, mode: :native, action: :stake]
26
+ # @option options [String] :fee_recipient_address The address receiving transaction fees.
27
+ # (default: :address_id) [asset_id: :eth, mode: :native, action: :stake]
28
+ # @option options [Boolean] :immediate To leverage "Coinbase Managed Unstake".
29
+ # (default: false i.e. User Managed Unstake) [asset_id: :eth, mode: :native, action: :unstake]
30
+ # @option options [String] :validator_pub_keys List of comma separated validator public keys to unstake.
31
+ # (default: validators picked up on your behalf corresponding to the unstake amount.) [asset_id: :eth,
32
+ # mode: :native, action: :unstake]
20
33
  # @return [Coinbase::StakingOperation] The staking operation
21
34
  def self.build(amount, network, asset_id, address_id, action, mode, options)
22
35
  network = Coinbase::Network.from_id(network)
@@ -49,6 +62,19 @@ module Coinbase
49
62
  # @param action [Symbol] The action to perform
50
63
  # @param mode [Symbol] The staking mode
51
64
  # @param options [Hash] Additional options
65
+ # @option options [String] :integrator_contract_address The integrator contract
66
+ # address. [asset_id: :eth, mode: :partial, action: all]
67
+ # @option options [String] :funding_address The address funding the 32 ETH
68
+ # (default: :address_id) [asset_id: :eth, mode: :native, action: :stake]
69
+ # @option options [String] :withdrawal_address The address receiving rewards and withdrawal funds.
70
+ # (default: :address_id) [asset_id: :eth, mode: :native, action: :stake]
71
+ # @option options [String] :fee_recipient_address The address receiving transaction fees.
72
+ # (default: :address_id) [asset_id: :eth, mode: :native, action: :stake]
73
+ # @option options [Boolean] :immediate To leverage "Coinbase Managed Unstake".
74
+ # (default: false i.e. User Managed Unstake) [asset_id: :eth, mode: :native, action: :unstake]
75
+ # @option options [String] :validator_pub_keys List of comma separated validator public keys to unstake.
76
+ # (default: validators picked up on your behalf corresponding to the unstake amount.) [asset_id: :eth,
77
+ # mode: :native, action: :unstake]
52
78
  # @return [Coinbase::StakingOperation] The staking operation
53
79
  def self.create(amount, network, asset_id, address_id, wallet_id, action, mode, options)
54
80
  network = Coinbase::Network.from_id(network)
@@ -194,7 +220,7 @@ module Coinbase
194
220
 
195
221
  transaction.sign(key)
196
222
  @model = Coinbase.call_api do
197
- stake_api.broadcast_staking_operation(
223
+ wallet_stake_api.broadcast_staking_operation(
198
224
  wallet_id,
199
225
  address_id,
200
226
  id,
@@ -211,8 +237,6 @@ module Coinbase
211
237
 
212
238
  sleep interval_seconds
213
239
  end
214
-
215
- self
216
240
  end
217
241
 
218
242
  # Fetch the StakingOperation with the provided network, address and staking operation ID.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Coinbase
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
@@ -162,6 +162,7 @@ module Coinbase
162
162
  # @return [Coinbase::Trade] The Trade object.
163
163
 
164
164
  # @!method faucet
165
+ # @param asset_id [Symbol] The ID of the Asset to transfer to the wallet.
165
166
  # Requests funds from the faucet for the Wallet's default address and returns the faucet transaction.
166
167
  # This is only supported on testnet networks.
167
168
  # @return [Coinbase::FaucetTransaction] The successful faucet transaction
@@ -363,12 +364,6 @@ module Coinbase
363
364
  Data.new(wallet_id: id, seed: @master.seed_hex)
364
365
  end
365
366
 
366
- def faucet
367
- Coinbase.call_api do
368
- Coinbase::FaucetTransaction.new(addresses_api.request_faucet_funds(id, default_address.id))
369
- end
370
- end
371
-
372
367
  # Returns whether the Wallet has a seed with which to derive keys and sign transactions.
373
368
  # @return [Boolean] Whether the Wallet has a seed with which to derive keys and sign transactions.
374
369
  def can_sign?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coinbase-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuga Cohler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-22 00:00:00.000000000 Z
11
+ date: 2024-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bigdecimal