koilib 8.0.0 → 9.0.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/dist/koinos.js CHANGED
@@ -23130,7 +23130,12 @@ class Contract {
23130
23130
  throw new Error("Serializer is not defined");
23131
23131
  let typeName = event.name;
23132
23132
  if (this.abi && this.abi.events && this.abi.events[event.name]) {
23133
- typeName = this.abi.events[event.name].argument;
23133
+ typeName = this.abi.events[event.name].type;
23134
+ // temporary code for transition between "argument" and "type".
23135
+ // It should be removed in future versions
23136
+ if (!typeName) {
23137
+ typeName = this.abi.events[event.name].argument;
23138
+ }
23134
23139
  }
23135
23140
  const args = typeName
23136
23141
  ? await this.serializer.deserialize(event.data, typeName)
@@ -23595,18 +23600,39 @@ class Provider {
23595
23600
  * console.log("Transaction mined")
23596
23601
  * ```
23597
23602
  */
23598
- async wait(txId, type = "byBlock", timeout = 15000) {
23599
- const iniTime = Date.now();
23603
+ async wait(txId, type = "byTransactionId", timeout = 15000) {
23604
+ const endTime = Date.now() + timeout;
23600
23605
  if (type === "byTransactionId") {
23601
- while (Date.now() < iniTime + timeout) {
23606
+ while (Date.now() < endTime) {
23602
23607
  await sleep(1000);
23603
23608
  const { transactions } = await this.getTransactionsById([txId]);
23609
+ // If the API node knows about the transaction and
23610
+ // the transaction has been included in a block
23604
23611
  if (transactions &&
23605
23612
  transactions[0] &&
23606
- transactions[0].containing_blocks)
23607
- return {
23608
- blockId: transactions[0].containing_blocks[0],
23609
- };
23613
+ transactions[0].containing_blocks) {
23614
+ // For each of the blocks containing the transaction,
23615
+ // check to see if that block is a parent of head
23616
+ // Get the height of the containing block
23617
+ const blockCandidates = transactions[0].containing_blocks;
23618
+ const blocks = await this.getBlocksById(blockCandidates, {
23619
+ returnBlock: false,
23620
+ returnReceipt: false,
23621
+ });
23622
+ if (blocks && blocks.block_items && blocks.block_items.length > 0) {
23623
+ for (let i = 0; i < blocks.block_items.length; i += 1) {
23624
+ // If the ancestor block of head at the height of the containing
23625
+ // block is the containing block, return that block
23626
+ const blockNumber = Number(blocks.block_items[i].block_height);
23627
+ const blocksHeight = await this.getBlocks(blockNumber);
23628
+ if (blocksHeight) {
23629
+ const blockId = blockCandidates.find((b) => b === blocksHeight[0].block_id);
23630
+ if (blockId)
23631
+ return { blockId, blockNumber };
23632
+ }
23633
+ }
23634
+ }
23635
+ }
23610
23636
  }
23611
23637
  throw new Error(`Transaction not mined after ${timeout} ms`);
23612
23638
  }
@@ -23633,7 +23659,7 @@ class Provider {
23633
23659
  let blockNumber = 0;
23634
23660
  let iniBlock = 0;
23635
23661
  let previousId = "";
23636
- while (Date.now() < iniTime + timeout) {
23662
+ while (Date.now() < endTime) {
23637
23663
  await sleep(1000);
23638
23664
  const { head_topology: headTopology } = await this.getHeadInfo();
23639
23665
  if (blockNumber === 0) {
@@ -23760,7 +23786,7 @@ class Provider {
23760
23786
  caller_data: callerData,
23761
23787
  });
23762
23788
  if (!response || !response.value)
23763
- throw new Error("no value in the response");
23789
+ return undefined;
23764
23790
  const result = await serializer.deserialize(response.value, serializer.returnTypeName);
23765
23791
  return result;
23766
23792
  }
@@ -23844,6 +23870,56 @@ class Provider {
23844
23870
  contract_id: contractId,
23845
23871
  });
23846
23872
  }
23873
+ /**
23874
+ * Function to get the address of a system contract
23875
+ * @param name - contract name
23876
+ *
23877
+ * @example
23878
+ * ```ts
23879
+ * const provider = new Provider("https://api.koinos.io");
23880
+ * const result = await provider.invokeGetContractAddress("koin");
23881
+ * console.log(result);
23882
+ *
23883
+ * // { value: { address: '15DJN4a8SgrbGhhGksSBASiSYjGnMU8dGL' } }
23884
+ * ```
23885
+ */
23886
+ async invokeGetContractAddress(name) {
23887
+ const serializer = new Serializer_1.Serializer({
23888
+ nested: {
23889
+ get_address_arguments: {
23890
+ fields: {
23891
+ name: {
23892
+ type: "string",
23893
+ id: 1,
23894
+ },
23895
+ },
23896
+ },
23897
+ get_address_result: {
23898
+ fields: {
23899
+ value: {
23900
+ type: "address_record",
23901
+ id: 1,
23902
+ },
23903
+ },
23904
+ },
23905
+ address_record: {
23906
+ fields: {
23907
+ address: {
23908
+ type: "bytes",
23909
+ id: 1,
23910
+ options: {
23911
+ "(koinos.btype)": "ADDRESS",
23912
+ },
23913
+ },
23914
+ },
23915
+ },
23916
+ },
23917
+ }, {
23918
+ argumentsTypeName: "get_address_arguments",
23919
+ returnTypeName: "get_address_result",
23920
+ });
23921
+ return this.invokeSystemCall(serializer, "get_contract_address", { name });
23922
+ }
23847
23923
  }
23848
23924
  exports.Provider = Provider;
23849
23925
  exports["default"] = Provider;
@@ -24808,14 +24884,17 @@ class Transaction {
24808
24884
  * signer.provider = provider;
24809
24885
  * const tx = new Transaction({ signer });
24810
24886
  *
24811
- * // method 1
24887
+ * // Method 1 (using 2 arguments)
24888
+ * // note that with 2 arguments it is not necessary to
24889
+ * // set "onlyOperation: true". For the rest of the
24890
+ * // methods it's necessary to do that.
24812
24891
  * await tx.pushOperation(koin.transfer, {
24813
24892
  * from: "1NRYHBYr9qxYQAeVqfdSvyjJemRQ4qD3Mt",
24814
24893
  * to: "13UdKjYuzfBYbB6bGLQkUN9DJRFPCmG1mU",
24815
24894
  * value: "1000",
24816
24895
  * });
24817
24896
  *
24818
- * // method 2
24897
+ * // Method 2
24819
24898
  * await tx.pushOperation(
24820
24899
  * koin.transfer({
24821
24900
  * from: "1NRYHBYr9qxYQAeVqfdSvyjJemRQ4qD3Mt",
@@ -24826,7 +24905,7 @@ class Transaction {
24826
24905
  * })
24827
24906
  * );
24828
24907
  *
24829
- * // method 3
24908
+ * // Method 3
24830
24909
  * await tx.pushOperation(
24831
24910
  * await koin.transfer({
24832
24911
  * from: "1NRYHBYr9qxYQAeVqfdSvyjJemRQ4qD3Mt",
@@ -24837,7 +24916,7 @@ class Transaction {
24837
24916
  * })
24838
24917
  * );
24839
24918
  *
24840
- * // method 4
24919
+ * // Method 4
24841
24920
  * const { operation } = await koin.transfer({
24842
24921
  * from: "1NRYHBYr9qxYQAeVqfdSvyjJemRQ4qD3Mt",
24843
24922
  * to: "13UdKjYuzfBYbB6bGLQkUN9DJRFPCmG1mU",
@@ -25637,6 +25716,13 @@ exports.tokenAbi = {
25637
25716
  read_only: false,
25638
25717
  entry_point: 0xdc6f17bb,
25639
25718
  },
25719
+ burn: {
25720
+ argument: "token.burn_args",
25721
+ return: "",
25722
+ description: "Burn tokens",
25723
+ read_only: false,
25724
+ entry_point: 0x859facc5,
25725
+ },
25640
25726
  },
25641
25727
  types: "CpoICiJrb2lub3MvY29udHJhY3RzL3Rva2VuL3Rva2VuLnByb3RvEhZrb2lub3MuY29udHJhY3RzLnRva2VuGhRrb2lub3Mvb3B0aW9ucy5wcm90byIQCg5uYW1lX2FyZ3VtZW50cyIjCgtuYW1lX3Jlc3VsdBIUCgV2YWx1ZRgBIAEoCVIFdmFsdWUiEgoQc3ltYm9sX2FyZ3VtZW50cyIlCg1zeW1ib2xfcmVzdWx0EhQKBXZhbHVlGAEgASgJUgV2YWx1ZSIUChJkZWNpbWFsc19hcmd1bWVudHMiJwoPZGVjaW1hbHNfcmVzdWx0EhQKBXZhbHVlGAEgASgNUgV2YWx1ZSIYChZ0b3RhbF9zdXBwbHlfYXJndW1lbnRzIi8KE3RvdGFsX3N1cHBseV9yZXN1bHQSGAoFdmFsdWUYASABKARCAjABUgV2YWx1ZSIyChRiYWxhbmNlX29mX2FyZ3VtZW50cxIaCgVvd25lchgBIAEoDEIEgLUYBlIFb3duZXIiLQoRYmFsYW5jZV9vZl9yZXN1bHQSGAoFdmFsdWUYASABKARCAjABUgV2YWx1ZSJeChJ0cmFuc2Zlcl9hcmd1bWVudHMSGAoEZnJvbRgBIAEoDEIEgLUYBlIEZnJvbRIUCgJ0bxgCIAEoDEIEgLUYBlICdG8SGAoFdmFsdWUYAyABKARCAjABUgV2YWx1ZSIRCg90cmFuc2Zlcl9yZXN1bHQiQAoObWludF9hcmd1bWVudHMSFAoCdG8YASABKAxCBIC1GAZSAnRvEhgKBXZhbHVlGAIgASgEQgIwAVIFdmFsdWUiDQoLbWludF9yZXN1bHQiRAoOYnVybl9hcmd1bWVudHMSGAoEZnJvbRgBIAEoDEIEgLUYBlIEZnJvbRIYCgV2YWx1ZRgCIAEoBEICMAFSBXZhbHVlIg0KC2J1cm5fcmVzdWx0IioKDmJhbGFuY2Vfb2JqZWN0EhgKBXZhbHVlGAEgASgEQgIwAVIFdmFsdWUiQAoKYnVybl9ldmVudBIYCgRmcm9tGAEgASgMQgSAtRgGUgRmcm9tEhgKBXZhbHVlGAIgASgEQgIwAVIFdmFsdWUiPAoKbWludF9ldmVudBIUCgJ0bxgBIAEoDEIEgLUYBlICdG8SGAoFdmFsdWUYAiABKARCAjABUgV2YWx1ZSJaCg50cmFuc2Zl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",
25642
25728
  koilib_types: {
@@ -26215,6 +26301,20 @@ exports.tokenAbi = {
26215
26301
  },
26216
26302
  },
26217
26303
  },
26304
+ events: {
26305
+ "token.mint_event": {
26306
+ argument: "token.mint_args",
26307
+ type: "token.mint_args",
26308
+ },
26309
+ "token.transfer_event": {
26310
+ argument: "token.transfer_args",
26311
+ type: "token.transfer_args",
26312
+ },
26313
+ "token.burn_event": {
26314
+ argument: "token.burn_args",
26315
+ type: "token.burn_args",
26316
+ },
26317
+ },
26218
26318
  };
26219
26319
  /**
26220
26320
  * ABI for NFTs
@@ -26399,6 +26499,13 @@ exports.nftAbi = {
26399
26499
  read_only: false,
26400
26500
  entry_point: 0xdc6f17bb,
26401
26501
  },
26502
+ burn: {
26503
+ argument: "nft.burn_args",
26504
+ return: "",
26505
+ description: "Burn NFT",
26506
+ read_only: false,
26507
+ entry_point: 0x859facc5,
26508
+ },
26402
26509
  },
26403
26510
  types: "CoQDCidrb2lub3Nib3gtcHJvdG8vbWFuYXNoYXJlci9jb21tb24ucHJvdG8SBmNvbW1vbhoUa29pbm9zL29wdGlvbnMucHJvdG8iGwoDc3RyEhQKBXZhbHVlGAEgASgJUgV2YWx1ZSIeCgZ1aW50MzISFAoFdmFsdWUYASABKA1SBXZhbHVlIiIKBnVpbnQ2NBIYCgV2YWx1ZRgBIAEoBEICMAFSBXZhbHVlIh0KBWJvb2xlEhQKBXZhbHVlGAEgASgIUgV2YWx1ZSIlCgdhZGRyZXNzEhoKBXZhbHVlGAEgASgMQgSAtRgGUgV2YWx1ZSJdCglsaXN0X2FyZ3MSGgoFc3RhcnQYASABKAxCBIC1GAZSBXN0YXJ0EhQKBWxpbWl0GAIgASgFUgVsaW1pdBIeCgpkZXNjZW5kaW5nGAMgASgIUgpkZXNjZW5kaW5nIi0KCWFkZHJlc3NlcxIgCghhY2NvdW50cxgBIAMoDEIEgLUYBlIIYWNjb3VudHNiBnByb3RvMwqQDAoJbmZ0LnByb3RvEgNuZnQaFGtvaW5vcy9vcHRpb25zLnByb3RvIk0KB3JveWFsdHkSIgoKcGVyY2VudGFnZRgBIAEoBEICMAFSCnBlcmNlbnRhZ2USHgoHYWRkcmVzcxgCIAEoDEIEgLUYBlIHYWRkcmVzcyIvCglyb3lhbHRpZXMSIgoFdmFsdWUYASADKAsyDC5uZnQucm95YWx0eVIFdmFsdWUiTAoNbWV0YWRhdGFfYXJncxIfCgh0b2tlbl9pZBgBIAEoDEIEgLUYAlIHdG9rZW5JZBIaCghtZXRhZGF0YRgCIAEoCVIIbWV0YWRhdGEiZgoEaW5mbxISCgRuYW1lGAEgASgJUgRuYW1lEhYKBnN5bWJvbBgCIAEoCVIGc3ltYm9sEhAKA3VyaRgDIAEoCVIDdXJpEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbiItCg9iYWxhbmNlX29mX2FyZ3MSGgoFb3duZXIYASABKAxCBIC1GAZSBW93bmVyIigKBXRva2VuEh8KCHRva2VuX2lkGAEgASgMQgSAtRgCUgd0b2tlbklkIlgKGGlzX2FwcHJvdmVkX2Zvcl9hbGxfYXJncxIaCgVvd25lchgBIAEoDEIEgLUYBlIFb3duZXISIAoIb3BlcmF0b3IYAiABKAxCBIC1GAZSCG9wZXJhdG9yIkIKCW1pbnRfYXJncxIUCgJ0bxgBIAEoDEIEgLUYBlICdG8SHwoIdG9rZW5faWQYAiABKAxCBIC1GAJSB3Rva2VuSWQiLAoJYnVybl9hcmdzEh8KCHRva2VuX2lkGAEgASgMQgSAtRgCUgd0b2tlbklkInQKDXRyYW5zZmVyX2FyZ3MSGAoEZnJvbRgBIAEoDEIEgLUYBlIEZnJvbRIUCgJ0bxgCIAEoDEIEgLUYBlICdG8SHwoIdG9rZW5faWQYAyABKAxCBIC1GAJSB3Rva2VuSWQSEgoEbWVtbxgEIAEoCVIEbWVtbyJ2CgxhcHByb3ZlX2FyZ3MSLwoQYXBwcm92ZXJfYWRkcmVzcxgBIAEoDEIEgLUYBlIPYXBwcm92ZXJBZGRyZXNzEhQKAnRvGAIgASgMQgSAtRgGUgJ0bxIfCgh0b2tlbl9pZBgDIAEoDEIEgLUYAlIHdG9rZW5JZCKZAQoZc2V0X2FwcHJvdmFsX2Zvcl9hbGxfYXJncxIvChBhcHByb3Zlcl9hZGRyZXNzGAEgASgMQgSAtRgGUg9hcHByb3ZlckFkZHJlc3MSLwoQb3BlcmF0b3JfYWRkcmVzcxgCIAEoDEIEgLUYBlIPb3BlcmF0b3JBZGRyZXNzEhoKCGFwcHJvdmVkGAMgASgIUghhcHByb3ZlZCKCAQoSZ2V0X29wZXJhdG9yc19hcmdzEhoKBW93bmVyGAEgASgMQgSAtRgGUgVvd25lchIaCgVzdGFydBgCIAEoDEIEgLUYBlIFc3RhcnQSFAoFbGltaXQYAyABKAVSBWxpbWl0Eh4KCmRlc2NlbmRpbmcYBCABKAhSCmRlc2NlbmRpbmciVgoUZ2V0X29wZXJhdG9yc19yZXR1cm4SGgoFb3duZXIYASABKAxCBIC1GAZSBW93bmVyEiIKCW9wZXJhdG9ycxgCIAMoDEIEgLUYBlIJb3BlcmF0b3JzImMKD2dldF90b2tlbnNfYXJncxIaCgVzdGFydBgBIAEoDEIEgLUYAlIFc3RhcnQSFAoFbGltaXQYAiABKAVSBWxpbWl0Eh4KCmRlc2NlbmRpbmcYAyABKAhSCmRlc2NlbmRpbmciiAEKGGdldF90b2tlbnNfYnlfb3duZXJfYXJncxIaCgVvd25lchgBIAEoDEIEgLUYBlIFb3duZXISGgoFc3RhcnQYAiABKAxCBIC1GAJSBXN0YXJ0EhQKBWxpbWl0GAMgASgFUgVsaW1pdBIeCgpkZXNjZW5kaW5nGAQgASgIUgpkZXNjZW5kaW5nIi4KCXRva2VuX2lkcxIhCgl0b2tlbl9pZHMYASADKAxCBIC1GAJSCHRva2VuSWRzYgZwcm90bzM=",
26404
26511
  koilib_types: {
@@ -26828,24 +26935,35 @@ exports.nftAbi = {
26828
26935
  events: {
26829
26936
  "collections.owner_event": {
26830
26937
  argument: "common.address",
26938
+ type: "common.address",
26831
26939
  },
26832
26940
  "collections.royalties_event": {
26833
26941
  argument: "nft.royalties",
26942
+ type: "nft.royalties",
26834
26943
  },
26835
26944
  "collections.set_metadata_event": {
26836
26945
  argument: "nft.metadata_args",
26946
+ type: "nft.metadata_args",
26837
26947
  },
26838
26948
  "collections.token_approval_event": {
26839
26949
  argument: "nft.approve_args",
26950
+ type: "nft.approve_args",
26840
26951
  },
26841
26952
  "collections.operator_approval_event": {
26842
26953
  argument: "nft.set_approval_for_all_args",
26954
+ type: "nft.set_approval_for_all_args",
26843
26955
  },
26844
26956
  "collections.transfer_event": {
26845
26957
  argument: "nft.transfer_args",
26958
+ type: "nft.transfer_args",
26846
26959
  },
26847
26960
  "collections.mint_event": {
26848
26961
  argument: "nft.mint_args",
26962
+ type: "nft.mint_args",
26963
+ },
26964
+ "collections.burn_event": {
26965
+ argument: "nft.burn_args",
26966
+ type: "nft.burn_args",
26849
26967
  },
26850
26968
  },
26851
26969
  };