@randombits/use-siwe
Version:
React hook and API endpoints that provide Sign In With Ethereum support
295 lines (287 loc) • 9.12 kB
TypeScript
import { PropsWithChildren } from 'react';
import * as _tanstack_react_query from '@tanstack/react-query';
import { UseQueryOptions } from '@tanstack/react-query';
import { SiweMessage } from 'siwe';
declare module "iron-session" {
interface IronSessionData {
address?: string | undefined;
nonce?: string | undefined;
}
}
type GetSessionResponse = {
authenticated: boolean;
address?: string;
nonce?: string;
};
type UseSiweOptions = {
baseUrl?: string;
};
type SiweProviderProps = PropsWithChildren & {
options?: UseSiweOptions;
};
declare const SiweProvider: ({ children, options }: SiweProviderProps) => JSX.Element;
declare const getSession: (options?: UseSiweOptions) => Promise<GetSessionResponse>;
declare const useSession: () => {
authenticated: boolean;
address?: string;
nonce?: string;
error: unknown;
isError: true;
isLoading: false;
isLoadingError: false;
isRefetchError: true;
isSuccess: false;
status: "error";
dataUpdatedAt: number;
errorUpdatedAt: number;
failureCount: number;
failureReason: unknown;
errorUpdateCount: number;
isFetched: boolean;
isFetchedAfterMount: boolean;
isFetching: boolean;
isInitialLoading: boolean;
isPaused: boolean;
isPlaceholderData: boolean;
isPreviousData: boolean;
isRefetching: boolean;
isStale: boolean;
refetch: <TPageData>(options?: _tanstack_react_query.RefetchOptions & _tanstack_react_query.RefetchQueryFilters<TPageData>) => Promise<_tanstack_react_query.QueryObserverResult<GetSessionResponse, unknown>>;
remove: () => void;
fetchStatus: _tanstack_react_query.FetchStatus;
} | {
authenticated: boolean;
address?: string;
nonce?: string;
error: null;
isError: false;
isLoading: false;
isLoadingError: false;
isRefetchError: false;
isSuccess: true;
status: "success";
dataUpdatedAt: number;
errorUpdatedAt: number;
failureCount: number;
failureReason: unknown;
errorUpdateCount: number;
isFetched: boolean;
isFetchedAfterMount: boolean;
isFetching: boolean;
isInitialLoading: boolean;
isPaused: boolean;
isPlaceholderData: boolean;
isPreviousData: boolean;
isRefetching: boolean;
isStale: boolean;
refetch: <TPageData>(options?: _tanstack_react_query.RefetchOptions & _tanstack_react_query.RefetchQueryFilters<TPageData>) => Promise<_tanstack_react_query.QueryObserverResult<GetSessionResponse, unknown>>;
remove: () => void;
fetchStatus: _tanstack_react_query.FetchStatus;
} | {
authenticated: boolean;
address?: string;
nonce?: string;
error: unknown;
isError: true;
isLoading: false;
isLoadingError: true;
isRefetchError: false;
isSuccess: false;
status: "error";
dataUpdatedAt: number;
errorUpdatedAt: number;
failureCount: number;
failureReason: unknown;
errorUpdateCount: number;
isFetched: boolean;
isFetchedAfterMount: boolean;
isFetching: boolean;
isInitialLoading: boolean;
isPaused: boolean;
isPlaceholderData: boolean;
isPreviousData: boolean;
isRefetching: boolean;
isStale: boolean;
refetch: <TPageData>(options?: _tanstack_react_query.RefetchOptions & _tanstack_react_query.RefetchQueryFilters<TPageData>) => Promise<_tanstack_react_query.QueryObserverResult<GetSessionResponse, unknown>>;
remove: () => void;
fetchStatus: _tanstack_react_query.FetchStatus;
} | {
authenticated: boolean;
address?: string;
nonce?: string;
error: null;
isError: false;
isLoading: true;
isLoadingError: false;
isRefetchError: false;
isSuccess: false;
status: "loading";
dataUpdatedAt: number;
errorUpdatedAt: number;
failureCount: number;
failureReason: unknown;
errorUpdateCount: number;
isFetched: boolean;
isFetchedAfterMount: boolean;
isFetching: boolean;
isInitialLoading: boolean;
isPaused: boolean;
isPlaceholderData: boolean;
isPreviousData: boolean;
isRefetching: boolean;
isStale: boolean;
refetch: <TPageData>(options?: _tanstack_react_query.RefetchOptions & _tanstack_react_query.RefetchQueryFilters<TPageData>) => Promise<_tanstack_react_query.QueryObserverResult<GetSessionResponse, unknown>>;
remove: () => void;
fetchStatus: _tanstack_react_query.FetchStatus;
};
type UseSignInOptions = Pick<UseQueryOptions<void>, "onSuccess" | "onError">;
type MessageArgs = {
address: string;
chainId: number;
nonce: string;
};
type VerifyArgs = {
message: SiweMessage;
signature: string;
};
declare const createMessage: (args: MessageArgs) => SiweMessage;
declare const getMessageBody: ({ message }: {
message: SiweMessage;
}) => string;
declare const verify: (args: VerifyArgs, options?: UseSiweOptions) => Promise<boolean>;
declare const useSignIn: ({ onSuccess, onError }?: UseSignInOptions) => {
signIn: _tanstack_react_query.UseMutateFunction<void, unknown, void, unknown>;
SignInAsync: _tanstack_react_query.UseMutateAsyncFunction<void, unknown, void, unknown>;
data: undefined;
error: null;
isError: false;
isIdle: true;
isLoading: false;
isSuccess: false;
status: "idle";
reset: () => void;
context: unknown;
failureCount: number;
failureReason: unknown;
isPaused: boolean;
variables: void;
} | {
signIn: _tanstack_react_query.UseMutateFunction<void, unknown, void, unknown>;
SignInAsync: _tanstack_react_query.UseMutateAsyncFunction<void, unknown, void, unknown>;
data: undefined;
error: null;
isError: false;
isIdle: false;
isLoading: true;
isSuccess: false;
status: "loading";
reset: () => void;
context: unknown;
failureCount: number;
failureReason: unknown;
isPaused: boolean;
variables: void;
} | {
signIn: _tanstack_react_query.UseMutateFunction<void, unknown, void, unknown>;
SignInAsync: _tanstack_react_query.UseMutateAsyncFunction<void, unknown, void, unknown>;
data: undefined;
error: unknown;
isError: true;
isIdle: false;
isLoading: false;
isSuccess: false;
status: "error";
reset: () => void;
context: unknown;
failureCount: number;
failureReason: unknown;
isPaused: boolean;
variables: void;
} | {
signIn: _tanstack_react_query.UseMutateFunction<void, unknown, void, unknown>;
SignInAsync: _tanstack_react_query.UseMutateAsyncFunction<void, unknown, void, unknown>;
data: void;
error: null;
isError: false;
isIdle: false;
isLoading: false;
isSuccess: true;
status: "success";
reset: () => void;
context: unknown;
failureCount: number;
failureReason: unknown;
isPaused: boolean;
variables: void;
};
type UseSignOutOptions = Pick<UseQueryOptions<void>, "onSuccess" | "onError">;
declare const signOut: (options?: UseSiweOptions) => Promise<void>;
declare const useSignOut: ({ onSuccess, onError }?: UseSignOutOptions) => {
signOut: _tanstack_react_query.UseMutateFunction<void, unknown, void, unknown>;
SignOutAsync: _tanstack_react_query.UseMutateAsyncFunction<void, unknown, void, unknown>;
data: undefined;
error: null;
isError: false;
isIdle: true;
isLoading: false;
isSuccess: false;
status: "idle";
reset: () => void;
context: unknown;
failureCount: number;
failureReason: unknown;
isPaused: boolean;
variables: void;
} | {
signOut: _tanstack_react_query.UseMutateFunction<void, unknown, void, unknown>;
SignOutAsync: _tanstack_react_query.UseMutateAsyncFunction<void, unknown, void, unknown>;
data: undefined;
error: null;
isError: false;
isIdle: false;
isLoading: true;
isSuccess: false;
status: "loading";
reset: () => void;
context: unknown;
failureCount: number;
failureReason: unknown;
isPaused: boolean;
variables: void;
} | {
signOut: _tanstack_react_query.UseMutateFunction<void, unknown, void, unknown>;
SignOutAsync: _tanstack_react_query.UseMutateAsyncFunction<void, unknown, void, unknown>;
data: undefined;
error: unknown;
isError: true;
isIdle: false;
isLoading: false;
isSuccess: false;
status: "error";
reset: () => void;
context: unknown;
failureCount: number;
failureReason: unknown;
isPaused: boolean;
variables: void;
} | {
signOut: _tanstack_react_query.UseMutateFunction<void, unknown, void, unknown>;
SignOutAsync: _tanstack_react_query.UseMutateAsyncFunction<void, unknown, void, unknown>;
data: void;
error: null;
isError: false;
isIdle: false;
isLoading: false;
isSuccess: true;
status: "success";
reset: () => void;
context: unknown;
failureCount: number;
failureReason: unknown;
isPaused: boolean;
variables: void;
};
declare const useOptions: () => {
baseUrl: string;
};
export { SiweProvider, UseSiweOptions, createMessage, getMessageBody, getSession, signOut, useOptions, useSession, useSignIn, useSignOut, verify };