UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

756 lines (751 loc) • 28.6 kB
import * as react_jsx_runtime from 'react/jsx-runtime'; import react__default from 'react'; import * as permissionless from 'permissionless'; import * as viem__types_account_abstraction_types_userOperation from 'viem/_types/account-abstraction/types/userOperation'; import * as viem_account_abstraction from 'viem/account-abstraction'; import { SmartAccount, SendUserOperationParameters } from 'viem/account-abstraction'; import * as viem from 'viem'; import { SendTransactionParameters, Chain, Hash, SignableMessage, Hex, TypedData, SignTypedDataParameters, EIP1193Provider, PublicClient, Client } from 'viem'; import { SmartWalletType } from '@privy-io/js-sdk-core'; import { h as SendTransactionModalUIOptions, i as SignMessageModalUIOptions } from './types-B92M8x5e.js'; import '@solana/wallet-adapter-base'; import '@privy-io/public-api'; import '@metamask/eth-sig-util'; import '@solana/web3.js'; import 'eventemitter3'; type Call = { readonly to?: any; readonly value?: any; readonly data?: any; }; declare const signerToSmartAccountClient: ({ owner, smartWalletType, chain, publicClient, bundlerUrl, paymasterUrl, paymasterContext, }: { owner: EIP1193Provider; smartWalletType: SmartWalletType; chain: Chain; publicClient: PublicClient; bundlerUrl: string; paymasterUrl?: string; paymasterContext?: Record<string, any>; }) => Promise<permissionless.SmartAccountClient<viem.HttpTransport<undefined, false>, Chain, object & { client: Client; entryPoint: { abi: readonly [{ readonly inputs: readonly [{ readonly name: "success"; readonly type: "bool"; }, { readonly name: "ret"; readonly type: "bytes"; }]; readonly name: "DelegateAndRevert"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly name: "opIndex"; readonly type: "uint256"; }, { readonly name: "reason"; readonly type: "string"; }]; readonly name: "FailedOp"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly name: "opIndex"; readonly type: "uint256"; }, { readonly name: "reason"; readonly type: "string"; }, { readonly name: "inner"; readonly type: "bytes"; }]; readonly name: "FailedOpWithRevert"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly name: "returnData"; readonly type: "bytes"; }]; readonly name: "PostOpReverted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReentrancyGuardReentrantCall"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly name: "sender"; readonly type: "address"; }]; readonly name: "SenderAddressResult"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly name: "aggregator"; readonly type: "address"; }]; readonly name: "SignatureValidationFailed"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "userOpHash"; readonly type: "bytes32"; }, { readonly indexed: true; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: false; readonly name: "factory"; readonly type: "address"; }, { readonly indexed: false; readonly name: "paymaster"; readonly type: "address"; }]; readonly name: "AccountDeployed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "BeforeExecution"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "account"; readonly type: "address"; }, { readonly indexed: false; readonly name: "totalDeposit"; readonly type: "uint256"; }]; readonly name: "Deposited"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "userOpHash"; readonly type: "bytes32"; }, { readonly indexed: true; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: false; readonly name: "nonce"; readonly type: "uint256"; }, { readonly indexed: false; readonly name: "revertReason"; readonly type: "bytes"; }]; readonly name: "PostOpRevertReason"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "aggregator"; readonly type: "address"; }]; readonly name: "SignatureAggregatorChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "account"; readonly type: "address"; }, { readonly indexed: false; readonly name: "totalStaked"; readonly type: "uint256"; }, { readonly indexed: false; readonly name: "unstakeDelaySec"; readonly type: "uint256"; }]; readonly name: "StakeLocked"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "account"; readonly type: "address"; }, { readonly indexed: false; readonly name: "withdrawTime"; readonly type: "uint256"; }]; readonly name: "StakeUnlocked"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "account"; readonly type: "address"; }, { readonly indexed: false; readonly name: "withdrawAddress"; readonly type: "address"; }, { readonly indexed: false; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "StakeWithdrawn"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "userOpHash"; readonly type: "bytes32"; }, { readonly indexed: true; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly name: "paymaster"; readonly type: "address"; }, { readonly indexed: false; readonly name: "nonce"; readonly type: "uint256"; }, { readonly indexed: false; readonly name: "success"; readonly type: "bool"; }, { readonly indexed: false; readonly name: "actualGasCost"; readonly type: "uint256"; }, { readonly indexed: false; readonly name: "actualGasUsed"; readonly type: "uint256"; }]; readonly name: "UserOperationEvent"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "userOpHash"; readonly type: "bytes32"; }, { readonly indexed: true; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: false; readonly name: "nonce"; readonly type: "uint256"; }]; readonly name: "UserOperationPrefundTooLow"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "userOpHash"; readonly type: "bytes32"; }, { readonly indexed: true; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: false; readonly name: "nonce"; readonly type: "uint256"; }, { readonly indexed: false; readonly name: "revertReason"; readonly type: "bytes"; }]; readonly name: "UserOperationRevertReason"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "account"; readonly type: "address"; }, { readonly indexed: false; readonly name: "withdrawAddress"; readonly type: "address"; }, { readonly indexed: false; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "Withdrawn"; readonly type: "event"; }, { readonly inputs: readonly [{ readonly name: "unstakeDelaySec"; readonly type: "uint32"; }]; readonly name: "addStake"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "account"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "target"; readonly type: "address"; }, { readonly name: "data"; readonly type: "bytes"; }]; readonly name: "delegateAndRevert"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "account"; readonly type: "address"; }]; readonly name: "depositTo"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: ""; readonly type: "address"; }]; readonly name: "deposits"; readonly outputs: readonly [{ readonly name: "deposit"; readonly type: "uint256"; }, { readonly name: "staked"; readonly type: "bool"; }, { readonly name: "stake"; readonly type: "uint112"; }, { readonly name: "unstakeDelaySec"; readonly type: "uint32"; }, { readonly name: "withdrawTime"; readonly type: "uint48"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "account"; readonly type: "address"; }]; readonly name: "getDepositInfo"; readonly outputs: readonly [{ readonly components: readonly [{ readonly name: "deposit"; readonly type: "uint256"; }, { readonly name: "staked"; readonly type: "bool"; }, { readonly name: "stake"; readonly type: "uint112"; }, { readonly name: "unstakeDelaySec"; readonly type: "uint32"; }, { readonly name: "withdrawTime"; readonly type: "uint48"; }]; readonly name: "info"; readonly type: "tuple"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "sender"; readonly type: "address"; }, { readonly name: "key"; readonly type: "uint192"; }]; readonly name: "getNonce"; readonly outputs: readonly [{ readonly name: "nonce"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "initCode"; readonly type: "bytes"; }]; readonly name: "getSenderAddress"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly name: "sender"; readonly type: "address"; }, { readonly name: "nonce"; readonly type: "uint256"; }, { readonly name: "initCode"; readonly type: "bytes"; }, { readonly name: "callData"; readonly type: "bytes"; }, { readonly name: "accountGasLimits"; readonly type: "bytes32"; }, { readonly name: "preVerificationGas"; readonly type: "uint256"; }, { readonly name: "gasFees"; readonly type: "bytes32"; }, { readonly name: "paymasterAndData"; readonly type: "bytes"; }, { readonly name: "signature"; readonly type: "bytes"; }]; readonly name: "userOp"; readonly type: "tuple"; }]; readonly name: "getUserOpHash"; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly components: readonly [{ readonly name: "sender"; readonly type: "address"; }, { readonly name: "nonce"; readonly type: "uint256"; }, { readonly name: "initCode"; readonly type: "bytes"; }, { readonly name: "callData"; readonly type: "bytes"; }, { readonly name: "accountGasLimits"; readonly type: "bytes32"; }, { readonly name: "preVerificationGas"; readonly type: "uint256"; }, { readonly name: "gasFees"; readonly type: "bytes32"; }, { readonly name: "paymasterAndData"; readonly type: "bytes"; }, { readonly name: "signature"; readonly type: "bytes"; }]; readonly name: "userOps"; readonly type: "tuple[]"; }, { readonly name: "aggregator"; readonly type: "address"; }, { readonly name: "signature"; readonly type: "bytes"; }]; readonly name: "opsPerAggregator"; readonly type: "tuple[]"; }, { readonly name: "beneficiary"; readonly type: "address"; }]; readonly name: "handleAggregatedOps"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly name: "sender"; readonly type: "address"; }, { readonly name: "nonce"; readonly type: "uint256"; }, { readonly name: "initCode"; readonly type: "bytes"; }, { readonly name: "callData"; readonly type: "bytes"; }, { readonly name: "accountGasLimits"; readonly type: "bytes32"; }, { readonly name: "preVerificationGas"; readonly type: "uint256"; }, { readonly name: "gasFees"; readonly type: "bytes32"; }, { readonly name: "paymasterAndData"; readonly type: "bytes"; }, { readonly name: "signature"; readonly type: "bytes"; }]; readonly name: "ops"; readonly type: "tuple[]"; }, { readonly name: "beneficiary"; readonly type: "address"; }]; readonly name: "handleOps"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "key"; readonly type: "uint192"; }]; readonly name: "incrementNonce"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "callData"; readonly type: "bytes"; }, { readonly components: readonly [{ readonly components: readonly [{ readonly name: "sender"; readonly type: "address"; }, { readonly name: "nonce"; readonly type: "uint256"; }, { readonly name: "verificationGasLimit"; readonly type: "uint256"; }, { readonly name: "callGasLimit"; readonly type: "uint256"; }, { readonly name: "paymasterVerificationGasLimit"; readonly type: "uint256"; }, { readonly name: "paymasterPostOpGasLimit"; readonly type: "uint256"; }, { readonly name: "preVerificationGas"; readonly type: "uint256"; }, { readonly name: "paymaster"; readonly type: "address"; }, { readonly name: "maxFeePerGas"; readonly type: "uint256"; }, { readonly name: "maxPriorityFeePerGas"; readonly type: "uint256"; }]; readonly name: "mUserOp"; readonly type: "tuple"; }, { readonly name: "userOpHash"; readonly type: "bytes32"; }, { readonly name: "prefund"; readonly type: "uint256"; }, { readonly name: "contextOffset"; readonly type: "uint256"; }, { readonly name: "preOpGas"; readonly type: "uint256"; }]; readonly name: "opInfo"; readonly type: "tuple"; }, { readonly name: "context"; readonly type: "bytes"; }]; readonly name: "innerHandleOp"; readonly outputs: readonly [{ readonly name: "actualGasCost"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: ""; readonly type: "address"; }, { readonly name: ""; readonly type: "uint192"; }]; readonly name: "nonceSequenceNumber"; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "interfaceId"; readonly type: "bytes4"; }]; readonly name: "supportsInterface"; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "unlockStake"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "withdrawAddress"; readonly type: "address"; }]; readonly name: "withdrawStake"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "withdrawAddress"; readonly type: "address"; }, { readonly name: "withdrawAmount"; readonly type: "uint256"; }]; readonly name: "withdrawTo"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly stateMutability: "payable"; readonly type: "receive"; }]; address: viem.Address; version: "0.7"; }; extend?: object | undefined; getAddress: () => Promise<viem.Address>; decodeCalls?: ((data: Hex) => Promise<readonly { to: Hex; data?: Hex | undefined; value?: bigint | undefined; }[]>) | undefined; encodeCalls: (calls: readonly { to: Hex; data?: Hex | undefined; value?: bigint | undefined; }[]) => Promise<Hex>; getFactoryArgs: () => Promise<{ factory?: viem.Address | undefined; factoryData?: Hex | undefined; }>; getNonce?: ((parameters?: { key?: bigint | undefined; } | undefined) => Promise<bigint>) | undefined; getStubSignature: (parameters?: viem_account_abstraction.UserOperationRequest | undefined) => Promise<Hex>; nonceKeyManager?: viem.NonceManager | undefined; sign: (parameters: { hash: Hash; }) => Promise<Hex>; signMessage: (parameters: { message: SignableMessage; }) => Promise<Hex>; signTypedData: <const typedData extends TypedData | Record<string, unknown>, primaryType extends keyof typedData | "EIP712Domain" = keyof typedData>(parameters: viem.TypedDataDefinition<typedData, primaryType>) => Promise<Hex>; signUserOperation: (parameters: viem.UnionPartialBy<viem_account_abstraction.UserOperation, "sender"> & { chainId?: number | undefined; }) => Promise<Hex>; userOperation?: { estimateGas?: ((userOperation: viem_account_abstraction.UserOperationRequest) => Promise<viem.ExactPartial<viem__types_account_abstraction_types_userOperation.EstimateUserOperationGasReturnType> | undefined>) | undefined; } | undefined; } & { address: viem.Address; getNonce: NonNullable<viem_account_abstraction.SmartAccountImplementation["getNonce"]>; isDeployed: () => Promise<boolean>; type: "smart"; }, undefined, undefined>>; type SmartWalletClientType = Omit<Awaited<ReturnType<typeof signerToSmartAccountClient>>, 'sendTransaction' | 'signMessage'> & { sendTransaction: (input: SendTransactionParameters<Chain, SmartAccount> | SendUserOperationParameters<SmartAccount, undefined, Call[]>, options?: { uiOptions?: SendTransactionModalUIOptions; }) => Promise<Hash>; signMessage: (input: { message: SignableMessage; }, options?: { uiOptions?: SignMessageModalUIOptions; }) => Promise<Hex>; signTypedData: <const TTypedData extends TypedData | { [key: string]: unknown; }, TPrimaryType extends string, TAccount extends SmartAccount | undefined = SmartAccount | undefined>(input: SignTypedDataParameters<TTypedData, TPrimaryType, TAccount>, options?: { uiOptions?: SignMessageModalUIOptions; }) => Promise<Hex>; }; interface SmartWalletClientTypeWithSwitchChain extends SmartWalletClientType { switchChain: (args: { id: number; }) => Promise<void>; } interface SmartWalletsInterface { client?: SmartWalletClientTypeWithSwitchChain; getClientForChain: ({ id }: { id: number; }) => Promise<SmartWalletClientType | undefined>; } interface SmartWalletsProviderProps { config?: { paymasterContext?: Record<string, any>; }; children: react__default.ReactNode; } declare const SmartWalletsProvider: ({ config, children }: SmartWalletsProviderProps) => react_jsx_runtime.JSX.Element; declare const useSmartWallets: () => SmartWalletsInterface; export { type SmartWalletClientType, SmartWalletsProvider, type SmartWalletsProviderProps, useSmartWallets };