@kaiachain/web3js-ext
Version:
web3.js extension for kaiachain blockchain
162 lines (150 loc) • 4.64 kB
text/typescript
import Eth from "web3-eth";
import {
decodeLog,
decodeParameter,
decodeParameters,
encodeFunctionCall,
encodeFunctionSignature,
encodeParameter,
encodeParameters,
} from "web3-eth-abi";
import {
encrypt,
hashMessage,
recover,
recoverTransaction,
sign,
signTransaction,
TxData,
Transaction as LegacyTransaction,
AccessListEIP2930Transaction,
FeeMarketEIP1559Transaction,
Wallet,
Web3Account,
} from "web3-eth-accounts";
import { Contract } from "web3-eth-contract";
import { ENS } from "web3-eth-ens";
import { Iban } from "web3-eth-iban";
import { Personal } from "web3-eth-personal";
import { Net } from "web3-net";
import { KeyStore, Bytes, Transaction } from "web3-types";
import { KlaytnTypedTransaction } from "./accounts/klaytn_tx.js";
// Type analogous to web3-eth-accounts/src/types.ts:Web3Account
// Designed for the "account object" returned by
// - web3.eth.accounts.privateKeyToAccount()
// - web3.eth.accounts.create()
// - web3.eth.accounts.decrypt()
export interface KlaytnWeb3Account extends Web3Account {
readonly address: string;
readonly privateKey: string;
readonly sign: (data: Record<string, unknown> | string) => {
readonly messageHash: string;
readonly r: string;
readonly s: string;
readonly v: string;
readonly message?: string;
readonly signature: string;
};
readonly encrypt: (password: string, options?: Record<string, unknown>) => Promise<KeyStore>;
// Klaytn: modified methods
readonly signTransaction: (tx: KlaytnTransaction | string) => Promise<{
readonly messageHash: string;
readonly r: string;
readonly s: string;
readonly v: string;
readonly rawTransaction: string;
readonly transactionHash: string;
}>;
// Klaytn: additional methods
readonly signTransactionAsFeePayer: (tx: KlaytnTransaction | string) => Promise<{
readonly messageHash: string;
readonly r: string;
readonly s: string;
readonly v: string;
readonly rawTransaction: string;
readonly transactionHash: string;
}>;
}
// Type analogous to web3/src/types.ts:Web3EthInterface
// Designed for KlaytnWeb3.eth.accounts
export interface KlaytnWeb3EthInterface extends Eth {
Contract: typeof Contract;
Iban: typeof Iban;
net: Net;
ens: ENS;
abi: {
encodeEventSignature: typeof encodeFunctionSignature;
encodeFunctionCall: typeof encodeFunctionCall;
encodeFunctionSignature: typeof encodeFunctionSignature;
encodeParameter: typeof encodeParameter;
encodeParameters: typeof encodeParameters;
decodeParameter: typeof decodeParameter;
decodeParameters: typeof decodeParameters;
decodeLog: typeof decodeLog;
};
accounts: KlaytnAccountsInterface;
personal: Personal;
}
// This is the type of KlaytnWeb3EthInterface.accounts
// i.e. (typeof web3.eth.accounts)
export interface KlaytnAccountsInterface {
// Klaytn: contents may have changed, but types unchanged
recoverTransaction: typeof recoverTransaction;
hashMessage: typeof hashMessage;
sign: typeof sign;
recover: typeof recover;
encrypt: typeof encrypt;
// Klaytn: modified methods
wallet: Wallet<KlaytnWeb3Account>;
create: () => KlaytnWeb3Account;
privateKeyToAccount: (privateKey: Uint8Array | string, address?: string) => KlaytnWeb3Account;
decrypt: (
keystore: string,
password: string,
options?: Record<string, unknown>,
) => Promise<KlaytnWeb3Account>;
signTransaction: (
transaction: KlaytnTransaction | string,
privateKey: Bytes,
) => ReturnType<typeof signTransaction>;
// Klaytn: additional methods
signTransactionAsFeePayer: (
transaction: KlaytnTransaction | string,
privateKey: Bytes,
) => ReturnType<typeof signTransaction>;
decryptList: (
keystore: string,
password: string,
options?: Record<string, unknown>,
) => Promise<KlaytnWeb3Account[]>;
}
// The plain Transaction object supplied by the users.
// Used as argument to prepareTransaction()
export interface KlaytnTransaction extends Transaction {
key?: any;
feePayer?: string;
txSignatures?: any;
feePayerSignatures?: any;
feeRatio?: number;
}
// The plain Transaction object used internally.
// Used as argument to KlaytnTx.fromTxData()
export interface KlaytnTxData extends TxData {
from?: string;
chainId?: bigint;
key?: any;
feePayer?: string;
feePayer_v?: bigint;
feePayer_r?: bigint;
feePayer_s?: bigint;
txSignatures?: any;
feePayerSignatures?: any;
feeRatio?: number;
}
// The child classes of BaseTransaction.
// Used inside signTransaction() and signTransactionAsFeePayer()
export type TypedTransaction =
| LegacyTransaction // type 0
| AccessListEIP2930Transaction // type 1
| FeeMarketEIP1559Transaction // type 2
| KlaytnTypedTransaction; // Klaytn TxTypes