#!/usr/bin/fift -s "TonUtil.fif" include "GetOpt.fif" include { show-options-help 1 halt } : usage "" =: comment // comment for simple transfers true =: allow-bounce false =: force-bounce 3 =: send-mode // mode for SENDRAWMSG: +1 - sender pays fees, +2 - ignore errors 60 =: timeout // external message expires in 60 seconds variable extra-currencies { extra-currencies @ cc+ extra-currencies ! } : extra-cc+! begin-options " [-x *] [-n|-b] [-t] [-B ] [-C ] [-I ] []" +cr +tab +"Creates a request to advanced wallet created by new-wallet-v3.fif, with private key loaded from file .pk " +"and address from .addr, and saves it into .boc ('wallet-query.boc' by default)" disable-digit-options generic-help-setopt "n" "--no-bounce" { false =: allow-bounce } short-long-option "Clears bounce flag" option-help "b" "--force-bounce" { true =: force-bounce } short-long-option "Forces bounce flag" option-help "x" "--extra" { $>xcc extra-cc+! } short-long-option-arg "Indicates the amount of extra currencies to be transfered" option-help "t" "--timeout" { parse-int =: timeout } short-long-option-arg "Sets expiration timeout in seconds (" timeout (.) $+ +" by default)" option-help "B" "--body" { =: body-boc-file } short-long-option-arg "Sets the payload of the transfer message" option-help "C" "--comment" { =: comment } short-long-option-arg "Sets the comment to be sent in the transfer message" option-help "I" "--with-init" { =: init-file } short-long-option-arg "Indicates filename with BoC containing StateInit for internal message" option-help "m" "--mode" { parse-int =: send-mode } short-long-option-arg "Sets transfer mode (0..255) for SENDRAWMSG (" send-mode (.) $+ +" by default)" option-help "h" "--help" { usage } short-long-option "Shows a help message" option-help parse-options $# dup 5 < swap 6 > or ' usage if 6 :$1..n true constant bounce $1 =: file-base $2 bounce parse-load-address force-bounce or allow-bounce and =: bounce 2=: dest_addr $3 parse-int =: subwallet_id $4 parse-int =: seqno $5 $>cc extra-cc+! extra-currencies @ 2=: amount $6 "wallet-query" replace-if-null =: savefile subwallet_id (.) 1 ' $+ does : +subwallet file-base +subwallet +".addr" dup file-exists? { drop file-base +".addr" } ifnot load-address 2dup 2constant wallet_addr ."Source wallet address = " 2dup .addr cr 6 .Addr cr file-base +".pk" load-keypair nip constant wallet_pk def? body-boc-file { @' body-boc-file file>B B>boc } { comment simple-transfer-body } cond constant body-cell def? init-file { @' init-file file>B B>boc dup ."signing message: " dup ."resulting external message: " B dup Bx. cr savefile +".boc" tuck B>file ."Query expires in " timeout . ."seconds" cr ."(Saved to file " type .")" cr