@runonflux/aa-schnorr-multisig-sdk
Version:
Account Abstraction Schnorr Multi-Signatures SDK
105 lines (104 loc) • 3.12 kB
TypeScript
import type { Address, Hash } from "viem";
export type Hex = `0x${string}`;
export type EmptyHex = `0x`;
export type PromiseOrValue<T> = T | Promise<T>;
export type BigNumberish = string | bigint | number;
export type BytesLike = Uint8Array | string;
export interface UserOperationCallData {
target: Address;
data: Hex;
value?: bigint;
}
export interface UserOperationRequest {
sender: string;
nonce: Hex;
initCode: Hex | EmptyHex;
callData: Hex;
callGasLimit: Hex;
verificationGasLimit: Hex;
preVerificationGas: Hex;
maxFeePerGas: Hex;
maxPriorityFeePerGas: Hex;
paymasterAndData: Hex | EmptyHex;
signature: Hex;
}
export interface UserOperationEstimateGasResponse {
preVerificationGas: BigNumberish;
verificationGasLimit: BigNumberish;
callGasLimit: BigNumberish;
}
export interface UserOperationResponse extends UserOperationRequest {
entryPoint: Address;
blockNumber: BigNumberish;
blockHash: Hash;
transactionHash: Hash;
}
export interface UserOperationReceiptLog {
blockHash: Hash;
blockNumber: BigNumberish;
transactionIndex: BigNumberish;
address: Address;
logIndex: BigNumberish;
data: Hex;
removed: boolean;
topics: string[];
transactionHash: Hash;
}
export interface UserOperationReceiptObject {
blockHash: Hash;
blockNumber: BigNumberish;
transactionIndex: BigNumberish;
transactionHash: Hash;
from: Address;
to: Address;
cumulativeGasUsed: BigNumberish;
gasUsed: BigNumberish;
contractAddress: Address;
logs: UserOperationReceiptLog[];
logsBloom: Hex;
root: Hex;
status: number;
effectiveGasPrice: BigNumberish;
type: string;
}
export interface UserOperationReceipt {
userOpHash: Hash;
entryPoint: Address;
sender: Address;
nonce: BigNumberish;
paymaster?: Address;
actualGasCost: BigNumberish;
actualGasUsed: BigNumberish;
success: boolean;
reason?: string;
logs: string[];
receipt: UserOperationReceiptObject;
}
export interface UserOperationStruct {
sender: PromiseOrValue<string>;
nonce: PromiseOrValue<BigNumberish>;
initCode: PromiseOrValue<BytesLike | "0x">;
callData: PromiseOrValue<BytesLike>;
callGasLimit?: PromiseOrValue<BigNumberish>;
verificationGasLimit?: PromiseOrValue<BigNumberish>;
preVerificationGas?: PromiseOrValue<BigNumberish>;
maxFeePerGas?: PromiseOrValue<BigNumberish>;
maxPriorityFeePerGas?: PromiseOrValue<BigNumberish>;
paymasterAndData: PromiseOrValue<BytesLike | "0x">;
signature: PromiseOrValue<BytesLike>;
}
export interface UserOperationTxData {
request: UserOperationRequest;
opHash: Hex;
}
export interface GasEstimatorLimits {
callGasLimit?: number;
preVerificationGas?: number;
verificationGasLimit?: number;
}
export interface GasEstimatorMax {
maxFeePerGas?: number;
maxPriorityFeePerGas?: number;
}
export type BatchUserOperationCallData = UserOperationCallData[];
export type UserOperationOverrides = Pick<UserOperationStruct, "maxFeePerGas" | "maxPriorityFeePerGas">;