@lens-protocol/react
Version:
Interacting with the Lens Protocol API using React.
63 lines (62 loc) • 3.51 kB
TypeScript
import { TypedDataSigner, Signer } from '@ethersproject/abstract-signer';
import { TransactionRequest } from '@ethersproject/providers';
import { TypedData } from '@lens-protocol/blockchain-bindings';
import { AnyTransactionRequestModel, InsufficientGasError, ISignedProtocolCall, IUnsignedProtocolCall, NativeTransaction, PendingSigningRequestError, ProtocolTransactionRequestModel, Signature, SignedFrameAction, UnsignedFrameAction, UnsignedTransaction, UserRejectedError, Wallet, WalletConnectionError } from '@lens-protocol/domain/entities';
import { AnyTransactionRequest } from '@lens-protocol/domain/use-cases/transactions';
import { ChainType, EvmAddress, PromiseResult } from '@lens-protocol/shared-kernel';
import { z } from 'zod';
import { ITransactionFactory } from "../../transactions/adapters/ITransactionFactory.js";
export type RequiredSigner = Signer & TypedDataSigner;
export type CreateSignerConfig = {
address: EvmAddress;
chainType?: ChainType;
};
export interface ISignerFactory {
createSigner(config: CreateSignerConfig): PromiseResult<RequiredSigner, WalletConnectionError>;
}
export declare const WalletDataSchema: z.ZodObject<{
address: z.ZodString;
}, "strip", z.ZodTypeAny, {
address: string;
}, {
address: string;
}>;
export type WalletDataSchema = z.infer<typeof WalletDataSchema>;
export declare class UnsignedProtocolCall<T extends ProtocolTransactionRequestModel> implements IUnsignedProtocolCall<T> {
readonly id: string;
readonly request: T;
readonly typedData: TypedData;
private constructor();
get nonce(): number;
static create<T extends ProtocolTransactionRequestModel>({ id, request, typedData, }: {
id: string;
request: T;
typedData: TypedData;
}): UnsignedProtocolCall<T>;
}
export declare class SignedProtocolCall<T extends ProtocolTransactionRequestModel> implements ISignedProtocolCall<T> {
readonly id: string;
readonly request: T;
readonly signature: Signature;
readonly nonce: number;
private constructor();
static create<T extends ProtocolTransactionRequestModel>({ unsignedCall, signature, }: {
unsignedCall: UnsignedProtocolCall<T>;
signature: string;
}): SignedProtocolCall<T>;
}
export interface ITransactionRequest {
get transactionRequest(): TransactionRequest;
}
export declare class ConcreteWallet extends Wallet {
private readonly signerFactory;
private readonly transactionFactory;
private signingInProgress;
private constructor();
signProtocolCall<T extends ProtocolTransactionRequestModel>(unsignedCall: UnsignedProtocolCall<T>): PromiseResult<ISignedProtocolCall<T>, PendingSigningRequestError | UserRejectedError | WalletConnectionError>;
signFrameAction<TData>(unsignedAction: UnsignedFrameAction<TData>): PromiseResult<SignedFrameAction<TData>, PendingSigningRequestError | UserRejectedError | WalletConnectionError>;
signMessage(message: string): PromiseResult<Signature, PendingSigningRequestError | WalletConnectionError | UserRejectedError>;
sendTransaction<T extends AnyTransactionRequestModel>(unsignedTransaction: UnsignedTransaction<T> & ITransactionRequest): PromiseResult<NativeTransaction<T>, InsufficientGasError | PendingSigningRequestError | UserRejectedError | WalletConnectionError>;
toWalletData(): WalletDataSchema;
static create(address: EvmAddress, signerFactory: ISignerFactory, transactionFactory: ITransactionFactory<AnyTransactionRequest>): ConcreteWallet;
}