@cds.id/podoru-sdk 1.1.0
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.
- package/README.md +155 -0
- package/dist/cjs/client/PodoruClient.js +153 -0
- package/dist/cjs/client/PodoruClient.js.map +1 -0
- package/dist/cjs/client/WebSocketClient.js +193 -0
- package/dist/cjs/client/WebSocketClient.js.map +1 -0
- package/dist/cjs/client/index.js +8 -0
- package/dist/cjs/client/index.js.map +1 -0
- package/dist/cjs/errors/index.js +78 -0
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/cjs/index.js +33 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/transaction/Signer.js +82 -0
- package/dist/cjs/transaction/Signer.js.map +1 -0
- package/dist/cjs/transaction/TransactionBuilder.js +127 -0
- package/dist/cjs/transaction/TransactionBuilder.js.map +1 -0
- package/dist/cjs/transaction/index.js +9 -0
- package/dist/cjs/transaction/index.js.map +1 -0
- package/dist/cjs/types/api.js +3 -0
- package/dist/cjs/types/api.js.map +1 -0
- package/dist/cjs/types/chain.js +3 -0
- package/dist/cjs/types/chain.js.map +1 -0
- package/dist/cjs/types/events.js +3 -0
- package/dist/cjs/types/events.js.map +1 -0
- package/dist/cjs/types/index.js +3 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/node.js +3 -0
- package/dist/cjs/types/node.js.map +1 -0
- package/dist/cjs/types/state.js +3 -0
- package/dist/cjs/types/state.js.map +1 -0
- package/dist/cjs/types/transaction.js +3 -0
- package/dist/cjs/types/transaction.js.map +1 -0
- package/dist/cjs/utils/address.js +36 -0
- package/dist/cjs/utils/address.js.map +1 -0
- package/dist/cjs/utils/encoding.js +49 -0
- package/dist/cjs/utils/encoding.js.map +1 -0
- package/dist/cjs/utils/hash.js +28 -0
- package/dist/cjs/utils/hash.js.map +1 -0
- package/dist/cjs/utils/index.js +17 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/esm/client/PodoruClient.d.ts +79 -0
- package/dist/esm/client/PodoruClient.d.ts.map +1 -0
- package/dist/esm/client/PodoruClient.js +149 -0
- package/dist/esm/client/PodoruClient.js.map +1 -0
- package/dist/esm/client/WebSocketClient.d.ts +89 -0
- package/dist/esm/client/WebSocketClient.d.ts.map +1 -0
- package/dist/esm/client/WebSocketClient.js +189 -0
- package/dist/esm/client/WebSocketClient.js.map +1 -0
- package/dist/esm/client/index.d.ts +5 -0
- package/dist/esm/client/index.d.ts.map +1 -0
- package/dist/esm/client/index.js +3 -0
- package/dist/esm/client/index.js.map +1 -0
- package/dist/esm/errors/index.d.ts +41 -0
- package/dist/esm/errors/index.d.ts.map +1 -0
- package/dist/esm/errors/index.js +69 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/transaction/Signer.d.ts +48 -0
- package/dist/esm/transaction/Signer.d.ts.map +1 -0
- package/dist/esm/transaction/Signer.js +77 -0
- package/dist/esm/transaction/Signer.js.map +1 -0
- package/dist/esm/transaction/TransactionBuilder.d.ts +44 -0
- package/dist/esm/transaction/TransactionBuilder.d.ts.map +1 -0
- package/dist/esm/transaction/TransactionBuilder.js +123 -0
- package/dist/esm/transaction/TransactionBuilder.js.map +1 -0
- package/dist/esm/transaction/index.d.ts +4 -0
- package/dist/esm/transaction/index.d.ts.map +1 -0
- package/dist/esm/transaction/index.js +3 -0
- package/dist/esm/transaction/index.js.map +1 -0
- package/dist/esm/types/api.d.ts +16 -0
- package/dist/esm/types/api.d.ts.map +1 -0
- package/dist/esm/types/api.js +2 -0
- package/dist/esm/types/api.js.map +1 -0
- package/dist/esm/types/chain.d.ts +32 -0
- package/dist/esm/types/chain.d.ts.map +1 -0
- package/dist/esm/types/chain.js +2 -0
- package/dist/esm/types/chain.js.map +1 -0
- package/dist/esm/types/events.d.ts +58 -0
- package/dist/esm/types/events.d.ts.map +1 -0
- package/dist/esm/types/events.js +2 -0
- package/dist/esm/types/events.js.map +1 -0
- package/dist/esm/types/index.d.ts +7 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +2 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/node.d.ts +32 -0
- package/dist/esm/types/node.d.ts.map +1 -0
- package/dist/esm/types/node.js +2 -0
- package/dist/esm/types/node.js.map +1 -0
- package/dist/esm/types/state.d.ts +23 -0
- package/dist/esm/types/state.d.ts.map +1 -0
- package/dist/esm/types/state.js +2 -0
- package/dist/esm/types/state.js.map +1 -0
- package/dist/esm/types/transaction.d.ts +39 -0
- package/dist/esm/types/transaction.d.ts.map +1 -0
- package/dist/esm/types/transaction.js +2 -0
- package/dist/esm/types/transaction.js.map +1 -0
- package/dist/esm/utils/address.d.ts +14 -0
- package/dist/esm/utils/address.d.ts.map +1 -0
- package/dist/esm/utils/address.js +31 -0
- package/dist/esm/utils/address.js.map +1 -0
- package/dist/esm/utils/encoding.d.ts +21 -0
- package/dist/esm/utils/encoding.d.ts.map +1 -0
- package/dist/esm/utils/encoding.js +42 -0
- package/dist/esm/utils/encoding.js.map +1 -0
- package/dist/esm/utils/hash.d.ts +9 -0
- package/dist/esm/utils/hash.d.ts.map +1 -0
- package/dist/esm/utils/hash.js +24 -0
- package/dist/esm/utils/hash.js.map +1 -0
- package/dist/esm/utils/index.d.ts +4 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +4 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/types/client/PodoruClient.d.ts +79 -0
- package/dist/types/client/PodoruClient.d.ts.map +1 -0
- package/dist/types/client/WebSocketClient.d.ts +89 -0
- package/dist/types/client/WebSocketClient.d.ts.map +1 -0
- package/dist/types/client/index.d.ts +5 -0
- package/dist/types/client/index.d.ts.map +1 -0
- package/dist/types/errors/index.d.ts +41 -0
- package/dist/types/errors/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/transaction/Signer.d.ts +48 -0
- package/dist/types/transaction/Signer.d.ts.map +1 -0
- package/dist/types/transaction/TransactionBuilder.d.ts +44 -0
- package/dist/types/transaction/TransactionBuilder.d.ts.map +1 -0
- package/dist/types/transaction/index.d.ts +4 -0
- package/dist/types/transaction/index.d.ts.map +1 -0
- package/dist/types/types/api.d.ts +16 -0
- package/dist/types/types/api.d.ts.map +1 -0
- package/dist/types/types/chain.d.ts +32 -0
- package/dist/types/types/chain.d.ts.map +1 -0
- package/dist/types/types/events.d.ts +58 -0
- package/dist/types/types/events.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +7 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/node.d.ts +32 -0
- package/dist/types/types/node.d.ts.map +1 -0
- package/dist/types/types/state.d.ts +23 -0
- package/dist/types/types/state.d.ts.map +1 -0
- package/dist/types/types/transaction.d.ts +39 -0
- package/dist/types/types/transaction.d.ts.map +1 -0
- package/dist/types/utils/address.d.ts +14 -0
- package/dist/types/utils/address.d.ts.map +1 -0
- package/dist/types/utils/encoding.d.ts +21 -0
- package/dist/types/utils/encoding.d.ts.map +1 -0
- package/dist/types/utils/hash.d.ts +9 -0
- package/dist/types/utils/hash.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +4 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WalletSigner = void 0;
|
|
4
|
+
exports.serializeSignature = serializeSignature;
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const index_js_1 = require("../errors/index.js");
|
|
7
|
+
const encoding_js_1 = require("../utils/encoding.js");
|
|
8
|
+
/**
|
|
9
|
+
* Wallet-based signer using ethers.js
|
|
10
|
+
*/
|
|
11
|
+
class WalletSigner {
|
|
12
|
+
wallet;
|
|
13
|
+
constructor(privateKey) {
|
|
14
|
+
try {
|
|
15
|
+
this.wallet = new ethers_1.Wallet(privateKey);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
throw new index_js_1.SigningError(`Invalid private key: ${error instanceof Error ? error.message : 'unknown error'}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a signer from a mnemonic phrase
|
|
23
|
+
*/
|
|
24
|
+
static fromMnemonic(mnemonic, path) {
|
|
25
|
+
try {
|
|
26
|
+
const wallet = ethers_1.HDNodeWallet.fromPhrase(mnemonic, undefined, path);
|
|
27
|
+
const signer = new WalletSigner(wallet.privateKey);
|
|
28
|
+
return signer;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
throw new index_js_1.SigningError(`Invalid mnemonic: ${error instanceof Error ? error.message : 'unknown error'}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a random signer (for testing)
|
|
36
|
+
*/
|
|
37
|
+
static createRandom() {
|
|
38
|
+
const wallet = ethers_1.Wallet.createRandom();
|
|
39
|
+
return new WalletSigner(wallet.privateKey);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the signer's address
|
|
43
|
+
*/
|
|
44
|
+
get address() {
|
|
45
|
+
return this.wallet.address;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get the private key (use with caution)
|
|
49
|
+
*/
|
|
50
|
+
get privateKey() {
|
|
51
|
+
return this.wallet.privateKey;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Sign a hash and return the signature components
|
|
55
|
+
*/
|
|
56
|
+
async sign(hash) {
|
|
57
|
+
try {
|
|
58
|
+
const hashHex = '0x' + Array.from(hash).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
59
|
+
const signature = this.wallet.signingKey.sign(hashHex);
|
|
60
|
+
return {
|
|
61
|
+
r: signature.r,
|
|
62
|
+
s: signature.s,
|
|
63
|
+
v: signature.v,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
throw new index_js_1.SigningError(`Failed to sign: ${error instanceof Error ? error.message : 'unknown error'}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.WalletSigner = WalletSigner;
|
|
72
|
+
/**
|
|
73
|
+
* Serialize signature to 65-byte array (r + s + v)
|
|
74
|
+
* v is normalized to 0 or 1 (not 27/28)
|
|
75
|
+
*/
|
|
76
|
+
function serializeSignature(sig) {
|
|
77
|
+
const r = (0, encoding_js_1.hexToBytes)(sig.r); // 32 bytes
|
|
78
|
+
const s = (0, encoding_js_1.hexToBytes)(sig.s); // 32 bytes
|
|
79
|
+
const v = sig.v - 27; // Normalize to 0 or 1
|
|
80
|
+
return [...Array.from(r), ...Array.from(s), v];
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=Signer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Signer.js","sourceRoot":"","sources":["../../../src/transaction/Signer.ts"],"names":[],"mappings":";;;AA6FA,gDAMC;AAnGD,mCAA8C;AAC9C,iDAAkD;AAClD,sDAAkD;AAmBlD;;GAEG;AACH,MAAa,YAAY;IACf,MAAM,CAAwB;IAEtC,YAAY,UAAkB;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAY,CAAC,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAgB,EAAE,IAAa;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,qBAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAY,CAAC,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY;QACjB,MAAM,MAAM,GAAG,eAAM,CAAC,YAAY,EAAE,CAAC;QACrC,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAgB;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEvD,OAAO;gBACL,CAAC,EAAE,SAAS,CAAC,CAAC;gBACd,CAAC,EAAE,SAAS,CAAC,CAAC;gBACd,CAAC,EAAE,SAAS,CAAC,CAAC;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAY,CAAC,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;CACF;AA/DD,oCA+DC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,GAAoB;IACrD,MAAM,CAAC,GAAG,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAQ,WAAW;IAC/C,MAAM,CAAC,GAAG,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAQ,WAAW;IAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAe,sBAAsB;IAE1D,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionBuilder = void 0;
|
|
4
|
+
const index_js_1 = require("../errors/index.js");
|
|
5
|
+
const encoding_js_1 = require("../utils/encoding.js");
|
|
6
|
+
const hash_js_1 = require("../utils/hash.js");
|
|
7
|
+
const address_js_1 = require("../utils/address.js");
|
|
8
|
+
const Signer_js_1 = require("./Signer.js");
|
|
9
|
+
/**
|
|
10
|
+
* Builder for creating and signing transactions
|
|
11
|
+
*/
|
|
12
|
+
class TransactionBuilder {
|
|
13
|
+
from;
|
|
14
|
+
operations = [];
|
|
15
|
+
_nonce;
|
|
16
|
+
_timestamp;
|
|
17
|
+
constructor(from) {
|
|
18
|
+
if (!(0, address_js_1.isValidAddress)(from)) {
|
|
19
|
+
throw new index_js_1.ValidationError(`Invalid address: ${from}`);
|
|
20
|
+
}
|
|
21
|
+
this.from = from;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Add a SET operation
|
|
25
|
+
* @param key - The key to set
|
|
26
|
+
* @param value - The value (string or Buffer)
|
|
27
|
+
*/
|
|
28
|
+
set(key, value) {
|
|
29
|
+
if (!key) {
|
|
30
|
+
throw new index_js_1.ValidationError('Key cannot be empty');
|
|
31
|
+
}
|
|
32
|
+
const encodedValue = (0, encoding_js_1.base64Encode)(value);
|
|
33
|
+
this.operations.push({
|
|
34
|
+
type: 'SET',
|
|
35
|
+
key,
|
|
36
|
+
value: encodedValue,
|
|
37
|
+
});
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Add a DELETE operation
|
|
42
|
+
* @param key - The key to delete
|
|
43
|
+
*/
|
|
44
|
+
delete(key) {
|
|
45
|
+
if (!key) {
|
|
46
|
+
throw new index_js_1.ValidationError('Key cannot be empty');
|
|
47
|
+
}
|
|
48
|
+
this.operations.push({
|
|
49
|
+
type: 'DELETE',
|
|
50
|
+
key,
|
|
51
|
+
});
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Add a raw operation
|
|
56
|
+
*/
|
|
57
|
+
addOperation(op) {
|
|
58
|
+
this.operations.push(op);
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Set a custom nonce (defaults to Date.now())
|
|
63
|
+
*/
|
|
64
|
+
withNonce(nonce) {
|
|
65
|
+
this._nonce = nonce;
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Set a custom timestamp (defaults to current Unix timestamp)
|
|
70
|
+
*/
|
|
71
|
+
withTimestamp(timestamp) {
|
|
72
|
+
this._timestamp = timestamp;
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build an unsigned transaction
|
|
77
|
+
*/
|
|
78
|
+
build() {
|
|
79
|
+
if (this.operations.length === 0) {
|
|
80
|
+
throw new index_js_1.ValidationError('Transaction must have at least one operation');
|
|
81
|
+
}
|
|
82
|
+
const timestamp = this._timestamp ?? Math.floor(Date.now() / 1000);
|
|
83
|
+
const nonce = this._nonce ?? Date.now();
|
|
84
|
+
const data = {
|
|
85
|
+
operations: this.operations,
|
|
86
|
+
};
|
|
87
|
+
return {
|
|
88
|
+
from: this.from,
|
|
89
|
+
timestamp,
|
|
90
|
+
data,
|
|
91
|
+
nonce,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Build and sign the transaction
|
|
96
|
+
*/
|
|
97
|
+
async buildAndSign(signer) {
|
|
98
|
+
// Verify signer address matches
|
|
99
|
+
if (signer.address.toLowerCase() !== this.from.toLowerCase()) {
|
|
100
|
+
throw new index_js_1.ValidationError(`Signer address ${signer.address} does not match transaction from address ${this.from}`);
|
|
101
|
+
}
|
|
102
|
+
const unsigned = this.build();
|
|
103
|
+
// Compute hash: SHA256 of JSON stringified transaction
|
|
104
|
+
// Order must be: from, timestamp, data, nonce (to match Go implementation)
|
|
105
|
+
const hashData = {
|
|
106
|
+
from: unsigned.from,
|
|
107
|
+
timestamp: unsigned.timestamp,
|
|
108
|
+
data: unsigned.data,
|
|
109
|
+
nonce: unsigned.nonce,
|
|
110
|
+
};
|
|
111
|
+
const hashString = JSON.stringify(hashData);
|
|
112
|
+
const hash = (0, hash_js_1.sha256)(hashString);
|
|
113
|
+
// Sign the hash
|
|
114
|
+
const signatureResult = await signer.sign(hash);
|
|
115
|
+
const signature = (0, Signer_js_1.serializeSignature)(signatureResult);
|
|
116
|
+
return {
|
|
117
|
+
id: Array.from(hash),
|
|
118
|
+
from: unsigned.from,
|
|
119
|
+
timestamp: unsigned.timestamp,
|
|
120
|
+
data: unsigned.data,
|
|
121
|
+
nonce: unsigned.nonce,
|
|
122
|
+
signature,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
exports.TransactionBuilder = TransactionBuilder;
|
|
127
|
+
//# sourceMappingURL=TransactionBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionBuilder.js","sourceRoot":"","sources":["../../../src/transaction/TransactionBuilder.ts"],"names":[],"mappings":";;;AACA,iDAAqD;AACrD,sDAAoD;AACpD,8CAA0C;AAC1C,oDAAqD;AACrD,2CAAyD;AAEzD;;GAEG;AACH,MAAa,kBAAkB;IACrB,IAAI,CAAS;IACb,UAAU,GAAgB,EAAE,CAAC;IAC7B,MAAM,CAAU;IAChB,UAAU,CAAU;IAE5B,YAAY,IAAY;QACtB,IAAI,CAAC,IAAA,2BAAc,EAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,0BAAe,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,GAAW,EAAE,KAA0B;QACzC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,0BAAe,CAAC,qBAAqB,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,YAAY,GAAG,IAAA,0BAAY,EAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,KAAK;YACX,GAAG;YACH,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,0BAAe,CAAC,qBAAqB,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,QAAQ;YACd,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,EAAa;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,SAAiB;QAC7B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,0BAAe,CAAC,8CAA8C,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAExC,MAAM,IAAI,GAAoB;YAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS;YACT,IAAI;YACJ,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,gCAAgC;QAChC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7D,MAAM,IAAI,0BAAe,CAAC,kBAAkB,MAAM,CAAC,OAAO,4CAA4C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAE9B,uDAAuD;QACvD,2EAA2E;QAC3E,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAA,gBAAM,EAAC,UAAU,CAAC,CAAC;QAEhC,gBAAgB;QAChB,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAA,8BAAkB,EAAC,eAAe,CAAC,CAAC;QAEtD,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,SAAS;SACV,CAAC;IACJ,CAAC;CACF;AAhID,gDAgIC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionBuilder = exports.serializeSignature = exports.WalletSigner = void 0;
|
|
4
|
+
var Signer_js_1 = require("./Signer.js");
|
|
5
|
+
Object.defineProperty(exports, "WalletSigner", { enumerable: true, get: function () { return Signer_js_1.WalletSigner; } });
|
|
6
|
+
Object.defineProperty(exports, "serializeSignature", { enumerable: true, get: function () { return Signer_js_1.serializeSignature; } });
|
|
7
|
+
var TransactionBuilder_js_1 = require("./TransactionBuilder.js");
|
|
8
|
+
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return TransactionBuilder_js_1.TransactionBuilder; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transaction/index.ts"],"names":[],"mappings":";;;AAAA,yCAA+D;AAAtD,yGAAA,YAAY,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAGzC,iEAA6D;AAApD,2HAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/types/api.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/types/chain.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/types/events.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/types/node.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/types/state.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/types/transaction.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidAddress = isValidAddress;
|
|
4
|
+
exports.normalizeAddress = normalizeAddress;
|
|
5
|
+
exports.addressEquals = addressEquals;
|
|
6
|
+
/**
|
|
7
|
+
* Check if a string is a valid Ethereum-style address
|
|
8
|
+
*/
|
|
9
|
+
function isValidAddress(address) {
|
|
10
|
+
if (!address.startsWith('0x')) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
if (address.length !== 42) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
// Check if it's valid hex
|
|
17
|
+
const hexPart = address.slice(2);
|
|
18
|
+
return /^[0-9a-fA-F]+$/.test(hexPart);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Normalize an address to checksum format
|
|
22
|
+
* For now, just lowercases the hex part
|
|
23
|
+
*/
|
|
24
|
+
function normalizeAddress(address) {
|
|
25
|
+
if (!isValidAddress(address)) {
|
|
26
|
+
throw new Error(`Invalid address: ${address}`);
|
|
27
|
+
}
|
|
28
|
+
return address.toLowerCase();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Compare two addresses for equality (case-insensitive)
|
|
32
|
+
*/
|
|
33
|
+
function addressEquals(a, b) {
|
|
34
|
+
return normalizeAddress(a) === normalizeAddress(b);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/utils/address.ts"],"names":[],"mappings":";;AAGA,wCAUC;AAMD,4CAKC;AAKD,sCAEC;AA/BD;;GAEG;AACH,SAAgB,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,0BAA0B;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,CAAS,EAAE,CAAS;IAChD,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.base64Encode = base64Encode;
|
|
4
|
+
exports.base64Decode = base64Decode;
|
|
5
|
+
exports.base64DecodeBytes = base64DecodeBytes;
|
|
6
|
+
exports.hexToBytes = hexToBytes;
|
|
7
|
+
exports.bytesToHex = bytesToHex;
|
|
8
|
+
/**
|
|
9
|
+
* Encode a string or Buffer to Base64
|
|
10
|
+
*/
|
|
11
|
+
function base64Encode(data) {
|
|
12
|
+
if (typeof data === 'string') {
|
|
13
|
+
return Buffer.from(data, 'utf-8').toString('base64');
|
|
14
|
+
}
|
|
15
|
+
return Buffer.from(data).toString('base64');
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Decode a Base64 string to UTF-8 string
|
|
19
|
+
*/
|
|
20
|
+
function base64Decode(data) {
|
|
21
|
+
return Buffer.from(data, 'base64').toString('utf-8');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Decode a Base64 string to Uint8Array
|
|
25
|
+
*/
|
|
26
|
+
function base64DecodeBytes(data) {
|
|
27
|
+
return new Uint8Array(Buffer.from(data, 'base64'));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Convert a hex string to Uint8Array
|
|
31
|
+
*/
|
|
32
|
+
function hexToBytes(hex) {
|
|
33
|
+
const cleanHex = hex.startsWith('0x') ? hex.slice(2) : hex;
|
|
34
|
+
const bytes = new Uint8Array(cleanHex.length / 2);
|
|
35
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
36
|
+
bytes[i] = parseInt(cleanHex.slice(i * 2, i * 2 + 2), 16);
|
|
37
|
+
}
|
|
38
|
+
return bytes;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Convert Uint8Array to hex string
|
|
42
|
+
*/
|
|
43
|
+
function bytesToHex(bytes, prefix = true) {
|
|
44
|
+
const hex = Array.from(bytes)
|
|
45
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
46
|
+
.join('');
|
|
47
|
+
return prefix ? `0x${hex}` : hex;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=encoding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../../src/utils/encoding.ts"],"names":[],"mappings":";;AAGA,oCAKC;AAKD,oCAEC;AAKD,8CAEC;AAKD,gCAOC;AAKD,gCAKC;AA5CD;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAyB;IACpD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,GAAW;IACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAiB,EAAE,MAAM,GAAG,IAAI;IACzD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sha256 = sha256;
|
|
4
|
+
exports.sha256Hex = sha256Hex;
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
/**
|
|
7
|
+
* Compute SHA256 hash of data
|
|
8
|
+
*/
|
|
9
|
+
function sha256(data) {
|
|
10
|
+
const hash = (0, crypto_1.createHash)('sha256');
|
|
11
|
+
if (typeof data === 'string') {
|
|
12
|
+
hash.update(data, 'utf-8');
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
hash.update(data);
|
|
16
|
+
}
|
|
17
|
+
return new Uint8Array(hash.digest());
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Compute SHA256 hash and return as hex string
|
|
21
|
+
*/
|
|
22
|
+
function sha256Hex(data) {
|
|
23
|
+
const hash = sha256(data);
|
|
24
|
+
return Array.from(hash)
|
|
25
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
26
|
+
.join('');
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/utils/hash.ts"],"names":[],"mappings":";;AAKA,wBAQC;AAKD,8BAKC;AAvBD,mCAAoC;AAEpC;;GAEG;AACH,SAAgB,MAAM,CAAC,IAAyB;IAC9C,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,IAAyB;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addressEquals = exports.normalizeAddress = exports.isValidAddress = exports.sha256Hex = exports.sha256 = exports.bytesToHex = exports.hexToBytes = exports.base64DecodeBytes = exports.base64Decode = exports.base64Encode = void 0;
|
|
4
|
+
var encoding_js_1 = require("./encoding.js");
|
|
5
|
+
Object.defineProperty(exports, "base64Encode", { enumerable: true, get: function () { return encoding_js_1.base64Encode; } });
|
|
6
|
+
Object.defineProperty(exports, "base64Decode", { enumerable: true, get: function () { return encoding_js_1.base64Decode; } });
|
|
7
|
+
Object.defineProperty(exports, "base64DecodeBytes", { enumerable: true, get: function () { return encoding_js_1.base64DecodeBytes; } });
|
|
8
|
+
Object.defineProperty(exports, "hexToBytes", { enumerable: true, get: function () { return encoding_js_1.hexToBytes; } });
|
|
9
|
+
Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return encoding_js_1.bytesToHex; } });
|
|
10
|
+
var hash_js_1 = require("./hash.js");
|
|
11
|
+
Object.defineProperty(exports, "sha256", { enumerable: true, get: function () { return hash_js_1.sha256; } });
|
|
12
|
+
Object.defineProperty(exports, "sha256Hex", { enumerable: true, get: function () { return hash_js_1.sha256Hex; } });
|
|
13
|
+
var address_js_1 = require("./address.js");
|
|
14
|
+
Object.defineProperty(exports, "isValidAddress", { enumerable: true, get: function () { return address_js_1.isValidAddress; } });
|
|
15
|
+
Object.defineProperty(exports, "normalizeAddress", { enumerable: true, get: function () { return address_js_1.normalizeAddress; } });
|
|
16
|
+
Object.defineProperty(exports, "addressEquals", { enumerable: true, get: function () { return address_js_1.addressEquals; } });
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,6CAMuB;AALrB,2GAAA,YAAY,OAAA;AACZ,2GAAA,YAAY,OAAA;AACZ,gHAAA,iBAAiB,OAAA;AACjB,yGAAA,UAAU,OAAA;AACV,yGAAA,UAAU,OAAA;AAGZ,qCAA8C;AAArC,iGAAA,MAAM,OAAA;AAAE,oGAAA,SAAS,OAAA;AAE1B,2CAA+E;AAAtE,4GAAA,cAAc,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,2GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { ChainInfo, Block } from '../types/chain.js';
|
|
2
|
+
import type { Transaction } from '../types/transaction.js';
|
|
3
|
+
import type { SubmitTransactionResponse } from '../types/api.js';
|
|
4
|
+
import type { StateValueResponse, PrefixQueryResult } from '../types/state.js';
|
|
5
|
+
import type { NodeInfo, Peer, MempoolInfo, HealthResponse } from '../types/node.js';
|
|
6
|
+
/**
|
|
7
|
+
* Configuration for PodoruClient
|
|
8
|
+
*/
|
|
9
|
+
export interface PodoruClientConfig {
|
|
10
|
+
baseUrl: string;
|
|
11
|
+
timeout?: number;
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* REST API client for Podoru Chain
|
|
16
|
+
*/
|
|
17
|
+
export declare class PodoruClient {
|
|
18
|
+
private baseUrl;
|
|
19
|
+
private timeout;
|
|
20
|
+
private headers;
|
|
21
|
+
constructor(config: PodoruClientConfig);
|
|
22
|
+
/**
|
|
23
|
+
* Internal fetch helper with error handling
|
|
24
|
+
*/
|
|
25
|
+
private fetch;
|
|
26
|
+
/**
|
|
27
|
+
* Get blockchain information
|
|
28
|
+
*/
|
|
29
|
+
getChainInfo(): Promise<ChainInfo>;
|
|
30
|
+
/**
|
|
31
|
+
* Get block by hash
|
|
32
|
+
*/
|
|
33
|
+
getBlockByHash(hash: string): Promise<Block>;
|
|
34
|
+
/**
|
|
35
|
+
* Get block by height
|
|
36
|
+
*/
|
|
37
|
+
getBlockByHeight(height: number): Promise<Block>;
|
|
38
|
+
/**
|
|
39
|
+
* Get the latest block
|
|
40
|
+
*/
|
|
41
|
+
getLatestBlock(): Promise<Block>;
|
|
42
|
+
/**
|
|
43
|
+
* Get transaction by hash
|
|
44
|
+
*/
|
|
45
|
+
getTransaction(hash: string): Promise<Transaction>;
|
|
46
|
+
/**
|
|
47
|
+
* Submit a signed transaction
|
|
48
|
+
*/
|
|
49
|
+
submitTransaction(tx: Transaction): Promise<SubmitTransactionResponse>;
|
|
50
|
+
/**
|
|
51
|
+
* Get a single state value
|
|
52
|
+
*/
|
|
53
|
+
getState(key: string): Promise<StateValueResponse>;
|
|
54
|
+
/**
|
|
55
|
+
* Get multiple state values in a batch
|
|
56
|
+
*/
|
|
57
|
+
batchGetState(keys: string[]): Promise<Record<string, string | null>>;
|
|
58
|
+
/**
|
|
59
|
+
* Query state by key prefix
|
|
60
|
+
*/
|
|
61
|
+
queryByPrefix(prefix: string, limit?: number): Promise<PrefixQueryResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Get node information
|
|
64
|
+
*/
|
|
65
|
+
getNodeInfo(): Promise<NodeInfo>;
|
|
66
|
+
/**
|
|
67
|
+
* Get connected peers
|
|
68
|
+
*/
|
|
69
|
+
getPeers(): Promise<Peer[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Health check
|
|
72
|
+
*/
|
|
73
|
+
getHealth(): Promise<HealthResponse>;
|
|
74
|
+
/**
|
|
75
|
+
* Get mempool information and pending transactions
|
|
76
|
+
*/
|
|
77
|
+
getMempool(): Promise<MempoolInfo>;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=PodoruClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodoruClient.d.ts","sourceRoot":"","sources":["../../../src/client/PodoruClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGpF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAyB;gBAE5B,MAAM,EAAE,kBAAkB;IAMtC;;OAEG;YACW,KAAK;IAgDnB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAIxC;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIlD;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAItD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,KAAK,CAAC;IAMtC;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIxD;;OAEG;IACG,iBAAiB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAS5E;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIxD;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAO3E;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAS/E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAItC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAIjC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAM1C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;CAGzC"}
|