koilib 2.5.0 → 2.7.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 +6 -6
- package/dist/koinos.js +2986 -4607
- package/dist/koinos.min.js +1 -1
- package/dist/koinos.min.js.LICENSE.txt +2 -2
- package/lib/Contract.d.ts +9 -11
- package/lib/Contract.js +20 -20
- package/lib/Contract.js.map +1 -1
- package/lib/Provider.d.ts +24 -17
- package/lib/Provider.js +99 -105
- package/lib/Provider.js.map +1 -1
- package/lib/Serializer.js +9 -9
- package/lib/Serializer.js.map +1 -1
- package/lib/Signer.d.ts +9 -9
- package/lib/Signer.js +30 -22
- package/lib/Signer.js.map +1 -1
- package/lib/browser/Contract.d.ts +200 -0
- package/lib/browser/Contract.js +298 -0
- package/lib/browser/Contract.js.map +1 -0
- package/lib/browser/Provider.d.ts +160 -0
- package/lib/browser/Provider.js +246 -0
- package/lib/browser/Provider.js.map +1 -0
- package/lib/browser/Serializer.d.ts +81 -0
- package/lib/browser/Serializer.js +169 -0
- package/lib/browser/Serializer.js.map +1 -0
- package/lib/browser/Signer.d.ts +296 -0
- package/lib/browser/Signer.js +429 -0
- package/lib/browser/Signer.js.map +1 -0
- package/lib/browser/index.d.ts +7 -0
- package/lib/browser/index.js +34 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/index2.d.ts +2 -0
- package/lib/browser/index2.js +33 -0
- package/lib/browser/index2.js.map +1 -0
- package/lib/browser/interface.d.ts +279 -0
- package/lib/browser/interface.js +3 -0
- package/lib/browser/interface.js.map +1 -0
- package/lib/browser/jsonDescriptors/krc20-proto.json +183 -0
- package/lib/browser/jsonDescriptors/protocol-proto.json +246 -0
- package/lib/browser/utils.d.ts +326 -0
- package/lib/browser/utils.js +252 -0
- package/lib/browser/utils.js.map +1 -0
- package/lib/interface.d.ts +24 -25
- package/lib/utils.d.ts +12 -8
- package/lib/utils.js +7 -7
- package/lib/utils.js.map +1 -1
- package/package.json +34 -31
package/lib/Serializer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Serializer.js","sourceRoot":"","sources":["../src/Serializer.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AACrD,4CAA0D;AAC1D,mCAOiB;AAEjB,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AAEvC;;;;;;;;GAQG;AACH,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC1D,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAY,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAa,UAAU;IAsBrB,YACE,KAAiB,EACjB,IAaC;QApBH;;WAEG;QACH,oBAAe,GAAG,IAAI,CAAC;QAmBrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,YAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,WAAW;YACrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CACb,YAAqC,EACrC,QAAiB;QAEjB,MAAM,YAAY,GAChB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAkB,CAAC,CAAC;QAC/D,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,8DAA8D;YAC9D,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBACrD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAE/D,qBAAqB;gBACrB,IAAI,IAAI,KAAK,OAAO,EAAE;oBACpB,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC7C,OAAO;iBACR;gBAED,0BAA0B;gBAC1B,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAClC,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAY,
|
|
1
|
+
{"version":3,"file":"Serializer.js","sourceRoot":"","sources":["../src/Serializer.ts"],"names":[],"mappings":"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"}
|
package/lib/Signer.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Provider } from "./Provider";
|
|
2
|
-
import { TransactionJson, ActiveTransactionData, Abi,
|
|
2
|
+
import { TransactionJson, TransactionJsonWait, ActiveTransactionData, Abi, RecoverPublicKeyOptions, BlockJson } from "./interface";
|
|
3
3
|
import { Serializer } from "./Serializer";
|
|
4
4
|
export interface SignerInterface {
|
|
5
5
|
provider?: Provider;
|
|
6
6
|
serializer?: Serializer;
|
|
7
|
-
getAddress(compressed?: boolean)
|
|
8
|
-
getPrivateKey(format: "wif" | "hex", compressed?: boolean)
|
|
9
|
-
signTransaction(tx: TransactionJson)
|
|
10
|
-
sendTransaction(tx: TransactionJson, abis?: Record<string, Abi>)
|
|
11
|
-
encodeTransaction(activeData: ActiveTransactionData)
|
|
12
|
-
decodeTransaction(tx: TransactionJson)
|
|
7
|
+
getAddress: (compressed?: boolean) => string;
|
|
8
|
+
getPrivateKey: (format: "wif" | "hex", compressed?: boolean) => string;
|
|
9
|
+
signTransaction: (tx: TransactionJson) => Promise<TransactionJson>;
|
|
10
|
+
sendTransaction: (tx: TransactionJson, abis?: Record<string, Abi>) => Promise<TransactionJsonWait>;
|
|
11
|
+
encodeTransaction: (activeData: ActiveTransactionData) => Promise<TransactionJson>;
|
|
12
|
+
decodeTransaction: (tx: TransactionJson) => Promise<ActiveTransactionData>;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* The Signer Class contains the private key needed to sign transactions.
|
|
@@ -179,7 +179,7 @@ export declare class Signer implements SignerInterface {
|
|
|
179
179
|
* transaction. This parameter is optional.
|
|
180
180
|
* @returns
|
|
181
181
|
*/
|
|
182
|
-
sendTransaction(tx: TransactionJson, _abis?: Record<string, Abi>): Promise<
|
|
182
|
+
sendTransaction(tx: TransactionJson, _abis?: Record<string, Abi>): Promise<TransactionJsonWait>;
|
|
183
183
|
/**
|
|
184
184
|
* Function to recover the public key from a signed
|
|
185
185
|
* transaction or block.
|
|
@@ -283,7 +283,7 @@ export declare class Signer implements SignerInterface {
|
|
|
283
283
|
* Function to encode a transaction
|
|
284
284
|
* @param activeData - Active data consists of nonce, rc_limit, and
|
|
285
285
|
* operations. Do not set the nonce to get it from the blockchain
|
|
286
|
-
* using the provider. The rc_limit is
|
|
286
|
+
* using the provider. The rc_limit is 1e8 by default.
|
|
287
287
|
* @returns A transaction encoded. The active field is encoded in
|
|
288
288
|
* base64url
|
|
289
289
|
*/
|
package/lib/Signer.js
CHANGED
|
@@ -24,7 +24,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
exports.Signer = void 0;
|
|
26
26
|
/* eslint-disable no-param-reassign */
|
|
27
|
-
const sha256_1 = require("@noble/hashes/
|
|
27
|
+
const sha256_1 = require("@noble/hashes/sha256");
|
|
28
28
|
const secp = __importStar(require("@noble/secp256k1"));
|
|
29
29
|
const protocol_proto_json_1 = __importDefault(require("./jsonDescriptors/protocol-proto.json"));
|
|
30
30
|
const utils_1 = require("./utils");
|
|
@@ -115,11 +115,11 @@ class Signer {
|
|
|
115
115
|
}
|
|
116
116
|
if (typeof c.privateKey === "string") {
|
|
117
117
|
this.publicKey = secp.getPublicKey(c.privateKey, this.compressed);
|
|
118
|
-
this.address = utils_1.bitcoinAddress(
|
|
118
|
+
this.address = (0, utils_1.bitcoinAddress)(this.publicKey);
|
|
119
119
|
}
|
|
120
120
|
else {
|
|
121
121
|
this.publicKey = secp.getPublicKey(c.privateKey, this.compressed);
|
|
122
|
-
this.address = utils_1.bitcoinAddress(this.publicKey);
|
|
122
|
+
this.address = (0, utils_1.bitcoinAddress)(this.publicKey);
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
@@ -135,9 +135,9 @@ class Signer {
|
|
|
135
135
|
*/
|
|
136
136
|
static fromWif(wif) {
|
|
137
137
|
const compressed = wif[0] !== "5";
|
|
138
|
-
const privateKey = utils_1.bitcoinDecode(wif);
|
|
138
|
+
const privateKey = (0, utils_1.bitcoinDecode)(wif);
|
|
139
139
|
return new Signer({
|
|
140
|
-
privateKey: utils_1.toHexString(privateKey),
|
|
140
|
+
privateKey: (0, utils_1.toHexString)(privateKey),
|
|
141
141
|
compressed,
|
|
142
142
|
});
|
|
143
143
|
}
|
|
@@ -154,7 +154,7 @@ class Signer {
|
|
|
154
154
|
* @returns Signer object
|
|
155
155
|
*/
|
|
156
156
|
static fromSeed(seed, compressed) {
|
|
157
|
-
const privateKey = sha256_1.sha256(seed);
|
|
157
|
+
const privateKey = (0, sha256_1.sha256)(seed);
|
|
158
158
|
return new Signer({ privateKey, compressed });
|
|
159
159
|
}
|
|
160
160
|
/**
|
|
@@ -165,10 +165,10 @@ class Signer {
|
|
|
165
165
|
getAddress(compressed = true) {
|
|
166
166
|
if (typeof this.privateKey === "string") {
|
|
167
167
|
const publicKey = secp.getPublicKey(this.privateKey, compressed);
|
|
168
|
-
return utils_1.bitcoinAddress(
|
|
168
|
+
return (0, utils_1.bitcoinAddress)(publicKey);
|
|
169
169
|
}
|
|
170
170
|
const publicKey = secp.getPublicKey(this.privateKey, compressed);
|
|
171
|
-
return utils_1.bitcoinAddress(publicKey);
|
|
171
|
+
return (0, utils_1.bitcoinAddress)(publicKey);
|
|
172
172
|
}
|
|
173
173
|
/**
|
|
174
174
|
* Function to get the private key in hex format or wif format
|
|
@@ -191,7 +191,7 @@ class Signer {
|
|
|
191
191
|
getPrivateKey(format = "hex", compressed) {
|
|
192
192
|
let stringPrivateKey;
|
|
193
193
|
if (this.privateKey instanceof Uint8Array) {
|
|
194
|
-
stringPrivateKey = utils_1.toHexString(this.privateKey);
|
|
194
|
+
stringPrivateKey = (0, utils_1.toHexString)(this.privateKey);
|
|
195
195
|
}
|
|
196
196
|
else if (typeof this.privateKey === "string") {
|
|
197
197
|
stringPrivateKey = this.privateKey;
|
|
@@ -204,7 +204,7 @@ class Signer {
|
|
|
204
204
|
case "hex":
|
|
205
205
|
return stringPrivateKey;
|
|
206
206
|
case "wif":
|
|
207
|
-
return utils_1.bitcoinEncode(utils_1.toUint8Array(stringPrivateKey), "private", comp);
|
|
207
|
+
return (0, utils_1.bitcoinEncode)((0, utils_1.toUint8Array)(stringPrivateKey), "private", comp);
|
|
208
208
|
default:
|
|
209
209
|
/* eslint-disable-next-line @typescript-eslint/restrict-template-expressions */
|
|
210
210
|
throw new Error(`Invalid format ${format}`);
|
|
@@ -219,7 +219,7 @@ class Signer {
|
|
|
219
219
|
async signTransaction(tx) {
|
|
220
220
|
if (!tx.active)
|
|
221
221
|
throw new Error("Active data is not defined");
|
|
222
|
-
const hash = sha256_1.sha256(utils_1.decodeBase64(tx.active));
|
|
222
|
+
const hash = (0, sha256_1.sha256)((0, utils_1.decodeBase64)(tx.active));
|
|
223
223
|
const [compSignature, recovery] = await secp.sign(hash, this.privateKey, {
|
|
224
224
|
recovered: true,
|
|
225
225
|
canonical: true,
|
|
@@ -228,8 +228,8 @@ class Signer {
|
|
|
228
228
|
const compactSignature = new Uint8Array(65);
|
|
229
229
|
compactSignature.set([recovery + 31], 0);
|
|
230
230
|
compactSignature.set(compSignature, 1);
|
|
231
|
-
tx.signature_data = utils_1.encodeBase64(compactSignature);
|
|
232
|
-
const multihash = `0x1220${utils_1.toHexString(hash)}`; // 12: code sha2-256. 20: length (32 bytes)
|
|
231
|
+
tx.signature_data = (0, utils_1.encodeBase64)(compactSignature);
|
|
232
|
+
const multihash = `0x1220${(0, utils_1.toHexString)(hash)}`; // 12: code sha2-256. 20: length (32 bytes)
|
|
233
233
|
tx.id = multihash;
|
|
234
234
|
return tx;
|
|
235
235
|
}
|
|
@@ -247,7 +247,15 @@ class Signer {
|
|
|
247
247
|
await this.signTransaction(tx);
|
|
248
248
|
if (!this.provider)
|
|
249
249
|
throw new Error("provider is undefined");
|
|
250
|
-
|
|
250
|
+
await this.provider.sendTransaction(tx);
|
|
251
|
+
return {
|
|
252
|
+
...tx,
|
|
253
|
+
wait: async (type = "byBlock", timeout = 30000) => {
|
|
254
|
+
if (!this.provider)
|
|
255
|
+
throw new Error("provider is undefined");
|
|
256
|
+
return this.provider.wait(tx.id, type, timeout);
|
|
257
|
+
},
|
|
258
|
+
};
|
|
251
259
|
}
|
|
252
260
|
/**
|
|
253
261
|
* Function to recover the public key from a signed
|
|
@@ -311,19 +319,19 @@ class Signer {
|
|
|
311
319
|
if (opts && typeof opts.compressed !== "undefined") {
|
|
312
320
|
compressed = opts.compressed;
|
|
313
321
|
}
|
|
314
|
-
const hash = sha256_1.sha256(utils_1.decodeBase64(txOrBlock.active));
|
|
315
|
-
const compactSignatureHex = utils_1.toHexString(utils_1.decodeBase64(signatureData));
|
|
322
|
+
const hash = (0, sha256_1.sha256)((0, utils_1.decodeBase64)(txOrBlock.active));
|
|
323
|
+
const compactSignatureHex = (0, utils_1.toHexString)((0, utils_1.decodeBase64)(signatureData));
|
|
316
324
|
const recovery = Number(`0x${compactSignatureHex.slice(0, 2)}`) - 31;
|
|
317
325
|
const rHex = compactSignatureHex.slice(2, 66);
|
|
318
326
|
const sHex = compactSignatureHex.slice(66);
|
|
319
327
|
const r = BigInt(`0x${rHex}`);
|
|
320
328
|
const s = BigInt(`0x${sHex}`);
|
|
321
329
|
const sig = new secp.Signature(r, s);
|
|
322
|
-
const publicKey = secp.recoverPublicKey(utils_1.toHexString(hash), sig.toHex(), recovery);
|
|
330
|
+
const publicKey = secp.recoverPublicKey((0, utils_1.toHexString)(hash), sig.toHex(), recovery);
|
|
323
331
|
if (!publicKey)
|
|
324
332
|
throw new Error("Public key cannot be recovered");
|
|
325
333
|
if (!compressed)
|
|
326
|
-
return publicKey;
|
|
334
|
+
return (0, utils_1.toHexString)(publicKey);
|
|
327
335
|
return secp.Point.fromHex(publicKey).toHex(true);
|
|
328
336
|
}
|
|
329
337
|
/**
|
|
@@ -376,13 +384,13 @@ class Signer {
|
|
|
376
384
|
*/
|
|
377
385
|
static async recoverAddress(txOrBlock, opts) {
|
|
378
386
|
const publicKey = await Signer.recoverPublicKey(txOrBlock, opts);
|
|
379
|
-
return utils_1.bitcoinAddress(utils_1.toUint8Array(publicKey));
|
|
387
|
+
return (0, utils_1.bitcoinAddress)((0, utils_1.toUint8Array)(publicKey));
|
|
380
388
|
}
|
|
381
389
|
/**
|
|
382
390
|
* Function to encode a transaction
|
|
383
391
|
* @param activeData - Active data consists of nonce, rc_limit, and
|
|
384
392
|
* operations. Do not set the nonce to get it from the blockchain
|
|
385
|
-
* using the provider. The rc_limit is
|
|
393
|
+
* using the provider. The rc_limit is 1e8 by default.
|
|
386
394
|
* @returns A transaction encoded. The active field is encoded in
|
|
387
395
|
* base64url
|
|
388
396
|
*/
|
|
@@ -395,7 +403,7 @@ class Signer {
|
|
|
395
403
|
// this depends on the final architecture for names on Koinos
|
|
396
404
|
nonce = await this.provider.getNonce(this.getAddress());
|
|
397
405
|
}
|
|
398
|
-
const rcLimit = activeData.rc_limit === undefined ?
|
|
406
|
+
const rcLimit = activeData.rc_limit === undefined ? 1e8 : activeData.rc_limit;
|
|
399
407
|
const operations = activeData.operations ? activeData.operations : [];
|
|
400
408
|
const activeData2 = {
|
|
401
409
|
rc_limit: rcLimit,
|
|
@@ -404,7 +412,7 @@ class Signer {
|
|
|
404
412
|
};
|
|
405
413
|
const buffer = await this.serializer.serialize(activeData2);
|
|
406
414
|
return {
|
|
407
|
-
active: utils_1.encodeBase64(buffer),
|
|
415
|
+
active: (0, utils_1.encodeBase64)(buffer),
|
|
408
416
|
};
|
|
409
417
|
}
|
|
410
418
|
/**
|
package/lib/Signer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Signer.js","sourceRoot":"","sources":["../src/Signer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"Signer.js","sourceRoot":"","sources":["../src/Signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { Signer, SignerInterface } from "./Signer";
|
|
2
|
+
import { Provider } from "./Provider";
|
|
3
|
+
import { Serializer } from "./Serializer";
|
|
4
|
+
import { CallContractOperationNested, UploadContractOperationNested, TransactionJsonWait, Abi, TransactionOptions, DecodedOperationJson } from "./interface";
|
|
5
|
+
/**
|
|
6
|
+
* The contract class contains the contract ID and contract entries
|
|
7
|
+
* definition needed to encode/decode operations during the
|
|
8
|
+
* interaction with the user and the communication with the RPC node.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* const { Contract, Provider, Signer, utils } = require("koilib");
|
|
14
|
+
* const rpcNodes = ["http://api.koinos.io:8080"];
|
|
15
|
+
* const privateKey = "f186a5de49797bfd52dc42505c33d75a46822ed5b60046e09d7c336242e20200";
|
|
16
|
+
* const provider = new Provider(rpcNodes);
|
|
17
|
+
* const signer = new Signer({ privateKey, provider });
|
|
18
|
+
* const koinContract = new Contract({
|
|
19
|
+
* id: "19JntSm8pSNETT9aHTwAUHC5RMoaSmgZPJ",
|
|
20
|
+
* abi: utils.Krc20Abi,
|
|
21
|
+
* provider,
|
|
22
|
+
* signer,
|
|
23
|
+
* });
|
|
24
|
+
* const koin = koinContract.functions;
|
|
25
|
+
*
|
|
26
|
+
* // optional: preformat input/output
|
|
27
|
+
* koinContract.abi.methods.balanceOf.preformatInput = (owner) =>
|
|
28
|
+
* ({ owner });
|
|
29
|
+
* koinContract.abi.methods.balanceOf.preformatOutput = (res) =>
|
|
30
|
+
* utils.formatUnits(res.value, 8);
|
|
31
|
+
* koinContract.abi.methods.transfer.preformatInput = (input) => ({
|
|
32
|
+
* from: signer.getAddress(),
|
|
33
|
+
* to: input.to,
|
|
34
|
+
* value: utils.parseUnits(input.value, 8),
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* async funtion main() {
|
|
38
|
+
* // Get balance
|
|
39
|
+
* const { result } = await koin.balanceOf("12fN2CQnuJM8cMnWZ1hPtM4knjLME8E4PD");
|
|
40
|
+
* console.log(result)
|
|
41
|
+
*
|
|
42
|
+
* // Transfer
|
|
43
|
+
* const { transaction } = await koin.transfer({
|
|
44
|
+
* to: "172AB1FgCsYrRAW5cwQ8KjadgxofvgPFd6",
|
|
45
|
+
* value: "10.0001",
|
|
46
|
+
* });
|
|
47
|
+
* console.log(`Transaction id ${transaction.id} submitted`);
|
|
48
|
+
*
|
|
49
|
+
* // wait to be mined
|
|
50
|
+
* const blockNumber = await transaction.wait();
|
|
51
|
+
* console.log(`Transaction mined. Block number: ${blockNumber}`);
|
|
52
|
+
* }
|
|
53
|
+
*
|
|
54
|
+
* main();
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare class Contract {
|
|
58
|
+
/**
|
|
59
|
+
* Contract ID
|
|
60
|
+
*/
|
|
61
|
+
id?: Uint8Array;
|
|
62
|
+
/**
|
|
63
|
+
* Set of functions to interact with the smart
|
|
64
|
+
* contract. These functions are automatically generated
|
|
65
|
+
* in the constructor of the class
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* const owner = "1Gvqdo9if6v6tFomEuTuMWP1D7H7U9yksb";
|
|
70
|
+
* await koinContract.functions.balanceOf({ owner });
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
functions: {
|
|
74
|
+
[x: string]: <T = Record<string, unknown>>(args?: unknown, opts?: TransactionOptions) => Promise<{
|
|
75
|
+
operation: CallContractOperationNested;
|
|
76
|
+
transaction?: TransactionJsonWait;
|
|
77
|
+
result?: T;
|
|
78
|
+
}>;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Application Binary Interface
|
|
82
|
+
*/
|
|
83
|
+
abi?: Abi;
|
|
84
|
+
/**
|
|
85
|
+
* Signer interacting with the smart contract
|
|
86
|
+
*/
|
|
87
|
+
signer?: SignerInterface;
|
|
88
|
+
/**
|
|
89
|
+
* Provider to connect with the blockchain
|
|
90
|
+
*/
|
|
91
|
+
provider?: Provider;
|
|
92
|
+
/**
|
|
93
|
+
* Serializer to serialize/deserialize data types
|
|
94
|
+
*/
|
|
95
|
+
serializer?: Serializer;
|
|
96
|
+
/**
|
|
97
|
+
* Bytecode. Needed to deploy the smart contract.
|
|
98
|
+
*/
|
|
99
|
+
bytecode?: Uint8Array;
|
|
100
|
+
/**
|
|
101
|
+
* Options to apply when creating transactions.
|
|
102
|
+
* By default it set rc_limit to 1e8, sendTransaction true,
|
|
103
|
+
* sendAbis true, and nonce undefined (to get it from the blockchain)
|
|
104
|
+
*/
|
|
105
|
+
options: TransactionOptions;
|
|
106
|
+
constructor(c: {
|
|
107
|
+
id?: string;
|
|
108
|
+
abi?: Abi;
|
|
109
|
+
bytecode?: Uint8Array;
|
|
110
|
+
options?: TransactionOptions;
|
|
111
|
+
signer?: Signer;
|
|
112
|
+
provider?: Provider;
|
|
113
|
+
/**
|
|
114
|
+
* Set this option if you can not use _eval_ functions
|
|
115
|
+
* in the current environment. In such cases, the
|
|
116
|
+
* serializer must come from an environment where it
|
|
117
|
+
* is able to use those functions.
|
|
118
|
+
*/
|
|
119
|
+
serializer?: Serializer;
|
|
120
|
+
});
|
|
121
|
+
/**
|
|
122
|
+
* Compute contract Id
|
|
123
|
+
*/
|
|
124
|
+
static computeContractId(address: string): Uint8Array;
|
|
125
|
+
/**
|
|
126
|
+
* Get contract Id
|
|
127
|
+
*/
|
|
128
|
+
getId(): string;
|
|
129
|
+
/**
|
|
130
|
+
* Function to deploy a new smart contract.
|
|
131
|
+
* The Bytecode must be defined in the constructor of the class
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* const privateKey = "f186a5de49797bfd52dc42505c33d75a46822ed5b60046e09d7c336242e20200";
|
|
135
|
+
* const provider = new Provider(["http://api.koinos.io:8080"]);
|
|
136
|
+
* const signer = new Signer({ privateKey, provider });
|
|
137
|
+
* const bytecode = new Uint8Array([1, 2, 3, 4]);
|
|
138
|
+
* const contract = new Contract({ signer, provider, bytecode });
|
|
139
|
+
* const { transaction } = await contract.deploy();
|
|
140
|
+
* // wait to be mined
|
|
141
|
+
* const blockNumber = await transaction.wait();
|
|
142
|
+
* console.log(`Contract uploaded in block number ${blockNumber}`);
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
deploy(options?: TransactionOptions): Promise<{
|
|
146
|
+
operation: UploadContractOperationNested;
|
|
147
|
+
transaction?: TransactionJsonWait;
|
|
148
|
+
}>;
|
|
149
|
+
/**
|
|
150
|
+
* Encondes a contract operation using Koinos serialization
|
|
151
|
+
* and taking the contract entries as reference to build it
|
|
152
|
+
* @param op - Operation to encode
|
|
153
|
+
* @returns Operation encoded
|
|
154
|
+
* @example
|
|
155
|
+
* ```ts
|
|
156
|
+
* const opEncoded = contract.encodeOperation({
|
|
157
|
+
* name: "transfer",
|
|
158
|
+
* args: {
|
|
159
|
+
* from: "12fN2CQnuJM8cMnWZ1hPtM4knjLME8E4PD",
|
|
160
|
+
* to: "172AB1FgCsYrRAW5cwQ8KjadgxofvgPFd6",
|
|
161
|
+
* value: "1000",
|
|
162
|
+
* }
|
|
163
|
+
* });
|
|
164
|
+
*
|
|
165
|
+
* console.log(opEncoded);
|
|
166
|
+
* // {
|
|
167
|
+
* // call_contract: {
|
|
168
|
+
* // contract_id: "19JntSm8pSNETT9aHTwAUHC5RMoaSmgZPJ",
|
|
169
|
+
* // entry_point: 0x62efa292,
|
|
170
|
+
* // args: "MBWFsaWNlA2JvYgAAAAAAAAPo",
|
|
171
|
+
* // }
|
|
172
|
+
* // }
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
encodeOperation(op: DecodedOperationJson): Promise<CallContractOperationNested>;
|
|
176
|
+
/**
|
|
177
|
+
* Decodes a contract operation to be human readable
|
|
178
|
+
* @example
|
|
179
|
+
* ```ts
|
|
180
|
+
* const opDecoded = contract.decodeOperation({
|
|
181
|
+
* call_contract: {
|
|
182
|
+
* contract_id: "19JntSm8pSNETT9aHTwAUHC5RMoaSmgZPJ",
|
|
183
|
+
* entry_point: 0x62efa292,
|
|
184
|
+
* args: "MBWFsaWNlA2JvYgAAAAAAAAPo",
|
|
185
|
+
* }
|
|
186
|
+
* });
|
|
187
|
+
* console.log(opDecoded);
|
|
188
|
+
* // {
|
|
189
|
+
* // name: "transfer",
|
|
190
|
+
* // args: {
|
|
191
|
+
* // from: "12fN2CQnuJM8cMnWZ1hPtM4knjLME8E4PD",
|
|
192
|
+
* // to: "172AB1FgCsYrRAW5cwQ8KjadgxofvgPFd6",
|
|
193
|
+
* // value: "1000",
|
|
194
|
+
* // },
|
|
195
|
+
* // }
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
decodeOperation(op: CallContractOperationNested): Promise<DecodedOperationJson>;
|
|
199
|
+
}
|
|
200
|
+
export default Contract;
|