The example below shows how to transfer a token to a wallet address on a Root Network Collection, but minting using the fee proxy to pay for the gas with a chosen token.
Copy import { useAuth , useFutureverseSigner } from '@futureverse/auth-react' ;
import { TransactionBuilder } from '@futureverse/transact' ;
import { useTrnApi } from 'providers/TRNProvider' ;
const { userSession } = useAuth ();
const [ builder , setBuilder ] = useState ();
const signer = useFutureverseSigner ();
const { trnApi } = useTrnApi ();
const collectionId = '709732' ;
const triggerInit = useCallback ( async () => {
if ( ! trnApi || ! signer || ! userSession) {
return null ;
}
const nftBuilder = await TransactionBuilder.nft(trnApi, signer, userSession.eoa, collectionId).transfer({ destinationAddress: userSession?.futurepass, amount: 1 }).addFeeProxy({ assetId: ROOT_TOKEN_ID, slippage: 5 });
setBuilder (nftBuilder);
} , [trnApi , signer , userSession]);
const signExtrinsic = useCallback ( async () => {
if (builder) {
const result = await builder ?.signAndSend ({ onSign , onSend });
setResult (result as ExtrinsicResult );
}
} , [builder , onSend , onSign , toSign]);
return (
<>
< button
onClick = {() => {
triggerInit ();
}}
>
Mint 1 Nft
</ button >
< button
onClick = {() => {
signExtrinsic ();
}}
>
Sign & Send
</ button >
</>
);