import {toNano, Address, beginCell} from '@ton/core'; import { UniversalWalletContract } from '../wrappers/UniversalWalletContract'; import { compile, NetworkProvider, UIProvider } from '@ton/blueprint'; import {promptAddress, promptAmount, promptBool, promptUrl} from '../wrappers/ui-utils'; import * as tweetnacl from 'tweetnacl-ts'; import {JettonWallet} from "@ton/ton"; export async function run(provider: NetworkProvider) { const ui = provider.ui(); const sender = provider.sender(); let walletAddress = await promptAddress('Please specify wallet address:', ui); let jettonWalletAddress = await promptAddress('Please specify jetton wallet address:', ui); let amountRaw = await promptAmount('Please specify amount:', ui); let amount = BigInt(amountRaw.split('.')[0]); let recipient = await promptAddress('Please specify recipient address:', ui); let dataCorrect = false; do { ui.write("Please verify data:\n") ui.write(`Wallet address:${walletAddress}\n\n`); ui.write(`Jetton Wallet address:${jettonWalletAddress}\n\n`); ui.write(`Amount:${amount}\n`); dataCorrect = await promptBool('Is everything ok?(y/n)', ['y','n'], ui); } while(!dataCorrect); const walletContract = UniversalWalletContract.createFromAddress(walletAddress); const walletContractProvider = provider.open(walletContract); await walletContractProvider.sendAdminProvideMessage(sender, toNano('0.02'), [ { msgMode: 1, rawMsg: beginCell() .storeUint(0x18, 6) .storeAddress(jettonWalletAddress) .storeCoins(toNano('0.05')) .storeUint(1, 1 + 4 + 4 + 64 + 32 + 1 + 1) .storeRef( beginCell() .storeUint(0xf8a7ea5, 32).storeUint(0, 64) // op, queryId .storeCoins(BigInt(amount)).storeAddress(recipient) .storeAddress(sender.address) .storeMaybeRef(null) .storeCoins(1n) .storeMaybeRef(null) .endCell() ) .endCell() } ]); }