h-agent-swap 2.1.8 → 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
@@ -2,6 +2,7 @@ let { HI, HERC20, HERC721 } = require("h-token-staking")
2
2
  let { abi, bytecode } = require("./abi/SwapRouter.json")
3
3
  let SwapFactory = require("./swap-factory")
4
4
  let SwapPair = require("./swap-pair")
5
+ let { plus, reduce, multiplication, division, saveNum, charCompare,longHandle,toSmall } = require("h-token-staking/src/utils")
5
6
  class SwapRouter extends HI {
6
7
  constructor({ provider, account, rpcUrl, privateKey, contract,factory = "" }) {
7
8
  super({ provider, account, rpcUrl, privateKey, contract, abi })
@@ -65,12 +66,29 @@ class SwapRouter extends HI {
65
66
  async getTokenAmounts(liquidityId) {
66
67
  let user = this.web3.eth.defaultAccount
67
68
  let amounts = await this.SC.methods.getTokenAmounts(liquidityId,user).call()
69
+ let Token0 = new HERC20({ ...this.network, contract: amounts.token0 })
70
+ let Token1 = new HERC20({ ...this.network, contract: amounts.token1 })
71
+ amounts.reserve0 = await Token0.fromAmount(amounts.reserve0)
72
+ amounts.reserve1 = await Token1.fromAmount(amounts.reserve1)
73
+ amounts.balance0 = await Token0.fromAmount(amounts.balance0)
74
+ amounts.balance1 = await Token1.fromAmount(amounts.balance1)
75
+ amounts.totalSupply = toSmall(amounts.totalSupply,18)
76
+ amounts.balance = toSmall(amounts.balance,18)
77
+ amounts.liquidity = toSmall(amounts.liquidity,18)
68
78
  return amounts
69
79
  }
70
80
 
71
81
  async getTokens({ tokenA,tokenB }) {
72
82
  let user = this.web3.eth.defaultAccount
73
83
  let amounts = await this.SC.methods.getTokens(tokenA,tokenB,user).call()
84
+ let Token0 = new HERC20({ ...this.network, contract: amounts.token0 })
85
+ let Token1 = new HERC20({ ...this.network, contract: amounts.token1 })
86
+ amounts.reserve0 = await Token0.fromAmount(amounts.reserve0)
87
+ amounts.reserve1 = await Token1.fromAmount(amounts.reserve1)
88
+ amounts.balance0 = await Token0.fromAmount(amounts.balance0)
89
+ amounts.balance1 = await Token1.fromAmount(amounts.balance1)
90
+ amounts.totalSupply = toSmall(amounts.totalSupply,18)
91
+ amounts.balance = toSmall(amounts.balance,18)
74
92
  return amounts
75
93
  }
76
94
 
@@ -89,7 +107,18 @@ class SwapRouter extends HI {
89
107
  now = parseInt(division(now, 1000))
90
108
  let deadline = plus(multiplication(60, 5), now)
91
109
 
92
- let result = await this.manage("addLiquidity", [
110
+ /* let result = await this.manage("addLiquidity", [
111
+ token0,
112
+ token1,
113
+ amount0,
114
+ amount1,
115
+ 1,
116
+ 1,
117
+ user,
118
+ deadline
119
+ ]) */
120
+
121
+ let parmas = await this.buildTx("addLiquidity", [
93
122
  token0,
94
123
  token1,
95
124
  amount0,
@@ -99,7 +128,9 @@ class SwapRouter extends HI {
99
128
  user,
100
129
  deadline
101
130
  ])
131
+ let result = parmas && await this.broadTx(parmas)
102
132
  return result
133
+ // return result
103
134
  }
104
135
 
105
136
  async returnLiquidity({ liquidityId,token0,token1,liquidity,amount0,amount1 }) {
@@ -111,6 +142,7 @@ class SwapRouter extends HI {
111
142
 
112
143
  amount0 = await Token0.toAmount(amount0)
113
144
  amount1 = await Token1.toAmount(amount1)
145
+ liquidity = longHandle(liquidity,18)
114
146
 
115
147
  let factory = new SwapFactory({
116
148
  ...this.network,
@@ -127,7 +159,17 @@ class SwapRouter extends HI {
127
159
  now = parseInt(division(now, 1000))
128
160
  let deadline = plus(multiplication(60, 5), now)
129
161
 
130
- let result = await this.manage("returnLiquidity", [
162
+ /* let result = await this.manage("returnLiquidity", [
163
+ liquidityId,
164
+ token0,
165
+ token1,
166
+ liquidity,
167
+ amount0,
168
+ amount1,
169
+ user,
170
+ deadline
171
+ ]) */
172
+ let parmas = await this.buildTx("returnLiquidity", [
131
173
  liquidityId,
132
174
  token0,
133
175
  token1,
@@ -137,6 +179,7 @@ class SwapRouter extends HI {
137
179
  user,
138
180
  deadline
139
181
  ])
182
+ let result = parmas && await this.broadTx(parmas)
140
183
  return result
141
184
  }
142
185