@privy-io/react-auth
Version:
React client for the Privy Auth API
756 lines (751 loc) • 28.6 kB
text/typescript
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 };