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 >
</>
);