2 spendUTXOAction, spendWalletAction, controlProgramAction,
3 controlAddressAction, listDappUTXO, updateUtxo, updateBalances,
6 import GetContractArgs from '../../constants'
7 import BigNumber from 'bignumber.js'
9 export function FixedLimitDeposit(account, amount, address) {
10 return new Promise((resolve, reject) => {
12 "program": GetContractArgs().depositProgram,
13 "asset": GetContractArgs().assetBill,
19 if(resp.length === 0) {
20 throw 'cannot load UTXO info.'
23 const result = resp[0]
24 const billAmount = result.amount
25 const billAsset = result.asset
26 const utxo = result.hash
28 if(amount > billAmount){
29 throw 'input amount must be smaller or equal to ' + billAmount +'.'
34 const args = contractArguments(amount, address)
36 input.push(spendUTXOAction(utxo))
37 input.push(spendWalletAction(amount, GetContractArgs().assetDeposited))
39 if(amount < billAmount){
40 output.push(controlProgramAction(amount, GetContractArgs().assetDeposited, GetContractArgs().profitProgram))
41 output.push(controlAddressAction(amount, billAsset, address))
42 output.push(controlProgramAction((BigNumber(billAmount).minus(BigNumber(amount))).toNumber(), billAsset, GetContractArgs().depositProgram))
44 output.push(controlProgramAction(amount, GetContractArgs().assetDeposited, GetContractArgs().profitProgram))
45 output.push(controlAddressAction(billAmount, billAsset, address))
48 window.bytom.advancedTransfer(account, input, output, GetContractArgs().gas*10000000, args, 1)
50 if(resp.action === 'reject'){
51 reject('user reject the request')
52 }else if(resp.action === 'success'){
53 updateUtxo({"hash": utxo})
56 "tx_id": resp.message.result.data.transaction_hash,
58 "asset": GetContractArgs().assetDeposited,
62 "tx_id": resp.message.result.data.transaction_hash,
64 "asset": GetContractArgs().assetBill,