52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
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()
|
|
}
|
|
]);
|
|
}
|
|
|