@renegade-fi/react
Version:
React library for Renegade
61 lines (53 loc) • 1.74 kB
text/typescript
"use client";
import type { PayFeesErrorType } from "@renegade-fi/core";
import type { Evaluate } from "@renegade-fi/core";
import {
type PayFeesRequestData,
type PayFeesRequestMutate,
type PayFeesRequestMutateAsync,
type PayFeesRequestVariables,
payFeesRequestMutationOptions,
} from "@renegade-fi/core/query";
import { useMutation } from "@tanstack/react-query";
import type { ConfigParameter } from "../types/properties.js";
import type { UseMutationParameters, UseMutationReturnType } from "../utils/query.js";
import { useConfig } from "./useConfig.js";
export type UsePayFeesParameters<context = unknown> = Evaluate<
ConfigParameter & {
mutation?:
| UseMutationParameters<
PayFeesRequestData,
PayFeesErrorType,
PayFeesRequestVariables,
context
>
| undefined;
}
>;
export type UsePayFeesReturnType<context = unknown> = Evaluate<
UseMutationReturnType<
PayFeesRequestData,
PayFeesErrorType,
PayFeesRequestVariables,
context
> & {
payFees: PayFeesRequestMutate<context>;
payFeesAsync: PayFeesRequestMutateAsync<context>;
}
>;
export function usePayFees<context = unknown>(
parameters: UsePayFeesParameters<context> = {},
): UsePayFeesReturnType<context> {
const { mutation } = parameters;
const config = useConfig(parameters);
const mutationOptions = payFeesRequestMutationOptions(config);
const { mutate, mutateAsync, ...result } = useMutation({
...mutation,
...mutationOptions,
});
return {
...result,
payFees: mutate,
payFeesAsync: mutateAsync,
};
}