useSprinterTransfers
The useSprinterTransfers
hook provides a simplified interface for generating cross-chain transfer solutions and contract calls using the Sprinter Intent Engine. This hook wraps the following SDK methods:
getTransfer
: Single-hop token transfers across chains.getTransferWithHook
: Single-hop token transfers combined with a contract call on the destination chain.getPoolAssetOnDestination
: Aggregates token balances across multiple chains into a single destination.getPoolAssetOnDestinationWithHook
: Aggregates token balances and performs a contract call on the destination chain.
You can trigger any of these methods via the hook to fetch a cross-chain solution.
Usage
Example
import { useSprinterTransfers } from '@chainsafe/sprinter-react';
import React, { useEffect } from 'react';
function TransferComponent() {
const { solution, getPoolAssetOnDestination } = useSprinterTransfers();
useEffect(() => {
const settings = {
account: '0xYourAddress',
destinationChain: 11155111, // Sepolia Testnet
token: 'USDC',
amount: 1000000, // 1 USDC (smallest denomination)
sourceChains: [84532, 1993], // Optional: source chains to consider
};
getPoolAssetOnDestination(settings); // Fetch transfer solution when the component mounts
}, [getPoolAssetOnDestination]);
if (solution.loading) return <div>Loading transfer solution...</div>;
if (solution.error) return <div>Error fetching transfer solution: {solution.error}</div>;
return (
<div>
Transfer Solution: {JSON.stringify(solution.data)}
</div>
);
}
Return Value
The useSprinterTransfers
hook returns an object with the following properties:
-
solution
: An object containing:data
: The transfer solution, ornull
if not yet retrieved.loading
: A boolean indicating if the solution is being fetched.error
: A string containing the error message if the fetch fails.
-
getTransfer
: A function that generates a single-hop token transfer solution. -
getTransferWithHook
: A function that generates a single-hop token transfer combined with a contract call. -
getPoolAssetOnDestination
: A function that generates a solution to aggregate balances from multiple chains into a single destination. -
getPoolAssetOnDestinationWithHook
: A function that generates a solution to aggregate balances and execute a contract call on the destination chain.
Example Response
Here’s an example of what the solution.data
might look like after calling getPoolAssetOnDestination()
:
[
{
"sourceChain": 84532,
"destinationChain": 11155111,
"sourceTokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"destinationTokenAddress": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
"amount": "1000000",
"duration": 60000,
"fee": { "amount": "100000", "amountUSD": 0.1 },
"gasCost": { "amount": "200000", "amountUSD": 0.02 },
"tool": {
"name": "Sygma",
"logoURI": "https://sygma.com/logo.png"
},
"transaction": {
"from": "0xYourAddress",
"to": "0xBridgeContractAddress",
"value": "0",
"data": "0x...",
"gasPrice": "0x...",
"gasLimit": "0x..."
}
}
]
Parameters
Each method accepts a settings
parameter, which varies depending on the operation:
getTransfer
: See SDK Transfer Method Reference.getTransferWithHook
: See SDK Transfer with Contract Call Method Reference.getPoolAssetOnDestination
: See SDK Pool Asset Method Reference.getPoolAssetOnDestinationWithHook
: See SDK Pool Asset with Contract Call Method Reference.
Each method calls the Sprinter SDK's corresponding function and returns the intent-based solution for cross-chain transfers or contract calls.