coinbase-sdk 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/lib/coinbase/address/wallet_address.rb +26 -1
  3. data/lib/coinbase/client/api/smart_contracts_api.rb +332 -0
  4. data/lib/coinbase/client/api/stake_api.rb +0 -8
  5. data/lib/coinbase/client/api/users_api.rb +79 -0
  6. data/lib/coinbase/client/api/validators_api.rb +4 -4
  7. data/lib/coinbase/client/api/wallets_api.rb +4 -4
  8. data/lib/coinbase/client/models/create_smart_contract_request.rb +259 -0
  9. data/lib/coinbase/client/models/create_webhook_request.rb +10 -8
  10. data/lib/coinbase/client/models/deploy_smart_contract_request.rb +222 -0
  11. data/lib/coinbase/client/models/feature.rb +43 -0
  12. data/lib/coinbase/client/models/nft_contract_options.rb +240 -0
  13. data/lib/coinbase/client/models/smart_contract.rb +378 -0
  14. data/lib/coinbase/client/models/smart_contract_list.rb +257 -0
  15. data/lib/coinbase/client/models/smart_contract_options.rb +106 -0
  16. data/lib/coinbase/client/models/smart_contract_type.rb +41 -0
  17. data/lib/coinbase/client/models/staking_balance.rb +2 -2
  18. data/lib/coinbase/client/models/staking_reward.rb +2 -2
  19. data/lib/coinbase/client/models/token_contract_options.rb +257 -0
  20. data/lib/coinbase/client/models/update_webhook_request.rb +10 -8
  21. data/lib/coinbase/client/models/user.rb +231 -0
  22. data/lib/coinbase/client/models/webhook.rb +10 -1
  23. data/lib/coinbase/client/models/webhook_event_type.rb +2 -1
  24. data/lib/coinbase/client/models/webhook_event_type_filter.rb +105 -0
  25. data/lib/coinbase/client/models/webhook_wallet_activity_filter.rb +228 -0
  26. data/lib/coinbase/client.rb +13 -0
  27. data/lib/coinbase/contract_invocation.rb +16 -17
  28. data/lib/coinbase/smart_contract.rb +216 -45
  29. data/lib/coinbase/transaction.rb +3 -0
  30. data/lib/coinbase/transfer.rb +1 -1
  31. data/lib/coinbase/version.rb +1 -1
  32. data/lib/coinbase/wallet.rb +11 -2
  33. metadata +16 -2
@@ -37,12 +37,14 @@ Coinbase::Client.autoload :CreateAddressRequest, 'coinbase/client/models/create_
37
37
  Coinbase::Client.autoload :CreateContractInvocationRequest, 'coinbase/client/models/create_contract_invocation_request'
38
38
  Coinbase::Client.autoload :CreatePayloadSignatureRequest, 'coinbase/client/models/create_payload_signature_request'
39
39
  Coinbase::Client.autoload :CreateServerSignerRequest, 'coinbase/client/models/create_server_signer_request'
40
+ Coinbase::Client.autoload :CreateSmartContractRequest, 'coinbase/client/models/create_smart_contract_request'
40
41
  Coinbase::Client.autoload :CreateStakingOperationRequest, 'coinbase/client/models/create_staking_operation_request'
41
42
  Coinbase::Client.autoload :CreateTradeRequest, 'coinbase/client/models/create_trade_request'
42
43
  Coinbase::Client.autoload :CreateTransferRequest, 'coinbase/client/models/create_transfer_request'
43
44
  Coinbase::Client.autoload :CreateWalletRequest, 'coinbase/client/models/create_wallet_request'
44
45
  Coinbase::Client.autoload :CreateWalletRequestWallet, 'coinbase/client/models/create_wallet_request_wallet'
45
46
  Coinbase::Client.autoload :CreateWebhookRequest, 'coinbase/client/models/create_webhook_request'
47
+ Coinbase::Client.autoload :DeploySmartContractRequest, 'coinbase/client/models/deploy_smart_contract_request'
46
48
  Coinbase::Client.autoload :ERC20TransferEvent, 'coinbase/client/models/erc20_transfer_event'
47
49
  Coinbase::Client.autoload :ERC721TransferEvent, 'coinbase/client/models/erc721_transfer_event'
48
50
  Coinbase::Client.autoload :Error, 'coinbase/client/models/error'
@@ -58,6 +60,7 @@ Coinbase::Client.autoload :FetchStakingRewards200Response, 'coinbase/client/mode
58
60
  Coinbase::Client.autoload :FetchStakingRewardsRequest, 'coinbase/client/models/fetch_staking_rewards_request'
59
61
  Coinbase::Client.autoload :GetStakingContextRequest, 'coinbase/client/models/get_staking_context_request'
60
62
  Coinbase::Client.autoload :HistoricalBalance, 'coinbase/client/models/historical_balance'
63
+ Coinbase::Client.autoload :NFTContractOptions, 'coinbase/client/models/nft_contract_options'
61
64
  Coinbase::Client.autoload :Network, 'coinbase/client/models/network'
62
65
  Coinbase::Client.autoload :NetworkIdentifier, 'coinbase/client/models/network_identifier'
63
66
  Coinbase::Client.autoload :PayloadSignature, 'coinbase/client/models/payload_signature'
@@ -72,6 +75,10 @@ Coinbase::Client.autoload :ServerSignerList, 'coinbase/client/models/server_sign
72
75
  Coinbase::Client.autoload :SignatureCreationEvent, 'coinbase/client/models/signature_creation_event'
73
76
  Coinbase::Client.autoload :SignatureCreationEventResult, 'coinbase/client/models/signature_creation_event_result'
74
77
  Coinbase::Client.autoload :SignedVoluntaryExitMessageMetadata, 'coinbase/client/models/signed_voluntary_exit_message_metadata'
78
+ Coinbase::Client.autoload :SmartContract, 'coinbase/client/models/smart_contract'
79
+ Coinbase::Client.autoload :SmartContractList, 'coinbase/client/models/smart_contract_list'
80
+ Coinbase::Client.autoload :SmartContractOptions, 'coinbase/client/models/smart_contract_options'
81
+ Coinbase::Client.autoload :SmartContractType, 'coinbase/client/models/smart_contract_type'
75
82
  Coinbase::Client.autoload :SponsoredSend, 'coinbase/client/models/sponsored_send'
76
83
  Coinbase::Client.autoload :StakingBalance, 'coinbase/client/models/staking_balance'
77
84
  Coinbase::Client.autoload :StakingContext, 'coinbase/client/models/staking_context'
@@ -81,6 +88,7 @@ Coinbase::Client.autoload :StakingOperationMetadata, 'coinbase/client/models/sta
81
88
  Coinbase::Client.autoload :StakingReward, 'coinbase/client/models/staking_reward'
82
89
  Coinbase::Client.autoload :StakingRewardFormat, 'coinbase/client/models/staking_reward_format'
83
90
  Coinbase::Client.autoload :StakingRewardUSDValue, 'coinbase/client/models/staking_reward_usd_value'
91
+ Coinbase::Client.autoload :TokenContractOptions, 'coinbase/client/models/token_contract_options'
84
92
  Coinbase::Client.autoload :Trade, 'coinbase/client/models/trade'
85
93
  Coinbase::Client.autoload :TradeList, 'coinbase/client/models/trade_list'
86
94
  Coinbase::Client.autoload :Transaction, 'coinbase/client/models/transaction'
@@ -89,6 +97,7 @@ Coinbase::Client.autoload :TransactionType, 'coinbase/client/models/transaction_
89
97
  Coinbase::Client.autoload :Transfer, 'coinbase/client/models/transfer'
90
98
  Coinbase::Client.autoload :TransferList, 'coinbase/client/models/transfer_list'
91
99
  Coinbase::Client.autoload :UpdateWebhookRequest, 'coinbase/client/models/update_webhook_request'
100
+ Coinbase::Client.autoload :User, 'coinbase/client/models/user'
92
101
  Coinbase::Client.autoload :Validator, 'coinbase/client/models/validator'
93
102
  Coinbase::Client.autoload :ValidatorDetails, 'coinbase/client/models/validator_details'
94
103
  Coinbase::Client.autoload :ValidatorList, 'coinbase/client/models/validator_list'
@@ -98,7 +107,9 @@ Coinbase::Client.autoload :WalletList, 'coinbase/client/models/wallet_list'
98
107
  Coinbase::Client.autoload :Webhook, 'coinbase/client/models/webhook'
99
108
  Coinbase::Client.autoload :WebhookEventFilter, 'coinbase/client/models/webhook_event_filter'
100
109
  Coinbase::Client.autoload :WebhookEventType, 'coinbase/client/models/webhook_event_type'
110
+ Coinbase::Client.autoload :WebhookEventTypeFilter, 'coinbase/client/models/webhook_event_type_filter'
101
111
  Coinbase::Client.autoload :WebhookList, 'coinbase/client/models/webhook_list'
112
+ Coinbase::Client.autoload :WebhookWalletActivityFilter, 'coinbase/client/models/webhook_wallet_activity_filter'
102
113
 
103
114
  # APIs
104
115
  Coinbase::Client.autoload :AddressesApi, 'coinbase/client/api/addresses_api'
@@ -109,9 +120,11 @@ Coinbase::Client.autoload :ContractInvocationsApi, 'coinbase/client/api/contract
109
120
  Coinbase::Client.autoload :ExternalAddressesApi, 'coinbase/client/api/external_addresses_api'
110
121
  Coinbase::Client.autoload :NetworksApi, 'coinbase/client/api/networks_api'
111
122
  Coinbase::Client.autoload :ServerSignersApi, 'coinbase/client/api/server_signers_api'
123
+ Coinbase::Client.autoload :SmartContractsApi, 'coinbase/client/api/smart_contracts_api'
112
124
  Coinbase::Client.autoload :StakeApi, 'coinbase/client/api/stake_api'
113
125
  Coinbase::Client.autoload :TradesApi, 'coinbase/client/api/trades_api'
114
126
  Coinbase::Client.autoload :TransfersApi, 'coinbase/client/api/transfers_api'
127
+ Coinbase::Client.autoload :UsersApi, 'coinbase/client/api/users_api'
115
128
  Coinbase::Client.autoload :ValidatorsApi, 'coinbase/client/api/validators_api'
116
129
  Coinbase::Client.autoload :WalletStakeApi, 'coinbase/client/api/wallet_stake_api'
117
130
  Coinbase::Client.autoload :WalletsApi, 'coinbase/client/api/wallets_api'
@@ -25,31 +25,30 @@ module Coinbase
25
25
  address_id:,
26
26
  wallet_id:,
27
27
  contract_address:,
28
- abi:,
29
28
  method:,
30
- amount:,
31
- asset_id:,
32
29
  network:,
33
- args: {}
30
+ args: {},
31
+ amount: nil,
32
+ abi: nil,
33
+ asset_id: nil
34
34
  )
35
- atomic_amount = nil
35
+ req = {
36
+ method: method,
37
+ args: args.to_json,
38
+ contract_address: contract_address
39
+ }
36
40
 
41
+ req[:abi] = abi.to_json unless abi.nil?
42
+
43
+ # For payable contract invocations, convert the amount to atomic units of specified asset.
37
44
  if amount && asset_id && network
38
- network = Coinbase::Network.from_id(network)
39
- asset = network.get_asset(asset_id)
40
- atomic_amount = asset.to_atomic_amount(amount).to_i_to_s
45
+ asset = Coinbase::Asset.fetch(network, asset_id)
46
+
47
+ req[:amount] = asset.to_atomic_amount(amount).to_i.to_s
41
48
  end
42
49
 
43
50
  model = Coinbase.call_api do
44
- contract_invocation_api.create_contract_invocation(
45
- wallet_id,
46
- address_id,
47
- contract_address: contract_address,
48
- abi: abi.to_json,
49
- method: method,
50
- args: args.to_json,
51
- amount: atomic_amount
52
- )
51
+ contract_invocation_api.create_contract_invocation(wallet_id, address_id, **req)
53
52
  end
54
53
 
55
54
  new(model)
@@ -23,63 +23,64 @@ module Coinbase
23
23
  )
24
24
  Coinbase::Pagination.enumerate(
25
25
  lambda { |page|
26
- list_events_page(network_id, protocol_name, contract_address, contract_name, event_name, from_block_height,
27
- to_block_height, page)
26
+ list_events_page(
27
+ network_id,
28
+ protocol_name,
29
+ contract_address,
30
+ contract_name,
31
+ event_name,
32
+ from_block_height,
33
+ to_block_height,
34
+ page
35
+ )
28
36
  }
29
37
  ) do |contract_event|
30
38
  Coinbase::ContractEvent.new(contract_event)
31
39
  end
32
40
  end
33
41
 
34
- # Returns a new SmartContract object.
35
- # @param model [Coinbase::Client::SmartContract] The underlying SmartContract object
36
- def initialize(model)
37
- @model = model
38
- end
39
-
40
- # Returns the network ID of the SmartContract.
41
- # @return [String] The network ID
42
- def network_id
43
- Coinbase.to_sym(@model.network_id)
44
- end
45
-
46
- # Returns the protocol name of the SmartContract.
47
- # @return [String] The protocol name
48
- def protocol_name
49
- @model.protocol_name
50
- end
51
-
52
- # Returns the contract name of the SmartContract.
53
- # @return [String] The contract name
54
- def contract_name
55
- @model.contract_name
56
- end
57
-
58
- # Returns the address of the SmartContract.
59
- # @return [String] The contract address
60
- def address
61
- @model.address
62
- end
63
-
64
- # Returns a string representation of the SmartContract.
65
- # @return [String] a string representation of the SmartContract
66
- def to_s
67
- "Coinbase::SmartContract{
68
- network_id: '#{network_id}',
69
- protocol_name: '#{protocol_name}',
70
- contract_name: '#{contract_name}',
71
- address: '#{address}'}"
72
- end
42
+ # Creates a new ERC20 token contract, that can subsequently be deployed to
43
+ # the blockchain.
44
+ # @param address_id [String] The address ID of deployer
45
+ # @param wallet_id [String] The wallet ID of the deployer
46
+ # @param name [String] The name of the token
47
+ # @param symbol [String] The symbol of the token
48
+ # @param total_supply [String] The total supply of the token, denominate in whole units.
49
+ # @return [SmartContract] The new ERC20 Token SmartContract object
50
+ def self.create_token_contract(
51
+ address_id:,
52
+ wallet_id:,
53
+ name:,
54
+ symbol:,
55
+ total_supply:
56
+ )
57
+ contract = Coinbase.call_api do
58
+ smart_contracts_api.create_smart_contract(
59
+ wallet_id,
60
+ address_id,
61
+ {
62
+ type: Coinbase::Client::SmartContractType::ERC20,
63
+ options: Coinbase::Client::TokenContractOptions.new(
64
+ name: name,
65
+ symbol: symbol,
66
+ total_supply: BigDecimal(total_supply).to_i.to_s
67
+ ).to_body
68
+ }
69
+ )
70
+ end
73
71
 
74
- # Same as to_s.
75
- # @return [String] a string representation of the SmartContract
76
- def inspect
77
- to_s
72
+ new(contract)
78
73
  end
79
74
 
80
75
  def self.contract_events_api
81
76
  Coinbase::Client::ContractEventsApi.new(Coinbase.configuration.api_client)
82
77
  end
78
+ private_class_method :contract_events_api
79
+
80
+ def self.smart_contracts_api
81
+ Coinbase::Client::SmartContractsApi.new(Coinbase.configuration.api_client)
82
+ end
83
+ private_class_method :smart_contracts_api
83
84
 
84
85
  def self.list_events_page(
85
86
  network_id,
@@ -102,5 +103,175 @@ module Coinbase
102
103
  { next_page: page }
103
104
  )
104
105
  end
106
+ private_class_method :list_events_page
107
+
108
+ # Returns a new SmartContract object.
109
+ # @param model [Coinbase::Client::SmartContract] The underlying SmartContract object
110
+ def initialize(model)
111
+ raise unless model.is_a?(Coinbase::Client::SmartContract)
112
+
113
+ @model = model
114
+ end
115
+
116
+ # Returns the SmartContract ID.
117
+ # NOTE: This is not the contract address and is primarily used before
118
+ # the contract is deployed.
119
+ # @return [String] The SmartContract ID
120
+ def id
121
+ @model.smart_contract_id
122
+ end
123
+
124
+ # Returns the Network of the SmartContract.
125
+ # @return [Coinbase::Network] The Network
126
+ def network
127
+ @network ||= Coinbase::Network.from_id(@model.network_id)
128
+ end
129
+
130
+ # Returns the contract address of the SmartContract.
131
+ # @return [String] The contract address
132
+ def contract_address
133
+ @model.contract_address
134
+ end
135
+
136
+ # Returns the address of the deployer of the SmartContract.
137
+ # @return [String] The deployer address
138
+ def deployer_address
139
+ @model.deployer_address
140
+ end
141
+
142
+ # Returns the ABI of the Smart Contract.
143
+ # @return [Array<Hash>] The ABI
144
+ def abi
145
+ JSON.parse(@model.abi)
146
+ end
147
+
148
+ # Returns the ID of the wallet that deployed the SmartContract.
149
+ # @return [String] The wallet ID
150
+ def wallet_id
151
+ @model.wallet_id
152
+ end
153
+
154
+ # Returns the type of the SmartContract.
155
+ # @return [Coinbase::Client::SmartContractType] The SmartContract type
156
+ def type
157
+ @model.type
158
+ end
159
+
160
+ # Returns the options of the SmartContract.
161
+ # @return [Coinbase::Client::SmartContractOptions] The SmartContract options
162
+ def options
163
+ @model.options
164
+ end
165
+
166
+ # Returns the transaction.
167
+ # @return [Coinbase::Transaction] The SmartContracy deployment transaction
168
+ def transaction
169
+ @transaction ||= Coinbase::Transaction.new(@model.transaction)
170
+ end
171
+
172
+ # Returns the status of the SmartContract.
173
+ # @return [String] The status
174
+ def status
175
+ transaction.status
176
+ end
177
+
178
+ # Signs the SmartContract deployment transaction with the given key.
179
+ # This is required before broadcasting the SmartContract.
180
+ # @param key [Eth::Key] The key to sign the SmartContract with
181
+ # @return [SmartContract] The SmartContract object
182
+ # @raise [RuntimeError] If the key is not an Eth::Key
183
+ # @raise [Coinbase::AlreadySignedError] If the SmartContract has already been signed
184
+ def sign(key)
185
+ raise unless key.is_a?(Eth::Key)
186
+
187
+ transaction.sign(key)
188
+ end
189
+
190
+ # Deploys the signed SmartContract to the blockchain.
191
+ # @return [SmartContract] The SmartContract object
192
+ # @raise [Coinbase::TransactionNotSignedError] If the SmartContract has not been signed
193
+ def deploy!
194
+ raise TransactionNotSignedError unless transaction.signed?
195
+
196
+ @model = Coinbase.call_api do
197
+ smart_contracts_api.deploy_smart_contract(
198
+ wallet_id,
199
+ deployer_address,
200
+ id,
201
+ { signed_payload: transaction.signature }
202
+ )
203
+ end
204
+
205
+ @transaction = Coinbase::Transaction.new(@model.transaction)
206
+
207
+ self
208
+ end
209
+
210
+ # Reloads the Smart Contract model with the latest version from the server side.
211
+ # @return [SmartContract] The most recent version of Smart Contract from the server
212
+ def reload
213
+ @model = Coinbase.call_api do
214
+ smart_contracts_api.get_smart_contract(
215
+ wallet_id,
216
+ deployer_address,
217
+ id
218
+ )
219
+ end
220
+
221
+ @transaction = Coinbase::Transaction.new(@model.transaction)
222
+
223
+ self
224
+ end
225
+
226
+ # Waits until the Smart Contract deployment is signed or failed by polling the server at the given interval.
227
+ # @param interval_seconds [Integer] The interval at which to poll the server, in seconds
228
+ # @param timeout_seconds [Integer] The maximum amount of time to wait for the Smart Contract,
229
+ # deployment to land on-chain, in seconds
230
+ # @return [SmartContract] The completed Smart Contract object
231
+ # @raise [Timeout::Error] if the Contract Invocation takes longer than the given timeout
232
+ def wait!(interval_seconds = 0.2, timeout_seconds = 20)
233
+ start_time = Time.now
234
+
235
+ loop do
236
+ reload
237
+
238
+ return self if transaction.terminal_state?
239
+
240
+ if Time.now - start_time > timeout_seconds
241
+ raise Timeout::Error,
242
+ 'SmartContract deployment timed out. Try waiting again.'
243
+ end
244
+
245
+ self.sleep interval_seconds
246
+ end
247
+
248
+ self
249
+ end
250
+
251
+ # Same as to_s.
252
+ # @return [String] a string representation of the SmartContract
253
+ def inspect
254
+ to_s
255
+ end
256
+
257
+ # Returns a string representation of the SmartContract.
258
+ # @return [String] a string representation of the SmartContract
259
+ def to_s
260
+ Coinbase.pretty_print_object(
261
+ self.class,
262
+ network: network.id,
263
+ contract_address: contract_address,
264
+ deployer_address: deployer_address,
265
+ type: type,
266
+ status: status,
267
+ options: Coinbase.pretty_print_object('Options', **options)
268
+ )
269
+ end
270
+
271
+ private
272
+
273
+ def smart_contracts_api
274
+ @smart_contracts_api ||= Coinbase::Client::SmartContractsApi.new(Coinbase.configuration.api_client)
275
+ end
105
276
  end
106
277
  end
@@ -147,6 +147,9 @@ module Coinbase
147
147
  # Signs the Transaction with the provided key and returns the hex signing payload.
148
148
  # @return [String] The hex-encoded signed payload
149
149
  def sign(key)
150
+ raise 'Invalid key type' unless key.is_a?(Eth::Key)
151
+ raise Coinbase::AlreadySignedError if signed?
152
+
150
153
  raw.sign(key)
151
154
 
152
155
  signature
@@ -84,7 +84,7 @@ module Coinbase
84
84
  end
85
85
 
86
86
  # Returns the Network of the Transfer.
87
- # @return [Symbol] The Network
87
+ # @return [Coinbase::Network] The Network
88
88
  def network
89
89
  @network ||= Coinbase::Network.from_id(@model.network_id)
90
90
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Coinbase
4
- VERSION = '0.5.0'
4
+ VERSION = '0.6.0'
5
5
  end
@@ -234,10 +234,19 @@ module Coinbase
234
234
  # @!method invoke_contract
235
235
  # Invokes a contract with the given ABI, method, and arguments.
236
236
  # @param abi [Array<Hash>] The ABI of the contract
237
- #
237
+
238
+ # @!method deploy_token
239
+ # Deploys a new ERC20 token contract with the given name, symbol, and total supply.
240
+ # @param name [String] The name of the token.
241
+ # @param symbol [String] The symbol of the token.
242
+ # @param total_supply [Integer, BigDecimal] The total supply of the token, denominated in
243
+ # whole units.
244
+ # @return [Coinbase::SmartContract] The deployed token contract.
245
+ # @raise [AddressCannotSignError] if the Address does not have a private key backing it.
238
246
 
239
247
  def_delegators :default_address, :transfer, :trade, :faucet, :stake, :unstake, :claim_stake, :staking_balances,
240
- :stakeable_balance, :unstakeable_balance, :claimable_balance, :sign_payload, :invoke_contract
248
+ :stakeable_balance, :unstakeable_balance, :claimable_balance, :sign_payload, :invoke_contract,
249
+ :deploy_token
241
250
 
242
251
  # Returns the addresses belonging to the Wallet.
243
252
  # @return [Array<Coinbase::WalletAddress>] The addresses belonging to the Wallet
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.5.0
4
+ version: 0.6.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-09-12 00:00:00.000000000 Z
11
+ date: 2024-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bigdecimal
@@ -285,9 +285,11 @@ files:
285
285
  - lib/coinbase/client/api/external_addresses_api.rb
286
286
  - lib/coinbase/client/api/networks_api.rb
287
287
  - lib/coinbase/client/api/server_signers_api.rb
288
+ - lib/coinbase/client/api/smart_contracts_api.rb
288
289
  - lib/coinbase/client/api/stake_api.rb
289
290
  - lib/coinbase/client/api/trades_api.rb
290
291
  - lib/coinbase/client/api/transfers_api.rb
292
+ - lib/coinbase/client/api/users_api.rb
291
293
  - lib/coinbase/client/api/validators_api.rb
292
294
  - lib/coinbase/client/api/wallet_stake_api.rb
293
295
  - lib/coinbase/client/api/wallets_api.rb
@@ -315,12 +317,14 @@ files:
315
317
  - lib/coinbase/client/models/create_contract_invocation_request.rb
316
318
  - lib/coinbase/client/models/create_payload_signature_request.rb
317
319
  - lib/coinbase/client/models/create_server_signer_request.rb
320
+ - lib/coinbase/client/models/create_smart_contract_request.rb
318
321
  - lib/coinbase/client/models/create_staking_operation_request.rb
319
322
  - lib/coinbase/client/models/create_trade_request.rb
320
323
  - lib/coinbase/client/models/create_transfer_request.rb
321
324
  - lib/coinbase/client/models/create_wallet_request.rb
322
325
  - lib/coinbase/client/models/create_wallet_request_wallet.rb
323
326
  - lib/coinbase/client/models/create_webhook_request.rb
327
+ - lib/coinbase/client/models/deploy_smart_contract_request.rb
324
328
  - lib/coinbase/client/models/erc20_transfer_event.rb
325
329
  - lib/coinbase/client/models/erc721_transfer_event.rb
326
330
  - lib/coinbase/client/models/error.rb
@@ -330,6 +334,7 @@ files:
330
334
  - lib/coinbase/client/models/ethereum_transaction_flattened_trace.rb
331
335
  - lib/coinbase/client/models/ethereum_validator_metadata.rb
332
336
  - lib/coinbase/client/models/faucet_transaction.rb
337
+ - lib/coinbase/client/models/feature.rb
333
338
  - lib/coinbase/client/models/feature_set.rb
334
339
  - lib/coinbase/client/models/fetch_historical_staking_balances200_response.rb
335
340
  - lib/coinbase/client/models/fetch_staking_rewards200_response.rb
@@ -338,6 +343,7 @@ files:
338
343
  - lib/coinbase/client/models/historical_balance.rb
339
344
  - lib/coinbase/client/models/network.rb
340
345
  - lib/coinbase/client/models/network_identifier.rb
346
+ - lib/coinbase/client/models/nft_contract_options.rb
341
347
  - lib/coinbase/client/models/payload_signature.rb
342
348
  - lib/coinbase/client/models/payload_signature_list.rb
343
349
  - lib/coinbase/client/models/seed_creation_event.rb
@@ -350,6 +356,10 @@ files:
350
356
  - lib/coinbase/client/models/signature_creation_event.rb
351
357
  - lib/coinbase/client/models/signature_creation_event_result.rb
352
358
  - lib/coinbase/client/models/signed_voluntary_exit_message_metadata.rb
359
+ - lib/coinbase/client/models/smart_contract.rb
360
+ - lib/coinbase/client/models/smart_contract_list.rb
361
+ - lib/coinbase/client/models/smart_contract_options.rb
362
+ - lib/coinbase/client/models/smart_contract_type.rb
353
363
  - lib/coinbase/client/models/sponsored_send.rb
354
364
  - lib/coinbase/client/models/staking_balance.rb
355
365
  - lib/coinbase/client/models/staking_context.rb
@@ -359,6 +369,7 @@ files:
359
369
  - lib/coinbase/client/models/staking_reward.rb
360
370
  - lib/coinbase/client/models/staking_reward_format.rb
361
371
  - lib/coinbase/client/models/staking_reward_usd_value.rb
372
+ - lib/coinbase/client/models/token_contract_options.rb
362
373
  - lib/coinbase/client/models/trade.rb
363
374
  - lib/coinbase/client/models/trade_list.rb
364
375
  - lib/coinbase/client/models/transaction.rb
@@ -367,6 +378,7 @@ files:
367
378
  - lib/coinbase/client/models/transfer.rb
368
379
  - lib/coinbase/client/models/transfer_list.rb
369
380
  - lib/coinbase/client/models/update_webhook_request.rb
381
+ - lib/coinbase/client/models/user.rb
370
382
  - lib/coinbase/client/models/validator.rb
371
383
  - lib/coinbase/client/models/validator_details.rb
372
384
  - lib/coinbase/client/models/validator_list.rb
@@ -376,7 +388,9 @@ files:
376
388
  - lib/coinbase/client/models/webhook.rb
377
389
  - lib/coinbase/client/models/webhook_event_filter.rb
378
390
  - lib/coinbase/client/models/webhook_event_type.rb
391
+ - lib/coinbase/client/models/webhook_event_type_filter.rb
379
392
  - lib/coinbase/client/models/webhook_list.rb
393
+ - lib/coinbase/client/models/webhook_wallet_activity_filter.rb
380
394
  - lib/coinbase/client/version.rb
381
395
  - lib/coinbase/constants.rb
382
396
  - lib/coinbase/contract_event.rb