@cheny56/node-client 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,70 @@
1
+ # CommonJS Usage
2
+
3
+ This library supports both ES modules (`import`) and CommonJS (`require`). However, due to the ES module nature of the source code, CommonJS usage requires async handling.
4
+
5
+ ## Recommended: Use ES Modules
6
+
7
+ For the best experience, use ES modules:
8
+
9
+ ```javascript
10
+ // ✅ Recommended
11
+ import { QuorumProvider, ECDSAWallet } from '@cheny56/node-client';
12
+
13
+ const provider = new QuorumProvider('http://localhost:8545');
14
+ const wallet = new ECDSAWallet('0x...', provider);
15
+ ```
16
+
17
+ ## CommonJS Usage (with async/await)
18
+
19
+ If you must use CommonJS, you need to handle the async loading:
20
+
21
+ ```javascript
22
+ // ⚠️ CommonJS - requires async handling
23
+ const client = await import('@cheny56/node-client');
24
+ const { QuorumProvider, ECDSAWallet } = client;
25
+
26
+ const provider = new QuorumProvider('http://localhost:8545');
27
+ const wallet = new ECDSAWallet('0x...', provider);
28
+ ```
29
+
30
+ Or wrap in an async function:
31
+
32
+ ```javascript
33
+ async function main() {
34
+ const { QuorumProvider, ECDSAWallet } = await import('@cheny56/node-client');
35
+
36
+ const provider = new QuorumProvider('http://localhost:8545');
37
+ const wallet = new ECDSAWallet('0x...', provider);
38
+
39
+ // Use provider and wallet...
40
+ }
41
+
42
+ main().catch(console.error);
43
+ ```
44
+
45
+ ## Why Async is Required
46
+
47
+ The library source code uses ES modules (`export`/`import`). When using `require()` in CommonJS, Node.js needs to dynamically import the ES module, which is an async operation.
48
+
49
+ ## Migration to ES Modules
50
+
51
+ To use ES modules in your project:
52
+
53
+ 1. Add `"type": "module"` to your `package.json`, OR
54
+ 2. Use `.mjs` extension for your files, OR
55
+ 3. Use `import()` syntax in CommonJS files
56
+
57
+ Example `package.json`:
58
+ ```json
59
+ {
60
+ "type": "module",
61
+ "scripts": {
62
+ "start": "node index.js"
63
+ }
64
+ }
65
+ ```
66
+
67
+ Then you can use:
68
+ ```javascript
69
+ import { QuorumProvider } from '@cheny56/node-client';
70
+ ```
package/README.md CHANGED
@@ -10,6 +10,7 @@ A comprehensive JavaScript/TypeScript client library for interacting with Quorum
10
10
  - ✅ **Multiple Transaction Types**: Legacy (Type 0), AccessList (Type 1), DynamicFee (Type 2)
11
11
  - ✅ **Token Support**: ERC20 token transfers with PQC and Hybrid signatures
12
12
  - ✅ **Ethers.js Compatible**: Built on top of ethers.js for familiar API
13
+ - ✅ **TypeScript Support**: Full TypeScript definitions included
13
14
 
14
15
  ## Installation
15
16
 
@@ -19,7 +20,7 @@ npm install @cheny56/node-client
19
20
 
20
21
  ## Quick Start
21
22
 
22
- ### Basic Setup
23
+ ### JavaScript (ES Modules)
23
24
 
24
25
  ```javascript
25
26
  import { QuorumProvider, ECDSAWallet, PQCWallet, HybridWallet } from '@cheny56/node-client';
@@ -33,6 +34,20 @@ const pqcWallet = new PQCWallet(); // Generates new key pair
33
34
  const hybridWallet = new HybridWallet(ecdsaWallet, pqcWallet);
34
35
  ```
35
36
 
37
+ ### TypeScript
38
+
39
+ ```typescript
40
+ import { QuorumProvider, ECDSAWallet, PQCWallet, HybridWallet } from '@cheny56/node-client';
41
+
42
+ // Connect to Quorum node
43
+ const provider: QuorumProvider = new QuorumProvider('http://localhost:8545');
44
+
45
+ // Create wallets
46
+ const ecdsaWallet: ECDSAWallet = new ECDSAWallet('0x...', provider);
47
+ const pqcWallet: PQCWallet = new PQCWallet(); // Generates new key pair
48
+ const hybridWallet: HybridWallet = new HybridWallet(ecdsaWallet, pqcWallet);
49
+ ```
50
+
36
51
  ### Send Native Coin (ETH)
37
52
 
38
53
  #### ECDSA Transaction
@@ -262,6 +277,16 @@ const token = new ERC20Token(address, provider, wallet);
262
277
  - `balanceOf(address)`: Get balance
263
278
  - `name()`, `symbol()`, `decimals()`, `totalSupply()`: Token info
264
279
 
280
+ ## TypeScript Support
281
+
282
+ This library includes full TypeScript definitions. When using TypeScript, you'll get:
283
+
284
+ - Full type checking and IntelliSense support
285
+ - Type definitions for all classes, methods, and properties
286
+ - Proper type inference for transaction parameters and return values
287
+
288
+ The library is designed to work seamlessly with both JavaScript and TypeScript projects. JavaScript is the primary target, but TypeScript users get full type safety.
289
+
265
290
  ## Examples
266
291
 
267
292
  See the `examples/` directory for more comprehensive examples:
@@ -278,7 +303,7 @@ See the `examples/` directory for more comprehensive examples:
278
303
  ## Dependencies
279
304
 
280
305
  - `ethers`: ^5.7.2
281
- - `@noble/post-quantum`: ^1.0.0
306
+ - `@noble/post-quantum`: ^0.5.4
282
307
 
283
308
  ## License
284
309
 
package/index.cjs ADDED
@@ -0,0 +1,37 @@
1
+ /**
2
+ * CommonJS entry point for @cheny56/node-client
3
+ *
4
+ * NOTE: This library is built as ES modules. For CommonJS compatibility,
5
+ * you need to use dynamic import() instead of require().
6
+ *
7
+ * Example:
8
+ * const { QuorumProvider } = await import('@cheny56/node-client');
9
+ *
10
+ * Or use ES modules in your project:
11
+ * import { QuorumProvider } from '@cheny56/node-client';
12
+ */
13
+
14
+ // Re-export using dynamic import
15
+ // This allows require() to work, but returns a Promise
16
+ const modPromise = import('./src/index.js');
17
+
18
+ // For synchronous require(), we need to throw a helpful error
19
+ // and suggest using import() or ES modules
20
+ module.exports = new Proxy({}, {
21
+ get(target, prop) {
22
+ if (prop === 'then' || prop === 'catch' || prop === 'finally') {
23
+ // Make it thenable so it works with await import()
24
+ return modPromise.then(mod => mod[prop]).bind(modPromise);
25
+ }
26
+
27
+ throw new Error(
28
+ `Cannot access '${prop}' synchronously. ` +
29
+ `This package uses ES modules. Please use:\n` +
30
+ ` const { ${prop} } = await import('@cheny56/node-client');\n` +
31
+ `Or switch your project to ES modules by adding "type": "module" to package.json`
32
+ );
33
+ }
34
+ });
35
+
36
+ // Also export as a Promise for await import() usage
37
+ module.exports.default = modPromise;
package/package.json CHANGED
@@ -1,9 +1,29 @@
1
1
  {
2
2
  "name": "@cheny56/node-client",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Client library for Quorum blockchain with Post-Quantum Cryptography (PQC) and Zero-Knowledge Proof (ZK) support",
5
- "main": "src/index.js",
5
+ "main": "./index.cjs",
6
+ "module": "./src/index.js",
7
+ "types": "src/index.d.ts",
6
8
  "type": "module",
9
+ "exports": {
10
+ ".": {
11
+ "require": "./index.cjs",
12
+ "import": "./src/index.js",
13
+ "types": "./src/index.d.ts",
14
+ "default": "./src/index.js"
15
+ },
16
+ "./package.json": "./package.json"
17
+ },
18
+ "files": [
19
+ "src/**/*.js",
20
+ "src/**/*.d.ts",
21
+ "index.cjs",
22
+ "package.json",
23
+ "README.md",
24
+ "README-COMMONJS.md",
25
+ "tsconfig.json"
26
+ ],
7
27
  "scripts": {
8
28
  "test": "echo \"Error: no test specified\" && exit 1"
9
29
  },
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Transaction Type Constants
3
+ */
4
+ export declare const TX_TYPE: {
5
+ readonly LEGACY: 0;
6
+ readonly ACCESS_LIST: 1;
7
+ readonly DYNAMIC_FEE: 2;
8
+ readonly ZK_PRIVATE: 4;
9
+ };
10
+
11
+ /**
12
+ * PQC Signature Type Constants
13
+ */
14
+ export declare const PQC_TYPE: {
15
+ readonly NONE: 0;
16
+ readonly DILITHIUM: 1;
17
+ };
18
+
19
+ /**
20
+ * ZK Proof System Constants
21
+ */
22
+ export declare const ZK_PROOF_SYSTEM: {
23
+ readonly GROTH16: 1;
24
+ readonly PLONK: 2;
25
+ readonly STARK: 3;
26
+ };
27
+
28
+ /**
29
+ * Default Chain ID for Quorum
30
+ */
31
+ export declare const DEFAULT_CHAIN_ID: 1337;
@@ -0,0 +1,63 @@
1
+ import { ethers } from 'ethers';
2
+ import { QuorumProvider } from './provider.js';
3
+ import { ECDSAWallet, PQCWallet, HybridWallet } from './wallet.js';
4
+
5
+ export declare class Contract {
6
+ address: string;
7
+ abi: any[];
8
+ provider: QuorumProvider;
9
+ wallet: ECDSAWallet | PQCWallet | HybridWallet | null;
10
+ contract: ethers.Contract;
11
+
12
+ constructor(
13
+ address: string,
14
+ abi: any[],
15
+ provider: QuorumProvider,
16
+ wallet?: ECDSAWallet | PQCWallet | HybridWallet | null
17
+ );
18
+
19
+ connect(wallet: ECDSAWallet | PQCWallet | HybridWallet): Contract;
20
+ encodeFunctionData(functionName: string, params?: any[]): string;
21
+ decodeFunctionResult(functionName: string, data: string): any[];
22
+ call(functionName: string, ...params: any[]): Promise<any>;
23
+ sendTransaction(
24
+ functionName: string,
25
+ params?: any[],
26
+ txOptions?: any
27
+ ): Promise<ethers.ContractTransaction>;
28
+ }
29
+
30
+ export interface TokenTransferOptions {
31
+ chainId?: number;
32
+ gasPrice?: bigint;
33
+ gasLimit?: bigint;
34
+ }
35
+
36
+ export declare class ERC20Token extends Contract {
37
+ constructor(
38
+ address: string,
39
+ provider: QuorumProvider,
40
+ wallet?: ECDSAWallet | PQCWallet | HybridWallet | null
41
+ );
42
+
43
+ name(): Promise<string>;
44
+ symbol(): Promise<string>;
45
+ decimals(): Promise<number>;
46
+ totalSupply(): Promise<ethers.BigNumber>;
47
+ balanceOf(address: string): Promise<ethers.BigNumber>;
48
+ transfer(to: string, amount: string | ethers.BigNumber, txOptions?: any): Promise<ethers.ContractTransaction>;
49
+ transferPQC(
50
+ wallet: PQCWallet,
51
+ provider: QuorumProvider,
52
+ to: string,
53
+ amount: string | ethers.BigNumber,
54
+ txOptions?: TokenTransferOptions
55
+ ): Promise<string>;
56
+ transferHybrid(
57
+ wallet: HybridWallet,
58
+ provider: QuorumProvider,
59
+ to: string,
60
+ amount: string | ethers.BigNumber,
61
+ txOptions?: TokenTransferOptions
62
+ ): Promise<string>;
63
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,32 @@
1
+ // Providers
2
+ export { QuorumProvider } from './provider.js';
3
+
4
+ // Wallets
5
+ export { ECDSAWallet, PQCWallet, HybridWallet } from './wallet.js';
6
+
7
+ // Transactions
8
+ export {
9
+ LegacyTransaction,
10
+ PQCLegacyTransaction,
11
+ HybridLegacyTransaction,
12
+ AccessListTransaction,
13
+ PQCAccessListTransaction,
14
+ DynamicFeeTransaction,
15
+ PQCDynamicFeeTransaction,
16
+ } from './transaction.js';
17
+
18
+ // ZK Transactions
19
+ export { ZKTransaction } from './zk-transaction.js';
20
+
21
+ // Contracts
22
+ export { Contract, ERC20Token } from './contract.js';
23
+
24
+ // Constants
25
+ export { TX_TYPE, PQC_TYPE, ZK_PROOF_SYSTEM, DEFAULT_CHAIN_ID } from './constants.js';
26
+
27
+ // Utilities
28
+ export { derivePQCAddress, deriveHybridAddress, isValidAddress } from './utils/address.js';
29
+ export { encodeUint64, encodeBigInt, encodeSignature } from './utils/rlp.js';
30
+
31
+ // Re-export ethers utilities for convenience
32
+ export { ethers } from 'ethers';
@@ -0,0 +1,52 @@
1
+ import { ethers } from 'ethers';
2
+
3
+ export declare class QuorumProvider extends ethers.providers.JsonRpcProvider {
4
+ url: string;
5
+
6
+ constructor(url: string, network?: ethers.providers.Networkish);
7
+
8
+ /**
9
+ * Send a raw transaction (for PQC/Hybrid transactions)
10
+ */
11
+ sendRawTransaction(signedTx: string): Promise<string>;
12
+
13
+ /**
14
+ * Get transaction receipt
15
+ */
16
+ getTransactionReceipt(txHash: string): Promise<ethers.providers.TransactionReceipt>;
17
+
18
+ /**
19
+ * Wait for transaction to be mined
20
+ */
21
+ waitForTransaction(txHash: string, confirmations?: number): Promise<ethers.providers.TransactionReceipt>;
22
+
23
+ /**
24
+ * Get transaction count (nonce) for an address
25
+ */
26
+ getTransactionCount(address: string, blockTag?: ethers.providers.BlockTag): Promise<number>;
27
+
28
+ /**
29
+ * Get balance for an address
30
+ */
31
+ getBalance(address: string, blockTag?: ethers.providers.BlockTag): Promise<ethers.BigNumber>;
32
+
33
+ /**
34
+ * Estimate gas for a transaction
35
+ */
36
+ estimateGas(transaction: ethers.providers.TransactionRequest): Promise<ethers.BigNumber>;
37
+
38
+ /**
39
+ * Get gas price
40
+ */
41
+ getGasPrice(): Promise<ethers.BigNumber>;
42
+
43
+ /**
44
+ * Get current block number
45
+ */
46
+ getBlockNumber(): Promise<number>;
47
+
48
+ /**
49
+ * Get block by number
50
+ */
51
+ getBlock(blockNumber: number | string): Promise<ethers.providers.Block>;
52
+ }
@@ -0,0 +1,161 @@
1
+ import { ECDSAWallet, PQCWallet } from './wallet.js';
2
+
3
+ export interface TransactionParams {
4
+ chainId?: number;
5
+ nonce?: number;
6
+ to?: string | null;
7
+ value?: bigint;
8
+ data?: string;
9
+ gasPrice?: bigint;
10
+ gasLimit?: bigint;
11
+ maxPriorityFeePerGas?: bigint;
12
+ maxFeePerGas?: bigint;
13
+ accessList?: any[];
14
+ }
15
+
16
+ export declare class LegacyTransaction {
17
+ type: number;
18
+ chainId: number;
19
+ nonce: number;
20
+ gasPrice: bigint;
21
+ gasLimit: bigint;
22
+ to?: string | null;
23
+ value: bigint;
24
+ data: string;
25
+
26
+ constructor(params: TransactionParams);
27
+ sign(wallet: ECDSAWallet): Promise<string>;
28
+ getHex(wallet: ECDSAWallet): Promise<string>;
29
+ }
30
+
31
+ export declare class PQCLegacyTransaction {
32
+ type: number;
33
+ chainId: number;
34
+ nonce: number;
35
+ gasPrice: bigint;
36
+ gasLimit: bigint;
37
+ to?: string | null;
38
+ value: bigint;
39
+ data: string;
40
+ pqcType: number;
41
+ pqcPubKey: Uint8Array | null;
42
+ pqcSig: Uint8Array | null;
43
+ v: number;
44
+ r: string;
45
+ s: string;
46
+
47
+ constructor(params: TransactionParams);
48
+ getSigningHash(): string;
49
+ sign(wallet: PQCWallet): PQCLegacyTransaction;
50
+ verify(): boolean;
51
+ serialize(): Uint8Array;
52
+ getHex(): string;
53
+ }
54
+
55
+ export declare class HybridLegacyTransaction {
56
+ type: number;
57
+ chainId: number;
58
+ nonce: number;
59
+ gasPrice: bigint;
60
+ gasLimit: bigint;
61
+ to?: string | null;
62
+ value: bigint;
63
+ data: string;
64
+ pqcType: number;
65
+ pqcPubKey: Uint8Array | null;
66
+ pqcSig: Uint8Array | null;
67
+ v: number | null;
68
+ r: string | null;
69
+ s: string | null;
70
+
71
+ constructor(params: TransactionParams);
72
+ getSigningHash(): string;
73
+ sign(ecdsaWallet: ECDSAWallet, pqcWallet: PQCWallet): HybridLegacyTransaction;
74
+ verify(): boolean;
75
+ serialize(): Uint8Array;
76
+ getHex(): string;
77
+ }
78
+
79
+ export declare class AccessListTransaction {
80
+ type: number;
81
+ chainId: number;
82
+ nonce: number;
83
+ gasPrice: bigint;
84
+ gasLimit: bigint;
85
+ to?: string | null;
86
+ value: bigint;
87
+ data: string;
88
+ accessList: any[];
89
+
90
+ constructor(params: TransactionParams & { accessList?: any[] });
91
+ sign(wallet: ECDSAWallet): Promise<string>;
92
+ getHex(wallet: ECDSAWallet): Promise<string>;
93
+ }
94
+
95
+ export declare class PQCAccessListTransaction {
96
+ type: number;
97
+ chainId: number;
98
+ nonce: number;
99
+ gasPrice: bigint;
100
+ gasLimit: bigint;
101
+ to?: string | null;
102
+ value: bigint;
103
+ data: string;
104
+ accessList: any[];
105
+ pqcType: number;
106
+ pqcPubKey: Uint8Array | null;
107
+ pqcSig: Uint8Array | null;
108
+ v: number;
109
+ r: string;
110
+ s: string;
111
+
112
+ constructor(params: TransactionParams & { accessList?: any[] });
113
+ getSigningHash(): string;
114
+ sign(wallet: PQCWallet): PQCAccessListTransaction;
115
+ verify(): boolean;
116
+ serialize(): Uint8Array;
117
+ getHex(): string;
118
+ }
119
+
120
+ export declare class DynamicFeeTransaction {
121
+ type: number;
122
+ chainId: number;
123
+ nonce: number;
124
+ maxPriorityFeePerGas: bigint;
125
+ maxFeePerGas: bigint;
126
+ gasLimit: bigint;
127
+ to?: string | null;
128
+ value: bigint;
129
+ data: string;
130
+ accessList: any[];
131
+
132
+ constructor(params: TransactionParams & { accessList?: any[] });
133
+ sign(wallet: ECDSAWallet): Promise<string>;
134
+ getHex(wallet: ECDSAWallet): Promise<string>;
135
+ }
136
+
137
+ export declare class PQCDynamicFeeTransaction {
138
+ type: number;
139
+ chainId: number;
140
+ nonce: number;
141
+ maxPriorityFeePerGas: bigint;
142
+ maxFeePerGas: bigint;
143
+ gasLimit: bigint;
144
+ to?: string | null;
145
+ value: bigint;
146
+ data: string;
147
+ accessList: any[];
148
+ pqcType: number;
149
+ pqcPubKey: Uint8Array | null;
150
+ pqcSig: Uint8Array | null;
151
+ v: number;
152
+ r: string;
153
+ s: string;
154
+
155
+ constructor(params: TransactionParams & { accessList?: any[] });
156
+ getSigningHash(): string;
157
+ sign(wallet: PQCWallet): PQCDynamicFeeTransaction;
158
+ verify(): boolean;
159
+ serialize(): Uint8Array;
160
+ getHex(): string;
161
+ }
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { ethers } from 'ethers';
7
+ // @ts-ignore - @noble/post-quantum may not have TypeScript definitions
7
8
  import { ml_dsa65 } from '@noble/post-quantum/ml-dsa';
8
9
  import { TX_TYPE, PQC_TYPE, DEFAULT_CHAIN_ID } from './constants.js';
9
10
  import { encodeUint64, encodeBigInt, encodeSignature } from './utils/rlp.js';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Derive PQC address from Dilithium public key
3
+ */
4
+ export declare function derivePQCAddress(publicKey: Uint8Array): string;
5
+
6
+ /**
7
+ * Derive Hybrid address from ECDSA and Dilithium public keys
8
+ */
9
+ export declare function deriveHybridAddress(ecdsaPublicKey: Uint8Array, dilithiumPublicKey: Uint8Array): string;
10
+
11
+ /**
12
+ * Validate Ethereum address format
13
+ */
14
+ export declare function isValidAddress(address: string): boolean;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Encode uint64 value for RLP as hex string
3
+ */
4
+ export declare function encodeUint64(value: number | bigint | null | undefined): string;
5
+
6
+ /**
7
+ * Encode *big.Int value for RLP as hex string
8
+ */
9
+ export declare function encodeBigInt(value: number | bigint | null | undefined): string;
10
+
11
+ /**
12
+ * Encode signature value (R, S) for RLP as hex string
13
+ */
14
+ export declare function encodeSignature(value: string | null | undefined): string;
@@ -0,0 +1,45 @@
1
+ import { QuorumProvider } from './provider.js';
2
+
3
+ export declare class ECDSAWallet {
4
+ wallet: any;
5
+ address: string;
6
+ privateKey: string;
7
+ provider: QuorumProvider | null;
8
+
9
+ constructor(privateKey: string, provider?: QuorumProvider | null);
10
+
11
+ connect(provider: QuorumProvider): ECDSAWallet;
12
+ getPublicKey(): string;
13
+ signMessage(message: string | Uint8Array): Promise<string>;
14
+ }
15
+
16
+ export declare class PQCWallet {
17
+ secretKey: Uint8Array;
18
+ publicKey: Uint8Array;
19
+ address: string;
20
+
21
+ constructor(secretKey?: Uint8Array | null, publicKey?: Uint8Array | null);
22
+
23
+ static fromSecretKey(secretKey: Uint8Array | string, publicKey: Uint8Array | string): PQCWallet;
24
+
25
+ sign(hash: Uint8Array): Uint8Array;
26
+ verify(hash: Uint8Array, signature: Uint8Array): boolean;
27
+ getPublicKeyHex(): string;
28
+ getSecretKeyHex(): string;
29
+ }
30
+
31
+ export declare class HybridWallet {
32
+ ecdsaWallet: ECDSAWallet;
33
+ pqcWallet: PQCWallet;
34
+ address: string;
35
+
36
+ constructor(ecdsaWallet: ECDSAWallet | string, pqcWallet: PQCWallet);
37
+
38
+ static fromKeys(
39
+ ecdsaPrivateKey: string,
40
+ pqcSecretKey: Uint8Array,
41
+ pqcPublicKey: Uint8Array
42
+ ): HybridWallet;
43
+
44
+ connect(provider: QuorumProvider): HybridWallet;
45
+ }
package/src/wallet.js CHANGED
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { ethers } from 'ethers';
7
+ // @ts-ignore - @noble/post-quantum may not have TypeScript definitions
7
8
  import { ml_dsa65 } from '@noble/post-quantum/ml-dsa';
8
9
  import { derivePQCAddress, deriveHybridAddress } from './utils/address.js';
9
10
 
@@ -0,0 +1,45 @@
1
+ import { QuorumProvider } from './provider.js';
2
+
3
+ export interface ZKTransactionParams {
4
+ chainId?: number;
5
+ nonce?: number;
6
+ to?: string | null;
7
+ value?: bigint;
8
+ data?: string;
9
+ gasPrice?: bigint;
10
+ gasLimit?: bigint;
11
+ accessList?: any[];
12
+ zkProofSystem?: number;
13
+ zkProof?: Uint8Array | string | null;
14
+ zkPublicInputs?: (Uint8Array | string)[];
15
+ zkVerificationKeyHash?: Uint8Array | string | null;
16
+ encryptedPayload?: Uint8Array | string | null;
17
+ recipients?: string[];
18
+ privateFrom?: string | null;
19
+ privateFor?: string[] | null;
20
+ }
21
+
22
+ export declare class ZKTransaction {
23
+ type: number;
24
+ chainId: number;
25
+ nonce: number;
26
+ gasPrice: bigint;
27
+ gasLimit: bigint;
28
+ to?: string | null;
29
+ value: bigint;
30
+ data: string;
31
+ accessList: any[];
32
+ zkProofSystem: number;
33
+ zkProof: Uint8Array | string | null;
34
+ zkPublicInputs: (Uint8Array | string)[];
35
+ zkVerificationKeyHash: Uint8Array | string | null;
36
+ encryptedPayload: Uint8Array | string | null;
37
+ recipients: string[];
38
+ privateFrom: string | null;
39
+ privateFor: string[] | null;
40
+
41
+ constructor(params: ZKTransactionParams);
42
+
43
+ toZKTxArgs(from: string): any;
44
+ send(provider: QuorumProvider, from: string): Promise<string>;
45
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "ESNext",
5
+ "lib": ["ES2020"],
6
+ "moduleResolution": "node",
7
+ "declaration": true,
8
+ "declarationMap": true,
9
+ "outDir": "./dist",
10
+ "rootDir": "./src",
11
+ "strict": false,
12
+ "esModuleInterop": true,
13
+ "skipLibCheck": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+ "resolveJsonModule": true,
16
+ "allowSyntheticDefaultImports": true,
17
+ "noEmit": true
18
+ },
19
+ "include": [
20
+ "src/**/*"
21
+ ],
22
+ "exclude": [
23
+ "node_modules",
24
+ "dist",
25
+ "examples"
26
+ ]
27
+ }