coinbase-sdk 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/lib/coinbase/address.rb +152 -51
  3. data/lib/coinbase/asset.rb +2 -1
  4. data/lib/coinbase/authenticator.rb +52 -0
  5. data/lib/coinbase/balance_map.rb +2 -2
  6. data/lib/coinbase/client/api/addresses_api.rb +454 -0
  7. data/lib/coinbase/client/api/transfers_api.rb +342 -0
  8. data/lib/coinbase/client/api/users_api.rb +79 -0
  9. data/lib/coinbase/client/api/wallets_api.rb +348 -0
  10. data/lib/coinbase/client/api_client.rb +431 -0
  11. data/lib/coinbase/client/api_error.rb +58 -0
  12. data/lib/coinbase/client/configuration.rb +375 -0
  13. data/lib/coinbase/client/models/address.rb +273 -0
  14. data/lib/coinbase/client/models/address_balance_list.rb +275 -0
  15. data/lib/coinbase/client/models/address_list.rb +275 -0
  16. data/lib/coinbase/client/models/asset.rb +260 -0
  17. data/lib/coinbase/client/models/balance.rb +239 -0
  18. data/lib/coinbase/client/models/broadcast_transfer_request.rb +222 -0
  19. data/lib/coinbase/client/models/create_address_request.rb +239 -0
  20. data/lib/coinbase/client/models/create_transfer_request.rb +273 -0
  21. data/lib/coinbase/client/models/create_wallet_request.rb +221 -0
  22. data/lib/coinbase/client/models/error.rb +278 -0
  23. data/lib/coinbase/client/models/faucet_transaction.rb +222 -0
  24. data/lib/coinbase/client/models/transfer.rb +413 -0
  25. data/lib/coinbase/client/models/transfer_list.rb +275 -0
  26. data/lib/coinbase/client/models/user.rb +231 -0
  27. data/lib/coinbase/client/models/wallet.rb +241 -0
  28. data/lib/coinbase/client/models/wallet_list.rb +275 -0
  29. data/lib/coinbase/client/version.rb +15 -0
  30. data/lib/coinbase/client.rb +59 -0
  31. data/lib/coinbase/constants.rb +8 -2
  32. data/lib/coinbase/errors.rb +120 -0
  33. data/lib/coinbase/faucet_transaction.rb +42 -0
  34. data/lib/coinbase/middleware.rb +21 -0
  35. data/lib/coinbase/network.rb +2 -2
  36. data/lib/coinbase/transfer.rb +106 -65
  37. data/lib/coinbase/user.rb +180 -0
  38. data/lib/coinbase/wallet.rb +168 -52
  39. data/lib/coinbase.rb +127 -9
  40. metadata +92 -6
@@ -0,0 +1,275 @@
1
+ =begin
2
+ #Coinbase Platform API
3
+
4
+ #This is the OpenAPI 3.0 specification for the Coinbase Platform APIs, used in conjunction with the Coinbase Platform SDKs.
5
+
6
+ The version of the OpenAPI document: 0.0.1-alpha
7
+ Contact: yuga.cohler@coinbase.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.5.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Coinbase::Client
17
+ # Paginated list of wallets
18
+ class WalletList
19
+ attr_accessor :data
20
+
21
+ # True if this list has another page of items after this one that can be fetched.
22
+ attr_accessor :has_more
23
+
24
+ # The page token to be used to fetch the next page.
25
+ attr_accessor :next_page
26
+
27
+ # The total number of wallets
28
+ attr_accessor :total_count
29
+
30
+ # Attribute mapping from ruby-style variable name to JSON key.
31
+ def self.attribute_map
32
+ {
33
+ :'data' => :'data',
34
+ :'has_more' => :'has_more',
35
+ :'next_page' => :'next_page',
36
+ :'total_count' => :'total_count'
37
+ }
38
+ end
39
+
40
+ # Returns all the JSON keys this model knows about
41
+ def self.acceptable_attributes
42
+ attribute_map.values
43
+ end
44
+
45
+ # Attribute type mapping.
46
+ def self.openapi_types
47
+ {
48
+ :'data' => :'Array<Wallet>',
49
+ :'has_more' => :'Boolean',
50
+ :'next_page' => :'String',
51
+ :'total_count' => :'Integer'
52
+ }
53
+ end
54
+
55
+ # List of attributes with nullable: true
56
+ def self.openapi_nullable
57
+ Set.new([
58
+ ])
59
+ end
60
+
61
+ # Initializes the object
62
+ # @param [Hash] attributes Model attributes in the form of hash
63
+ def initialize(attributes = {})
64
+ if (!attributes.is_a?(Hash))
65
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Coinbase::Client::WalletList` initialize method"
66
+ end
67
+
68
+ # check to see if the attribute exists and convert string to symbol for hash key
69
+ attributes = attributes.each_with_object({}) { |(k, v), h|
70
+ if (!self.class.attribute_map.key?(k.to_sym))
71
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Coinbase::Client::WalletList`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
72
+ end
73
+ h[k.to_sym] = v
74
+ }
75
+
76
+ if attributes.key?(:'data')
77
+ if (value = attributes[:'data']).is_a?(Array)
78
+ self.data = value
79
+ end
80
+ else
81
+ self.data = nil
82
+ end
83
+
84
+ if attributes.key?(:'has_more')
85
+ self.has_more = attributes[:'has_more']
86
+ else
87
+ self.has_more = nil
88
+ end
89
+
90
+ if attributes.key?(:'next_page')
91
+ self.next_page = attributes[:'next_page']
92
+ else
93
+ self.next_page = nil
94
+ end
95
+
96
+ if attributes.key?(:'total_count')
97
+ self.total_count = attributes[:'total_count']
98
+ else
99
+ self.total_count = nil
100
+ end
101
+ end
102
+
103
+ # Show invalid properties with the reasons. Usually used together with valid?
104
+ # @return Array for valid properties with the reasons
105
+ def list_invalid_properties
106
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
107
+ invalid_properties = Array.new
108
+ if @data.nil?
109
+ invalid_properties.push('invalid value for "data", data cannot be nil.')
110
+ end
111
+
112
+ if @has_more.nil?
113
+ invalid_properties.push('invalid value for "has_more", has_more cannot be nil.')
114
+ end
115
+
116
+ if @next_page.nil?
117
+ invalid_properties.push('invalid value for "next_page", next_page cannot be nil.')
118
+ end
119
+
120
+ if @total_count.nil?
121
+ invalid_properties.push('invalid value for "total_count", total_count cannot be nil.')
122
+ end
123
+
124
+ invalid_properties
125
+ end
126
+
127
+ # Check to see if the all the properties in the model are valid
128
+ # @return true if the model is valid
129
+ def valid?
130
+ warn '[DEPRECATED] the `valid?` method is obsolete'
131
+ return false if @data.nil?
132
+ return false if @has_more.nil?
133
+ return false if @next_page.nil?
134
+ return false if @total_count.nil?
135
+ true
136
+ end
137
+
138
+ # Checks equality by comparing each attribute.
139
+ # @param [Object] Object to be compared
140
+ def ==(o)
141
+ return true if self.equal?(o)
142
+ self.class == o.class &&
143
+ data == o.data &&
144
+ has_more == o.has_more &&
145
+ next_page == o.next_page &&
146
+ total_count == o.total_count
147
+ end
148
+
149
+ # @see the `==` method
150
+ # @param [Object] Object to be compared
151
+ def eql?(o)
152
+ self == o
153
+ end
154
+
155
+ # Calculates hash code according to all attributes.
156
+ # @return [Integer] Hash code
157
+ def hash
158
+ [data, has_more, next_page, total_count].hash
159
+ end
160
+
161
+ # Builds the object from hash
162
+ # @param [Hash] attributes Model attributes in the form of hash
163
+ # @return [Object] Returns the model itself
164
+ def self.build_from_hash(attributes)
165
+ return nil unless attributes.is_a?(Hash)
166
+ attributes = attributes.transform_keys(&:to_sym)
167
+ transformed_hash = {}
168
+ openapi_types.each_pair do |key, type|
169
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
170
+ transformed_hash["#{key}"] = nil
171
+ elsif type =~ /\AArray<(.*)>/i
172
+ # check to ensure the input is an array given that the attribute
173
+ # is documented as an array but the input is not
174
+ if attributes[attribute_map[key]].is_a?(Array)
175
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
176
+ end
177
+ elsif !attributes[attribute_map[key]].nil?
178
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
179
+ end
180
+ end
181
+ new(transformed_hash)
182
+ end
183
+
184
+ # Deserializes the data based on type
185
+ # @param string type Data type
186
+ # @param string value Value to be deserialized
187
+ # @return [Object] Deserialized data
188
+ def self._deserialize(type, value)
189
+ case type.to_sym
190
+ when :Time
191
+ Time.parse(value)
192
+ when :Date
193
+ Date.parse(value)
194
+ when :String
195
+ value.to_s
196
+ when :Integer
197
+ value.to_i
198
+ when :Float
199
+ value.to_f
200
+ when :Boolean
201
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
202
+ true
203
+ else
204
+ false
205
+ end
206
+ when :Object
207
+ # generic object (usually a Hash), return directly
208
+ value
209
+ when /\AArray<(?<inner_type>.+)>\z/
210
+ inner_type = Regexp.last_match[:inner_type]
211
+ value.map { |v| _deserialize(inner_type, v) }
212
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
213
+ k_type = Regexp.last_match[:k_type]
214
+ v_type = Regexp.last_match[:v_type]
215
+ {}.tap do |hash|
216
+ value.each do |k, v|
217
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
218
+ end
219
+ end
220
+ else # model
221
+ # models (e.g. Pet) or oneOf
222
+ klass = Coinbase::Client.const_get(type)
223
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
224
+ end
225
+ end
226
+
227
+ # Returns the string representation of the object
228
+ # @return [String] String presentation of the object
229
+ def to_s
230
+ to_hash.to_s
231
+ end
232
+
233
+ # to_body is an alias to to_hash (backward compatibility)
234
+ # @return [Hash] Returns the object in the form of hash
235
+ def to_body
236
+ to_hash
237
+ end
238
+
239
+ # Returns the object in the form of hash
240
+ # @return [Hash] Returns the object in the form of hash
241
+ def to_hash
242
+ hash = {}
243
+ self.class.attribute_map.each_pair do |attr, param|
244
+ value = self.send(attr)
245
+ if value.nil?
246
+ is_nullable = self.class.openapi_nullable.include?(attr)
247
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
248
+ end
249
+
250
+ hash[param] = _to_hash(value)
251
+ end
252
+ hash
253
+ end
254
+
255
+ # Outputs non-array value in the form of hash
256
+ # For object, use to_hash. Otherwise, just return the value
257
+ # @param [Object] value Any valid value
258
+ # @return [Hash] Returns the value in the form of hash
259
+ def _to_hash(value)
260
+ if value.is_a?(Array)
261
+ value.compact.map { |v| _to_hash(v) }
262
+ elsif value.is_a?(Hash)
263
+ {}.tap do |hash|
264
+ value.each { |k, v| hash[k] = _to_hash(v) }
265
+ end
266
+ elsif value.respond_to? :to_hash
267
+ value.to_hash
268
+ else
269
+ value
270
+ end
271
+ end
272
+
273
+ end
274
+
275
+ end
@@ -0,0 +1,15 @@
1
+ =begin
2
+ #Coinbase Platform API
3
+
4
+ #This is the OpenAPI 3.0 specification for the Coinbase Platform APIs, used in conjunction with the Coinbase Platform SDKs.
5
+
6
+ The version of the OpenAPI document: 0.0.1-alpha
7
+ Contact: yuga.cohler@coinbase.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.5.0
10
+
11
+ =end
12
+
13
+ module Coinbase::Client
14
+ VERSION = '0.0.1-alpha'
15
+ end
@@ -0,0 +1,59 @@
1
+ =begin
2
+ #Coinbase Platform API
3
+
4
+ #This is the OpenAPI 3.0 specification for the Coinbase Platform APIs, used in conjunction with the Coinbase Platform SDKs.
5
+
6
+ The version of the OpenAPI document: 0.0.1-alpha
7
+ Contact: yuga.cohler@coinbase.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.5.0
10
+
11
+ =end
12
+
13
+ # Common files
14
+ require 'coinbase/client/api_client'
15
+ require 'coinbase/client/api_error'
16
+ require 'coinbase/client/version'
17
+ require 'coinbase/client/configuration'
18
+
19
+ # Models
20
+ Coinbase::Client.autoload :Address, 'coinbase/client/models/address'
21
+ Coinbase::Client.autoload :AddressBalanceList, 'coinbase/client/models/address_balance_list'
22
+ Coinbase::Client.autoload :AddressList, 'coinbase/client/models/address_list'
23
+ Coinbase::Client.autoload :Asset, 'coinbase/client/models/asset'
24
+ Coinbase::Client.autoload :Balance, 'coinbase/client/models/balance'
25
+ Coinbase::Client.autoload :BroadcastTransferRequest, 'coinbase/client/models/broadcast_transfer_request'
26
+ Coinbase::Client.autoload :CreateAddressRequest, 'coinbase/client/models/create_address_request'
27
+ Coinbase::Client.autoload :CreateTransferRequest, 'coinbase/client/models/create_transfer_request'
28
+ Coinbase::Client.autoload :CreateWalletRequest, 'coinbase/client/models/create_wallet_request'
29
+ Coinbase::Client.autoload :Error, 'coinbase/client/models/error'
30
+ Coinbase::Client.autoload :FaucetTransaction, 'coinbase/client/models/faucet_transaction'
31
+ Coinbase::Client.autoload :Transfer, 'coinbase/client/models/transfer'
32
+ Coinbase::Client.autoload :TransferList, 'coinbase/client/models/transfer_list'
33
+ Coinbase::Client.autoload :User, 'coinbase/client/models/user'
34
+ Coinbase::Client.autoload :Wallet, 'coinbase/client/models/wallet'
35
+ Coinbase::Client.autoload :WalletList, 'coinbase/client/models/wallet_list'
36
+
37
+ # APIs
38
+ Coinbase::Client.autoload :AddressesApi, 'coinbase/client/api/addresses_api'
39
+ Coinbase::Client.autoload :TransfersApi, 'coinbase/client/api/transfers_api'
40
+ Coinbase::Client.autoload :UsersApi, 'coinbase/client/api/users_api'
41
+ Coinbase::Client.autoload :WalletsApi, 'coinbase/client/api/wallets_api'
42
+
43
+ module Coinbase::Client
44
+ class << self
45
+ # Customize default settings for the SDK using block.
46
+ # Coinbase::Client.configure do |config|
47
+ # config.username = "xxx"
48
+ # config.password = "xxx"
49
+ # end
50
+ # If no block given, return the default Configuration object.
51
+ def configure
52
+ if block_given?
53
+ yield(Configuration.default)
54
+ else
55
+ Configuration.default
56
+ end
57
+ end
58
+ end
59
+ end
@@ -8,7 +8,8 @@ module Coinbase
8
8
  ETH = Asset.new(network_id: :base_sepolia, asset_id: :eth, display_name: 'Ether')
9
9
  USDC = Asset.new(network_id: :base_sepolia, asset_id: :usdc, display_name: 'USD Coin',
10
10
  address_id: '0x036CbD53842c5426634e7929541eC2318f3dCF7e')
11
-
11
+ WETH = Asset.new(network_id: :base_sepolia, asset_id: :weth, display_name: 'Wrapped Ether',
12
+ address_id: '0x4200000000000000000000000000000000000006')
12
13
  # The Base Sepolia Network.
13
14
  BASE_SEPOLIA = Network.new(
14
15
  network_id: :base_sepolia,
@@ -29,10 +30,15 @@ module Coinbase
29
30
  # The amount of Gwei per Ether.
30
31
  GWEI_PER_ETHER = 1_000_000_000
31
32
 
33
+ # The amount of atomic units of USDC per USDC.
34
+ ATOMIC_UNITS_PER_USDC = 1_000_000
35
+
32
36
  # A map of supported Asset IDs.
33
37
  SUPPORTED_ASSET_IDS = {
34
38
  eth: true, # Ether, the native asset of most EVM networks.
35
39
  gwei: true, # A medium denomination of Ether, typically used in gas prices.
36
- wei: true # The smallest denomination of Ether.
40
+ wei: true, # The smallest denomination of Ether.
41
+ usdc: true, # USD Coin, a stablecoin pegged to the US Dollar.
42
+ weth: true # Wrapped Ether, the ERC-20 compatible version of Ether.
37
43
  }.freeze
38
44
  end
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'client/api_error'
4
+ require 'json'
5
+
6
+ module Coinbase
7
+ # A wrapper for API errors to provide more context.
8
+ class APIError < StandardError
9
+ attr_reader :http_code, :api_code, :api_message
10
+
11
+ # Initializes a new APIError object.
12
+ # @param err [Coinbase::Client::APIError] The underlying error object.
13
+ def initialize(err)
14
+ super
15
+ @http_code = err.code
16
+
17
+ return unless err.response_body
18
+
19
+ body = JSON.parse(err.response_body)
20
+ @api_code = body['code']
21
+ @api_message = body['message']
22
+ end
23
+
24
+ # Creates a specific APIError based on the API error code.
25
+ # @param err [Coinbase::Client::APIError] The underlying error object.
26
+ # @return [APIError] The specific APIError object.
27
+ # rubocop:disable Metrics/MethodLength
28
+ def self.from_error(err)
29
+ raise ArgumentError, 'Argument must be a Coinbase::Client::APIError' unless err.is_a? Coinbase::Client::ApiError
30
+ return APIError.new(err) unless err.response_body
31
+
32
+ body = JSON.parse(err.response_body)
33
+
34
+ case body['code']
35
+ when 'unimplemented'
36
+ UnimplementedError.new(err)
37
+ when 'unauthorized'
38
+ UnauthorizedError.new(err)
39
+ when 'internal'
40
+ InternalError.new(err)
41
+ when 'not_found'
42
+ NotFoundError.new(err)
43
+ when 'invalid_wallet_id'
44
+ InvalidWalletIDError.new(err)
45
+ when 'invalid_address_id'
46
+ InvalidAddressIDError.new(err)
47
+ when 'invalid_wallet'
48
+ InvalidWalletError.new(err)
49
+ when 'invalid_address'
50
+ InvalidAddressError.new(err)
51
+ when 'invalid_amount'
52
+ InvalidAmountError.new(err)
53
+ when 'invalid_transfer_id'
54
+ InvalidTransferIDError.new(err)
55
+ when 'invalid_page_token'
56
+ InvalidPageError.new(err)
57
+ when 'invalid_page_limit'
58
+ InvalidLimitError.new(err)
59
+ when 'already_exists'
60
+ AlreadyExistsError.new(err)
61
+ when 'malformed_request'
62
+ MalformedRequestError.new(err)
63
+ when 'unsupported_asset'
64
+ UnsupportedAssetError.new(err)
65
+ when 'invalid_asset_id'
66
+ InvalidAssetIDError.new(err)
67
+ when 'invalid_destination'
68
+ InvalidDestinationError.new(err)
69
+ when 'invalid_network_id'
70
+ InvalidNetworkIDError.new(err)
71
+ when 'resource_exhausted'
72
+ ResourceExhaustedError.new(err)
73
+ when 'faucet_limit_reached'
74
+ FaucetLimitReachedError.new(err)
75
+ when 'invalid_signed_payload'
76
+ InvalidSignedPayloadError.new(err)
77
+ when 'invalid_transfer_status'
78
+ InvalidTransferStatusError.new(err)
79
+ else
80
+ APIError.new(err)
81
+ end
82
+ end
83
+ # rubocop:enable Metrics/MethodLength
84
+
85
+ # Returns a String representation of the APIError.
86
+ # @return [String] a String representation of the APIError
87
+ def to_s
88
+ "APIError{http_code: #{@http_code}, api_code: #{@api_code}, api_message: #{@api_message}}"
89
+ end
90
+
91
+ # Same as to_s.
92
+ # @return [String] a String representation of the APIError
93
+ def inspect
94
+ to_s
95
+ end
96
+ end
97
+
98
+ class UnimplementedError < APIError; end
99
+ class UnauthorizedError < APIError; end
100
+ class InternalError < APIError; end
101
+ class NotFoundError < APIError; end
102
+ class InvalidWalletIDError < APIError; end
103
+ class InvalidAddressIDError < APIError; end
104
+ class InvalidWalletError < APIError; end
105
+ class InvalidAddressError < APIError; end
106
+ class InvalidAmountError < APIError; end
107
+ class InvalidTransferIDError < APIError; end
108
+ class InvalidPageError < APIError; end
109
+ class InvalidLimitError < APIError; end
110
+ class AlreadyExistsError < APIError; end
111
+ class MalformedRequestError < APIError; end
112
+ class UnsupportedAssetError < APIError; end
113
+ class InvalidAssetIDError < APIError; end
114
+ class InvalidDestinationError < APIError; end
115
+ class InvalidNetworkIDError < APIError; end
116
+ class ResourceExhaustedError < APIError; end
117
+ class FaucetLimitReachedError < APIError; end
118
+ class InvalidSignedPayloadError < APIError; end
119
+ class InvalidTransferStatusError < APIError; end
120
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coinbase
4
+ # A representation of a transaction from a faucet.
5
+ # a user-controlled Wallet to another address. The fee is assumed to be paid
6
+ # in the native Asset of the Network. Transfers should be created through Wallet#transfer or
7
+ # Address#transfer.
8
+ class FaucetTransaction
9
+ # Returns a new FaucetTransaction object. Do not use this method directly - instead, use Address#faucet.
10
+ # @param model [Coinbase::Client::FaucetTransaction] The underlying FaucetTransaction object
11
+ def initialize(model)
12
+ @model = model
13
+ end
14
+
15
+ attr_reader :model
16
+
17
+ # Returns the transaction hash.
18
+ # @return [String] The onchain transaction hash
19
+ def transaction_hash
20
+ model.transaction_hash
21
+ end
22
+
23
+ # Returns the link to the transaction on the blockchain explorer.
24
+ # @return [String] The link to the transaction on the blockchain explorer
25
+ def transaction_link
26
+ # TODO: Parameterize this by Network.
27
+ "https://sepolia.basescan.org/tx/#{transaction_hash}"
28
+ end
29
+
30
+ # Returns a String representation of the FaucetTransaction.
31
+ # @return [String] a String representation of the FaucetTransaction
32
+ def to_s
33
+ "Coinbase::FaucetTransaction{transaction_hash: '#{transaction_hash}', transaction_link: '#{transaction_link}'}"
34
+ end
35
+
36
+ # Same as to_s.
37
+ # @return [String] a String representation of the FaucetTransaction
38
+ def inspect
39
+ to_s
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'authenticator'
4
+ require_relative 'client/configuration'
5
+ require 'faraday'
6
+
7
+ module Coinbase
8
+ # A module for middleware that can be used with Faraday.
9
+ module Middleware
10
+ Faraday::Request.register_middleware authenticator: -> { Coinbase::Authenticator }
11
+
12
+ # Returns the default middleware configuration for the Coinbase SDK.
13
+ def self.config
14
+ Coinbase::Client::Configuration.default.tap do |config|
15
+ config.debugging = Coinbase.configuration.debug_api
16
+ config.host = Coinbase.configuration.api_url
17
+ config.request(:authenticator)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -5,8 +5,8 @@ module Coinbase
5
5
  class Network
6
6
  attr_reader :chain_id
7
7
 
8
- # Returns a new Network object.
9
- #
8
+ # Returns a new Network object. Do not use this method directly. Instead, use the Network constants defined in
9
+ # the Coinbase module.
10
10
  # @param network_id [Symbol] The Network ID
11
11
  # @param display_name [String] The Network's display name
12
12
  # @param protocol_family [String] The protocol family to which the Network belongs