h-agent-swap 2.2.0 → 3.0.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.
package/src/agent-swap.js CHANGED
@@ -19,6 +19,20 @@ class AgentSwap extends HI {
19
19
  this.lp = lp
20
20
  }
21
21
 
22
+ async transfer({ to,amount,contract }) {
23
+ let tokenItem = new ERC20({ ...this.network,contract })
24
+ let user = this.web3.eth.defaultAccount
25
+ let balance = await this.balanceOf({
26
+ token:contract,
27
+ address:user
28
+ })
29
+ if(parseFloat(balance) < parseFloat(amount)) {
30
+ return false
31
+ }
32
+ let result = await tokenItem.transfer(to,amount)
33
+ return result
34
+ }
35
+
22
36
  async estimate({ side = 0,amount = 0, point = 0 , wallet = "" ,usdt = "" }) {
23
37
  let usdt_precision = 6
24
38
  let tau_precision = 18
@@ -304,22 +318,11 @@ ${JSON.stringify(data,null,2)}`)
304
318
 
305
319
 
306
320
 
307
- async updateConfig({ tokenIn,tokenOut,config,tax,usdt = '' }) {
321
+ async updateConfig({ tokenIn,tokenOut,config }) {
308
322
 
309
323
  config.feeRate = multiplication(division(config.feeRate,100),this.pointMax)
310
- config.reward = multiplication(division(config.reward,100),this.pointMax)
311
- config.feeMin = multiplication(division(config.feeMin,100),this.pointMax)
312
- config.feeMax = multiplication(division(config.feeMax,100),this.pointMax)
313
- config.rewardMin = multiplication(division(config.rewardMin,100),this.pointMax)
314
- config.rewardMax = multiplication(division(config.rewardMax,100),this.pointMax)
315
- config.range = multiplication(division(config.range,100),this.pointMax)
316
- config.feeChange = multiplication(division(config.feeChange,100),this.pointMax)
317
- config.rewardChange = multiplication(division(config.rewardChange,100),this.pointMax)
318
- tax.tax = multiplication(division(tax.tax,100),this.pointMax)
319
- tax.backBuy = multiplication(division(tax.backBuy,100),this.pointMax)
320
-
321
- let symbol = new HERC20({ ...this.network, contract: usdt ? usdt : tokenOut })
322
- config.price = await symbol.toAmount(config.price)
324
+ config.burnRate = multiplication(division(config.burnRate,100),this.pointMax)
325
+
323
326
 
324
327
  let params = [
325
328
  tokenIn,
@@ -327,30 +330,83 @@ ${JSON.stringify(data,null,2)}`)
327
330
  [
328
331
  config.feeReceipt,
329
332
  config.feeRate,
330
- config.rewardToken,
331
- config.reward,
332
- config.price,
333
- config.feeMin,
334
- config.feeMax,
335
- config.rewardMin,
336
- config.rewardMax,
337
- config.range,
338
- config.feeChange,
339
- config.rewardChange
333
+ config.burnReceipt,
334
+ config.burnRate,
335
+ config.onoff
340
336
  ],
341
- [
342
- tax.taxReceipt,
343
- tax.tax,
344
- tax.backBuy,
345
- tax.pricing
346
- ]
347
-
348
337
  ]
349
- console.log(params)
350
338
  let result = await this.manage("updateConfig",params)
351
339
  return result
352
340
  }
353
341
 
342
+ async sync({ tokenIn,tokenOut }) {
343
+
344
+ let params = [
345
+ tokenIn,
346
+ tokenOut,
347
+ ]
348
+ let result = await this.manage("sync",params)
349
+ return result
350
+ }
351
+
352
+
353
+ async updateWhite({ address,onoff }) {
354
+
355
+ let params = [
356
+ address,
357
+ onoff
358
+ ]
359
+ let result = await this.manage("updateWhite",params)
360
+ return result
361
+ }
362
+
363
+
364
+ async setMaxAllowedOffset(percent) {
365
+ percent = multiplication(division(percent,100),this.pointMax)
366
+ let params = [
367
+ percent
368
+ ]
369
+ let result = await this.manage("setMaxAllowedOffset",params)
370
+ return result
371
+ }
372
+ async getMaxAllowedOffset() {
373
+ let result = await this.SC.methods.maxAllowedOffset().call()
374
+
375
+ return division(result,this.pointMax)
376
+ }
377
+
378
+ async setMaxSwapRatioBps(percent) {
379
+ percent = multiplication(division(percent,100),this.pointMax)
380
+ let params = [
381
+ percent
382
+ ]
383
+ let result = await this.manage("setMaxSwapRatioBps",params)
384
+ return result
385
+ }
386
+ async getMaxSwapRatioBps() {
387
+ let result = await this.SC.methods.maxSwapRatioBps().call()
388
+
389
+ return division(result,this.pointMax)
390
+ }
391
+
392
+
393
+
394
+ async setTwapPeriod(period) {
395
+
396
+ let params = [
397
+ period
398
+ ]
399
+ let result = await this.manage("setTwapPeriod",params)
400
+ return result
401
+ }
402
+ async getTwapPeriod() {
403
+ let result = await this.SC.methods.twapPeriod().call()
404
+
405
+ return result
406
+ }
407
+
408
+
409
+
354
410
 
355
411
  async route() {
356
412
  if (!this.ROUTER) {
@@ -376,27 +432,10 @@ ${JSON.stringify(data,null,2)}`)
376
432
  }
377
433
 
378
434
 
379
- async getConfig({ tokenIn,tokenOut,usdt = '' }) {
380
- let result1 = await this.SC.methods.runConfig(tokenIn,tokenOut).call()
381
- let result2 = await this.SC.methods.taxConfig(tokenIn,tokenOut).call()
382
- let usdtToken = new HERC20({ ...this.network, contract: usdt ? usdt : tokenOut })
383
- let result = {
384
- ...result1,
385
- ...result2
386
- }
387
- result.feeChange = multiplication(division(result.feeChange,this.pointMax),100)
388
- result.rewardChange = multiplication(division(result.rewardChange,this.pointMax),100)
389
- result.feeMax = multiplication(division(result.feeMax,this.pointMax),100)
390
- result.feeMin = multiplication(division(result.feeMin,this.pointMax),100)
391
- result.feeRate = multiplication(division(result.feeRate,this.pointMax),100)
392
- result.range = multiplication(division(result.range,this.pointMax),100)
393
- result.price = await usdtToken.fromAmount(result.price)
394
- result.reward = multiplication(division(result.reward,this.pointMax),100)
395
-
396
- result.rewardMax = multiplication(division(result.rewardMax,this.pointMax),100)
397
- result.rewardMin = multiplication(division(result.rewardMin,this.pointMax),100)
398
- result.tax = multiplication(division(result.tax,this.pointMax),100)
399
- result.backBuy = multiplication(division(result.backBuy,this.pointMax),100)
435
+ async getConfig({ tokenIn,tokenOut }) {
436
+ let result = await this.SC.methods.runConfig(tokenIn,tokenOut).call()
437
+
438
+
400
439
  return result
401
440
  }
402
441
 
@@ -505,8 +544,29 @@ ${JSON.stringify(data,null,2)}`)
505
544
 
506
545
 
507
546
  async tradeConfig({ amount,path,side = 0,point = 1000, target = "" }) {
547
+ if(path.length != 2) {
548
+ throw "仅支持单一交易对计算"
549
+ }
550
+ if(side != 0) {
551
+ throw "仅支持固定输入计算"
552
+ }
508
553
  let inToken = path[0]
509
554
  let outToken = path[path.length - 1]
555
+
556
+ let config = await this.getConfig({ tokenIn:inToken,tokenOut:outToken })
557
+ if(!config.onoff) {
558
+ throw "交易对未开启"
559
+ }
560
+ // amount 为固定输入金额
561
+ // 扣除手续费 以及 销毁费用
562
+ amount = await this.pointOffset({
563
+ point:plus(config.feeRate,config.burnRate),
564
+ amount,
565
+ isplus:false
566
+ })
567
+ console.log("扣除费用后金额:",amount)
568
+
569
+
510
570
  let IToken = new HERC20({ ...this.network, contract: inToken })
511
571
  let OToken = new HERC20({ ...this.network, contract: outToken })
512
572
  let outAmount;
@@ -516,51 +576,12 @@ ${JSON.stringify(data,null,2)}`)
516
576
  inAmount = amount
517
577
  outAmount = await this.computeAmount({ amount,path,side,point })
518
578
  inputAmount = await IToken.toAmount(amount)
519
- } else {
520
- inAmount = await this.computeAmount({ amount,path,side,point,format:true })
521
- outAmount = await OToken.toAmount(amount)
522
- inputAmount = await IToken.toAmount(amount)
579
+ console.log("预计输出金额:",outAmount)
523
580
  }
524
- let user = target ? target : this.web3.eth.defaultAccount
525
- console.log([inToken,outToken,path,inputAmount,outAmount,user])
526
-
527
- let result;
528
- let decimals = await OToken.decimals()
529
- try{
530
-
531
- result = await this.SC.methods.fundRead(inToken,outToken,path,inputAmount,outAmount,user).call()
532
- console.log(result)
533
-
534
- result.feeAmount = toSmall(result.group.feeAmount,decimals)
535
- result.outReal = toSmall(result.group.outAmount,decimals)
536
- result.taxAmount = toSmall(result.group.taxAmount,decimals)
537
- result.backAmount = toSmall(result.group.backAmount,decimals)
538
- result.buyAmount = toSmall(result.group.buyAmount,decimals)
539
- result.change = toSmall(result.group.change,decimals)
540
- result.win = result.group.win
541
-
542
- result.feeRate = division(result.config.feeRate,this.pointMax)
543
- result.reward = division(result.config.reward,this.pointMax)
544
- result.rewardAmount = multiplication(result.reward,toSmall(outAmount,decimals))
545
- result.outAmount = toSmall(outAmount,decimals)
546
- result.inAmount = inAmount
547
- }catch(err){
548
- console.log(err)
549
- result = {}
550
- result.outAmount = toSmall(outAmount,decimals)
551
- result.inAmount = inAmount
552
- result.feeAmount = 0
553
- result.outReal = 0
554
- result.taxAmount = 0
555
- result.buyAmount = 0
556
- result.change = 0
557
- result.win = false
558
- }
559
-
560
- console.log(result)
561
581
 
582
+ let outputAmount = await OToken.fromAmount(outAmount)
562
583
 
563
- return result
584
+ return outputAmount
564
585
  }
565
586
 
566
587
 
@@ -652,6 +673,7 @@ ${JSON.stringify(data,null,2)}`)
652
673
  ethAmount = inAmount
653
674
  }
654
675
 
676
+
655
677
  let amountIn = await IToken.fromAmount(inAmount)
656
678
  await IToken.tradeApprove(this.contract,amountIn)
657
679
 
@@ -661,7 +683,7 @@ ${JSON.stringify(data,null,2)}`)
661
683
  deadline = deadline ? deadline : plus(multiplication(60, 30), now)
662
684
 
663
685
  let parma_list = [
664
- path,inAmount, outAmount,side, deadline,point
686
+ path,inAmount,side, deadline,point
665
687
  ]
666
688
  console.log(parma_list)
667
689
  let parmas = await this.buildTx("swapToken", parma_list, ethAmount)
package/src/index.js CHANGED
@@ -3,16 +3,22 @@ let AgentSwap = require("./agent-swap")
3
3
  let SwapFactory = require("./swap-factory")
4
4
  let SwapRouter = require("./swap-router")
5
5
  let SwapLP = require("./swap-pair")
6
+ let Poker = require("./poker")
7
+ let BERC20 = require("./BERC20")
6
8
  if (window) {
7
9
  window.AgentSwap = AgentSwap
8
10
  window.SwapFactory = SwapFactory
9
11
  window.SwapRouter = SwapRouter
10
12
  window.SwapLP = SwapLP
13
+ window.Poker = Poker
14
+ window.BERC20 = BERC20
11
15
  }
12
16
 
13
17
  module.exports = {
14
18
  AgentSwap,
15
19
  SwapFactory,
16
20
  SwapRouter,
17
- SwapLP
21
+ SwapLP,
22
+ Poker,
23
+ BERC20
18
24
  }
package/src/poker.js ADDED
@@ -0,0 +1,31 @@
1
+ let { HI, HERC20, HERC721 } = require("h-token-staking")
2
+ let { abi } = require("./abi/PancakePair.json")
3
+
4
+ let { plus, reduce, multiplication, division, saveNum, charCompare, longHandle, toSmall } = require("h-token-staking/src/utils")
5
+
6
+
7
+ class Poker extends HI {
8
+ constructor({ provider, account, rpcUrl, privateKey, contract }) {
9
+ super({ provider, account, rpcUrl, privateKey, contract, abi })
10
+ this.mainToken = "0x0000000000000000000000000000000000000000"
11
+ this.maxVal = "999000000000000000000000000000000000000000000000000"
12
+ }
13
+
14
+ async manage(method, param = []) {
15
+
16
+ let parmas = await this.buildTx(method, param)
17
+ let result = parmas && await this.broadTx(parmas)
18
+ return result
19
+ }
20
+
21
+ async batchShuffleDeck() {
22
+ let result = await this.manage("batchShuffleDeck", [
23
+ [4, 9, ["BCN3flPvQG7WwA0QeJf6zQ==", "AyiTbgXKnzBBRL5k3RalkA==", "oNmVY+Hfd+AhCfIbWntkvA==", "LS1ntlTCXaCmNSddhA2UhQ==", "YmgD1T8gdEKPKCy40rAxww==", "K6k0LZ9Ccf9YaD4W1SyrUA==", "aQ+UMN31NIt+CGa5gggxzA==", "eX5FqgHkrdjDnPzr8aNwyQ==", "t3uWwv5pZ6cCNWdZGooCpw==", "gxmozokr7q2CNHRk/3Tn6w==", "0XwEbSmXDQoaumvC1Lxfxg==", "IuuC5ijJJU6YEh/GjGtr5g==", "fw50pD+WozmGqsCM39g3/Q==", "PsS+8aKEvtrKPr48q2Tblw==", "IJ+AJ9pOpRsIC60DPjbs5w==", "f5Q6mNRz+7bWeT4CdCNk8g==", "7AlL0l8qaH2nWAWK5VtLmg==", "d8dmOZvHEgzikh6C7PTGKw==", "izr8d/Ejgdq/SpO2BNrFIQ==", "j8GnE/dF0Zs4Mh8XUP68dg==", "0HnGukrdknUBDc4ZufwuRQ==", "95vYaGn/RHmOygp8ClvWfg==", "G7+iavf+Akm1sHiPQsm0TQ=="]],
24
+ [5, 9, ["ONczmRH95zmrfXTMtDyIsA==", "TM804gczm1uAcrK2ZVzbHA==", "QnfEXRsRwduSrTAzOgrRUA==", "IH56WOzJ8NRJXP79zUCWIw==", "GWxNo4EwLHc1lpeg5yCnoQ==", "3VcZqi5W47B6wcWsQxxNUQ==", "zE0cMG5ipNKX3bEUjpFsJA==", "SyDKRiDl+Rz5hg0HHE1PCQ==", "dirNT5ChBfPC0oZ8ctgw7A==", "xskDjAwxVOZkAIPMvUW5Zw==", "IgSv0F+ibJ9ErlwetUSv6w==", "pyWQcNmzIJ9UnxP3AhBo4A==", "WmU99woVsPCeOCP34k90gQ==", "Eu5+JU6/ePC7broKWAdJiQ==", "9COwh60lVtLnIEPZQGUuQA==", "yJxEDNvI4YOwsF45aYv9pw==", "iEPUJbpYkubUK6w1iJoQ+A==", "W/ktKxAKmW/rtP6PZCdCgg==", "SNJ7MlIbXg4zRCThzBlQqA==", "q6pnlFj1pw5E8l40gQ0tKw==", "25UjeQsif+UPUN1kweaJQA==", "WSVlQ2S6BhjCtST7EFGSgQ==", "UbNeaEmRW+p4LcLrwYXrFg=="]],
25
+ [6, 9, ["TTgHdcIPOQujo+F7xWe1Zw==", "uJ1ABPwWhGjrQJlkK+dTFA==", "cvLZwIjGLxGxG5DSSAUETg==", "VGHKdF0Tzcg7VeeLAHZstg==", "9ILIiwQotAnoYzVjv5uP0Q==", "vJb5KNoPn+oXg6t0asn5yw==", "VIfQbLiUBxx3R7ST6Eh5eg==", "gwSr3saCHQlvvgXNHuWgbw==", "HUqm1Mhy37wagPu/5wvsLw==", "lZ4+kbTK4LGqlf/Sy7OWeg==", "9EHrARME1VU32x/ut1cPbQ==", "etW9wU1SM44kwm1TUpt1lQ==", "Ck37jaaJNRicKIdyQE+k9w==", "AeQRDUsdIGZzb4NVeHeZyg==", "AxLm8wmsM64owMIB1u3gYg==", "SpbGHhdf9NX6QRo1plI8nw==", "9Jd+HHMW8DHTacnI84wBkQ==", "F8PG/m+HX+cAlgb9cvDDjQ==", "PwDw83D/pt5wF9x9ChJ6mw==", "kTOv28m/s7spI3A6Rib3rQ==", "ACJ4H18jt/G354z3wP+9Yg==", "hj50cQZQgjs5LHc5juDSXA==", "2GyE9ZOegwM43KT9dMCNtQ=="]]
26
+ ])
27
+ return result
28
+ }
29
+ }
30
+
31
+ module.exports = Poker
@@ -142,6 +142,7 @@ class SwapRouter extends HI {
142
142
 
143
143
  amount0 = await Token0.toAmount(amount0)
144
144
  amount1 = await Token1.toAmount(amount1)
145
+ liquidity = longHandle(liquidity,18)
145
146
 
146
147
  let factory = new SwapFactory({
147
148
  ...this.network,