@partisiablockchain/abi-client 6.6.0 → 6.17.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/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@partisiablockchain/abi-client",
3
- "version": "6.6.0",
3
+ "version": "6.17.0",
4
4
  "description": "",
5
5
  "license": "AGPL-3.0",
6
6
  "dependencies": {
7
- "@partisiablockchain/blockchain-api-transaction-client": "6.5.0",
8
- "@partisiablockchain/sections": "6.2.0",
7
+ "@partisiablockchain/blockchain-api-transaction-client": "6.14.0",
8
+ "@partisiablockchain/sections": "6.4.0",
9
9
  "@secata-public/bitmanipulation-ts": "3.4.0",
10
10
  "@types/bn.js": "^5.1.6",
11
11
  "@types/elliptic": "^6.4.18",
@@ -0,0 +1,13 @@
1
+ import { AggregateProducer } from "../model/AggregateProducer";
2
+ import { Producer } from "../model/Producer";
3
+ import { TypeSpec } from "../model/Abi";
4
+ import { AbiOutput } from "../abistreams/AbiOutput";
5
+ export declare class TypeProducer implements AggregateProducer {
6
+ private readonly type;
7
+ private element;
8
+ constructor(type: TypeSpec);
9
+ addElement(argument: Producer): void;
10
+ getFieldName(): string;
11
+ getTypeSpecForElement(): TypeSpec | null;
12
+ write(out: AbiOutput): void;
13
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (C) 2022 - 2025 Partisia Blockchain Foundation
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ *
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.TypeProducer = void 0;
21
+ class TypeProducer {
22
+ constructor(type) {
23
+ this.element = null;
24
+ this.type = type;
25
+ }
26
+ addElement(argument) {
27
+ if (this.element != null) {
28
+ throw new Error("Cannot build type twice");
29
+ }
30
+ this.element = argument;
31
+ }
32
+ getFieldName() {
33
+ return "root";
34
+ }
35
+ getTypeSpecForElement() {
36
+ return this.type;
37
+ }
38
+ write(out) {
39
+ if (this.element == null) {
40
+ throw new Error("Missing type element");
41
+ }
42
+ this.element.write(out);
43
+ }
44
+ }
45
+ exports.TypeProducer = TypeProducer;
46
+ //# sourceMappingURL=TypeProducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeProducer.js","sourceRoot":"","sources":["../../../src/main/builder/TypeProducer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAOH,MAAa,YAAY;IAIvB,YAAY,IAAc;QAFlB,YAAO,GAAoB,IAAI,CAAC;QAGtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,QAAkB;QAC3B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,YAAY;QACV,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,GAAc;QAClB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CACF;AA7BD,oCA6BC"}
@@ -4,15 +4,16 @@ import { ChainControllerApi } from "@partisiablockchain/blockchain-api-transacti
4
4
  export interface BlockchainStateClient {
5
5
  getContractStateBinary(address: BlockchainAddress): Promise<Buffer>;
6
6
  getContractStateAvlValue(address: BlockchainAddress, treeId: number, key: Buffer): Promise<Buffer | undefined>;
7
- getContractStateAvlNextN(address: BlockchainAddress, treeId: number, key: Buffer | undefined, n: number): Promise<Array<Entry<Buffer, Buffer>>>;
7
+ getContractStateAvlNextN(address: BlockchainAddress, treeId: number, key: Buffer | undefined, n: number, skip?: number): Promise<Array<Entry<Buffer, Buffer>>>;
8
8
  getContractStateAvlSize(address: BlockchainAddress, treeId: number): Promise<number>;
9
9
  }
10
10
  export declare class BlockchainStateClientImpl implements BlockchainStateClient {
11
11
  private readonly client;
12
+ private readonly blockTime;
12
13
  private constructor();
13
- static create(basePath: string): BlockchainStateClientImpl;
14
- static create(client: ChainControllerApi): BlockchainStateClientImpl;
15
- getContractStateAvlNextN(address: BlockchainAddress, treeId: number, key: Buffer | undefined, n: number): Promise<Array<Entry<Buffer, Buffer>>>;
14
+ static create(basePath: string, blockTime?: number): BlockchainStateClientImpl;
15
+ static create(client: ChainControllerApi, blockTime?: number): BlockchainStateClientImpl;
16
+ getContractStateAvlNextN(address: BlockchainAddress, treeId: number, key: Buffer | undefined, n: number, skip?: number): Promise<Array<Entry<Buffer, Buffer>>>;
16
17
  getContractStateAvlSize(address: BlockchainAddress, treeId: number): Promise<number>;
17
18
  getContractStateAvlValue(address: BlockchainAddress, treeId: number, key: Buffer): Promise<Buffer | undefined>;
18
19
  getContractStateBinary(address: BlockchainAddress): Promise<Buffer>;
@@ -29,10 +29,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.BlockchainStateClientImpl = void 0;
30
30
  const blockchain_api_transaction_client_1 = require("@partisiablockchain/blockchain-api-transaction-client");
31
31
  class BlockchainStateClientImpl {
32
- constructor(client) {
32
+ constructor(client, blockTime) {
33
33
  this.client = client;
34
+ this.blockTime = blockTime;
34
35
  }
35
- static create(arg) {
36
+ static create(arg, blockTime) {
36
37
  let client;
37
38
  if (typeof arg === "string") {
38
39
  client = new blockchain_api_transaction_client_1.ChainControllerApi(new blockchain_api_transaction_client_1.Configuration({ basePath: arg }));
@@ -40,15 +41,17 @@ class BlockchainStateClientImpl {
40
41
  else {
41
42
  client = arg;
42
43
  }
43
- return new BlockchainStateClientImpl(client);
44
+ return new BlockchainStateClientImpl(client, blockTime);
44
45
  }
45
- getContractStateAvlNextN(address, treeId, key, n) {
46
+ getContractStateAvlNextN(address, treeId, key, n, skip) {
46
47
  return __awaiter(this, void 0, void 0, function* () {
47
48
  const next = yield this.client.getContractAvlNextN({
48
49
  address: address.asString(),
49
50
  treeId,
50
51
  key: key === null || key === void 0 ? void 0 : key.toString("hex"),
51
52
  n,
53
+ skip,
54
+ blockTime: this.blockTime,
52
55
  });
53
56
  return next.map((entry) => {
54
57
  return { key: Buffer.from(entry.key, "hex"), value: Buffer.from(entry.value, "base64") };
@@ -57,21 +60,32 @@ class BlockchainStateClientImpl {
57
60
  }
58
61
  getContractStateAvlSize(address, treeId) {
59
62
  return __awaiter(this, void 0, void 0, function* () {
60
- return (yield this.client.getContractAvlInformation({ address: address.asString(), treeId }))
61
- .size;
63
+ return (yield this.client.getContractAvlInformation({
64
+ address: address.asString(),
65
+ treeId,
66
+ blockTime: this.blockTime,
67
+ })).size;
62
68
  });
63
69
  }
64
70
  getContractStateAvlValue(address, treeId, key) {
65
71
  return __awaiter(this, void 0, void 0, function* () {
66
72
  const avlValue = yield this.client
67
- .getContractAvlValue({ address: address.asString(), treeId, key: key.toString("hex") })
73
+ .getContractAvlValue({
74
+ address: address.asString(),
75
+ treeId,
76
+ key: key.toString("hex"),
77
+ blockTime: this.blockTime,
78
+ })
68
79
  .catch(() => undefined);
69
80
  return avlValue == undefined ? undefined : Buffer.from(avlValue.data, "base64");
70
81
  });
71
82
  }
72
83
  getContractStateBinary(address) {
73
84
  return __awaiter(this, void 0, void 0, function* () {
74
- const contract = yield this.client.getContract({ address: address.asString() });
85
+ const contract = yield this.client.getContract({
86
+ address: address.asString(),
87
+ blockTime: this.blockTime,
88
+ });
75
89
  if (contract.serializedContract === undefined) {
76
90
  throw new Error("Contract does not have any state");
77
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BlockchainStateClient.js","sourceRoot":"","sources":["../../../src/main/codegen-lib/BlockchainStateClient.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;;;;;;;;AAIH,6GAG+D;AAqB/D,MAAa,yBAAyB;IAGpC,YAAoB,MAA0B;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAIM,MAAM,CAAC,MAAM,CAAC,GAAgC;QACnD,IAAI,MAAM,CAAC;QACX,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,GAAG,IAAI,sDAAkB,CAAC,IAAI,iDAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,CAAC;QACf,CAAC;QACD,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEK,wBAAwB,CAC5B,OAA0B,EAC1B,MAAc,EACd,GAAuB,EACvB,CAAS;;YAET,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBACjD,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;gBAC3B,MAAM;gBACN,GAAG,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,CAAC,KAAK,CAAC;gBACzB,CAAC;aACF,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3F,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEK,uBAAuB,CAAC,OAA0B,EAAE,MAAc;;YACtE,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;iBAC1F,IAAI,CAAC;QACV,CAAC;KAAA;IAEK,wBAAwB,CAC5B,OAA0B,EAC1B,MAAc,EACd,GAAW;;YAEX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM;iBAC/B,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;iBACtF,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClF,CAAC;KAAA;IAEK,sBAAsB,CAAC,OAA0B;;YACrD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChF,IAAI,QAAQ,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC;KAAA;CACF;AA3DD,8DA2DC"}
1
+ {"version":3,"file":"BlockchainStateClient.js","sourceRoot":"","sources":["../../../src/main/codegen-lib/BlockchainStateClient.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { AbstractBuilder } from "../builder/AbstractBuilder";
2
2
  import { ContractAbi } from "../model/ContractAbi";
3
+ import { NamedTypeSpec, TypeSpec } from "../model/Abi";
3
4
  export declare class StateBuilder extends AbstractBuilder {
4
5
  constructor(contractAbi: ContractAbi | null);
6
+ constructor(namedTypes: NamedTypeSpec[], type: TypeSpec);
5
7
  getBytes(): Buffer;
6
8
  }
@@ -21,10 +21,18 @@ exports.StateBuilder = void 0;
21
21
  const AbstractBuilder_1 = require("../builder/AbstractBuilder");
22
22
  const StructProducer_1 = require("../builder/StructProducer");
23
23
  const AbiByteOutput_1 = require("../abistreams/AbiByteOutput");
24
+ const TypeProducer_1 = require("../builder/TypeProducer");
24
25
  class StateBuilder extends AbstractBuilder_1.AbstractBuilder {
25
- constructor(contractAbi) {
26
+ constructor(typeDefinitions, type) {
26
27
  var _a, _b;
27
- super((_a = contractAbi === null || contractAbi === void 0 ? void 0 : contractAbi.namedTypes) !== null && _a !== void 0 ? _a : null, "", new StructProducer_1.StructProducer((_b = contractAbi === null || contractAbi === void 0 ? void 0 : contractAbi.getStateStruct()) !== null && _b !== void 0 ? _b : null, "root"));
28
+ if (!Array.isArray(typeDefinitions)) {
29
+ const producer = new StructProducer_1.StructProducer((_a = typeDefinitions === null || typeDefinitions === void 0 ? void 0 : typeDefinitions.getStateStruct()) !== null && _a !== void 0 ? _a : null, "root");
30
+ super((_b = typeDefinitions === null || typeDefinitions === void 0 ? void 0 : typeDefinitions.namedTypes) !== null && _b !== void 0 ? _b : null, "", producer);
31
+ }
32
+ else {
33
+ const producer = new TypeProducer_1.TypeProducer(type);
34
+ super(typeDefinitions, "", producer);
35
+ }
28
36
  }
29
37
  getBytes() {
30
38
  return AbiByteOutput_1.AbiByteOutput.serializeLittleEndian((out) => this.getAggregateProducer().write(out));
@@ -1 +1 @@
1
- {"version":3,"file":"StateBuilder.js","sourceRoot":"","sources":["../../../src/main/state/StateBuilder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAEH,gEAA6D;AAE7D,8DAA2D;AAC3D,+DAA4D;AAE5D,MAAa,YAAa,SAAQ,iCAAe;IAC/C,YAAY,WAA+B;;QACzC,KAAK,CACH,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,mCAAI,IAAI,EAC/B,EAAE,EACF,IAAI,+BAAc,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,EAAE,mCAAI,IAAI,EAAE,MAAM,CAAC,CAClE,CAAC;IACJ,CAAC;IAEM,QAAQ;QACb,OAAO,6BAAa,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9F,CAAC;CACF;AAZD,oCAYC"}
1
+ {"version":3,"file":"StateBuilder.js","sourceRoot":"","sources":["../../../src/main/state/StateBuilder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAEH,gEAA6D;AAE7D,8DAA2D;AAC3D,+DAA4D;AAC5D,0DAAuD;AAGvD,MAAa,YAAa,SAAQ,iCAAe;IAG/C,YAAY,eAAqD,EAAE,IAAe;;QAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,+BAAc,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,cAAc,EAAE,mCAAI,IAAI,EAAE,MAAM,CAAC,CAAC;YACvF,KAAK,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,UAAU,mCAAI,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,2BAAY,CAAC,IAAK,CAAC,CAAC;YACzC,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,QAAQ;QACb,OAAO,6BAAa,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9F,CAAC;CACF;AAhBD,oCAgBC"}
@@ -1,6 +1,6 @@
1
1
  import { AbstractReader } from "../AbstractReader";
2
2
  import { ContractAbi } from "../model/ContractAbi";
3
- import { AvlTreeMapTypeSpec, MapTypeSpec, SetTypeSpec, TypeSpec } from "../model/Abi";
3
+ import { AvlTreeMapTypeSpec, MapTypeSpec, NamedTypeSpec, SetTypeSpec, TypeSpec } from "../model/Abi";
4
4
  import { ScValue } from "../value/ScValue";
5
5
  import { ScValueMap } from "../value/ScValueMap";
6
6
  import { ScValueSet } from "../value/ScValueSet";
@@ -9,7 +9,7 @@ export declare class StateReader extends AbstractReader {
9
9
  private readonly stateType;
10
10
  private readonly avlTrees;
11
11
  private constructor();
12
- static create(bytes: Buffer, contractAbi: ContractAbi | null, avlTrees?: Buffer): StateReader;
12
+ static create(bytes: Buffer, contractAbi: ContractAbi | NamedTypeSpec[] | null, avlTrees?: Buffer): StateReader;
13
13
  protected readSet(spec: SetTypeSpec): ScValueSet;
14
14
  protected readMap(spec: MapTypeSpec): ScValueMap;
15
15
  protected readAvlTreeMap(typeSpec: AvlTreeMapTypeSpec): ScValueAvlTreeMap;
@@ -50,11 +50,14 @@ class StateReader extends AbstractReader_1.AbstractReader {
50
50
  if (contractAbi === null) {
51
51
  return new StateReader(input, [], null, avlTrees);
52
52
  }
53
- else {
53
+ else if (contractAbi instanceof ContractAbi_1.ContractAbi) {
54
54
  const namedTypes = contractAbi.namedTypes;
55
55
  const stateType = contractAbi.stateType;
56
56
  return new StateReader(input, namedTypes, stateType, avlTrees);
57
57
  }
58
+ else {
59
+ return new StateReader(input, contractAbi, null, avlTrees);
60
+ }
58
61
  }
59
62
  readSet(spec) {
60
63
  const length = this.input.readU32();
@@ -77,7 +80,7 @@ class StateReader extends AbstractReader_1.AbstractReader {
77
80
  readAvlTreeMap(typeSpec) {
78
81
  const treeId = this.input.readI32();
79
82
  if (this.avlTrees === undefined) {
80
- return new ScValueAvlTreeMap_1.ScValueAvlTreeMap(treeId, null);
83
+ return new ScValueAvlTreeMap_1.ScValueAvlTreeMap(treeId, typeSpec, null);
81
84
  }
82
85
  const tree = this.avlTrees.get(treeId);
83
86
  if (tree === undefined) {
@@ -89,7 +92,7 @@ class StateReader extends AbstractReader_1.AbstractReader {
89
92
  const value = new StateReader(valueBytes, this.namedTypes, this.stateType, this.avlTrees).readGeneric(typeSpec.valueType);
90
93
  map.set(key, value);
91
94
  });
92
- return new ScValueAvlTreeMap_1.ScValueAvlTreeMap(treeId, map);
95
+ return new ScValueAvlTreeMap_1.ScValueAvlTreeMap(treeId, typeSpec, map);
93
96
  }
94
97
  readState() {
95
98
  const structRef = this.stateType;
@@ -1 +1 @@
1
- {"version":3,"file":"StateReader.js","sourceRoot":"","sources":["../../../src/main/state/StateReader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StateReader.js","sourceRoot":"","sources":["../../../src/main/state/StateReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { BlockchainStateClient } from "../codegen-lib/BlockchainStateClient";
2
+ import { BlockchainAddress } from "../codegen-lib/BlockchainAddress";
3
+ import { NamedTypeSpec } from "../model/Abi";
4
+ import { ScValueAvlTreeMap } from "./ScValueAvlTreeMap";
5
+ import { AbstractBuilder } from "../builder/AbstractBuilder";
6
+ import { ScValue } from "./ScValue";
7
+ import { Entry } from "../codegen-lib/types";
8
+ export declare class AvlTreeMapReader {
9
+ private readonly stateClient;
10
+ private readonly contractAddress;
11
+ private readonly namedTypes;
12
+ private readonly avlTreeMap;
13
+ constructor(stateClient: BlockchainStateClient, contractAddress: BlockchainAddress, namedTypes: NamedTypeSpec[], avlTreeMap: ScValueAvlTreeMap);
14
+ private createKeyBytes;
15
+ get(keyBuilder: (builder: AbstractBuilder) => void): Promise<ScValue | undefined>;
16
+ getNextN(keyBuilder: ((builder: AbstractBuilder) => void) | undefined, n: number, skip?: number): Promise<Array<Entry<ScValue, ScValue>>>;
17
+ size(): Promise<number>;
18
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (C) 2022 - 2025 Partisia Blockchain Foundation
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ *
18
+ */
19
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
20
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
21
+ return new (P || (P = Promise))(function (resolve, reject) {
22
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
23
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
24
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
25
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
26
+ });
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.AvlTreeMapReader = void 0;
30
+ const StateBuilder_1 = require("../state/StateBuilder");
31
+ const StateReader_1 = require("../state/StateReader");
32
+ class AvlTreeMapReader {
33
+ constructor(stateClient, contractAddress, namedTypes, avlTreeMap) {
34
+ this.stateClient = stateClient;
35
+ this.contractAddress = contractAddress;
36
+ this.namedTypes = namedTypes;
37
+ this.avlTreeMap = avlTreeMap;
38
+ }
39
+ createKeyBytes(keyBuilder) {
40
+ const builder = new StateBuilder_1.StateBuilder(this.namedTypes, this.avlTreeMap.avlType.keyType);
41
+ keyBuilder(builder);
42
+ return builder.getBytes();
43
+ }
44
+ get(keyBuilder) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const keyBytes = this.createKeyBytes(keyBuilder);
47
+ const valueBytes = yield this.stateClient.getContractStateAvlValue(this.contractAddress, this.avlTreeMap.treeId, keyBytes);
48
+ // Stryker disable next-line BlockStatement
49
+ if (valueBytes === undefined) {
50
+ return undefined;
51
+ }
52
+ else {
53
+ const reader = StateReader_1.StateReader.create(valueBytes, this.namedTypes);
54
+ return reader.readGeneric(this.avlTreeMap.avlType.valueType);
55
+ }
56
+ });
57
+ }
58
+ getNextN(keyBuilder, n, skip) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ const keyBytes = keyBuilder !== undefined ? this.createKeyBytes(keyBuilder) : undefined;
61
+ const nextNBytes = yield this.stateClient.getContractStateAvlNextN(this.contractAddress, this.avlTreeMap.treeId, keyBytes, n, skip);
62
+ return nextNBytes.map((entry) => {
63
+ return {
64
+ key: StateReader_1.StateReader.create(entry.key, this.namedTypes).readGeneric(this.avlTreeMap.avlType.keyType),
65
+ value: StateReader_1.StateReader.create(entry.value, this.namedTypes).readGeneric(this.avlTreeMap.avlType.valueType),
66
+ };
67
+ });
68
+ });
69
+ }
70
+ size() {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ return this.stateClient.getContractStateAvlSize(this.contractAddress, this.avlTreeMap.treeId);
73
+ });
74
+ }
75
+ }
76
+ exports.AvlTreeMapReader = AvlTreeMapReader;
77
+ //# sourceMappingURL=AvlTreeMapReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvlTreeMapReader.js","sourceRoot":"","sources":["../../../src/main/value/AvlTreeMapReader.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;;;;;;;;AAOH,wDAAqD;AAErD,sDAAmD;AAGnD,MAAa,gBAAgB;IAM3B,YACE,WAAkC,EAClC,eAAkC,EAClC,UAA2B,EAC3B,UAA6B;QAE7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEO,cAAc,CAAC,UAA8C;QACnE,MAAM,OAAO,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnF,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAEY,GAAG,CAAC,UAA8C;;YAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAChE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,QAAQ,CACT,CAAC;YACF,2CAA2C;YAC3C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,SAAS,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,yBAAW,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/D,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;KAAA;IAEY,QAAQ,CACnB,UAA4D,EAC5D,CAAS,EACT,IAAa;;YAEb,MAAM,QAAQ,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACxF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAChE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,QAAQ,EACR,CAAC,EACD,IAAI,CACL,CAAC;YACF,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC9B,OAAO;oBACL,GAAG,EAAE,yBAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAC7D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAChC;oBACD,KAAK,EAAE,yBAAW,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CACjE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAClC;iBACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEY,IAAI;;YACf,OAAO,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAChG,CAAC;KAAA;CACF;AApED,4CAoEC"}
@@ -1,10 +1,11 @@
1
1
  import { ScValue } from "./ScValue";
2
2
  import { HashMap } from "../HashMap";
3
- import { TypeIndex } from "../model/Abi";
3
+ import { AvlTreeMapTypeSpec, TypeIndex } from "../model/Abi";
4
4
  export declare class ScValueAvlTreeMap extends ScValue {
5
- treeId: number;
6
- map: HashMap<ScValue, ScValue> | null;
7
- constructor(treeId: number, map: HashMap<ScValue, ScValue> | null);
5
+ readonly treeId: number;
6
+ readonly avlType: AvlTreeMapTypeSpec;
7
+ readonly map: HashMap<ScValue, ScValue> | null;
8
+ constructor(treeId: number, avlType: AvlTreeMapTypeSpec, map: HashMap<ScValue, ScValue> | null);
8
9
  getType(): TypeIndex;
9
10
  mapKeysValues<K, V>(keyMapper: (sc: ScValue) => K, valueMapper: (sc: ScValue) => V): Map<K, V> | undefined;
10
11
  avlTreeMapValue(): ScValueAvlTreeMap;
@@ -21,9 +21,10 @@ exports.ScValueAvlTreeMap = void 0;
21
21
  const ScValue_1 = require("./ScValue");
22
22
  const Abi_1 = require("../model/Abi");
23
23
  class ScValueAvlTreeMap extends ScValue_1.ScValue {
24
- constructor(treeId, map) {
24
+ constructor(treeId, avlType, map) {
25
25
  super();
26
26
  this.treeId = treeId;
27
+ this.avlType = avlType;
27
28
  this.map = map;
28
29
  }
29
30
  getType() {
@@ -1 +1 @@
1
- {"version":3,"file":"ScValueAvlTreeMap.js","sourceRoot":"","sources":["../../../src/main/value/ScValueAvlTreeMap.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAEH,uCAAoC;AAEpC,sCAAyC;AAEzC,MAAa,iBAAkB,SAAQ,iBAAO;IAI5C,YAAY,MAAc,EAAE,GAAqC;QAC/D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,OAAO;QACL,OAAO,eAAS,CAAC,UAAU,CAAC;IAC9B,CAAC;IAEM,aAAa,CAClB,SAA6B,EAC7B,WAA+B;QAE/B,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA1BD,8CA0BC"}
1
+ {"version":3,"file":"ScValueAvlTreeMap.js","sourceRoot":"","sources":["../../../src/main/value/ScValueAvlTreeMap.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAEH,uCAAoC;AAEpC,sCAA6D;AAE7D,MAAa,iBAAkB,SAAQ,iBAAO;IAK5C,YAAY,MAAc,EAAE,OAA2B,EAAE,GAAqC;QAC5F,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,OAAO;QACL,OAAO,eAAS,CAAC,UAAU,CAAC;IAC9B,CAAC;IAEM,aAAa,CAClB,SAA6B,EAC7B,WAA+B;QAE/B,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA5BD,8CA4BC"}