coinbase-sdk 0.0.14 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/coinbase/address/wallet_address.rb +31 -21
- data/lib/coinbase/address.rb +51 -17
- data/lib/coinbase/asset.rb +11 -8
- data/lib/coinbase/client/api/contract_events_api.rb +17 -9
- data/lib/coinbase/client/api/external_addresses_api.rb +85 -0
- data/lib/coinbase/client/api/networks_api.rb +85 -0
- data/lib/coinbase/client/api/stake_api.rb +74 -195
- data/lib/coinbase/client/api/validators_api.rb +2 -2
- data/lib/coinbase/client/api/wallet_stake_api.rb +263 -0
- data/lib/coinbase/client/models/address.rb +21 -4
- data/lib/coinbase/client/models/{native_eth_staking_context.rb → address_historical_balance_list.rb} +39 -35
- data/lib/coinbase/client/models/contract_event.rb +99 -8
- data/lib/coinbase/client/models/create_address_request.rb +14 -4
- data/lib/coinbase/client/models/create_transfer_request.rb +14 -4
- data/lib/coinbase/client/models/ethereum_validator_metadata.rb +11 -11
- data/lib/coinbase/client/models/feature.rb +2 -1
- data/lib/coinbase/client/models/feature_set.rb +307 -0
- data/lib/coinbase/client/models/{partial_eth_staking_context.rb → fetch_historical_staking_balances200_response.rb} +39 -35
- data/lib/coinbase/client/models/historical_balance.rb +273 -0
- data/lib/coinbase/client/models/network.rb +365 -0
- data/lib/coinbase/client/models/network_identifier.rb +44 -0
- data/lib/coinbase/client/models/sponsored_send.rb +338 -0
- data/lib/coinbase/client/models/staking_balance.rb +289 -0
- data/lib/coinbase/client/models/staking_context_context.rb +222 -74
- data/lib/coinbase/client/models/staking_operation.rb +2 -2
- data/lib/coinbase/client/models/staking_reward.rb +22 -6
- data/lib/coinbase/client/models/staking_reward_format.rb +2 -1
- data/lib/coinbase/client/models/staking_reward_usd_value.rb +257 -0
- data/lib/coinbase/client/models/transaction.rb +17 -7
- data/lib/coinbase/client/models/transaction_type.rb +2 -1
- data/lib/coinbase/client/models/transfer.rb +101 -8
- data/lib/coinbase/client/models/validator.rb +23 -2
- data/lib/coinbase/client/models/validator_status.rb +52 -0
- data/lib/coinbase/client/models/wallet.rb +13 -16
- data/lib/coinbase/client/models/webhook_event_type.rb +2 -1
- data/lib/coinbase/client.rb +12 -3
- data/lib/coinbase/constants.rb +0 -10
- data/lib/coinbase/contract_event.rb +104 -0
- data/lib/coinbase/correlation.rb +30 -0
- data/lib/coinbase/destination.rb +11 -9
- data/lib/coinbase/errors.rb +14 -0
- data/lib/coinbase/historical_balance.rb +53 -0
- data/lib/coinbase/middleware.rb +2 -0
- data/lib/coinbase/network.rb +103 -20
- data/lib/coinbase/server_signer.rb +14 -3
- data/lib/coinbase/smart_contract.rb +106 -0
- data/lib/coinbase/sponsored_send.rb +110 -0
- data/lib/coinbase/staking_balance.rb +92 -0
- data/lib/coinbase/staking_operation.rb +134 -36
- data/lib/coinbase/staking_reward.rb +18 -0
- data/lib/coinbase/trade.rb +10 -9
- data/lib/coinbase/transaction.rb +13 -3
- data/lib/coinbase/transfer.rb +65 -36
- data/lib/coinbase/validator.rb +18 -10
- data/lib/coinbase/version.rb +5 -0
- data/lib/coinbase/wallet/data.rb +31 -0
- data/lib/coinbase/wallet.rb +143 -182
- data/lib/coinbase/webhook.rb +181 -0
- data/lib/coinbase.rb +64 -21
- metadata +51 -5
- data/lib/coinbase/user.rb +0 -65
data/lib/coinbase.rb
CHANGED
@@ -5,10 +5,13 @@ require_relative 'coinbase/address/wallet_address'
|
|
5
5
|
require_relative 'coinbase/address/external_address'
|
6
6
|
require_relative 'coinbase/asset'
|
7
7
|
require_relative 'coinbase/authenticator'
|
8
|
+
require_relative 'coinbase/correlation'
|
8
9
|
require_relative 'coinbase/balance'
|
9
10
|
require_relative 'coinbase/balance_map'
|
11
|
+
require_relative 'coinbase/historical_balance'
|
10
12
|
require_relative 'coinbase/client'
|
11
13
|
require_relative 'coinbase/constants'
|
14
|
+
require_relative 'coinbase/contract_event'
|
12
15
|
require_relative 'coinbase/destination'
|
13
16
|
require_relative 'coinbase/errors'
|
14
17
|
require_relative 'coinbase/faucet_transaction'
|
@@ -18,12 +21,16 @@ require_relative 'coinbase/pagination'
|
|
18
21
|
require_relative 'coinbase/trade'
|
19
22
|
require_relative 'coinbase/transfer'
|
20
23
|
require_relative 'coinbase/transaction'
|
21
|
-
require_relative 'coinbase/user'
|
22
24
|
require_relative 'coinbase/wallet'
|
23
25
|
require_relative 'coinbase/server_signer'
|
26
|
+
require_relative 'coinbase/smart_contract'
|
27
|
+
require_relative 'coinbase/sponsored_send'
|
28
|
+
require_relative 'coinbase/staking_balance'
|
24
29
|
require_relative 'coinbase/staking_operation'
|
25
30
|
require_relative 'coinbase/staking_reward'
|
26
31
|
require_relative 'coinbase/validator'
|
32
|
+
require_relative 'coinbase/version'
|
33
|
+
require_relative 'coinbase/webhook'
|
27
34
|
require 'json'
|
28
35
|
|
29
36
|
# The Coinbase SDK.
|
@@ -70,6 +77,17 @@ module Coinbase
|
|
70
77
|
@debug_api = false
|
71
78
|
@use_server_signer = false
|
72
79
|
@max_network_tries = 3
|
80
|
+
@default_network = Coinbase::Network::BASE_SEPOLIA
|
81
|
+
end
|
82
|
+
|
83
|
+
attr_reader :default_network
|
84
|
+
|
85
|
+
def default_network=(network)
|
86
|
+
unless network.is_a?(Coinbase::Network)
|
87
|
+
raise InvalidConfiguration, 'Default network must use a network constant, e.g. Coinbase::Network::BASE_MAINNET'
|
88
|
+
end
|
89
|
+
|
90
|
+
@default_network = network
|
73
91
|
end
|
74
92
|
|
75
93
|
# Sets configuration values based on the provided CDP API Key JSON file.
|
@@ -94,12 +112,6 @@ module Coinbase
|
|
94
112
|
end
|
95
113
|
end
|
96
114
|
|
97
|
-
# Returns the default user.
|
98
|
-
# @return [Coinbase::User] the default user
|
99
|
-
def self.default_user
|
100
|
-
@default_user ||= load_default_user
|
101
|
-
end
|
102
|
-
|
103
115
|
# Converts a string to a symbol, replacing hyphens with underscores.
|
104
116
|
# @param string [String] the string to convert
|
105
117
|
# @return [Symbol] the converted symbol
|
@@ -107,19 +119,14 @@ module Coinbase
|
|
107
119
|
value.to_s.gsub('-', '_').to_sym
|
108
120
|
end
|
109
121
|
|
110
|
-
# Converts a network symbol
|
111
|
-
#
|
112
|
-
# @
|
113
|
-
|
114
|
-
|
115
|
-
|
122
|
+
# Converts a Network object or network symbol with the string representation of the network ID,
|
123
|
+
# replacing underscores with hyphens.
|
124
|
+
# @param network_sym [Coinbase::Network, Symbol] The network or network symbol to convert
|
125
|
+
# @return [String] The string representation of the network ID
|
126
|
+
def self.normalize_network(network)
|
127
|
+
network_sym = network.is_a?(Coinbase::Network) ? network.id : network
|
116
128
|
|
117
|
-
|
118
|
-
# @return [Coinbase::User] the default user
|
119
|
-
def self.load_default_user
|
120
|
-
users_api = Coinbase::Client::UsersApi.new(configuration.api_client)
|
121
|
-
user_model = users_api.get_current_user
|
122
|
-
Coinbase::User.new(user_model)
|
129
|
+
network_sym.to_s.gsub('_', '-')
|
123
130
|
end
|
124
131
|
|
125
132
|
# Wraps a call to the Platform API to ensure that the error is caught and
|
@@ -128,8 +135,17 @@ module Coinbase
|
|
128
135
|
yield
|
129
136
|
rescue Coinbase::Client::ApiError => e
|
130
137
|
raise Coinbase::APIError.from_error(e), cause: nil
|
131
|
-
|
132
|
-
|
138
|
+
end
|
139
|
+
|
140
|
+
# Returns a pretty-printed object string that contains the object's class name and
|
141
|
+
# the details of the object, filtering out nil values.
|
142
|
+
# @param klass [Class] the class of the object
|
143
|
+
# @param details [Hash] the details of the object
|
144
|
+
# @return [String] the pretty-printed object string
|
145
|
+
def self.pretty_print_object(klass, **details)
|
146
|
+
filtered_details = details.filter { |_, v| !v.nil? }.map { |k, v| "#{k}: '#{v}'" }
|
147
|
+
|
148
|
+
"#{klass}{#{filtered_details.join(', ')}}"
|
133
149
|
end
|
134
150
|
|
135
151
|
# Returns whether to use a server signer to manage private keys.
|
@@ -138,9 +154,36 @@ module Coinbase
|
|
138
154
|
Coinbase.configuration.use_server_signer
|
139
155
|
end
|
140
156
|
|
157
|
+
# Returns the default network.
|
158
|
+
# @return [Coinbase::Network] the default network
|
159
|
+
def self.default_network
|
160
|
+
Coinbase.configuration.default_network
|
161
|
+
end
|
162
|
+
|
141
163
|
# Returns whether the SDK is configured.
|
142
164
|
# @return [bool] whether the SDK is configured
|
143
165
|
def self.configured?
|
144
166
|
!Coinbase.configuration.api_key_name.nil? && !Coinbase.configuration.api_key_private_key.nil?
|
145
167
|
end
|
146
168
|
end
|
169
|
+
|
170
|
+
# Initialize the Network constants.
|
171
|
+
Coinbase::Network.const_set(
|
172
|
+
'ALL',
|
173
|
+
Coinbase::Client::NetworkIdentifier.all_vars.each_with_object([]) do |id, list|
|
174
|
+
next if id == Coinbase::Client::NetworkIdentifier::UNKNOWN_DEFAULT_OPEN_API
|
175
|
+
|
176
|
+
network = Coinbase::Network.new(id)
|
177
|
+
|
178
|
+
Coinbase::Network.const_set(id.upcase.gsub('-', '_'), network)
|
179
|
+
|
180
|
+
list << network
|
181
|
+
end
|
182
|
+
)
|
183
|
+
|
184
|
+
Coinbase::Network.const_set(
|
185
|
+
'NETWORK_MAP',
|
186
|
+
Coinbase::Network::ALL.each_with_object({}) do |network, map|
|
187
|
+
map[network.id] = network
|
188
|
+
end
|
189
|
+
)
|
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.0
|
4
|
+
version: 0.1.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-
|
11
|
+
date: 2024-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bigdecimal
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: factory_bot
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: pry
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,6 +206,20 @@ dependencies:
|
|
192
206
|
- - '='
|
193
207
|
- !ruby/object:Gem::Version
|
194
208
|
version: 1.63.1
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: rubocop-rspec
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
195
223
|
- !ruby/object:Gem::Dependency
|
196
224
|
name: simplecov
|
197
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -253,12 +281,14 @@ files:
|
|
253
281
|
- lib/coinbase/client/api/assets_api.rb
|
254
282
|
- lib/coinbase/client/api/contract_events_api.rb
|
255
283
|
- lib/coinbase/client/api/external_addresses_api.rb
|
284
|
+
- lib/coinbase/client/api/networks_api.rb
|
256
285
|
- lib/coinbase/client/api/server_signers_api.rb
|
257
286
|
- lib/coinbase/client/api/stake_api.rb
|
258
287
|
- lib/coinbase/client/api/trades_api.rb
|
259
288
|
- lib/coinbase/client/api/transfers_api.rb
|
260
289
|
- lib/coinbase/client/api/users_api.rb
|
261
290
|
- lib/coinbase/client/api/validators_api.rb
|
291
|
+
- lib/coinbase/client/api/wallet_stake_api.rb
|
262
292
|
- lib/coinbase/client/api/wallets_api.rb
|
263
293
|
- lib/coinbase/client/api/webhooks_api.rb
|
264
294
|
- lib/coinbase/client/api_client.rb
|
@@ -266,6 +296,7 @@ files:
|
|
266
296
|
- lib/coinbase/client/configuration.rb
|
267
297
|
- lib/coinbase/client/models/address.rb
|
268
298
|
- lib/coinbase/client/models/address_balance_list.rb
|
299
|
+
- lib/coinbase/client/models/address_historical_balance_list.rb
|
269
300
|
- lib/coinbase/client/models/address_list.rb
|
270
301
|
- lib/coinbase/client/models/asset.rb
|
271
302
|
- lib/coinbase/client/models/balance.rb
|
@@ -287,11 +318,14 @@ files:
|
|
287
318
|
- lib/coinbase/client/models/ethereum_validator_metadata.rb
|
288
319
|
- lib/coinbase/client/models/faucet_transaction.rb
|
289
320
|
- lib/coinbase/client/models/feature.rb
|
321
|
+
- lib/coinbase/client/models/feature_set.rb
|
322
|
+
- lib/coinbase/client/models/fetch_historical_staking_balances200_response.rb
|
290
323
|
- lib/coinbase/client/models/fetch_staking_rewards200_response.rb
|
291
324
|
- lib/coinbase/client/models/fetch_staking_rewards_request.rb
|
292
325
|
- lib/coinbase/client/models/get_staking_context_request.rb
|
293
|
-
- lib/coinbase/client/models/
|
294
|
-
- lib/coinbase/client/models/
|
326
|
+
- lib/coinbase/client/models/historical_balance.rb
|
327
|
+
- lib/coinbase/client/models/network.rb
|
328
|
+
- lib/coinbase/client/models/network_identifier.rb
|
295
329
|
- lib/coinbase/client/models/seed_creation_event.rb
|
296
330
|
- lib/coinbase/client/models/seed_creation_event_result.rb
|
297
331
|
- lib/coinbase/client/models/server_signer.rb
|
@@ -302,12 +336,15 @@ files:
|
|
302
336
|
- lib/coinbase/client/models/signature_creation_event.rb
|
303
337
|
- lib/coinbase/client/models/signature_creation_event_result.rb
|
304
338
|
- lib/coinbase/client/models/signed_voluntary_exit_message_metadata.rb
|
339
|
+
- lib/coinbase/client/models/sponsored_send.rb
|
340
|
+
- lib/coinbase/client/models/staking_balance.rb
|
305
341
|
- lib/coinbase/client/models/staking_context.rb
|
306
342
|
- lib/coinbase/client/models/staking_context_context.rb
|
307
343
|
- lib/coinbase/client/models/staking_operation.rb
|
308
344
|
- lib/coinbase/client/models/staking_operation_metadata.rb
|
309
345
|
- lib/coinbase/client/models/staking_reward.rb
|
310
346
|
- lib/coinbase/client/models/staking_reward_format.rb
|
347
|
+
- lib/coinbase/client/models/staking_reward_usd_value.rb
|
311
348
|
- lib/coinbase/client/models/trade.rb
|
312
349
|
- lib/coinbase/client/models/trade_list.rb
|
313
350
|
- lib/coinbase/client/models/transaction.rb
|
@@ -319,6 +356,7 @@ files:
|
|
319
356
|
- lib/coinbase/client/models/validator.rb
|
320
357
|
- lib/coinbase/client/models/validator_details.rb
|
321
358
|
- lib/coinbase/client/models/validator_list.rb
|
359
|
+
- lib/coinbase/client/models/validator_status.rb
|
322
360
|
- lib/coinbase/client/models/wallet.rb
|
323
361
|
- lib/coinbase/client/models/wallet_list.rb
|
324
362
|
- lib/coinbase/client/models/webhook.rb
|
@@ -327,21 +365,29 @@ files:
|
|
327
365
|
- lib/coinbase/client/models/webhook_list.rb
|
328
366
|
- lib/coinbase/client/version.rb
|
329
367
|
- lib/coinbase/constants.rb
|
368
|
+
- lib/coinbase/contract_event.rb
|
369
|
+
- lib/coinbase/correlation.rb
|
330
370
|
- lib/coinbase/destination.rb
|
331
371
|
- lib/coinbase/errors.rb
|
332
372
|
- lib/coinbase/faucet_transaction.rb
|
373
|
+
- lib/coinbase/historical_balance.rb
|
333
374
|
- lib/coinbase/middleware.rb
|
334
375
|
- lib/coinbase/network.rb
|
335
376
|
- lib/coinbase/pagination.rb
|
336
377
|
- lib/coinbase/server_signer.rb
|
378
|
+
- lib/coinbase/smart_contract.rb
|
379
|
+
- lib/coinbase/sponsored_send.rb
|
380
|
+
- lib/coinbase/staking_balance.rb
|
337
381
|
- lib/coinbase/staking_operation.rb
|
338
382
|
- lib/coinbase/staking_reward.rb
|
339
383
|
- lib/coinbase/trade.rb
|
340
384
|
- lib/coinbase/transaction.rb
|
341
385
|
- lib/coinbase/transfer.rb
|
342
|
-
- lib/coinbase/user.rb
|
343
386
|
- lib/coinbase/validator.rb
|
387
|
+
- lib/coinbase/version.rb
|
344
388
|
- lib/coinbase/wallet.rb
|
389
|
+
- lib/coinbase/wallet/data.rb
|
390
|
+
- lib/coinbase/webhook.rb
|
345
391
|
homepage: https://github.com/coinbase/coinbase-sdk-ruby
|
346
392
|
licenses:
|
347
393
|
- Apache-2.0
|
data/lib/coinbase/user.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'client'
|
4
|
-
require_relative 'wallet'
|
5
|
-
|
6
|
-
module Coinbase
|
7
|
-
# A representation of a User. Users have Wallets, which can hold balances of Assets. Access the default User through
|
8
|
-
# Coinbase#default_user.
|
9
|
-
class User
|
10
|
-
# Returns a new User object. Do not use this method directly. Instead, use Coinbase#default_user.
|
11
|
-
# @param model [Coinbase::Client::User] the underlying User object
|
12
|
-
def initialize(model)
|
13
|
-
@model = model
|
14
|
-
end
|
15
|
-
|
16
|
-
# Returns the User ID.
|
17
|
-
# @return [String] the User ID
|
18
|
-
def id
|
19
|
-
@model.id
|
20
|
-
end
|
21
|
-
|
22
|
-
# Creates a new Wallet belonging to the User.
|
23
|
-
# @param network_id [String] (Optional) the ID of the blockchain network. Defaults to 'base-sepolia'.
|
24
|
-
# @return [Coinbase::Wallet] the new Wallet
|
25
|
-
def create_wallet(create_wallet_options = {})
|
26
|
-
# For ruby 2.7 compatibility we cannot pass in keyword args when the create wallet
|
27
|
-
# options is empty
|
28
|
-
return Wallet.create if create_wallet_options.empty?
|
29
|
-
|
30
|
-
Wallet.create(**create_wallet_options)
|
31
|
-
end
|
32
|
-
|
33
|
-
# Imports a Wallet belonging to the User.
|
34
|
-
# @param data [Coinbase::Wallet::Data] the Wallet data to import
|
35
|
-
# @return [Coinbase::Wallet] the imported Wallet
|
36
|
-
def import_wallet(data)
|
37
|
-
Wallet.import(data)
|
38
|
-
end
|
39
|
-
|
40
|
-
# Enumerates the Wallets belonging to the User.
|
41
|
-
# @return [Enumerator<Coinbase::Wallet>] the Wallets belonging to the User
|
42
|
-
def wallets
|
43
|
-
Wallet.list
|
44
|
-
end
|
45
|
-
|
46
|
-
# Returns the Wallet with the given ID.
|
47
|
-
# @param wallet_id [String] the ID of the Wallet
|
48
|
-
# @return [Coinbase::Wallet] the unhydrated Wallet
|
49
|
-
def wallet(wallet_id)
|
50
|
-
Wallet.fetch(wallet_id)
|
51
|
-
end
|
52
|
-
|
53
|
-
# Returns a string representation of the User.
|
54
|
-
# @return [String] a string representation of the User
|
55
|
-
def to_s
|
56
|
-
"Coinbase::User{user_id: '#{id}'}"
|
57
|
-
end
|
58
|
-
|
59
|
-
# Same as to_s.
|
60
|
-
# @return [String] a string representation of the User
|
61
|
-
def inspect
|
62
|
-
to_s
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|