better-near-auth
Version:
Sign in with NEAR (SIWN) plugin for Better Auth
83 lines • 4.45 kB
TypeScript
import { TransactionBuilder } from "near-kit";
import type { Near as NearType } from "near-kit";
import type { BetterAuthClientPlugin, BetterAuthClientOptions, BetterFetch, BetterFetchResponse, ClientStore } from "better-auth/client";
import { atom } from "nanostores";
import type { siwn } from "./index.js";
import { type AccountId, type DualNetworkConfig, type NonceRequestT, type NonceResponseT, type ProfileResponseT, type VerifyRequestT, type VerifyResponseT, type RelayResponseT, type RelayStatusResponseT, type ListAccountsResponseT, type SetPrimaryAccountRequestT, type SetPrimaryAccountResponseT, type ViewContractRequestT, type ViewContractResponseT, type RelayerInfo, type RelayHistoryResponseT, type GetRelayerInfoRequestT, type CreateSubAccountRequestT, type CreateSubAccountResponseT, type CheckSubAccountAvailabilityRequestT, type CheckSubAccountAvailabilityResponseT } from "./types.js";
export interface AuthCallbacks {
onSuccess?: () => void;
onError?: (error: Error & {
status?: number;
code?: string;
}) => void;
}
export interface SIWNClientConfig {
recipient?: string;
recipients?: DualNetworkConfig<string>;
networkId?: "mainnet" | "testnet";
cspNonce?: string;
}
export interface SIWNClientActions {
near: {
nonce: (params: NonceRequestT) => Promise<BetterFetchResponse<NonceResponseT>>;
verify: (params: VerifyRequestT) => Promise<BetterFetchResponse<VerifyResponseT>>;
getProfile: (accountId?: AccountId) => Promise<BetterFetchResponse<ProfileResponseT>>;
view: (params: ViewContractRequestT) => Promise<BetterFetchResponse<ViewContractResponseT>>;
getAccountId: () => string | null;
getState: () => {
accountId: string | null;
publicKey: string | null;
networkId: string;
} | null;
isWalletConnected: () => boolean;
ensureConnected: () => Promise<boolean>;
disconnect: () => Promise<void>;
link: (callbacks?: AuthCallbacks) => Promise<void>;
unlink: (params: {
accountId: string;
network?: "mainnet" | "testnet";
}) => Promise<BetterFetchResponse<{
success: boolean;
message: string;
}>>;
listAccounts: () => Promise<BetterFetchResponse<ListAccountsResponseT>>;
setPrimaryAccount: (params: SetPrimaryAccountRequestT) => Promise<BetterFetchResponse<SetPrimaryAccountResponseT>>;
buildSignedDelegateAction: (receiverId: string, buildActions: (builder: TransactionBuilder, receiverId: string) => TransactionBuilder) => Promise<string>;
relayTransaction: (params: {
payload: string;
}) => Promise<BetterFetchResponse<RelayResponseT>>;
getRelayStatus: (txHash: string) => Promise<BetterFetchResponse<RelayStatusResponseT>>;
getRelayerInfo: (params?: GetRelayerInfoRequestT) => Promise<BetterFetchResponse<RelayerInfo & {
enabled: boolean;
}>>;
relayHistory: () => Promise<BetterFetchResponse<RelayHistoryResponseT>>;
createSubAccount: (params: CreateSubAccountRequestT) => Promise<BetterFetchResponse<CreateSubAccountResponseT>>;
checkSubAccountAvailability: (params: CheckSubAccountAvailabilityRequestT) => Promise<BetterFetchResponse<CheckSubAccountAvailabilityResponseT>>;
setNetwork: (network: "mainnet" | "testnet") => void;
getNetwork: () => "mainnet" | "testnet";
getSupportedNetworks: () => ("mainnet" | "testnet")[];
getRecipient: (network?: "mainnet" | "testnet") => string;
client: NearType;
};
signIn: {
near: (callbacks?: AuthCallbacks) => Promise<void>;
};
}
export interface SIWNClientPlugin extends BetterAuthClientPlugin {
id: "siwn";
$InferServerPlugin: ReturnType<typeof siwn>;
getAtoms: ($fetch: BetterFetch) => {
nearState: ReturnType<typeof atom<NearState>>;
walletConnected: ReturnType<typeof atom<boolean>>;
activeNetwork: ReturnType<typeof atom<"mainnet" | "testnet">>;
};
getActions: ($fetch: BetterFetch, $store: ClientStore, options: BetterAuthClientOptions | undefined) => SIWNClientActions;
}
type NearState = {
accountId: string | null;
publicKey: string | null;
networkId: string;
} | null;
export declare const siwnClient: (config: SIWNClientConfig) => SIWNClientPlugin;
export {};
//# sourceMappingURL=client.d.ts.map