@drift-labs/sdk 2.53.0-beta.8 → 2.53.0-beta.9

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.
@@ -6073,41 +6073,40 @@ describe('DLOB Spot Tests', () => {
6073
6073
  });
6074
6074
 
6075
6075
  describe('Uncross L2', () => {
6076
-
6077
6076
  it('Bid crosses ask above oracle (no premium)', () => {
6078
6077
  const bids = [
6079
6078
  {
6080
6079
  price: new BN(104).mul(QUOTE_PRECISION),
6081
6080
  size: new BN(1).mul(BASE_PRECISION),
6082
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6081
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6083
6082
  },
6084
6083
  {
6085
6084
  price: new BN(103).mul(QUOTE_PRECISION),
6086
6085
  size: new BN(1).mul(BASE_PRECISION),
6087
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6086
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6088
6087
  },
6089
6088
  {
6090
6089
  price: new BN(102).mul(QUOTE_PRECISION),
6091
6090
  size: new BN(1).mul(BASE_PRECISION),
6092
- sources: {"dlob": new BN(1).mul(BASE_PRECISION)}
6091
+ sources: { dlob: new BN(1).mul(BASE_PRECISION) },
6093
6092
  },
6094
6093
  {
6095
6094
  price: new BN(100).mul(QUOTE_PRECISION),
6096
6095
  size: new BN(1).mul(BASE_PRECISION),
6097
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6098
- }
6096
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6097
+ },
6099
6098
  ];
6100
6099
 
6101
6100
  const asks = [
6102
6101
  {
6103
6102
  price: new BN(101).mul(QUOTE_PRECISION),
6104
6103
  size: new BN(1).mul(BASE_PRECISION),
6105
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)},
6104
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6106
6105
  },
6107
6106
  {
6108
6107
  price: new BN(102).mul(QUOTE_PRECISION),
6109
6108
  size: new BN(1).mul(BASE_PRECISION),
6110
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)},
6109
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6111
6110
  },
6112
6111
  ];
6113
6112
 
@@ -6117,24 +6116,59 @@ describe('Uncross L2', () => {
6117
6116
 
6118
6117
  const groupingSize = QUOTE_PRECISION.divn(10);
6119
6118
 
6120
- const { bids: newBids, asks: newAsks } = uncrossL2(bids, asks, oraclePrice, oraclePrice5Min, markPrice5Min, groupingSize, new Set<string>(), new Set<string>());
6119
+ const { bids: newBids, asks: newAsks } = uncrossL2(
6120
+ bids,
6121
+ asks,
6122
+ oraclePrice,
6123
+ oraclePrice5Min,
6124
+ markPrice5Min,
6125
+ groupingSize,
6126
+ new Set<string>(),
6127
+ new Set<string>()
6128
+ );
6121
6129
 
6122
- expect(newBids[0].price.toString()).to.equal(new BN(101).mul(QUOTE_PRECISION).sub(groupingSize).toString());
6123
- expect(newBids[0].size.toString()).to.equal(new BN(3).mul(BASE_PRECISION).toString());
6124
- expect(newBids[0].sources["vamm"].toString()).to.equal(new BN(2).mul(BASE_PRECISION).toString());
6125
- expect(newBids[0].sources["dlob"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6130
+ expect(newBids[0].price.toString()).to.equal(
6131
+ new BN(101).mul(QUOTE_PRECISION).sub(groupingSize).toString()
6132
+ );
6133
+ expect(newBids[0].size.toString()).to.equal(
6134
+ new BN(3).mul(BASE_PRECISION).toString()
6135
+ );
6136
+ expect(newBids[0].sources['vamm'].toString()).to.equal(
6137
+ new BN(2).mul(BASE_PRECISION).toString()
6138
+ );
6139
+ expect(newBids[0].sources['dlob'].toString()).to.equal(
6140
+ new BN(1).mul(BASE_PRECISION).toString()
6141
+ );
6126
6142
 
6127
- expect(newBids[1].price.toString()).to.equal(new BN(100).mul(QUOTE_PRECISION).toString());
6128
- expect(newBids[1].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6129
- expect(newBids[1].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6143
+ expect(newBids[1].price.toString()).to.equal(
6144
+ new BN(100).mul(QUOTE_PRECISION).toString()
6145
+ );
6146
+ expect(newBids[1].size.toString()).to.equal(
6147
+ new BN(1).mul(BASE_PRECISION).toString()
6148
+ );
6149
+ expect(newBids[1].sources['vamm'].toString()).to.equal(
6150
+ new BN(1).mul(BASE_PRECISION).toString()
6151
+ );
6130
6152
 
6131
- expect(newAsks[0].price.toString()).to.equal(new BN(101).mul(QUOTE_PRECISION).toString());
6132
- expect(newAsks[0].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6133
- expect(newAsks[0].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6153
+ expect(newAsks[0].price.toString()).to.equal(
6154
+ new BN(101).mul(QUOTE_PRECISION).toString()
6155
+ );
6156
+ expect(newAsks[0].size.toString()).to.equal(
6157
+ new BN(1).mul(BASE_PRECISION).toString()
6158
+ );
6159
+ expect(newAsks[0].sources['vamm'].toString()).to.equal(
6160
+ new BN(1).mul(BASE_PRECISION).toString()
6161
+ );
6134
6162
 
6135
- expect(newAsks[1].price.toString()).to.equal(new BN(102).mul(QUOTE_PRECISION).toString());
6136
- expect(newAsks[1].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6137
- expect(newAsks[1].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6163
+ expect(newAsks[1].price.toString()).to.equal(
6164
+ new BN(102).mul(QUOTE_PRECISION).toString()
6165
+ );
6166
+ expect(newAsks[1].size.toString()).to.equal(
6167
+ new BN(1).mul(BASE_PRECISION).toString()
6168
+ );
6169
+ expect(newAsks[1].sources['vamm'].toString()).to.equal(
6170
+ new BN(1).mul(BASE_PRECISION).toString()
6171
+ );
6138
6172
  });
6139
6173
 
6140
6174
  it('Ask crosses ask below oracle, (new premium)', () => {
@@ -6142,12 +6176,12 @@ describe('Uncross L2', () => {
6142
6176
  {
6143
6177
  price: new BN(99).mul(QUOTE_PRECISION),
6144
6178
  size: new BN(1).mul(BASE_PRECISION),
6145
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6179
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6146
6180
  },
6147
6181
  {
6148
6182
  price: new BN(98).mul(QUOTE_PRECISION),
6149
6183
  size: new BN(1).mul(BASE_PRECISION),
6150
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6184
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6151
6185
  },
6152
6186
  ];
6153
6187
 
@@ -6155,23 +6189,23 @@ describe('Uncross L2', () => {
6155
6189
  {
6156
6190
  price: new BN(96).mul(QUOTE_PRECISION),
6157
6191
  size: new BN(1).mul(BASE_PRECISION),
6158
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6192
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6159
6193
  },
6160
6194
  {
6161
6195
  price: new BN(97).mul(QUOTE_PRECISION),
6162
6196
  size: new BN(1).mul(BASE_PRECISION),
6163
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6197
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6164
6198
  },
6165
6199
  {
6166
6200
  price: new BN(98).mul(QUOTE_PRECISION),
6167
6201
  size: new BN(1).mul(BASE_PRECISION),
6168
- sources: {"dlob": new BN(1).mul(BASE_PRECISION)}
6202
+ sources: { dlob: new BN(1).mul(BASE_PRECISION) },
6169
6203
  },
6170
6204
  {
6171
6205
  price: new BN(100).mul(QUOTE_PRECISION),
6172
6206
  size: new BN(1).mul(BASE_PRECISION),
6173
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6174
- }
6207
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6208
+ },
6175
6209
  ];
6176
6210
 
6177
6211
  const oraclePrice = new BN(100).mul(QUOTE_PRECISION);
@@ -6180,24 +6214,59 @@ describe('Uncross L2', () => {
6180
6214
 
6181
6215
  const groupingSize = QUOTE_PRECISION.divn(10);
6182
6216
 
6183
- const { bids: newBids, asks: newAsks } = uncrossL2(bids, asks, oraclePrice, oraclePrice5Min, markPrice5Min, groupingSize, new Set<string>(), new Set<string>());
6217
+ const { bids: newBids, asks: newAsks } = uncrossL2(
6218
+ bids,
6219
+ asks,
6220
+ oraclePrice,
6221
+ oraclePrice5Min,
6222
+ markPrice5Min,
6223
+ groupingSize,
6224
+ new Set<string>(),
6225
+ new Set<string>()
6226
+ );
6184
6227
 
6185
- expect(newBids[0].price.toString()).to.equal(new BN(99).mul(QUOTE_PRECISION).toString());
6186
- expect(newBids[0].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6187
- expect(newBids[0].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6228
+ expect(newBids[0].price.toString()).to.equal(
6229
+ new BN(99).mul(QUOTE_PRECISION).toString()
6230
+ );
6231
+ expect(newBids[0].size.toString()).to.equal(
6232
+ new BN(1).mul(BASE_PRECISION).toString()
6233
+ );
6234
+ expect(newBids[0].sources['vamm'].toString()).to.equal(
6235
+ new BN(1).mul(BASE_PRECISION).toString()
6236
+ );
6188
6237
 
6189
- expect(newBids[1].price.toString()).to.equal(new BN(98).mul(QUOTE_PRECISION).toString());
6190
- expect(newBids[1].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6191
- expect(newBids[1].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6238
+ expect(newBids[1].price.toString()).to.equal(
6239
+ new BN(98).mul(QUOTE_PRECISION).toString()
6240
+ );
6241
+ expect(newBids[1].size.toString()).to.equal(
6242
+ new BN(1).mul(BASE_PRECISION).toString()
6243
+ );
6244
+ expect(newBids[1].sources['vamm'].toString()).to.equal(
6245
+ new BN(1).mul(BASE_PRECISION).toString()
6246
+ );
6192
6247
 
6193
- expect(newAsks[0].price.toString()).to.equal(new BN(99).mul(QUOTE_PRECISION).add(groupingSize).toString());
6194
- expect(newAsks[0].size.toString()).to.equal(new BN(3).mul(BASE_PRECISION).toString());
6195
- expect(newAsks[0].sources["vamm"].toString()).to.equal(new BN(2).mul(BASE_PRECISION).toString());
6196
- expect(newAsks[0].sources["dlob"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6248
+ expect(newAsks[0].price.toString()).to.equal(
6249
+ new BN(99).mul(QUOTE_PRECISION).add(groupingSize).toString()
6250
+ );
6251
+ expect(newAsks[0].size.toString()).to.equal(
6252
+ new BN(3).mul(BASE_PRECISION).toString()
6253
+ );
6254
+ expect(newAsks[0].sources['vamm'].toString()).to.equal(
6255
+ new BN(2).mul(BASE_PRECISION).toString()
6256
+ );
6257
+ expect(newAsks[0].sources['dlob'].toString()).to.equal(
6258
+ new BN(1).mul(BASE_PRECISION).toString()
6259
+ );
6197
6260
 
6198
- expect(newAsks[1].price.toString()).to.equal(new BN(100).mul(QUOTE_PRECISION).toString());
6199
- expect(newAsks[1].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6200
- expect(newAsks[1].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6261
+ expect(newAsks[1].price.toString()).to.equal(
6262
+ new BN(100).mul(QUOTE_PRECISION).toString()
6263
+ );
6264
+ expect(newAsks[1].size.toString()).to.equal(
6265
+ new BN(1).mul(BASE_PRECISION).toString()
6266
+ );
6267
+ expect(newAsks[1].sources['vamm'].toString()).to.equal(
6268
+ new BN(1).mul(BASE_PRECISION).toString()
6269
+ );
6201
6270
  });
6202
6271
 
6203
6272
  it('No cross (no premium)', () => {
@@ -6205,17 +6274,17 @@ describe('Uncross L2', () => {
6205
6274
  {
6206
6275
  price: new BN(99).mul(QUOTE_PRECISION),
6207
6276
  size: new BN(1).mul(BASE_PRECISION),
6208
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6277
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6209
6278
  },
6210
6279
  {
6211
6280
  price: new BN(98).mul(QUOTE_PRECISION),
6212
6281
  size: new BN(1).mul(BASE_PRECISION),
6213
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6282
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6214
6283
  },
6215
6284
  {
6216
6285
  price: new BN(97).mul(QUOTE_PRECISION),
6217
6286
  size: new BN(1).mul(BASE_PRECISION),
6218
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6287
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6219
6288
  },
6220
6289
  ];
6221
6290
 
@@ -6223,12 +6292,12 @@ describe('Uncross L2', () => {
6223
6292
  {
6224
6293
  price: new BN(101).mul(QUOTE_PRECISION),
6225
6294
  size: new BN(1).mul(BASE_PRECISION),
6226
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6295
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6227
6296
  },
6228
6297
  {
6229
6298
  price: new BN(102).mul(QUOTE_PRECISION),
6230
6299
  size: new BN(1).mul(BASE_PRECISION),
6231
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6300
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6232
6301
  },
6233
6302
  ];
6234
6303
 
@@ -6238,27 +6307,66 @@ describe('Uncross L2', () => {
6238
6307
 
6239
6308
  const groupingSize = QUOTE_PRECISION.divn(10);
6240
6309
 
6241
- const { bids: newBids, asks: newAsks } = uncrossL2(bids, asks, oraclePrice, oraclePrice5Min, markPrice5Min, groupingSize, new Set<string>(), new Set<string>());
6310
+ const { bids: newBids, asks: newAsks } = uncrossL2(
6311
+ bids,
6312
+ asks,
6313
+ oraclePrice,
6314
+ oraclePrice5Min,
6315
+ markPrice5Min,
6316
+ groupingSize,
6317
+ new Set<string>(),
6318
+ new Set<string>()
6319
+ );
6242
6320
 
6243
- expect(newBids[0].price.toString()).to.equal(new BN(99).mul(QUOTE_PRECISION).toString());
6244
- expect(newBids[0].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6245
- expect(newBids[0].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6321
+ expect(newBids[0].price.toString()).to.equal(
6322
+ new BN(99).mul(QUOTE_PRECISION).toString()
6323
+ );
6324
+ expect(newBids[0].size.toString()).to.equal(
6325
+ new BN(1).mul(BASE_PRECISION).toString()
6326
+ );
6327
+ expect(newBids[0].sources['vamm'].toString()).to.equal(
6328
+ new BN(1).mul(BASE_PRECISION).toString()
6329
+ );
6246
6330
 
6247
- expect(newBids[1].price.toString()).to.equal(new BN(98).mul(QUOTE_PRECISION).toString());
6248
- expect(newBids[1].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6249
- expect(newBids[1].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6331
+ expect(newBids[1].price.toString()).to.equal(
6332
+ new BN(98).mul(QUOTE_PRECISION).toString()
6333
+ );
6334
+ expect(newBids[1].size.toString()).to.equal(
6335
+ new BN(1).mul(BASE_PRECISION).toString()
6336
+ );
6337
+ expect(newBids[1].sources['vamm'].toString()).to.equal(
6338
+ new BN(1).mul(BASE_PRECISION).toString()
6339
+ );
6250
6340
 
6251
- expect(newBids[2].price.toString()).to.equal(new BN(97).mul(QUOTE_PRECISION).toString());
6252
- expect(newBids[2].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6253
- expect(newBids[2].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6341
+ expect(newBids[2].price.toString()).to.equal(
6342
+ new BN(97).mul(QUOTE_PRECISION).toString()
6343
+ );
6344
+ expect(newBids[2].size.toString()).to.equal(
6345
+ new BN(1).mul(BASE_PRECISION).toString()
6346
+ );
6347
+ expect(newBids[2].sources['vamm'].toString()).to.equal(
6348
+ new BN(1).mul(BASE_PRECISION).toString()
6349
+ );
6254
6350
 
6255
- expect(newAsks[0].price.toString()).to.equal(new BN(101).mul(QUOTE_PRECISION).toString());
6256
- expect(newAsks[0].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6257
- expect(newAsks[0].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6351
+ expect(newAsks[0].price.toString()).to.equal(
6352
+ new BN(101).mul(QUOTE_PRECISION).toString()
6353
+ );
6354
+ expect(newAsks[0].size.toString()).to.equal(
6355
+ new BN(1).mul(BASE_PRECISION).toString()
6356
+ );
6357
+ expect(newAsks[0].sources['vamm'].toString()).to.equal(
6358
+ new BN(1).mul(BASE_PRECISION).toString()
6359
+ );
6258
6360
 
6259
- expect(newAsks[1].price.toString()).to.equal(new BN(102).mul(QUOTE_PRECISION).toString());
6260
- expect(newAsks[1].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6261
- expect(newAsks[1].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6361
+ expect(newAsks[1].price.toString()).to.equal(
6362
+ new BN(102).mul(QUOTE_PRECISION).toString()
6363
+ );
6364
+ expect(newAsks[1].size.toString()).to.equal(
6365
+ new BN(1).mul(BASE_PRECISION).toString()
6366
+ );
6367
+ expect(newAsks[1].sources['vamm'].toString()).to.equal(
6368
+ new BN(1).mul(BASE_PRECISION).toString()
6369
+ );
6262
6370
  });
6263
6371
 
6264
6372
  it('Crossed on opposite sides of reference price', () => {
@@ -6266,7 +6374,7 @@ describe('Uncross L2', () => {
6266
6374
  {
6267
6375
  price: new BN(32).mul(QUOTE_PRECISION),
6268
6376
  size: new BN(1).mul(BASE_PRECISION),
6269
- sources: {"dlob": new BN(1).mul(BASE_PRECISION)}
6377
+ sources: { dlob: new BN(1).mul(BASE_PRECISION) },
6270
6378
  },
6271
6379
  ];
6272
6380
 
@@ -6274,27 +6382,48 @@ describe('Uncross L2', () => {
6274
6382
  {
6275
6383
  price: new BN(29).mul(QUOTE_PRECISION),
6276
6384
  size: new BN(1).mul(BASE_PRECISION),
6277
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6385
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6278
6386
  },
6279
6387
  ];
6280
6388
 
6281
- const oraclePrice = new BN("29250100");
6282
- const oraclePrice5Min = new BN("29696597");
6283
- const markPrice5Min = new BN("31747865");
6389
+ const oraclePrice = new BN('29250100');
6390
+ const oraclePrice5Min = new BN('29696597');
6391
+ const markPrice5Min = new BN('31747865');
6284
6392
 
6285
6393
  const groupingSize = QUOTE_PRECISION.divn(10);
6286
6394
 
6287
- const { bids: newBids, asks: newAsks } = uncrossL2(bids, asks, oraclePrice, oraclePrice5Min, markPrice5Min, groupingSize, new Set<string>(), new Set<string>());
6395
+ const { bids: newBids, asks: newAsks } = uncrossL2(
6396
+ bids,
6397
+ asks,
6398
+ oraclePrice,
6399
+ oraclePrice5Min,
6400
+ markPrice5Min,
6401
+ groupingSize,
6402
+ new Set<string>(),
6403
+ new Set<string>()
6404
+ );
6288
6405
 
6289
6406
  const referencePrice = oraclePrice.add(markPrice5Min.sub(oraclePrice5Min));
6290
6407
 
6291
- expect(newBids[0].price.toString()).to.equal(referencePrice.sub(groupingSize).toString());
6292
- expect(newBids[0].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6293
- expect(newBids[0].sources["dlob"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6408
+ expect(newBids[0].price.toString()).to.equal(
6409
+ referencePrice.sub(groupingSize).toString()
6410
+ );
6411
+ expect(newBids[0].size.toString()).to.equal(
6412
+ new BN(1).mul(BASE_PRECISION).toString()
6413
+ );
6414
+ expect(newBids[0].sources['dlob'].toString()).to.equal(
6415
+ new BN(1).mul(BASE_PRECISION).toString()
6416
+ );
6294
6417
 
6295
- expect(newAsks[0].price.toString()).to.equal(referencePrice.add(groupingSize).toString());
6296
- expect(newAsks[0].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6297
- expect(newAsks[0].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6418
+ expect(newAsks[0].price.toString()).to.equal(
6419
+ referencePrice.add(groupingSize).toString()
6420
+ );
6421
+ expect(newAsks[0].size.toString()).to.equal(
6422
+ new BN(1).mul(BASE_PRECISION).toString()
6423
+ );
6424
+ expect(newAsks[0].sources['vamm'].toString()).to.equal(
6425
+ new BN(1).mul(BASE_PRECISION).toString()
6426
+ );
6298
6427
  });
6299
6428
 
6300
6429
  it('Skip user with bid', () => {
@@ -6302,35 +6431,35 @@ describe('Uncross L2', () => {
6302
6431
  {
6303
6432
  price: new BN(104).mul(QUOTE_PRECISION),
6304
6433
  size: new BN(1).mul(BASE_PRECISION),
6305
- sources: {"dlob": new BN(1).mul(BASE_PRECISION)}
6434
+ sources: { dlob: new BN(1).mul(BASE_PRECISION) },
6306
6435
  },
6307
6436
  {
6308
6437
  price: new BN(103).mul(QUOTE_PRECISION),
6309
6438
  size: new BN(1).mul(BASE_PRECISION),
6310
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6439
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6311
6440
  },
6312
6441
  {
6313
6442
  price: new BN(102).mul(QUOTE_PRECISION),
6314
6443
  size: new BN(1).mul(BASE_PRECISION),
6315
- sources: {"dlob": new BN(1).mul(BASE_PRECISION)}
6444
+ sources: { dlob: new BN(1).mul(BASE_PRECISION) },
6316
6445
  },
6317
6446
  {
6318
6447
  price: new BN(100).mul(QUOTE_PRECISION),
6319
6448
  size: new BN(1).mul(BASE_PRECISION),
6320
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6321
- }
6449
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6450
+ },
6322
6451
  ];
6323
6452
 
6324
6453
  const asks = [
6325
6454
  {
6326
6455
  price: new BN(101).mul(QUOTE_PRECISION),
6327
6456
  size: new BN(1).mul(BASE_PRECISION),
6328
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)},
6457
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6329
6458
  },
6330
6459
  {
6331
6460
  price: new BN(102).mul(QUOTE_PRECISION),
6332
6461
  size: new BN(1).mul(BASE_PRECISION),
6333
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)},
6462
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6334
6463
  },
6335
6464
  ];
6336
6465
 
@@ -6340,29 +6469,72 @@ describe('Uncross L2', () => {
6340
6469
 
6341
6470
  const groupingSize = QUOTE_PRECISION.divn(10);
6342
6471
 
6343
- const userBids = new Set<string>([new BN(104).mul(QUOTE_PRECISION).toString()]);
6344
- const { bids: newBids, asks: newAsks } = uncrossL2(bids, asks, oraclePrice, oraclePrice5Min, markPrice5Min, groupingSize, userBids, new Set<string>());
6472
+ const userBids = new Set<string>([
6473
+ new BN(104).mul(QUOTE_PRECISION).toString(),
6474
+ ]);
6475
+ const { bids: newBids, asks: newAsks } = uncrossL2(
6476
+ bids,
6477
+ asks,
6478
+ oraclePrice,
6479
+ oraclePrice5Min,
6480
+ markPrice5Min,
6481
+ groupingSize,
6482
+ userBids,
6483
+ new Set<string>()
6484
+ );
6345
6485
 
6346
- expect(newBids[0].price.toString()).to.equal(new BN(104).mul(QUOTE_PRECISION).toString());
6347
- expect(newBids[0].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6348
- expect(newBids[0].sources["dlob"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6486
+ expect(newBids[0].price.toString()).to.equal(
6487
+ new BN(104).mul(QUOTE_PRECISION).toString()
6488
+ );
6489
+ expect(newBids[0].size.toString()).to.equal(
6490
+ new BN(1).mul(BASE_PRECISION).toString()
6491
+ );
6492
+ expect(newBids[0].sources['dlob'].toString()).to.equal(
6493
+ new BN(1).mul(BASE_PRECISION).toString()
6494
+ );
6349
6495
 
6350
- expect(newBids[1].price.toString()).to.equal(new BN(101).mul(QUOTE_PRECISION).sub(groupingSize).toString());
6351
- expect(newBids[1].size.toString()).to.equal(new BN(2).mul(BASE_PRECISION).toString());
6352
- expect(newBids[1].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6353
- expect(newBids[1].sources["dlob"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6496
+ expect(newBids[1].price.toString()).to.equal(
6497
+ new BN(101).mul(QUOTE_PRECISION).sub(groupingSize).toString()
6498
+ );
6499
+ expect(newBids[1].size.toString()).to.equal(
6500
+ new BN(2).mul(BASE_PRECISION).toString()
6501
+ );
6502
+ expect(newBids[1].sources['vamm'].toString()).to.equal(
6503
+ new BN(1).mul(BASE_PRECISION).toString()
6504
+ );
6505
+ expect(newBids[1].sources['dlob'].toString()).to.equal(
6506
+ new BN(1).mul(BASE_PRECISION).toString()
6507
+ );
6354
6508
 
6355
- expect(newBids[2].price.toString()).to.equal(new BN(100).mul(QUOTE_PRECISION).toString());
6356
- expect(newBids[2].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6357
- expect(newBids[2].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6509
+ expect(newBids[2].price.toString()).to.equal(
6510
+ new BN(100).mul(QUOTE_PRECISION).toString()
6511
+ );
6512
+ expect(newBids[2].size.toString()).to.equal(
6513
+ new BN(1).mul(BASE_PRECISION).toString()
6514
+ );
6515
+ expect(newBids[2].sources['vamm'].toString()).to.equal(
6516
+ new BN(1).mul(BASE_PRECISION).toString()
6517
+ );
6358
6518
 
6359
- expect(newAsks[0].price.toString()).to.equal(new BN(101).mul(QUOTE_PRECISION).toString());
6360
- expect(newAsks[0].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6361
- expect(newAsks[0].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6519
+ expect(newAsks[0].price.toString()).to.equal(
6520
+ new BN(101).mul(QUOTE_PRECISION).toString()
6521
+ );
6522
+ expect(newAsks[0].size.toString()).to.equal(
6523
+ new BN(1).mul(BASE_PRECISION).toString()
6524
+ );
6525
+ expect(newAsks[0].sources['vamm'].toString()).to.equal(
6526
+ new BN(1).mul(BASE_PRECISION).toString()
6527
+ );
6362
6528
 
6363
- expect(newAsks[1].price.toString()).to.equal(new BN(102).mul(QUOTE_PRECISION).toString());
6364
- expect(newAsks[1].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6365
- expect(newAsks[1].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6529
+ expect(newAsks[1].price.toString()).to.equal(
6530
+ new BN(102).mul(QUOTE_PRECISION).toString()
6531
+ );
6532
+ expect(newAsks[1].size.toString()).to.equal(
6533
+ new BN(1).mul(BASE_PRECISION).toString()
6534
+ );
6535
+ expect(newAsks[1].sources['vamm'].toString()).to.equal(
6536
+ new BN(1).mul(BASE_PRECISION).toString()
6537
+ );
6366
6538
  });
6367
6539
 
6368
6540
  it('Skip user with ask', () => {
@@ -6370,12 +6542,12 @@ describe('Uncross L2', () => {
6370
6542
  {
6371
6543
  price: new BN(99).mul(QUOTE_PRECISION),
6372
6544
  size: new BN(1).mul(BASE_PRECISION),
6373
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6545
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6374
6546
  },
6375
6547
  {
6376
6548
  price: new BN(98).mul(QUOTE_PRECISION),
6377
6549
  size: new BN(1).mul(BASE_PRECISION),
6378
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6550
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6379
6551
  },
6380
6552
  ];
6381
6553
 
@@ -6383,23 +6555,23 @@ describe('Uncross L2', () => {
6383
6555
  {
6384
6556
  price: new BN(96).mul(QUOTE_PRECISION),
6385
6557
  size: new BN(1).mul(BASE_PRECISION),
6386
- sources: {"dlob": new BN(1).mul(BASE_PRECISION)}
6558
+ sources: { dlob: new BN(1).mul(BASE_PRECISION) },
6387
6559
  },
6388
6560
  {
6389
6561
  price: new BN(97).mul(QUOTE_PRECISION),
6390
6562
  size: new BN(1).mul(BASE_PRECISION),
6391
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6563
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6392
6564
  },
6393
6565
  {
6394
6566
  price: new BN(98).mul(QUOTE_PRECISION),
6395
6567
  size: new BN(1).mul(BASE_PRECISION),
6396
- sources: {"dlob": new BN(1).mul(BASE_PRECISION)}
6568
+ sources: { dlob: new BN(1).mul(BASE_PRECISION) },
6397
6569
  },
6398
6570
  {
6399
6571
  price: new BN(100).mul(QUOTE_PRECISION),
6400
6572
  size: new BN(1).mul(BASE_PRECISION),
6401
- sources: {"vamm": new BN(1).mul(BASE_PRECISION)}
6402
- }
6573
+ sources: { vamm: new BN(1).mul(BASE_PRECISION) },
6574
+ },
6403
6575
  ];
6404
6576
 
6405
6577
  const oraclePrice = new BN(100).mul(QUOTE_PRECISION);
@@ -6408,28 +6580,71 @@ describe('Uncross L2', () => {
6408
6580
 
6409
6581
  const groupingSize = QUOTE_PRECISION.divn(10);
6410
6582
 
6411
- const userAsks = new Set<string>([new BN(96).mul(QUOTE_PRECISION).toString()]);
6412
- const { bids: newBids, asks: newAsks } = uncrossL2(bids, asks, oraclePrice, oraclePrice5Min, markPrice5Min, groupingSize, new Set<string>(), userAsks);
6583
+ const userAsks = new Set<string>([
6584
+ new BN(96).mul(QUOTE_PRECISION).toString(),
6585
+ ]);
6586
+ const { bids: newBids, asks: newAsks } = uncrossL2(
6587
+ bids,
6588
+ asks,
6589
+ oraclePrice,
6590
+ oraclePrice5Min,
6591
+ markPrice5Min,
6592
+ groupingSize,
6593
+ new Set<string>(),
6594
+ userAsks
6595
+ );
6413
6596
 
6414
- expect(newBids[0].price.toString()).to.equal(new BN(99).mul(QUOTE_PRECISION).toString());
6415
- expect(newBids[0].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6416
- expect(newBids[0].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6597
+ expect(newBids[0].price.toString()).to.equal(
6598
+ new BN(99).mul(QUOTE_PRECISION).toString()
6599
+ );
6600
+ expect(newBids[0].size.toString()).to.equal(
6601
+ new BN(1).mul(BASE_PRECISION).toString()
6602
+ );
6603
+ expect(newBids[0].sources['vamm'].toString()).to.equal(
6604
+ new BN(1).mul(BASE_PRECISION).toString()
6605
+ );
6417
6606
 
6418
- expect(newBids[1].price.toString()).to.equal(new BN(98).mul(QUOTE_PRECISION).toString());
6419
- expect(newBids[1].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6420
- expect(newBids[1].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6607
+ expect(newBids[1].price.toString()).to.equal(
6608
+ new BN(98).mul(QUOTE_PRECISION).toString()
6609
+ );
6610
+ expect(newBids[1].size.toString()).to.equal(
6611
+ new BN(1).mul(BASE_PRECISION).toString()
6612
+ );
6613
+ expect(newBids[1].sources['vamm'].toString()).to.equal(
6614
+ new BN(1).mul(BASE_PRECISION).toString()
6615
+ );
6421
6616
 
6422
- expect(newAsks[0].price.toString()).to.equal(new BN(96).mul(QUOTE_PRECISION).toString());
6423
- expect(newAsks[0].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6424
- expect(newAsks[0].sources["dlob"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6617
+ expect(newAsks[0].price.toString()).to.equal(
6618
+ new BN(96).mul(QUOTE_PRECISION).toString()
6619
+ );
6620
+ expect(newAsks[0].size.toString()).to.equal(
6621
+ new BN(1).mul(BASE_PRECISION).toString()
6622
+ );
6623
+ expect(newAsks[0].sources['dlob'].toString()).to.equal(
6624
+ new BN(1).mul(BASE_PRECISION).toString()
6625
+ );
6425
6626
 
6426
- expect(newAsks[1].price.toString()).to.equal(new BN(99).mul(QUOTE_PRECISION).add(groupingSize).toString());
6427
- expect(newAsks[1].size.toString()).to.equal(new BN(2).mul(BASE_PRECISION).toString());
6428
- expect(newAsks[1].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6429
- expect(newAsks[1].sources["dlob"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6627
+ expect(newAsks[1].price.toString()).to.equal(
6628
+ new BN(99).mul(QUOTE_PRECISION).add(groupingSize).toString()
6629
+ );
6630
+ expect(newAsks[1].size.toString()).to.equal(
6631
+ new BN(2).mul(BASE_PRECISION).toString()
6632
+ );
6633
+ expect(newAsks[1].sources['vamm'].toString()).to.equal(
6634
+ new BN(1).mul(BASE_PRECISION).toString()
6635
+ );
6636
+ expect(newAsks[1].sources['dlob'].toString()).to.equal(
6637
+ new BN(1).mul(BASE_PRECISION).toString()
6638
+ );
6430
6639
 
6431
- expect(newAsks[2].price.toString()).to.equal(new BN(100).mul(QUOTE_PRECISION).toString());
6432
- expect(newAsks[2].size.toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6433
- expect(newAsks[2].sources["vamm"].toString()).to.equal(new BN(1).mul(BASE_PRECISION).toString());
6640
+ expect(newAsks[2].price.toString()).to.equal(
6641
+ new BN(100).mul(QUOTE_PRECISION).toString()
6642
+ );
6643
+ expect(newAsks[2].size.toString()).to.equal(
6644
+ new BN(1).mul(BASE_PRECISION).toString()
6645
+ );
6646
+ expect(newAsks[2].sources['vamm'].toString()).to.equal(
6647
+ new BN(1).mul(BASE_PRECISION).toString()
6648
+ );
6434
6649
  });
6435
6650
  });