@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
: `string[${string}]`
]: undefined
;
[key
: `function[${string}]`
]: undefined
;
[key
: `address[${string}]`
]: undefined
;
[key
: `bytes32[${string}]`
]: undefined
;
[key
: `uint256[${string}]`
]: undefined
;
[key
: `bytes[${string}]`
]: undefined
;
[key
: `uint96[${string}]`
]: undefined
;
[key
: `bool[${string}]`
]: undefined
;
[key
: `uint16[${string}]`
]: undefined
;
[key
: `bytes4[${string}]`
]: undefined
;
[key
: `bytes1[${string}]`
]: undefined
;
[key
: `bytes5[${string}]`
]: undefined
;
[key
: `bytes3[${string}]`
]: undefined
;
[key
: `bytes11[${string}]`
]: undefined
;
[key
: `bytes9[${string}]`
]: undefined
;
[key
: `bytes2[${string}]`
]: undefined
;
[key
: `bytes13[${string}]`
]: undefined
;
[key
: `bytes20[${string}]`
]: undefined
;
[key
: `bytes6[${string}]`
]: undefined
;
[key
: `bytes7[${string}]`
]: undefined
;
[key
: `bytes8[${string}]`
]: undefined
;
[key
: `bytes10[${string}]`
]: undefined
;
[key
: `bytes12[${string}]`
]: undefined
;
[key
: `bytes14[${string}]`
]: undefined
;
[key
: `bytes15[${string}]`
]: undefined
;
[key
: `bytes16[${string}]`
]: undefined
;
[key
: `bytes17[${string}]`
]: undefined
;
[key
: `bytes18[${string}]`
]: undefined
;
[key
: `bytes19[${string}]`
]: undefined
;
[key
: `bytes21[${string}]`
]: undefined
;
[key
: `bytes22[${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
: `int[${string}]`
]: undefined
;
[key
: `int32[${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
: `int88[${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
: `int200[${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
: `uint[${string}]`
]: undefined
;
[key
: `uint32[${string}]`
]: undefined
;
[key
: `uint8[${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
: `uint88[${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
: `uint200[${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
: `string[${string}]`
]: undefined
;
[key
: `function[${string}]`
]: undefined
;
[key
: `address[${string}]`
]: undefined
;
[key
: `bytes32[${string}]`
]: undefined
;
[key
: `uint256[${string}]`
]: undefined
;
[key
: `bytes[${string}]`
]: undefined
;
[key
: `uint96[${string}]`
]: undefined
;
[key
: `bool[${string}]`
]: undefined
;
[key
: `uint16[${string}]`
]: undefined
;
[key
: `bytes4[${string}]`
]: undefined
;
[key
: `bytes1[${string}]`
]: undefined
;
[key
: `bytes5[${string}]`
]: undefined
;
[key
: `bytes3[${string}]`
]: undefined
;
[key
: `bytes11[${string}]`
]: undefined
;
[key
: `bytes9[${string}]`
]: undefined
;
[key
: `bytes2[${string}]`
]: undefined
;
[key
: `bytes13[${string}]`
]: undefined
;
[key
: `bytes20[${string}]`
]: undefined
;
[key
: `bytes6[${string}]`
]: undefined
;
[key
: `bytes7[${string}]`
]: undefined
;
[key
: `bytes8[${string}]`
]: undefined
;
[key
: `bytes10[${string}]`
]: undefined
;
[key
: `bytes12[${string}]`
]: undefined
;
[key
: `bytes14[${string}]`
]: undefined
;
[key
: `bytes15[${string}]`
]: undefined
;
[key
: `bytes16[${string}]`
]: undefined
;
[key
: `bytes17[${string}]`
]: undefined
;
[key
: `bytes18[${string}]`
]: undefined
;
[key
: `bytes19[${string}]`
]: undefined
;
[key
: `bytes21[${string}]`
]: undefined
;
[key
: `bytes22[${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
: `int[${string}]`
]: undefined
;
[key
: `int32[${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
: `int88[${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
: `int200[${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
: `uint[${string}]`
]: undefined
;
[key
: `uint32[${string}]`
]: undefined
;
[key
: `uint8[${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
: `uint88[${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
: `uint200[${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
>