@ecp.eth/sdk / comments/react / useGaslessTransaction
Function: useGaslessTransaction()
function useGaslessTransaction<TVariables, TReturnValue, TInputVariables, TSignTypedDataParams>(props): UseMutationResult<TReturnValue, Error, TInputVariables, unknown>;Defined in: packages/sdk/src/comments/react/hooks.ts:20
A hook for repeat gasless transaction pattern
Gasless transaction typically requires 3 steps:
- prepare typed data to be passed to
signTypedData, typically this is also created from server side with an app signature. - sign typed data on client side
- send the dual signed data to server
This hook abstracts these steps and help with the repetition of the pattern.
Type Parameters
TVariables
TVariables extends undefined | object
TReturnValue
TReturnValue
TInputVariables
TInputVariables = void
TSignTypedDataParams
TSignTypedDataParams extends {
account?: `0x${string}` | Account;
connector?: Connector;
domain?: {
chainId?: number | bigint;
name?: string;
salt?: `0x${string}`;
verifyingContract?: `0x${string}`;
version?: string;
};
message: Record<string, unknown>;
primaryType: string;
types: {
[key: string]: readonly TypedDataParameter[];
[key: `address[${string}]`]: undefined;
[key: `bool[${string}]`]: undefined;
[key: `string[${string}]`]: undefined;
[key: `bytes[${string}]`]: undefined;
[key: `int[${string}]`]: undefined;
[key: `uint[${string}]`]: undefined;
[key: `function[${string}]`]: undefined;
[key: `bytes32[${string}]`]: undefined;
[key: `uint256[${string}]`]: undefined;
[key: `uint8[${string}]`]: undefined;
[key: `uint88[${string}]`]: undefined;
[key: `uint96[${string}]`]: undefined;
[key: `uint16[${string}]`]: undefined;
[key: `bytes4[${string}]`]: undefined;
[key: `bytes1[${string}]`]: undefined;
[key: `bytes2[${string}]`]: undefined;
[key: `bytes6[${string}]`]: undefined;
[key: `bytes5[${string}]`]: undefined;
[key: `bytes3[${string}]`]: undefined;
[key: `bytes10[${string}]`]: undefined;
[key: `bytes9[${string}]`]: undefined;
[key: `bytes11[${string}]`]: undefined;
[key: `bytes12[${string}]`]: undefined;
[key: `bytes20[${string}]`]: undefined;
[key: `bytes18[${string}]`]: undefined;
[key: `bytes22[${string}]`]: undefined;
[key: `bytes7[${string}]`]: undefined;
[key: `bytes8[${string}]`]: undefined;
[key: `bytes13[${string}]`]: undefined;
[key: `bytes14[${string}]`]: undefined;
[key: `bytes15[${string}]`]: undefined;
[key: `bytes16[${string}]`]: undefined;
[key: `bytes17[${string}]`]: undefined;
[key: `bytes19[${string}]`]: undefined;
[key: `bytes21[${string}]`]: undefined;
[key: `bytes23[${string}]`]: undefined;
[key: `bytes24[${string}]`]: undefined;
[key: `bytes25[${string}]`]: undefined;
[key: `bytes26[${string}]`]: undefined;
[key: `bytes27[${string}]`]: undefined;
[key: `bytes28[${string}]`]: undefined;
[key: `bytes29[${string}]`]: undefined;
[key: `bytes30[${string}]`]: undefined;
[key: `bytes31[${string}]`]: undefined;
[key: `int88[${string}]`]: undefined;
[key: `int32[${string}]`]: undefined;
[key: `int200[${string}]`]: undefined;
[key: `int8[${string}]`]: undefined;
[key: `int16[${string}]`]: undefined;
[key: `int24[${string}]`]: undefined;
[key: `int40[${string}]`]: undefined;
[key: `int48[${string}]`]: undefined;
[key: `int56[${string}]`]: undefined;
[key: `int64[${string}]`]: undefined;
[key: `int72[${string}]`]: undefined;
[key: `int80[${string}]`]: undefined;
[key: `int96[${string}]`]: undefined;
[key: `int104[${string}]`]: undefined;
[key: `int112[${string}]`]: undefined;
[key: `int120[${string}]`]: undefined;
[key: `int128[${string}]`]: undefined;
[key: `int136[${string}]`]: undefined;
[key: `int144[${string}]`]: undefined;
[key: `int152[${string}]`]: undefined;
[key: `int160[${string}]`]: undefined;
[key: `int168[${string}]`]: undefined;
[key: `int176[${string}]`]: undefined;
[key: `int184[${string}]`]: undefined;
[key: `int192[${string}]`]: undefined;
[key: `int208[${string}]`]: undefined;
[key: `int216[${string}]`]: undefined;
[key: `int224[${string}]`]: undefined;
[key: `int232[${string}]`]: undefined;
[key: `int240[${string}]`]: undefined;
[key: `int248[${string}]`]: undefined;
[key: `int256[${string}]`]: undefined;
[key: `uint32[${string}]`]: undefined;
[key: `uint200[${string}]`]: undefined;
[key: `uint24[${string}]`]: undefined;
[key: `uint40[${string}]`]: undefined;
[key: `uint48[${string}]`]: undefined;
[key: `uint56[${string}]`]: undefined;
[key: `uint64[${string}]`]: undefined;
[key: `uint72[${string}]`]: undefined;
[key: `uint80[${string}]`]: undefined;
[key: `uint104[${string}]`]: undefined;
[key: `uint112[${string}]`]: undefined;
[key: `uint120[${string}]`]: undefined;
[key: `uint128[${string}]`]: undefined;
[key: `uint136[${string}]`]: undefined;
[key: `uint144[${string}]`]: undefined;
[key: `uint152[${string}]`]: undefined;
[key: `uint160[${string}]`]: undefined;
[key: `uint168[${string}]`]: undefined;
[key: `uint176[${string}]`]: undefined;
[key: `uint184[${string}]`]: undefined;
[key: `uint192[${string}]`]: undefined;
[key: `uint208[${string}]`]: undefined;
[key: `uint216[${string}]`]: undefined;
[key: `uint224[${string}]`]: undefined;
[key: `uint232[${string}]`]: undefined;
[key: `uint240[${string}]`]: undefined;
[key: `uint248[${string}]`]: undefined;
address?: undefined;
bool?: undefined;
bytes?: undefined;
bytes1?: undefined;
bytes10?: undefined;
bytes11?: undefined;
bytes12?: undefined;
bytes13?: undefined;
bytes14?: undefined;
bytes15?: undefined;
bytes16?: undefined;
bytes17?: undefined;
bytes18?: undefined;
bytes19?: undefined;
bytes2?: undefined;
bytes20?: undefined;
bytes21?: undefined;
bytes22?: undefined;
bytes23?: undefined;
bytes24?: undefined;
bytes25?: undefined;
bytes26?: undefined;
bytes27?: undefined;
bytes28?: undefined;
bytes29?: undefined;
bytes3?: undefined;
bytes30?: undefined;
bytes31?: undefined;
bytes32?: undefined;
bytes4?: undefined;
bytes5?: undefined;
bytes6?: undefined;
bytes7?: undefined;
bytes8?: undefined;
bytes9?: undefined;
int104?: undefined;
int112?: undefined;
int120?: undefined;
int128?: undefined;
int136?: undefined;
int144?: undefined;
int152?: undefined;
int16?: undefined;
int160?: undefined;
int168?: undefined;
int176?: undefined;
int184?: undefined;
int192?: undefined;
int200?: undefined;
int208?: undefined;
int216?: undefined;
int224?: undefined;
int232?: undefined;
int24?: undefined;
int240?: undefined;
int248?: undefined;
int256?: undefined;
int32?: undefined;
int40?: undefined;
int48?: undefined;
int56?: undefined;
int64?: undefined;
int72?: undefined;
int8?: undefined;
int80?: undefined;
int88?: undefined;
int96?: undefined;
string?: undefined;
uint104?: undefined;
uint112?: undefined;
uint120?: undefined;
uint128?: undefined;
uint136?: undefined;
uint144?: undefined;
uint152?: undefined;
uint16?: undefined;
uint160?: undefined;
uint168?: undefined;
uint176?: undefined;
uint184?: undefined;
uint192?: undefined;
uint200?: undefined;
uint208?: undefined;
uint216?: undefined;
uint224?: undefined;
uint232?: undefined;
uint24?: undefined;
uint240?: undefined;
uint248?: undefined;
uint256?: undefined;
uint32?: undefined;
uint40?: undefined;
uint48?: undefined;
uint56?: undefined;
uint64?: undefined;
uint72?: undefined;
uint8?: undefined;
uint80?: undefined;
uint88?: undefined;
uint96?: undefined;
};
} = {
account?: `0x${string}` | Account;
connector?: Connector;
domain?: {
chainId?: number | bigint;
name?: string;
salt?: `0x${string}`;
verifyingContract?: `0x${string}`;
version?: string;
};
message: Record<string, unknown>;
primaryType: string;
types: {
[key: string]: readonly TypedDataParameter[];
[key: `address[${string}]`]: undefined;
[key: `bool[${string}]`]: undefined;
[key: `string[${string}]`]: undefined;
[key: `bytes[${string}]`]: undefined;
[key: `int[${string}]`]: undefined;
[key: `uint[${string}]`]: undefined;
[key: `function[${string}]`]: undefined;
[key: `bytes32[${string}]`]: undefined;
[key: `uint256[${string}]`]: undefined;
[key: `uint8[${string}]`]: undefined;
[key: `uint88[${string}]`]: undefined;
[key: `uint96[${string}]`]: undefined;
[key: `uint16[${string}]`]: undefined;
[key: `bytes4[${string}]`]: undefined;
[key: `bytes1[${string}]`]: undefined;
[key: `bytes2[${string}]`]: undefined;
[key: `bytes6[${string}]`]: undefined;
[key: `bytes5[${string}]`]: undefined;
[key: `bytes3[${string}]`]: undefined;
[key: `bytes10[${string}]`]: undefined;
[key: `bytes9[${string}]`]: undefined;
[key: `bytes11[${string}]`]: undefined;
[key: `bytes12[${string}]`]: undefined;
[key: `bytes20[${string}]`]: undefined;
[key: `bytes18[${string}]`]: undefined;
[key: `bytes22[${string}]`]: undefined;
[key: `bytes7[${string}]`]: undefined;
[key: `bytes8[${string}]`]: undefined;
[key: `bytes13[${string}]`]: undefined;
[key: `bytes14[${string}]`]: undefined;
[key: `bytes15[${string}]`]: undefined;
[key: `bytes16[${string}]`]: undefined;
[key: `bytes17[${string}]`]: undefined;
[key: `bytes19[${string}]`]: undefined;
[key: `bytes21[${string}]`]: undefined;
[key: `bytes23[${string}]`]: undefined;
[key: `bytes24[${string}]`]: undefined;
[key: `bytes25[${string}]`]: undefined;
[key: `bytes26[${string}]`]: undefined;
[key: `bytes27[${string}]`]: undefined;
[key: `bytes28[${string}]`]: undefined;
[key: `bytes29[${string}]`]: undefined;
[key: `bytes30[${string}]`]: undefined;
[key: `bytes31[${string}]`]: undefined;
[key: `int88[${string}]`]: undefined;
[key: `int32[${string}]`]: undefined;
[key: `int200[${string}]`]: undefined;
[key: `int8[${string}]`]: undefined;
[key: `int16[${string}]`]: undefined;
[key: `int24[${string}]`]: undefined;
[key: `int40[${string}]`]: undefined;
[key: `int48[${string}]`]: undefined;
[key: `int56[${string}]`]: undefined;
[key: `int64[${string}]`]: undefined;
[key: `int72[${string}]`]: undefined;
[key: `int80[${string}]`]: undefined;
[key: `int96[${string}]`]: undefined;
[key: `int104[${string}]`]: undefined;
[key: `int112[${string}]`]: undefined;
[key: `int120[${string}]`]: undefined;
[key: `int128[${string}]`]: undefined;
[key: `int136[${string}]`]: undefined;
[key: `int144[${string}]`]: undefined;
[key: `int152[${string}]`]: undefined;
[key: `int160[${string}]`]: undefined;
[key: `int168[${string}]`]: undefined;
[key: `int176[${string}]`]: undefined;
[key: `int184[${string}]`]: undefined;
[key: `int192[${string}]`]: undefined;
[key: `int208[${string}]`]: undefined;
[key: `int216[${string}]`]: undefined;
[key: `int224[${string}]`]: undefined;
[key: `int232[${string}]`]: undefined;
[key: `int240[${string}]`]: undefined;
[key: `int248[${string}]`]: undefined;
[key: `int256[${string}]`]: undefined;
[key: `uint32[${string}]`]: undefined;
[key: `uint200[${string}]`]: undefined;
[key: `uint24[${string}]`]: undefined;
[key: `uint40[${string}]`]: undefined;
[key: `uint48[${string}]`]: undefined;
[key: `uint56[${string}]`]: undefined;
[key: `uint64[${string}]`]: undefined;
[key: `uint72[${string}]`]: undefined;
[key: `uint80[${string}]`]: undefined;
[key: `uint104[${string}]`]: undefined;
[key: `uint112[${string}]`]: undefined;
[key: `uint120[${string}]`]: undefined;
[key: `uint128[${string}]`]: undefined;
[key: `uint136[${string}]`]: undefined;
[key: `uint144[${string}]`]: undefined;
[key: `uint152[${string}]`]: undefined;
[key: `uint160[${string}]`]: undefined;
[key: `uint168[${string}]`]: undefined;
[key: `uint176[${string}]`]: undefined;
[key: `uint184[${string}]`]: undefined;
[key: `uint192[${string}]`]: undefined;
[key: `uint208[${string}]`]: undefined;
[key: `uint216[${string}]`]: undefined;
[key: `uint224[${string}]`]: undefined;
[key: `uint232[${string}]`]: undefined;
[key: `uint240[${string}]`]: undefined;
[key: `uint248[${string}]`]: undefined;
address?: undefined;
bool?: undefined;
bytes?: undefined;
bytes1?: undefined;
bytes10?: undefined;
bytes11?: undefined;
bytes12?: undefined;
bytes13?: undefined;
bytes14?: undefined;
bytes15?: undefined;
bytes16?: undefined;
bytes17?: undefined;
bytes18?: undefined;
bytes19?: undefined;
bytes2?: undefined;
bytes20?: undefined;
bytes21?: undefined;
bytes22?: undefined;
bytes23?: undefined;
bytes24?: undefined;
bytes25?: undefined;
bytes26?: undefined;
bytes27?: undefined;
bytes28?: undefined;
bytes29?: undefined;
bytes3?: undefined;
bytes30?: undefined;
bytes31?: undefined;
bytes32?: undefined;
bytes4?: undefined;
bytes5?: undefined;
bytes6?: undefined;
bytes7?: undefined;
bytes8?: undefined;
bytes9?: undefined;
int104?: undefined;
int112?: undefined;
int120?: undefined;
int128?: undefined;
int136?: undefined;
int144?: undefined;
int152?: undefined;
int16?: undefined;
int160?: undefined;
int168?: undefined;
int176?: undefined;
int184?: undefined;
int192?: undefined;
int200?: undefined;
int208?: undefined;
int216?: undefined;
int224?: undefined;
int232?: undefined;
int24?: undefined;
int240?: undefined;
int248?: undefined;
int256?: undefined;
int32?: undefined;
int40?: undefined;
int48?: undefined;
int56?: undefined;
int64?: undefined;
int72?: undefined;
int8?: undefined;
int80?: undefined;
int88?: undefined;
int96?: undefined;
string?: undefined;
uint104?: undefined;
uint112?: undefined;
uint120?: undefined;
uint128?: undefined;
uint136?: undefined;
uint144?: undefined;
uint152?: undefined;
uint16?: undefined;
uint160?: undefined;
uint168?: undefined;
uint176?: undefined;
uint184?: undefined;
uint192?: undefined;
uint200?: undefined;
uint208?: undefined;
uint216?: undefined;
uint224?: undefined;
uint232?: undefined;
uint24?: undefined;
uint240?: undefined;
uint248?: undefined;
uint256?: undefined;
uint32?: undefined;
uint40?: undefined;
uint48?: undefined;
uint56?: undefined;
uint64?: undefined;
uint72?: undefined;
uint8?: undefined;
uint80?: undefined;
uint88?: undefined;
uint96?: undefined;
};
}
Parameters
props
prepareSignTypedDataParams
(variables) => Promise<
| TSignTypedDataParams
| {
signTypedDataParams: TSignTypedDataParams;
variables: TVariables;
}>
sendSignedData
(args) => Promise<TReturnValue>
signTypedData?
(signTypedDataParams) => Promise<`0x${string}`>
Returns
UseMutationResult<TReturnValue, Error, TInputVariables, unknown>