@keplr-ewallet/ewallet-sdk-eth
Version:
57 lines (56 loc) • 1.68 kB
TypeScript
import type { Address, CustomSource, Hex, Prettify, SignableMessage, RpcTransactionRequest } from "viem";
export interface EthSignMethodMap {
sign_transaction: {
params: {
type: "sign_transaction";
data: {
address: Address;
transaction: RpcTransactionRequest;
};
};
result: {
type: "signed_transaction";
signedTransaction: Hex;
};
};
personal_sign: {
params: {
type: "personal_sign";
data: {
address: Address;
message: SignableMessage;
};
};
result: {
type: "signature";
signature: Hex;
};
};
sign_typedData_v4: {
params: {
type: "sign_typedData_v4";
data: {
address: Address;
serializedTypedData: string;
};
};
result: {
type: "signature";
signature: Hex;
};
};
}
export type EthSignMethod = keyof EthSignMethodMap;
export type EthSignParams = EthSignMethodMap[EthSignMethod]["params"];
export type EthSignResult<P extends EthSignParams> = EthSignMethodMap[P["type"]]["result"];
export type EthSignFunction = <P extends EthSignParams>(parameters: P) => Promise<EthSignResult<P>>;
export interface EthSigner {
getAddress: () => Promise<Address>;
sign: EthSignFunction;
}
export type EWalletAccount<source extends string = string, address extends Address = Address> = Prettify<CustomSource & {
address: address;
publicKey: Hex;
source: source;
type: "local";
}>;