stellar-base 0.19.0 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +9 -6
  3. data/CHANGELOG.md +17 -2
  4. data/examples/allow_trust.rb +51 -0
  5. data/generated/stellar-base-generated.rb +14 -4
  6. data/generated/stellar/allow_trust_op.rb +2 -2
  7. data/generated/stellar/allow_trust_op/asset.rb +4 -4
  8. data/generated/stellar/asset.rb +2 -2
  9. data/generated/stellar/asset/alpha_num12.rb +2 -2
  10. data/generated/stellar/asset/alpha_num4.rb +2 -2
  11. data/generated/stellar/bucket_entry.rb +6 -0
  12. data/generated/stellar/bucket_entry_type.rb +8 -2
  13. data/generated/stellar/bucket_metadata.rb +32 -0
  14. data/generated/stellar/bucket_metadata/ext.rb +24 -0
  15. data/generated/stellar/change_trust_result_code.rb +1 -1
  16. data/generated/stellar/claim_offer_atom.rb +2 -2
  17. data/generated/stellar/{create_passive_offer_op.rb → create_passive_sell_offer_op.rb} +2 -2
  18. data/generated/stellar/envelope_type.rb +6 -4
  19. data/generated/stellar/ledger_close_value_signature.rb +20 -0
  20. data/generated/stellar/ledger_key.rb +1 -1
  21. data/generated/stellar/ledger_key/offer.rb +2 -2
  22. data/generated/stellar/manage_buy_offer_op.rb +29 -0
  23. data/generated/stellar/{manage_offer_result.rb → manage_buy_offer_result.rb} +5 -5
  24. data/generated/stellar/manage_buy_offer_result_code.rb +50 -0
  25. data/generated/stellar/{manage_offer_op.rb → manage_sell_offer_op.rb} +4 -4
  26. data/generated/stellar/manage_sell_offer_result.rb +26 -0
  27. data/generated/stellar/manage_sell_offer_result_code.rb +50 -0
  28. data/generated/stellar/offer_entry.rb +2 -2
  29. data/generated/stellar/operation.rb +6 -4
  30. data/generated/stellar/operation/body.rb +30 -26
  31. data/generated/stellar/operation_result.rb +6 -4
  32. data/generated/stellar/operation_result/tr.rb +32 -28
  33. data/generated/stellar/operation_result_code.rb +9 -5
  34. data/generated/stellar/operation_type.rb +17 -15
  35. data/generated/stellar/signer.rb +1 -1
  36. data/generated/stellar/stellar_value.rb +7 -5
  37. data/generated/stellar/stellar_value/ext.rb +8 -4
  38. data/generated/stellar/stellar_value_type.rb +22 -0
  39. data/generated/stellar/time_bounds.rb +4 -4
  40. data/generated/stellar/transaction.rb +2 -2
  41. data/generated/stellar/transaction_meta_v1.rb +1 -1
  42. data/lib/stellar-base.rb +2 -0
  43. data/lib/stellar/base/compat.rb +22 -0
  44. data/lib/stellar/base/version.rb +1 -1
  45. data/lib/stellar/operation.rb +27 -7
  46. data/lib/stellar/transaction.rb +12 -6
  47. data/spec/lib/stellar/price_spec.rb +3 -3
  48. data/tasks/xdr.rake +34 -39
  49. data/xdr/Stellar-ledger-entries.x +13 -6
  50. data/xdr/Stellar-ledger.x +45 -10
  51. data/xdr/Stellar-transaction.x +103 -46
  52. metadata +16 -7
  53. data/generated/stellar/manage_offer_result_code.rb +0 -50
@@ -12,8 +12,15 @@ typedef opaque Thresholds[4];
12
12
  typedef string string32<32>;
13
13
  typedef string string64<64>;
14
14
  typedef int64 SequenceNumber;
15
+ typedef uint64 TimePoint;
15
16
  typedef opaque DataValue<64>;
16
17
 
18
+ // 1-4 alphanumeric characters right-padded with 0 bytes
19
+ typedef opaque AssetCode4[4];
20
+
21
+ // 5-12 alphanumeric characters right-padded with 0 bytes
22
+ typedef opaque AssetCode12[12];
23
+
17
24
  enum AssetType
18
25
  {
19
26
  ASSET_TYPE_NATIVE = 0,
@@ -29,14 +36,14 @@ case ASSET_TYPE_NATIVE: // Not credit
29
36
  case ASSET_TYPE_CREDIT_ALPHANUM4:
30
37
  struct
31
38
  {
32
- opaque assetCode[4]; // 1 to 4 characters
39
+ AssetCode4 assetCode;
33
40
  AccountID issuer;
34
41
  } alphaNum4;
35
42
 
36
43
  case ASSET_TYPE_CREDIT_ALPHANUM12:
37
44
  struct
38
45
  {
39
- opaque assetCode[12]; // 5 to 12 characters
46
+ AssetCode12 assetCode;
40
47
  AccountID issuer;
41
48
  } alphaNum12;
42
49
 
@@ -77,7 +84,7 @@ enum LedgerEntryType
77
84
  struct Signer
78
85
  {
79
86
  SignerKey key;
80
- uint32 weight; // really only need 1byte
87
+ uint32 weight; // really only need 1 byte
81
88
  };
82
89
 
83
90
  enum AccountFlags
@@ -105,7 +112,6 @@ const MASK_ACCOUNT_FLAGS = 0x7;
105
112
  Other ledger entries created require an account.
106
113
 
107
114
  */
108
-
109
115
  struct AccountEntry
110
116
  {
111
117
  AccountID accountID; // master public key for this account
@@ -210,7 +216,7 @@ const MASK_OFFERENTRY_FLAGS = 1;
210
216
  struct OfferEntry
211
217
  {
212
218
  AccountID sellerID;
213
- uint64 offerID;
219
+ int64 offerID;
214
220
  Asset selling; // A
215
221
  Asset buying; // B
216
222
  int64 amount; // amount of A
@@ -283,6 +289,7 @@ enum EnvelopeType
283
289
  {
284
290
  ENVELOPE_TYPE_SCP = 1,
285
291
  ENVELOPE_TYPE_TX = 2,
286
- ENVELOPE_TYPE_AUTH = 3
292
+ ENVELOPE_TYPE_AUTH = 3,
293
+ ENVELOPE_TYPE_SCPVALUE = 4
287
294
  };
288
295
  }
@@ -10,12 +10,24 @@ namespace stellar
10
10
 
11
11
  typedef opaque UpgradeType<128>;
12
12
 
13
+ enum StellarValueType
14
+ {
15
+ STELLAR_VALUE_BASIC = 0,
16
+ STELLAR_VALUE_SIGNED = 1
17
+ };
18
+
19
+ struct LedgerCloseValueSignature
20
+ {
21
+ NodeID nodeID; // which node introduced the value
22
+ Signature signature; // nodeID's signature
23
+ };
24
+
13
25
  /* StellarValue is the value used by SCP to reach consensus on a given ledger
14
- */
26
+ */
15
27
  struct StellarValue
16
28
  {
17
- Hash txSetHash; // transaction set to apply to previous ledger
18
- uint64 closeTime; // network close time
29
+ Hash txSetHash; // transaction set to apply to previous ledger
30
+ TimePoint closeTime; // network close time
19
31
 
20
32
  // upgrades to apply to the previous ledger (usually empty)
21
33
  // this is a vector of encoded 'LedgerUpgrade' so that nodes can drop
@@ -25,17 +37,19 @@ struct StellarValue
25
37
  UpgradeType upgrades<6>;
26
38
 
27
39
  // reserved for future use
28
- union switch (int v)
40
+ union switch (StellarValueType v)
29
41
  {
30
- case 0:
42
+ case STELLAR_VALUE_BASIC:
31
43
  void;
44
+ case STELLAR_VALUE_SIGNED:
45
+ LedgerCloseValueSignature lcValueSignature;
32
46
  }
33
47
  ext;
34
48
  };
35
49
 
36
50
  /* The LedgerHeader is the highest level structure representing the
37
51
  * state of a ledger, cryptographically linked to previous ledgers.
38
- */
52
+ */
39
53
  struct LedgerHeader
40
54
  {
41
55
  uint32 ledgerVersion; // the protocol version of the ledger
@@ -120,7 +134,7 @@ case OFFER:
120
134
  struct
121
135
  {
122
136
  AccountID sellerID;
123
- uint64 offerID;
137
+ int64 offerID;
124
138
  } offer;
125
139
 
126
140
  case DATA:
@@ -133,17 +147,38 @@ case DATA:
133
147
 
134
148
  enum BucketEntryType
135
149
  {
136
- LIVEENTRY = 0,
137
- DEADENTRY = 1
150
+ METAENTRY =
151
+ -1, // At-and-after protocol 11: bucket metadata, should come first.
152
+ LIVEENTRY = 0, // Before protocol 11: created-or-updated;
153
+ // At-and-after protocol 11: only updated.
154
+ DEADENTRY = 1,
155
+ INITENTRY = 2 // At-and-after protocol 11: only created.
156
+ };
157
+
158
+ struct BucketMetadata
159
+ {
160
+ // Indicates the protocol version used to create / merge this bucket.
161
+ uint32 ledgerVersion;
162
+
163
+ // reserved for future use
164
+ union switch (int v)
165
+ {
166
+ case 0:
167
+ void;
168
+ }
169
+ ext;
138
170
  };
139
171
 
140
172
  union BucketEntry switch (BucketEntryType type)
141
173
  {
142
174
  case LIVEENTRY:
175
+ case INITENTRY:
143
176
  LedgerEntry liveEntry;
144
177
 
145
178
  case DEADENTRY:
146
179
  LedgerKey deadEntry;
180
+ case METAENTRY:
181
+ BucketMetadata metaEntry;
147
182
  };
148
183
 
149
184
  // Transaction sets are the unit used by SCP to decide on transitions
@@ -268,7 +303,7 @@ struct OperationMeta
268
303
  struct TransactionMetaV1
269
304
  {
270
305
  LedgerEntryChanges txChanges; // tx level changes if any
271
- OperationMeta operations<>; // meta for each operation
306
+ OperationMeta operations<>; // meta for each operation
272
307
  };
273
308
 
274
309
  // this is the meta produced when applying transactions
@@ -18,15 +18,16 @@ enum OperationType
18
18
  CREATE_ACCOUNT = 0,
19
19
  PAYMENT = 1,
20
20
  PATH_PAYMENT = 2,
21
- MANAGE_OFFER = 3,
22
- CREATE_PASSIVE_OFFER = 4,
21
+ MANAGE_SELL_OFFER = 3,
22
+ CREATE_PASSIVE_SELL_OFFER = 4,
23
23
  SET_OPTIONS = 5,
24
24
  CHANGE_TRUST = 6,
25
25
  ALLOW_TRUST = 7,
26
26
  ACCOUNT_MERGE = 8,
27
27
  INFLATION = 9,
28
28
  MANAGE_DATA = 10,
29
- BUMP_SEQUENCE = 11
29
+ BUMP_SEQUENCE = 11,
30
+ MANAGE_BUY_OFFER = 12
30
31
  };
31
32
 
32
33
  /* CreateAccount
@@ -37,7 +38,6 @@ Threshold: med
37
38
  Result: CreateAccountResult
38
39
 
39
40
  */
40
-
41
41
  struct CreateAccountOp
42
42
  {
43
43
  AccountID destination; // account to create
@@ -88,10 +88,10 @@ struct PathPaymentOp
88
88
 
89
89
  Threshold: med
90
90
 
91
- Result: ManageOfferResult
91
+ Result: ManageSellOfferResult
92
92
 
93
93
  */
94
- struct ManageOfferOp
94
+ struct ManageSellOfferOp
95
95
  {
96
96
  Asset selling;
97
97
  Asset buying;
@@ -99,17 +99,36 @@ struct ManageOfferOp
99
99
  Price price; // price of thing being sold in terms of what you are buying
100
100
 
101
101
  // 0=create a new offer, otherwise edit an existing offer
102
- uint64 offerID;
102
+ int64 offerID;
103
+ };
104
+
105
+ /* Creates, updates or deletes an offer with amount in terms of buying asset
106
+
107
+ Threshold: med
108
+
109
+ Result: ManageBuyOfferResult
110
+
111
+ */
112
+ struct ManageBuyOfferOp
113
+ {
114
+ Asset selling;
115
+ Asset buying;
116
+ int64 buyAmount; // amount being bought. if set to 0, delete the offer
117
+ Price price; // price of thing being bought in terms of what you are
118
+ // selling
119
+
120
+ // 0=create a new offer, otherwise edit an existing offer
121
+ int64 offerID;
103
122
  };
104
123
 
105
124
  /* Creates an offer that doesn't take offers of the same price
106
125
 
107
126
  Threshold: med
108
127
 
109
- Result: CreatePassiveOfferResult
128
+ Result: CreatePassiveSellOfferResult
110
129
 
111
130
  */
112
- struct CreatePassiveOfferOp
131
+ struct CreatePassiveSellOfferOp
113
132
  {
114
133
  Asset selling; // A
115
134
  Asset buying; // B
@@ -126,7 +145,6 @@ struct CreatePassiveOfferOp
126
145
 
127
146
  Result: SetOptionsResult
128
147
  */
129
-
130
148
  struct SetOptionsOp
131
149
  {
132
150
  AccountID* inflationDest; // sets the inflation destination
@@ -178,10 +196,10 @@ struct AllowTrustOp
178
196
  {
179
197
  // ASSET_TYPE_NATIVE is not allowed
180
198
  case ASSET_TYPE_CREDIT_ALPHANUM4:
181
- opaque assetCode4[4];
199
+ AssetCode4 assetCode4;
182
200
 
183
201
  case ASSET_TYPE_CREDIT_ALPHANUM12:
184
- opaque assetCode12[12];
202
+ AssetCode12 assetCode12;
185
203
 
186
204
  // add other asset types here in the future
187
205
  }
@@ -215,7 +233,6 @@ Result: InflationResult
215
233
 
216
234
  Result: ManageDataResult
217
235
  */
218
-
219
236
  struct ManageDataOp
220
237
  {
221
238
  string64 dataName;
@@ -230,7 +247,6 @@ struct ManageDataOp
230
247
 
231
248
  Result: BumpSequenceResult
232
249
  */
233
-
234
250
  struct BumpSequenceOp
235
251
  {
236
252
  SequenceNumber bumpTo;
@@ -252,10 +268,10 @@ struct Operation
252
268
  PaymentOp paymentOp;
253
269
  case PATH_PAYMENT:
254
270
  PathPaymentOp pathPaymentOp;
255
- case MANAGE_OFFER:
256
- ManageOfferOp manageOfferOp;
257
- case CREATE_PASSIVE_OFFER:
258
- CreatePassiveOfferOp createPassiveOfferOp;
271
+ case MANAGE_SELL_OFFER:
272
+ ManageSellOfferOp manageSellOfferOp;
273
+ case CREATE_PASSIVE_SELL_OFFER:
274
+ CreatePassiveSellOfferOp createPassiveSellOfferOp;
259
275
  case SET_OPTIONS:
260
276
  SetOptionsOp setOptionsOp;
261
277
  case CHANGE_TRUST:
@@ -270,6 +286,8 @@ struct Operation
270
286
  ManageDataOp manageDataOp;
271
287
  case BUMP_SEQUENCE:
272
288
  BumpSequenceOp bumpSequenceOp;
289
+ case MANAGE_BUY_OFFER:
290
+ ManageBuyOfferOp manageBuyOfferOp;
273
291
  }
274
292
  body;
275
293
  };
@@ -299,10 +317,13 @@ case MEMO_RETURN:
299
317
 
300
318
  struct TimeBounds
301
319
  {
302
- uint64 minTime;
303
- uint64 maxTime; // 0 here means no maxTime
320
+ TimePoint minTime;
321
+ TimePoint maxTime; // 0 here means no maxTime
304
322
  };
305
323
 
324
+ // maximum number of operations per transaction
325
+ const MAX_OPS_PER_TX = 100;
326
+
306
327
  /* a transaction is a container for a set of operations
307
328
  - is executed by an account
308
329
  - fees are collected from the account
@@ -310,7 +331,6 @@ struct TimeBounds
310
331
  either all operations are applied or none are
311
332
  if any returns a failing code
312
333
  */
313
-
314
334
  struct Transaction
315
335
  {
316
336
  // account used to run the transaction
@@ -327,7 +347,7 @@ struct Transaction
327
347
 
328
348
  Memo memo;
329
349
 
330
- Operation operations<100>;
350
+ Operation operations<MAX_OPS_PER_TX>;
331
351
 
332
352
  // reserved for future use
333
353
  union switch (int v)
@@ -366,7 +386,7 @@ struct ClaimOfferAtom
366
386
  {
367
387
  // emitted to identify the offer
368
388
  AccountID sellerID; // Account that owns the offer
369
- uint64 offerID;
389
+ int64 offerID;
370
390
 
371
391
  // amount and asset taken from the owner
372
392
  Asset assetSold;
@@ -470,29 +490,29 @@ default:
470
490
  void;
471
491
  };
472
492
 
473
- /******* ManageOffer Result ********/
493
+ /******* ManageSellOffer Result ********/
474
494
 
475
- enum ManageOfferResultCode
495
+ enum ManageSellOfferResultCode
476
496
  {
477
497
  // codes considered as "success" for the operation
478
- MANAGE_OFFER_SUCCESS = 0,
498
+ MANAGE_SELL_OFFER_SUCCESS = 0,
479
499
 
480
500
  // codes considered as "failure" for the operation
481
- MANAGE_OFFER_MALFORMED = -1, // generated offer would be invalid
482
- MANAGE_OFFER_SELL_NO_TRUST = -2, // no trust line for what we're selling
483
- MANAGE_OFFER_BUY_NO_TRUST = -3, // no trust line for what we're buying
484
- MANAGE_OFFER_SELL_NOT_AUTHORIZED = -4, // not authorized to sell
485
- MANAGE_OFFER_BUY_NOT_AUTHORIZED = -5, // not authorized to buy
486
- MANAGE_OFFER_LINE_FULL = -6, // can't receive more of what it's buying
487
- MANAGE_OFFER_UNDERFUNDED = -7, // doesn't hold what it's trying to sell
488
- MANAGE_OFFER_CROSS_SELF = -8, // would cross an offer from the same user
489
- MANAGE_OFFER_SELL_NO_ISSUER = -9, // no issuer for what we're selling
490
- MANAGE_OFFER_BUY_NO_ISSUER = -10, // no issuer for what we're buying
501
+ MANAGE_SELL_OFFER_MALFORMED = -1, // generated offer would be invalid
502
+ MANAGE_SELL_OFFER_SELL_NO_TRUST = -2, // no trust line for what we're selling
503
+ MANAGE_SELL_OFFER_BUY_NO_TRUST = -3, // no trust line for what we're buying
504
+ MANAGE_SELL_OFFER_SELL_NOT_AUTHORIZED = -4, // not authorized to sell
505
+ MANAGE_SELL_OFFER_BUY_NOT_AUTHORIZED = -5, // not authorized to buy
506
+ MANAGE_SELL_OFFER_LINE_FULL = -6, // can't receive more of what it's buying
507
+ MANAGE_SELL_OFFER_UNDERFUNDED = -7, // doesn't hold what it's trying to sell
508
+ MANAGE_SELL_OFFER_CROSS_SELF = -8, // would cross an offer from the same user
509
+ MANAGE_SELL_OFFER_SELL_NO_ISSUER = -9, // no issuer for what we're selling
510
+ MANAGE_SELL_OFFER_BUY_NO_ISSUER = -10, // no issuer for what we're buying
491
511
 
492
512
  // update errors
493
- MANAGE_OFFER_NOT_FOUND = -11, // offerID does not match an existing offer
513
+ MANAGE_SELL_OFFER_NOT_FOUND = -11, // offerID does not match an existing offer
494
514
 
495
- MANAGE_OFFER_LOW_RESERVE = -12 // not enough funds to create a new Offer
515
+ MANAGE_SELL_OFFER_LOW_RESERVE = -12 // not enough funds to create a new Offer
496
516
  };
497
517
 
498
518
  enum ManageOfferEffect
@@ -518,9 +538,42 @@ struct ManageOfferSuccessResult
518
538
  offer;
519
539
  };
520
540
 
521
- union ManageOfferResult switch (ManageOfferResultCode code)
541
+ union ManageSellOfferResult switch (ManageSellOfferResultCode code)
542
+ {
543
+ case MANAGE_SELL_OFFER_SUCCESS:
544
+ ManageOfferSuccessResult success;
545
+ default:
546
+ void;
547
+ };
548
+
549
+ /******* ManageBuyOffer Result ********/
550
+
551
+ enum ManageBuyOfferResultCode
552
+ {
553
+ // codes considered as "success" for the operation
554
+ MANAGE_BUY_OFFER_SUCCESS = 0,
555
+
556
+ // codes considered as "failure" for the operation
557
+ MANAGE_BUY_OFFER_MALFORMED = -1, // generated offer would be invalid
558
+ MANAGE_BUY_OFFER_SELL_NO_TRUST = -2, // no trust line for what we're selling
559
+ MANAGE_BUY_OFFER_BUY_NO_TRUST = -3, // no trust line for what we're buying
560
+ MANAGE_BUY_OFFER_SELL_NOT_AUTHORIZED = -4, // not authorized to sell
561
+ MANAGE_BUY_OFFER_BUY_NOT_AUTHORIZED = -5, // not authorized to buy
562
+ MANAGE_BUY_OFFER_LINE_FULL = -6, // can't receive more of what it's buying
563
+ MANAGE_BUY_OFFER_UNDERFUNDED = -7, // doesn't hold what it's trying to sell
564
+ MANAGE_BUY_OFFER_CROSS_SELF = -8, // would cross an offer from the same user
565
+ MANAGE_BUY_OFFER_SELL_NO_ISSUER = -9, // no issuer for what we're selling
566
+ MANAGE_BUY_OFFER_BUY_NO_ISSUER = -10, // no issuer for what we're buying
567
+
568
+ // update errors
569
+ MANAGE_BUY_OFFER_NOT_FOUND = -11, // offerID does not match an existing offer
570
+
571
+ MANAGE_BUY_OFFER_LOW_RESERVE = -12 // not enough funds to create a new Offer
572
+ };
573
+
574
+ union ManageBuyOfferResult switch (ManageBuyOfferResultCode code)
522
575
  {
523
- case MANAGE_OFFER_SUCCESS:
576
+ case MANAGE_BUY_OFFER_SUCCESS:
524
577
  ManageOfferSuccessResult success;
525
578
  default:
526
579
  void;
@@ -565,7 +618,7 @@ enum ChangeTrustResultCode
565
618
  // cannot create with a limit of 0
566
619
  CHANGE_TRUST_LOW_RESERVE =
567
620
  -4, // not enough funds to create a new trust line,
568
- CHANGE_TRUST_SELF_NOT_ALLOWED = -5 // trusting self is not allowed
621
+ CHANGE_TRUST_SELF_NOT_ALLOWED = -5 // trusting self is not allowed
569
622
  };
570
623
 
571
624
  union ChangeTrustResult switch (ChangeTrustResultCode code)
@@ -695,7 +748,9 @@ enum OperationResultCode
695
748
 
696
749
  opBAD_AUTH = -1, // too few valid signatures / wrong network
697
750
  opNO_ACCOUNT = -2, // source account was not found
698
- opNOT_SUPPORTED = -3 // operation not supported at this time
751
+ opNOT_SUPPORTED = -3, // operation not supported at this time
752
+ opTOO_MANY_SUBENTRIES = -4, // max number of subentries already reached
753
+ opEXCEEDED_WORK_LIMIT = -5 // operation did too much work
699
754
  };
700
755
 
701
756
  union OperationResult switch (OperationResultCode code)
@@ -709,10 +764,10 @@ case opINNER:
709
764
  PaymentResult paymentResult;
710
765
  case PATH_PAYMENT:
711
766
  PathPaymentResult pathPaymentResult;
712
- case MANAGE_OFFER:
713
- ManageOfferResult manageOfferResult;
714
- case CREATE_PASSIVE_OFFER:
715
- ManageOfferResult createPassiveOfferResult;
767
+ case MANAGE_SELL_OFFER:
768
+ ManageSellOfferResult manageSellOfferResult;
769
+ case CREATE_PASSIVE_SELL_OFFER:
770
+ ManageSellOfferResult createPassiveSellOfferResult;
716
771
  case SET_OPTIONS:
717
772
  SetOptionsResult setOptionsResult;
718
773
  case CHANGE_TRUST:
@@ -727,6 +782,8 @@ case opINNER:
727
782
  ManageDataResult manageDataResult;
728
783
  case BUMP_SEQUENCE:
729
784
  BumpSequenceResult bumpSeqResult;
785
+ case MANAGE_BUY_OFFER:
786
+ ManageBuyOfferResult manageBuyOfferResult;
730
787
  }
731
788
  tr;
732
789
  default: