coinbase-sdk 0.11.0 → 0.14.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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/lib/coinbase/address/wallet_address.rb +6 -3
  3. data/lib/coinbase/address.rb +22 -3
  4. data/lib/coinbase/address_reputation.rb +67 -0
  5. data/lib/coinbase/client/api/addresses_api.rb +9 -9
  6. data/lib/coinbase/client/api/assets_api.rb +1 -1
  7. data/lib/coinbase/client/api/balance_history_api.rb +1 -1
  8. data/lib/coinbase/client/api/contract_events_api.rb +1 -1
  9. data/lib/coinbase/client/api/contract_invocations_api.rb +4 -4
  10. data/lib/coinbase/client/api/external_addresses_api.rb +245 -4
  11. data/lib/coinbase/client/api/fund_api.rb +4 -4
  12. data/lib/coinbase/client/api/mpc_wallet_stake_api.rb +3 -3
  13. data/lib/coinbase/client/api/networks_api.rb +1 -1
  14. data/lib/coinbase/client/api/onchain_identity_api.rb +1 -1
  15. data/lib/coinbase/client/api/reputation_api.rb +1 -70
  16. data/lib/coinbase/client/api/server_signers_api.rb +6 -6
  17. data/lib/coinbase/client/api/smart_contracts_api.rb +168 -25
  18. data/lib/coinbase/client/api/stake_api.rb +7 -7
  19. data/lib/coinbase/client/api/trades_api.rb +4 -4
  20. data/lib/coinbase/client/api/transaction_history_api.rb +1 -1
  21. data/lib/coinbase/client/api/transfers_api.rb +4 -4
  22. data/lib/coinbase/client/api/wallets_api.rb +5 -5
  23. data/lib/coinbase/client/api/webhooks_api.rb +5 -5
  24. data/lib/coinbase/client/configuration.rb +14 -0
  25. data/lib/coinbase/client/models/address_reputation.rb +15 -8
  26. data/lib/coinbase/client/models/{address_risk.rb → broadcast_external_transfer_request.rb} +15 -16
  27. data/lib/coinbase/client/models/create_external_transfer_request.rb +283 -0
  28. data/lib/coinbase/client/models/create_fund_operation_request.rb +1 -1
  29. data/lib/coinbase/client/models/create_fund_quote_request.rb +1 -1
  30. data/lib/coinbase/client/models/create_transfer_request.rb +15 -5
  31. data/lib/coinbase/client/models/ethereum_transaction.rb +14 -4
  32. data/lib/coinbase/client/models/register_smart_contract_request.rb +252 -0
  33. data/lib/coinbase/client/models/smart_contract.rb +36 -30
  34. data/lib/coinbase/client/models/smart_contract_activity_event.rb +386 -0
  35. data/lib/coinbase/client/models/smart_contract_type.rb +2 -1
  36. data/lib/coinbase/client/models/transfer.rb +1 -36
  37. data/lib/coinbase/client/models/update_smart_contract_request.rb +245 -0
  38. data/lib/coinbase/client/models/webhook_event_type.rb +2 -1
  39. data/lib/coinbase/client/models/webhook_event_type_filter.rb +1 -0
  40. data/lib/coinbase/client/models/webhook_smart_contract_event_filter.rb +225 -0
  41. data/lib/coinbase/client/models/webhook_wallet_activity_filter.rb +7 -0
  42. data/lib/coinbase/client.rb +6 -1
  43. data/lib/coinbase/errors.rb +8 -0
  44. data/lib/coinbase/smart_contract.rb +338 -245
  45. data/lib/coinbase/transfer.rb +24 -2
  46. data/lib/coinbase/version.rb +1 -1
  47. data/lib/coinbase/wallet/data.rb +6 -4
  48. data/lib/coinbase/wallet.rb +3 -2
  49. data/lib/coinbase.rb +2 -1
  50. metadata +13 -7
@@ -19,10 +19,11 @@ module Coinbase::Client
19
19
  ERC20_TRANSFER = "erc20_transfer".freeze
20
20
  ERC721_TRANSFER = "erc721_transfer".freeze
21
21
  WALLET_ACTIVITY = "wallet_activity".freeze
22
+ SMART_CONTRACT_EVENT_ACTIVITY = "smart_contract_event_activity".freeze
22
23
  UNKNOWN_DEFAULT_OPEN_API = "unknown_default_open_api".freeze
23
24
 
24
25
  def self.all_vars
25
- @all_vars ||= [UNSPECIFIED, ERC20_TRANSFER, ERC721_TRANSFER, WALLET_ACTIVITY, UNKNOWN_DEFAULT_OPEN_API].freeze
26
+ @all_vars ||= [UNSPECIFIED, ERC20_TRANSFER, ERC721_TRANSFER, WALLET_ACTIVITY, SMART_CONTRACT_EVENT_ACTIVITY, UNKNOWN_DEFAULT_OPEN_API].freeze
26
27
  end
27
28
 
28
29
  # Builds the enum from string
@@ -20,6 +20,7 @@ module Coinbase::Client
20
20
  # List of class defined in oneOf (OpenAPI v3)
21
21
  def openapi_one_of
22
22
  [
23
+ :'WebhookSmartContractEventFilter',
23
24
  :'WebhookWalletActivityFilter'
24
25
  ]
25
26
  end
@@ -0,0 +1,225 @@
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
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.9.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Coinbase::Client
17
+ # Filter for smart contract events. This filter allows the client to specify smart contract addresses to monitor for activities such as contract function calls.
18
+ class WebhookSmartContractEventFilter
19
+ # A list of smart contract addresses to filter on.
20
+ attr_accessor :contract_addresses
21
+
22
+ # Attribute mapping from ruby-style variable name to JSON key.
23
+ def self.attribute_map
24
+ {
25
+ :'contract_addresses' => :'contract_addresses'
26
+ }
27
+ end
28
+
29
+ # Returns all the JSON keys this model knows about
30
+ def self.acceptable_attributes
31
+ attribute_map.values
32
+ end
33
+
34
+ # Attribute type mapping.
35
+ def self.openapi_types
36
+ {
37
+ :'contract_addresses' => :'Array<String>'
38
+ }
39
+ end
40
+
41
+ # List of attributes with nullable: true
42
+ def self.openapi_nullable
43
+ Set.new([
44
+ ])
45
+ end
46
+
47
+ # Initializes the object
48
+ # @param [Hash] attributes Model attributes in the form of hash
49
+ def initialize(attributes = {})
50
+ if (!attributes.is_a?(Hash))
51
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Coinbase::Client::WebhookSmartContractEventFilter` initialize method"
52
+ end
53
+
54
+ # check to see if the attribute exists and convert string to symbol for hash key
55
+ attributes = attributes.each_with_object({}) { |(k, v), h|
56
+ if (!self.class.attribute_map.key?(k.to_sym))
57
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Coinbase::Client::WebhookSmartContractEventFilter`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
58
+ end
59
+ h[k.to_sym] = v
60
+ }
61
+
62
+ if attributes.key?(:'contract_addresses')
63
+ if (value = attributes[:'contract_addresses']).is_a?(Array)
64
+ self.contract_addresses = value
65
+ end
66
+ else
67
+ self.contract_addresses = nil
68
+ end
69
+ end
70
+
71
+ # Show invalid properties with the reasons. Usually used together with valid?
72
+ # @return Array for valid properties with the reasons
73
+ def list_invalid_properties
74
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
75
+ invalid_properties = Array.new
76
+ if @contract_addresses.nil?
77
+ invalid_properties.push('invalid value for "contract_addresses", contract_addresses cannot be nil.')
78
+ end
79
+
80
+ invalid_properties
81
+ end
82
+
83
+ # Check to see if the all the properties in the model are valid
84
+ # @return true if the model is valid
85
+ def valid?
86
+ warn '[DEPRECATED] the `valid?` method is obsolete'
87
+ return false if @contract_addresses.nil?
88
+ true
89
+ end
90
+
91
+ # Checks equality by comparing each attribute.
92
+ # @param [Object] Object to be compared
93
+ def ==(o)
94
+ return true if self.equal?(o)
95
+ self.class == o.class &&
96
+ contract_addresses == o.contract_addresses
97
+ end
98
+
99
+ # @see the `==` method
100
+ # @param [Object] Object to be compared
101
+ def eql?(o)
102
+ self == o
103
+ end
104
+
105
+ # Calculates hash code according to all attributes.
106
+ # @return [Integer] Hash code
107
+ def hash
108
+ [contract_addresses].hash
109
+ end
110
+
111
+ # Builds the object from hash
112
+ # @param [Hash] attributes Model attributes in the form of hash
113
+ # @return [Object] Returns the model itself
114
+ def self.build_from_hash(attributes)
115
+ return nil unless attributes.is_a?(Hash)
116
+ attributes = attributes.transform_keys(&:to_sym)
117
+ transformed_hash = {}
118
+ openapi_types.each_pair do |key, type|
119
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
120
+ transformed_hash["#{key}"] = nil
121
+ elsif type =~ /\AArray<(.*)>/i
122
+ # check to ensure the input is an array given that the attribute
123
+ # is documented as an array but the input is not
124
+ if attributes[attribute_map[key]].is_a?(Array)
125
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
126
+ end
127
+ elsif !attributes[attribute_map[key]].nil?
128
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
129
+ end
130
+ end
131
+ new(transformed_hash)
132
+ end
133
+
134
+ # Deserializes the data based on type
135
+ # @param string type Data type
136
+ # @param string value Value to be deserialized
137
+ # @return [Object] Deserialized data
138
+ def self._deserialize(type, value)
139
+ case type.to_sym
140
+ when :Time
141
+ Time.parse(value)
142
+ when :Date
143
+ Date.parse(value)
144
+ when :String
145
+ value.to_s
146
+ when :Integer
147
+ value.to_i
148
+ when :Float
149
+ value.to_f
150
+ when :Boolean
151
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
152
+ true
153
+ else
154
+ false
155
+ end
156
+ when :Object
157
+ # generic object (usually a Hash), return directly
158
+ value
159
+ when /\AArray<(?<inner_type>.+)>\z/
160
+ inner_type = Regexp.last_match[:inner_type]
161
+ value.map { |v| _deserialize(inner_type, v) }
162
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
163
+ k_type = Regexp.last_match[:k_type]
164
+ v_type = Regexp.last_match[:v_type]
165
+ {}.tap do |hash|
166
+ value.each do |k, v|
167
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
168
+ end
169
+ end
170
+ else # model
171
+ # models (e.g. Pet) or oneOf
172
+ klass = Coinbase::Client.const_get(type)
173
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
174
+ end
175
+ end
176
+
177
+ # Returns the string representation of the object
178
+ # @return [String] String presentation of the object
179
+ def to_s
180
+ to_hash.to_s
181
+ end
182
+
183
+ # to_body is an alias to to_hash (backward compatibility)
184
+ # @return [Hash] Returns the object in the form of hash
185
+ def to_body
186
+ to_hash
187
+ end
188
+
189
+ # Returns the object in the form of hash
190
+ # @return [Hash] Returns the object in the form of hash
191
+ def to_hash
192
+ hash = {}
193
+ self.class.attribute_map.each_pair do |attr, param|
194
+ value = self.send(attr)
195
+ if value.nil?
196
+ is_nullable = self.class.openapi_nullable.include?(attr)
197
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
198
+ end
199
+
200
+ hash[param] = _to_hash(value)
201
+ end
202
+ hash
203
+ end
204
+
205
+ # Outputs non-array value in the form of hash
206
+ # For object, use to_hash. Otherwise, just return the value
207
+ # @param [Object] value Any valid value
208
+ # @return [Hash] Returns the value in the form of hash
209
+ def _to_hash(value)
210
+ if value.is_a?(Array)
211
+ value.compact.map { |v| _to_hash(v) }
212
+ elsif value.is_a?(Hash)
213
+ {}.tap do |hash|
214
+ value.each { |k, v| hash[k] = _to_hash(v) }
215
+ end
216
+ elsif value.respond_to? :to_hash
217
+ value.to_hash
218
+ else
219
+ value
220
+ end
221
+ end
222
+
223
+ end
224
+
225
+ end
@@ -72,6 +72,8 @@ module Coinbase::Client
72
72
 
73
73
  if attributes.key?(:'wallet_id')
74
74
  self.wallet_id = attributes[:'wallet_id']
75
+ else
76
+ self.wallet_id = nil
75
77
  end
76
78
  end
77
79
 
@@ -80,6 +82,10 @@ module Coinbase::Client
80
82
  def list_invalid_properties
81
83
  warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
82
84
  invalid_properties = Array.new
85
+ if @wallet_id.nil?
86
+ invalid_properties.push('invalid value for "wallet_id", wallet_id cannot be nil.')
87
+ end
88
+
83
89
  invalid_properties
84
90
  end
85
91
 
@@ -87,6 +93,7 @@ module Coinbase::Client
87
93
  # @return true if the model is valid
88
94
  def valid?
89
95
  warn '[DEPRECATED] the `valid?` method is obsolete'
96
+ return false if @wallet_id.nil?
90
97
  true
91
98
  end
92
99
 
@@ -23,11 +23,11 @@ Coinbase::Client.autoload :AddressHistoricalBalanceList, 'coinbase/client/models
23
23
  Coinbase::Client.autoload :AddressList, 'coinbase/client/models/address_list'
24
24
  Coinbase::Client.autoload :AddressReputation, 'coinbase/client/models/address_reputation'
25
25
  Coinbase::Client.autoload :AddressReputationMetadata, 'coinbase/client/models/address_reputation_metadata'
26
- Coinbase::Client.autoload :AddressRisk, 'coinbase/client/models/address_risk'
27
26
  Coinbase::Client.autoload :AddressTransactionList, 'coinbase/client/models/address_transaction_list'
28
27
  Coinbase::Client.autoload :Asset, 'coinbase/client/models/asset'
29
28
  Coinbase::Client.autoload :Balance, 'coinbase/client/models/balance'
30
29
  Coinbase::Client.autoload :BroadcastContractInvocationRequest, 'coinbase/client/models/broadcast_contract_invocation_request'
30
+ Coinbase::Client.autoload :BroadcastExternalTransferRequest, 'coinbase/client/models/broadcast_external_transfer_request'
31
31
  Coinbase::Client.autoload :BroadcastStakingOperationRequest, 'coinbase/client/models/broadcast_staking_operation_request'
32
32
  Coinbase::Client.autoload :BroadcastTradeRequest, 'coinbase/client/models/broadcast_trade_request'
33
33
  Coinbase::Client.autoload :BroadcastTransferRequest, 'coinbase/client/models/broadcast_transfer_request'
@@ -38,6 +38,7 @@ Coinbase::Client.autoload :ContractInvocation, 'coinbase/client/models/contract_
38
38
  Coinbase::Client.autoload :ContractInvocationList, 'coinbase/client/models/contract_invocation_list'
39
39
  Coinbase::Client.autoload :CreateAddressRequest, 'coinbase/client/models/create_address_request'
40
40
  Coinbase::Client.autoload :CreateContractInvocationRequest, 'coinbase/client/models/create_contract_invocation_request'
41
+ Coinbase::Client.autoload :CreateExternalTransferRequest, 'coinbase/client/models/create_external_transfer_request'
41
42
  Coinbase::Client.autoload :CreateFundOperationRequest, 'coinbase/client/models/create_fund_operation_request'
42
43
  Coinbase::Client.autoload :CreateFundQuoteRequest, 'coinbase/client/models/create_fund_quote_request'
43
44
  Coinbase::Client.autoload :CreatePayloadSignatureRequest, 'coinbase/client/models/create_payload_signature_request'
@@ -82,6 +83,7 @@ Coinbase::Client.autoload :OnchainNameList, 'coinbase/client/models/onchain_name
82
83
  Coinbase::Client.autoload :PayloadSignature, 'coinbase/client/models/payload_signature'
83
84
  Coinbase::Client.autoload :PayloadSignatureList, 'coinbase/client/models/payload_signature_list'
84
85
  Coinbase::Client.autoload :ReadContractRequest, 'coinbase/client/models/read_contract_request'
86
+ Coinbase::Client.autoload :RegisterSmartContractRequest, 'coinbase/client/models/register_smart_contract_request'
85
87
  Coinbase::Client.autoload :SeedCreationEvent, 'coinbase/client/models/seed_creation_event'
86
88
  Coinbase::Client.autoload :SeedCreationEventResult, 'coinbase/client/models/seed_creation_event_result'
87
89
  Coinbase::Client.autoload :ServerSigner, 'coinbase/client/models/server_signer'
@@ -93,6 +95,7 @@ Coinbase::Client.autoload :SignatureCreationEvent, 'coinbase/client/models/signa
93
95
  Coinbase::Client.autoload :SignatureCreationEventResult, 'coinbase/client/models/signature_creation_event_result'
94
96
  Coinbase::Client.autoload :SignedVoluntaryExitMessageMetadata, 'coinbase/client/models/signed_voluntary_exit_message_metadata'
95
97
  Coinbase::Client.autoload :SmartContract, 'coinbase/client/models/smart_contract'
98
+ Coinbase::Client.autoload :SmartContractActivityEvent, 'coinbase/client/models/smart_contract_activity_event'
96
99
  Coinbase::Client.autoload :SmartContractList, 'coinbase/client/models/smart_contract_list'
97
100
  Coinbase::Client.autoload :SmartContractOptions, 'coinbase/client/models/smart_contract_options'
98
101
  Coinbase::Client.autoload :SmartContractType, 'coinbase/client/models/smart_contract_type'
@@ -115,6 +118,7 @@ Coinbase::Client.autoload :TransactionContent, 'coinbase/client/models/transacti
115
118
  Coinbase::Client.autoload :TransactionType, 'coinbase/client/models/transaction_type'
116
119
  Coinbase::Client.autoload :Transfer, 'coinbase/client/models/transfer'
117
120
  Coinbase::Client.autoload :TransferList, 'coinbase/client/models/transfer_list'
121
+ Coinbase::Client.autoload :UpdateSmartContractRequest, 'coinbase/client/models/update_smart_contract_request'
118
122
  Coinbase::Client.autoload :UpdateWebhookRequest, 'coinbase/client/models/update_webhook_request'
119
123
  Coinbase::Client.autoload :User, 'coinbase/client/models/user'
120
124
  Coinbase::Client.autoload :Validator, 'coinbase/client/models/validator'
@@ -128,6 +132,7 @@ Coinbase::Client.autoload :WebhookEventFilter, 'coinbase/client/models/webhook_e
128
132
  Coinbase::Client.autoload :WebhookEventType, 'coinbase/client/models/webhook_event_type'
129
133
  Coinbase::Client.autoload :WebhookEventTypeFilter, 'coinbase/client/models/webhook_event_type_filter'
130
134
  Coinbase::Client.autoload :WebhookList, 'coinbase/client/models/webhook_list'
135
+ Coinbase::Client.autoload :WebhookSmartContractEventFilter, 'coinbase/client/models/webhook_smart_contract_event_filter'
131
136
  Coinbase::Client.autoload :WebhookWalletActivityFilter, 'coinbase/client/models/webhook_wallet_activity_filter'
132
137
 
133
138
  # APIs
@@ -84,6 +84,14 @@ module Coinbase
84
84
  end
85
85
  end
86
86
 
87
+ # An error raised when attempting to manage an external contract on-chain,
88
+ # e.g. sign the deployment tx, deploy the contract, etc...
89
+ class ManageExternalContractError < StandardError
90
+ def initialize(action = 'manage')
91
+ super("Cannot #{action} external smart contract")
92
+ end
93
+ end
94
+
87
95
  # An error raised when an address attempts to sign a transaction without a private key.
88
96
  class AddressCannotSignError < StandardError
89
97
  def initialize(msg = 'Address cannot sign transaction without private key loaded')