import { beginCell, internal, SendMode, storeMessageRelaxed, TonClient, WalletContractV4 } from '@ton/ton'
const walletId = 'wa-6lbfv-9esgj-xxxxxxxxxxxxxxxx'
const wallet = await dfnsClient.wallets.getWallet({ walletId })
const client = new TonClient({ endpoint })
const contract = client.open(
WalletContractV4.create({
workchain: 0,
publicKey: Buffer.from(wallet.signingKey.publicKey, 'hex'),
})
)
const seqno = await opened.getSeqno()
const builder = beginCell().storeUint(contract.walletId, 32)
if (seqno === 0) {
for (let i = 0; i < 32; i++) {
builder.storeBit(1)
}
} else {
builder.storeUint(Math.floor(Date.now() / 1e3) + 60, 32)
}
builder.storeUint(seqno, 32)
builder.storeUint(0, 8)
builder.storeUint(SendMode.PAY_GAS_SEPARATELY, 8)
const message = internal({
value: '1',
to: '0QDXET3_xkWbJwXv16hU402QY3hS3cCelF5Ax3cvUpEbzG5A',
body: 'Dfns SDK Example',
})
const cell = builder.storeRef(beginCell().store(storeMessageRelaxed(message))).endCell()
const res = await dfnsClient.wallets.generateSignature({
walletId,
body: {
kind: 'Message',
message: `0x${cell.toBoc().toString('hex')}`,
},
})