import { JennieModule } from './JennieModule' import { bcs, Coins, MsgDelegate, MsgExecute, MsgWithdrawDelegatorReward, } from '@initia/initia.js' import { validatorArray } from './validatorArray' import { generateRandomString, getAxiosClient } from './utils' export abstract class InitiaTask extends JennieModule { protected constructor(mnemonic: string, useProxy: boolean = false) { super(mnemonic, useProxy) } //done async swapScript() { // const swaped = await this.checkUsdcSwaped() // if (swaped) { // console.log(`swaped`) // return `done` // } // ;[ // '2/BsSK85hOxtmuipqn27C7HnhKqbjEpWga9mDPhVjX0=', // 'jkczvavPfUr8PRTw3UbJv1L7D86eS5lsk54ZW4vIkdk=', // 'QEtMAAAAAAA=', // 'AbThSwAAAAAA', // ] // const amount = bcs // .u64() // type // .parse(Uint8Array.from(Buffer.from('QEtMAAAAAAA=', 'base64'))) // console.log(amount) // return `done` const randomNum = this.randomAmount(10000, 200000) const msg = new MsgExecute( this.key.accAddress, '0x1', 'dex', 'swap_script', [], [ '2/BsSK85hOxtmuipqn27C7HnhKqbjEpWga9mDPhVjX0=', //liquidityTOken 'jkczvavPfUr8PRTw3UbJv1L7D86eS5lsk54ZW4vIkdk=', //offerCoin bcs.u64().serialize(randomNum).toBase64(), //offerAmount bcs.option(bcs.u64()).serialize(this.randomAmount(0, 2)).toBase64(), ], ) return await this.broadcast(msg) } async swapTiaScript() { //["sTSuZ4bxDvdClOYn0lGbY7fHQqZzX5hoKSn+qahHRNI=","jkczvavPfUr8PRTw3UbJv1L7D86eS5lsk54ZW4vIkdk=","QEIPAAAAAAA=","AaY5AQAAAAAA"] const randomNum = this.randomAmount(5000000, 10000000) const msg = new MsgExecute( this.key.accAddress, '0x1', 'dex', 'swap_script', [], [ 'sTSuZ4bxDvdClOYn0lGbY7fHQqZzX5hoKSn+qahHRNI=', //liquidityTOken 'jkczvavPfUr8PRTw3UbJv1L7D86eS5lsk54ZW4vIkdk=', //offerCoin bcs.u64().serialize(randomNum).toBase64(), //offerAmount bcs .option(bcs.u64()) .serialize(this.randomAmount(1000, 2000)) .toBase64(), ], ) return await this.broadcast(msg) } async swapEthScript() { // const swaped = await this.checkEthSwaped() // if (swaped) { // console.log(`swaped`) // return `done` // } // ["orDTyOU+N57eMfOjYf8CcW1Q7FPGtluMSKgdWwZUggA=","jkczvavPfUr8PRTw3UbJv1L7D86eS5lsk54ZW4vIkdk=","QEIPAAAAAAA=","AeYAAAAAAAAA"] const msg = new MsgExecute( this.key.accAddress, '0x1', 'dex', 'swap_script', [], [ 'orDTyOU+N57eMfOjYf8CcW1Q7FPGtluMSKgdWwZUggA=', //liquidityTOken 'jkczvavPfUr8PRTw3UbJv1L7D86eS5lsk54ZW4vIkdk=', //offerCoin 'QEIPAAAAAAA=', //offerAmount bcs.option(bcs.u64()).serialize(this.randomAmount(0, 100)).toBase64(), ], ) return await this.broadcast(msg) } async nameRegister() { const moduleAddress = '0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a' const moduleName = 'usernames' const fnName = 'get_name_from_address' const viewResult = await this.lcd.move.viewFunction( moduleAddress, moduleName, fnName, [], [bcs.address().serialize(this.key.accAddress).toBase64()], ) console.log(viewResult) if (viewResult !== null) { return `done` } const random = generateRandomString(10) const arg = bcs.string().serialize(random).toBase64() const msgs = [] msgs.push( new MsgExecute( this.key.accAddress, '0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a', 'usernames', 'register_domain', [], [arg, '4IfhAQAAAAA='], ), ) msgs.push( new MsgExecute( this.key.accAddress, '0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a', 'usernames', 'set_name', [], [arg], ), ) return await this.broadcast(msgs) } async stakeSingle() { const res = await this.getDelegationInfo() const flag = res.some((item: any) => { const coin: Coins = item.balance const data = coin.toData() return ( data[0].denom === 'move/dbf06c48af3984ec6d9ae8a9aa7dbb0bb1e784aa9b8c4a5681af660cf8558d7d' ) }) if (flag) { return `done` } const usdcAmount = await this.getUsdcAmount() if (Number(usdcAmount) < 1000) { await this.swapScript() return `needMint` } const randomValidator = validatorArray[Math.floor(Math.random() * validatorArray.length)] // console.log(bcs.u64().serialize(usdcAmount).toBase64()) // console.log(bcs.string().serialize(randomValidator).toBase64()) //["sTSuZ4bxDvdClOYn0lGbY7fHQqZzX5hoKSn+qahHRNI=","rM6zskU5Kv4INGt5TPXE/4Xn6ajIL8r1ESrp1kulfMs=","QJwAAAAAAAA=","AQ5IAwAAAAAA","MmluaXR2YWxvcGVyMTlqNmF3M2xxczBxaDk3Zjl0bHZodmdldWZjcjgzYTN3aDBzeHRu"] const msg = new MsgExecute( this.key.accAddress, '0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a', 'dex_utils', 'single_asset_provide_stake', [], [ '2/BsSK85hOxtmuipqn27C7HnhKqbjEpWga9mDPhVjX0=', 'KYJNlS4DVJD651Z97qXxW1BKaPpzYQBjwWCrH6h91gk=', bcs .u64() .serialize(Math.floor(Number(usdcAmount) / 2)) .toBase64(), //amount bcs .option(bcs.u64()) .serialize(this.randomAmount(1000, 10000)) .toBase64(), bcs.string().serialize(randomValidator).toBase64(), //validator ], ) return await this.broadcast(msg) } async stakeTiaSingle() { const res = await this.getDelegationInfo() const flag = res.some((item: any) => { const coin: Coins = item.balance const data = coin.toData() return ( data[0].denom === 'move/b134ae6786f10ef74294e627d2519b63b7c742a6735f98682929fea9a84744d2' ) }) if (flag) { return `done` } //move/b134ae6786f10ef74294e627d2519b63b7c742a6735f98682929fea9a84744d2 const usdcAmount = await this.getTiaAmount() if (Number(usdcAmount) < 1000) { await this.swapTiaScript() return `needMint` } const randomValidator = validatorArray[Math.floor(Math.random() * validatorArray.length)] // console.log(bcs.u64().serialize(usdcAmount).toBase64()) // console.log(bcs.string().serialize(randomValidator).toBase64()) //["sTSuZ4bxDvdClOYn0lGbY7fHQqZzX5hoKSn+qahHRNI=","rM6zskU5Kv4INGt5TPXE/4Xn6ajIL8r1ESrp1kulfMs=","QJwAAAAAAAA=","AQ5IAwAAAAAA","MmluaXR2YWxvcGVyMTlqNmF3M2xxczBxaDk3Zjl0bHZodmdldWZjcjgzYTN3aDBzeHRu"] const msg = new MsgExecute( this.key.accAddress, '0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a', 'dex_utils', 'single_asset_provide_stake', [], [ 'sTSuZ4bxDvdClOYn0lGbY7fHQqZzX5hoKSn+qahHRNI=', 'rM6zskU5Kv4INGt5TPXE/4Xn6ajIL8r1ESrp1kulfMs=', bcs .u64() .serialize(Math.floor(Number(usdcAmount) / 2)) .toBase64(), //amount bcs .option(bcs.u64()) .serialize(this.randomAmount(1000, 10000)) .toBase64(), bcs.string().serialize(randomValidator).toBase64(), //validator ], ) return await this.broadcast(msg) } async stakeEthSingle() { const res = await this.getDelegationInfo() const flag = res.some((item: any) => { const coin: Coins = item.balance const data = coin.toData() return ( data[0].denom === 'move/a2b0d3c8e53e379ede31f3a361ff02716d50ec53c6b65b8c48a81d5b06548200' ) }) if (flag) { return `done` } const usdcAmount = await this.getEthAmount() if (Number(usdcAmount) < 100) { await this.swapEthScript() return `needMint` } const randomValidator = validatorArray[Math.floor(Math.random() * validatorArray.length)] // console.log(bcs.u64().serialize(usdcAmount).toBase64()) // console.log(bcs.string().serialize(randomValidator).toBase64()) // ["orDTyOU+N57eMfOjYf8CcW1Q7FPGtluMSKgdWwZUggA=","vg74SeQlyomDDB/w+YT1sLUStwyralrilMYlXD7kzQw=","ZAAAAAAAAAA=","AUy6AgAAAAAA","MmluaXR2YWxvcGVyMWs0N3kyM3Jla3RnY2FueTk3bDk3cWwzY2x1MzZ4ajJjY2dra2x1"] const msg = new MsgExecute( this.key.accAddress, '0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a', 'dex_utils', 'single_asset_provide_stake', [], [ 'orDTyOU+N57eMfOjYf8CcW1Q7FPGtluMSKgdWwZUggA=', 'vg74SeQlyomDDB/w+YT1sLUStwyralrilMYlXD7kzQw=', bcs .u64() .serialize(Math.floor(Number(usdcAmount) / 2)) .toBase64(), //amount bcs.option(bcs.u64()).serialize(this.randomAmount(0, 10)).toBase64(), bcs.string().serialize(randomValidator).toBase64(), //validator ], ) return await this.broadcast(msg) } async getDelegationInfo() { const data = await this.lcd.mstaking.delegations(this.key.accAddress) // const data = await axiosClient.get( // `https://b545809c-5562-4e60-b5a1-22e83df57748.initiation-1.mesa-rest.ue1-prod.newmetric.xyz/initia/mstaking/v1/delegations/${this.key.accAddress}`, // ) // console.log(JSON.stringify(response)) return data[0] // return data.data.delegation_responses } async stakeInit() { const res = await this.getDelegationInfo() const flag = res.some((item: any) => { return item.balance[0].denom === 'uinit' }) if (flag) { return `done` } const randomValidator = validatorArray[Math.floor(Math.random() * validatorArray.length)] const msg = new MsgDelegate( this.key.accAddress, // delegator address randomValidator, // validator's operator addres '100000uinit', // delegate amount ) return await this.broadcast(msg) } async claimReward() { const axiosClient = getAxiosClient(true) // const res = await axiosClient.get('https://api.ipify.org?format=json') // console.log(res.data.ip) // return `` const data = await axiosClient.get( `https://b545809c-5562-4e60-b5a1-22e83df57748.initiation-1.mesa-rest.ue1-prod.newmetric.xyz/initia/mstaking/v1/delegations/${this.key.accAddress}`, ) const response = data.data.delegation_responses console.log(response) if (response.length === 0) { return `done` } // return false const msgs = [] response.forEach((item: any) => { const msg = new MsgWithdrawDelegatorReward( this.key.accAddress, item.delegation.validator_address, ) msgs.push(msg) }) return await this.broadcast(msgs) } }