dash-platform-sdk 1.4.0-dev.5 → 1.4.0-dev.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dash-platform-sdk",
3
- "version": "1.4.0-dev.5",
3
+ "version": "1.4.0-dev.6",
4
4
  "main": "index.js",
5
5
  "description": "Lightweight SDK for accessing Dash Platform blockchain",
6
6
  "ts-standard": {
@@ -55,6 +55,6 @@
55
55
  "@scure/bip39": "^2.0.0",
56
56
  "@scure/btc-signer": "^2.0.1",
57
57
  "cbor-x": "^1.6.0",
58
- "pshenmic-dpp": "2.0.0-dev.7"
58
+ "pshenmic-dpp": "2.0.0-dev.9"
59
59
  }
60
60
  }
@@ -1,5 +1,7 @@
1
1
  import type { RpcTransport } from "@protobuf-ts/runtime-rpc";
2
2
  import type { ServiceInfo } from "@protobuf-ts/runtime-rpc";
3
+ import type { GetAddressesInfosResponse } from "./platform.js";
4
+ import type { GetAddressesInfosRequest } from "./platform.js";
3
5
  import type { GetAddressInfoResponse } from "./platform.js";
4
6
  import type { GetAddressInfoRequest } from "./platform.js";
5
7
  import type { WaitForStateTransitionResultResponse } from "./platform.js";
@@ -156,6 +158,10 @@ export interface IPlatformClient {
156
158
  * @generated from protobuf rpc: getAddressInfo
157
159
  */
158
160
  getAddressInfo(input: GetAddressInfoRequest, options?: RpcOptions): UnaryCall<GetAddressInfoRequest, GetAddressInfoResponse>;
161
+ /**
162
+ * @generated from protobuf rpc: getAddressesInfos
163
+ */
164
+ getAddressesInfos(input: GetAddressesInfosRequest, options?: RpcOptions): UnaryCall<GetAddressesInfosRequest, GetAddressesInfosResponse>;
159
165
  }
160
166
  /**
161
167
  * @generated from protobuf service org.dash.platform.dapi.v0.Platform
@@ -268,4 +274,8 @@ export declare class PlatformClient implements IPlatformClient, ServiceInfo {
268
274
  * @generated from protobuf rpc: getAddressInfo
269
275
  */
270
276
  getAddressInfo(input: GetAddressInfoRequest, options?: RpcOptions): UnaryCall<GetAddressInfoRequest, GetAddressInfoResponse>;
277
+ /**
278
+ * @generated from protobuf rpc: getAddressesInfos
279
+ */
280
+ getAddressesInfos(input: GetAddressesInfosRequest, options?: RpcOptions): UnaryCall<GetAddressesInfosRequest, GetAddressesInfosResponse>;
271
281
  }
@@ -186,4 +186,11 @@ export class PlatformClient {
186
186
  const method = this.methods[24], opt = this._transport.mergeOptions(options);
187
187
  return stackIntercept("unary", this._transport, method, opt, input);
188
188
  }
189
+ /**
190
+ * @generated from protobuf rpc: getAddressesInfos
191
+ */
192
+ getAddressesInfos(input, options) {
193
+ const method = this.methods[25], opt = this._transport.mergeOptions(options);
194
+ return stackIntercept("unary", this._transport, method, opt, input);
195
+ }
189
196
  }
@@ -2883,6 +2883,89 @@ export interface GetAddressInfoResponse_GetAddressInfoResponseV0 {
2883
2883
  */
2884
2884
  metadata?: ResponseMetadata;
2885
2885
  }
2886
+ /**
2887
+ * @generated from protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest
2888
+ */
2889
+ export interface GetAddressesInfosRequest {
2890
+ /**
2891
+ * @generated from protobuf oneof: version
2892
+ */
2893
+ version: {
2894
+ oneofKind: "v0";
2895
+ /**
2896
+ * @generated from protobuf field: org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0 v0 = 1
2897
+ */
2898
+ v0: GetAddressesInfosRequest_GetAddressesInfosRequestV0;
2899
+ } | {
2900
+ oneofKind: undefined;
2901
+ };
2902
+ }
2903
+ /**
2904
+ * @generated from protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0
2905
+ */
2906
+ export interface GetAddressesInfosRequest_GetAddressesInfosRequestV0 {
2907
+ /**
2908
+ * @generated from protobuf field: repeated bytes addresses = 1
2909
+ */
2910
+ addresses: Uint8Array[];
2911
+ /**
2912
+ * @generated from protobuf field: bool prove = 2
2913
+ */
2914
+ prove: boolean;
2915
+ }
2916
+ /**
2917
+ * @generated from protobuf message org.dash.platform.dapi.v0.AddressInfoEntries
2918
+ */
2919
+ export interface AddressInfoEntries {
2920
+ /**
2921
+ * @generated from protobuf field: repeated org.dash.platform.dapi.v0.AddressInfoEntry address_info_entries = 1
2922
+ */
2923
+ addressInfoEntries: AddressInfoEntry[];
2924
+ }
2925
+ /**
2926
+ * @generated from protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse
2927
+ */
2928
+ export interface GetAddressesInfosResponse {
2929
+ /**
2930
+ * @generated from protobuf oneof: version
2931
+ */
2932
+ version: {
2933
+ oneofKind: "v0";
2934
+ /**
2935
+ * @generated from protobuf field: org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0 v0 = 1
2936
+ */
2937
+ v0: GetAddressesInfosResponse_GetAddressesInfosResponseV0;
2938
+ } | {
2939
+ oneofKind: undefined;
2940
+ };
2941
+ }
2942
+ /**
2943
+ * @generated from protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0
2944
+ */
2945
+ export interface GetAddressesInfosResponse_GetAddressesInfosResponseV0 {
2946
+ /**
2947
+ * @generated from protobuf oneof: result
2948
+ */
2949
+ result: {
2950
+ oneofKind: "addressInfoEntries";
2951
+ /**
2952
+ * @generated from protobuf field: org.dash.platform.dapi.v0.AddressInfoEntries address_info_entries = 1
2953
+ */
2954
+ addressInfoEntries: AddressInfoEntries;
2955
+ } | {
2956
+ oneofKind: "proof";
2957
+ /**
2958
+ * @generated from protobuf field: org.dash.platform.dapi.v0.Proof proof = 2
2959
+ */
2960
+ proof: Proof;
2961
+ } | {
2962
+ oneofKind: undefined;
2963
+ };
2964
+ /**
2965
+ * @generated from protobuf field: org.dash.platform.dapi.v0.ResponseMetadata metadata = 3
2966
+ */
2967
+ metadata?: ResponseMetadata;
2968
+ }
2886
2969
  /**
2887
2970
  * @generated from protobuf enum org.dash.platform.dapi.v0.KeyPurpose
2888
2971
  */
@@ -4411,6 +4494,56 @@ declare class GetAddressInfoResponse_GetAddressInfoResponseV0$Type extends Messa
4411
4494
  * @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressInfoResponse.GetAddressInfoResponseV0
4412
4495
  */
4413
4496
  export declare const GetAddressInfoResponse_GetAddressInfoResponseV0: GetAddressInfoResponse_GetAddressInfoResponseV0$Type;
4497
+ declare class GetAddressesInfosRequest$Type extends MessageType<GetAddressesInfosRequest> {
4498
+ constructor();
4499
+ create(value?: PartialMessage<GetAddressesInfosRequest>): GetAddressesInfosRequest;
4500
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetAddressesInfosRequest): GetAddressesInfosRequest;
4501
+ internalBinaryWrite(message: GetAddressesInfosRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
4502
+ }
4503
+ /**
4504
+ * @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest
4505
+ */
4506
+ export declare const GetAddressesInfosRequest: GetAddressesInfosRequest$Type;
4507
+ declare class GetAddressesInfosRequest_GetAddressesInfosRequestV0$Type extends MessageType<GetAddressesInfosRequest_GetAddressesInfosRequestV0> {
4508
+ constructor();
4509
+ create(value?: PartialMessage<GetAddressesInfosRequest_GetAddressesInfosRequestV0>): GetAddressesInfosRequest_GetAddressesInfosRequestV0;
4510
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetAddressesInfosRequest_GetAddressesInfosRequestV0): GetAddressesInfosRequest_GetAddressesInfosRequestV0;
4511
+ internalBinaryWrite(message: GetAddressesInfosRequest_GetAddressesInfosRequestV0, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
4512
+ }
4513
+ /**
4514
+ * @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0
4515
+ */
4516
+ export declare const GetAddressesInfosRequest_GetAddressesInfosRequestV0: GetAddressesInfosRequest_GetAddressesInfosRequestV0$Type;
4517
+ declare class AddressInfoEntries$Type extends MessageType<AddressInfoEntries> {
4518
+ constructor();
4519
+ create(value?: PartialMessage<AddressInfoEntries>): AddressInfoEntries;
4520
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AddressInfoEntries): AddressInfoEntries;
4521
+ internalBinaryWrite(message: AddressInfoEntries, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
4522
+ }
4523
+ /**
4524
+ * @generated MessageType for protobuf message org.dash.platform.dapi.v0.AddressInfoEntries
4525
+ */
4526
+ export declare const AddressInfoEntries: AddressInfoEntries$Type;
4527
+ declare class GetAddressesInfosResponse$Type extends MessageType<GetAddressesInfosResponse> {
4528
+ constructor();
4529
+ create(value?: PartialMessage<GetAddressesInfosResponse>): GetAddressesInfosResponse;
4530
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetAddressesInfosResponse): GetAddressesInfosResponse;
4531
+ internalBinaryWrite(message: GetAddressesInfosResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
4532
+ }
4533
+ /**
4534
+ * @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse
4535
+ */
4536
+ export declare const GetAddressesInfosResponse: GetAddressesInfosResponse$Type;
4537
+ declare class GetAddressesInfosResponse_GetAddressesInfosResponseV0$Type extends MessageType<GetAddressesInfosResponse_GetAddressesInfosResponseV0> {
4538
+ constructor();
4539
+ create(value?: PartialMessage<GetAddressesInfosResponse_GetAddressesInfosResponseV0>): GetAddressesInfosResponse_GetAddressesInfosResponseV0;
4540
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetAddressesInfosResponse_GetAddressesInfosResponseV0): GetAddressesInfosResponse_GetAddressesInfosResponseV0;
4541
+ internalBinaryWrite(message: GetAddressesInfosResponse_GetAddressesInfosResponseV0, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
4542
+ }
4543
+ /**
4544
+ * @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0
4545
+ */
4546
+ export declare const GetAddressesInfosResponse_GetAddressesInfosResponseV0: GetAddressesInfosResponse_GetAddressesInfosResponseV0$Type;
4414
4547
  /**
4415
4548
  * @generated ServiceType for protobuf service org.dash.platform.dapi.v0.Platform
4416
4549
  */
@@ -8800,6 +8800,275 @@ class GetAddressInfoResponse_GetAddressInfoResponseV0$Type extends MessageType {
8800
8800
  * @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressInfoResponse.GetAddressInfoResponseV0
8801
8801
  */
8802
8802
  export const GetAddressInfoResponse_GetAddressInfoResponseV0 = new GetAddressInfoResponse_GetAddressInfoResponseV0$Type();
8803
+ // @generated message type with reflection information, may provide speed optimized methods
8804
+ class GetAddressesInfosRequest$Type extends MessageType {
8805
+ constructor() {
8806
+ super("org.dash.platform.dapi.v0.GetAddressesInfosRequest", [
8807
+ { no: 1, name: "v0", kind: "message", oneof: "version", T: () => GetAddressesInfosRequest_GetAddressesInfosRequestV0 }
8808
+ ]);
8809
+ }
8810
+ create(value) {
8811
+ const message = globalThis.Object.create((this.messagePrototype));
8812
+ message.version = { oneofKind: undefined };
8813
+ if (value !== undefined)
8814
+ reflectionMergePartial(this, message, value);
8815
+ return message;
8816
+ }
8817
+ internalBinaryRead(reader, length, options, target) {
8818
+ let message = target ?? this.create(), end = reader.pos + length;
8819
+ while (reader.pos < end) {
8820
+ let [fieldNo, wireType] = reader.tag();
8821
+ switch (fieldNo) {
8822
+ case /* org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0 v0 */ 1:
8823
+ message.version = {
8824
+ oneofKind: "v0",
8825
+ v0: GetAddressesInfosRequest_GetAddressesInfosRequestV0.internalBinaryRead(reader, reader.uint32(), options, message.version.v0)
8826
+ };
8827
+ break;
8828
+ default:
8829
+ let u = options.readUnknownField;
8830
+ if (u === "throw")
8831
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
8832
+ let d = reader.skip(wireType);
8833
+ if (u !== false)
8834
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
8835
+ }
8836
+ }
8837
+ return message;
8838
+ }
8839
+ internalBinaryWrite(message, writer, options) {
8840
+ /* org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0 v0 = 1; */
8841
+ if (message.version.oneofKind === "v0")
8842
+ GetAddressesInfosRequest_GetAddressesInfosRequestV0.internalBinaryWrite(message.version.v0, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
8843
+ let u = options.writeUnknownFields;
8844
+ if (u !== false)
8845
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
8846
+ return writer;
8847
+ }
8848
+ }
8849
+ /**
8850
+ * @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest
8851
+ */
8852
+ export const GetAddressesInfosRequest = new GetAddressesInfosRequest$Type();
8853
+ // @generated message type with reflection information, may provide speed optimized methods
8854
+ class GetAddressesInfosRequest_GetAddressesInfosRequestV0$Type extends MessageType {
8855
+ constructor() {
8856
+ super("org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0", [
8857
+ { no: 1, name: "addresses", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 12 /*ScalarType.BYTES*/ },
8858
+ { no: 2, name: "prove", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
8859
+ ]);
8860
+ }
8861
+ create(value) {
8862
+ const message = globalThis.Object.create((this.messagePrototype));
8863
+ message.addresses = [];
8864
+ message.prove = false;
8865
+ if (value !== undefined)
8866
+ reflectionMergePartial(this, message, value);
8867
+ return message;
8868
+ }
8869
+ internalBinaryRead(reader, length, options, target) {
8870
+ let message = target ?? this.create(), end = reader.pos + length;
8871
+ while (reader.pos < end) {
8872
+ let [fieldNo, wireType] = reader.tag();
8873
+ switch (fieldNo) {
8874
+ case /* repeated bytes addresses */ 1:
8875
+ message.addresses.push(reader.bytes());
8876
+ break;
8877
+ case /* bool prove */ 2:
8878
+ message.prove = reader.bool();
8879
+ break;
8880
+ default:
8881
+ let u = options.readUnknownField;
8882
+ if (u === "throw")
8883
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
8884
+ let d = reader.skip(wireType);
8885
+ if (u !== false)
8886
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
8887
+ }
8888
+ }
8889
+ return message;
8890
+ }
8891
+ internalBinaryWrite(message, writer, options) {
8892
+ /* repeated bytes addresses = 1; */
8893
+ for (let i = 0; i < message.addresses.length; i++)
8894
+ writer.tag(1, WireType.LengthDelimited).bytes(message.addresses[i]);
8895
+ /* bool prove = 2; */
8896
+ if (message.prove !== false)
8897
+ writer.tag(2, WireType.Varint).bool(message.prove);
8898
+ let u = options.writeUnknownFields;
8899
+ if (u !== false)
8900
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
8901
+ return writer;
8902
+ }
8903
+ }
8904
+ /**
8905
+ * @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosRequest.GetAddressesInfosRequestV0
8906
+ */
8907
+ export const GetAddressesInfosRequest_GetAddressesInfosRequestV0 = new GetAddressesInfosRequest_GetAddressesInfosRequestV0$Type();
8908
+ // @generated message type with reflection information, may provide speed optimized methods
8909
+ class AddressInfoEntries$Type extends MessageType {
8910
+ constructor() {
8911
+ super("org.dash.platform.dapi.v0.AddressInfoEntries", [
8912
+ { no: 1, name: "address_info_entries", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => AddressInfoEntry }
8913
+ ]);
8914
+ }
8915
+ create(value) {
8916
+ const message = globalThis.Object.create((this.messagePrototype));
8917
+ message.addressInfoEntries = [];
8918
+ if (value !== undefined)
8919
+ reflectionMergePartial(this, message, value);
8920
+ return message;
8921
+ }
8922
+ internalBinaryRead(reader, length, options, target) {
8923
+ let message = target ?? this.create(), end = reader.pos + length;
8924
+ while (reader.pos < end) {
8925
+ let [fieldNo, wireType] = reader.tag();
8926
+ switch (fieldNo) {
8927
+ case /* repeated org.dash.platform.dapi.v0.AddressInfoEntry address_info_entries */ 1:
8928
+ message.addressInfoEntries.push(AddressInfoEntry.internalBinaryRead(reader, reader.uint32(), options));
8929
+ break;
8930
+ default:
8931
+ let u = options.readUnknownField;
8932
+ if (u === "throw")
8933
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
8934
+ let d = reader.skip(wireType);
8935
+ if (u !== false)
8936
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
8937
+ }
8938
+ }
8939
+ return message;
8940
+ }
8941
+ internalBinaryWrite(message, writer, options) {
8942
+ /* repeated org.dash.platform.dapi.v0.AddressInfoEntry address_info_entries = 1; */
8943
+ for (let i = 0; i < message.addressInfoEntries.length; i++)
8944
+ AddressInfoEntry.internalBinaryWrite(message.addressInfoEntries[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
8945
+ let u = options.writeUnknownFields;
8946
+ if (u !== false)
8947
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
8948
+ return writer;
8949
+ }
8950
+ }
8951
+ /**
8952
+ * @generated MessageType for protobuf message org.dash.platform.dapi.v0.AddressInfoEntries
8953
+ */
8954
+ export const AddressInfoEntries = new AddressInfoEntries$Type();
8955
+ // @generated message type with reflection information, may provide speed optimized methods
8956
+ class GetAddressesInfosResponse$Type extends MessageType {
8957
+ constructor() {
8958
+ super("org.dash.platform.dapi.v0.GetAddressesInfosResponse", [
8959
+ { no: 1, name: "v0", kind: "message", oneof: "version", T: () => GetAddressesInfosResponse_GetAddressesInfosResponseV0 }
8960
+ ]);
8961
+ }
8962
+ create(value) {
8963
+ const message = globalThis.Object.create((this.messagePrototype));
8964
+ message.version = { oneofKind: undefined };
8965
+ if (value !== undefined)
8966
+ reflectionMergePartial(this, message, value);
8967
+ return message;
8968
+ }
8969
+ internalBinaryRead(reader, length, options, target) {
8970
+ let message = target ?? this.create(), end = reader.pos + length;
8971
+ while (reader.pos < end) {
8972
+ let [fieldNo, wireType] = reader.tag();
8973
+ switch (fieldNo) {
8974
+ case /* org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0 v0 */ 1:
8975
+ message.version = {
8976
+ oneofKind: "v0",
8977
+ v0: GetAddressesInfosResponse_GetAddressesInfosResponseV0.internalBinaryRead(reader, reader.uint32(), options, message.version.v0)
8978
+ };
8979
+ break;
8980
+ default:
8981
+ let u = options.readUnknownField;
8982
+ if (u === "throw")
8983
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
8984
+ let d = reader.skip(wireType);
8985
+ if (u !== false)
8986
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
8987
+ }
8988
+ }
8989
+ return message;
8990
+ }
8991
+ internalBinaryWrite(message, writer, options) {
8992
+ /* org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0 v0 = 1; */
8993
+ if (message.version.oneofKind === "v0")
8994
+ GetAddressesInfosResponse_GetAddressesInfosResponseV0.internalBinaryWrite(message.version.v0, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
8995
+ let u = options.writeUnknownFields;
8996
+ if (u !== false)
8997
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
8998
+ return writer;
8999
+ }
9000
+ }
9001
+ /**
9002
+ * @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse
9003
+ */
9004
+ export const GetAddressesInfosResponse = new GetAddressesInfosResponse$Type();
9005
+ // @generated message type with reflection information, may provide speed optimized methods
9006
+ class GetAddressesInfosResponse_GetAddressesInfosResponseV0$Type extends MessageType {
9007
+ constructor() {
9008
+ super("org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0", [
9009
+ { no: 1, name: "address_info_entries", kind: "message", oneof: "result", T: () => AddressInfoEntries },
9010
+ { no: 2, name: "proof", kind: "message", oneof: "result", T: () => Proof },
9011
+ { no: 3, name: "metadata", kind: "message", T: () => ResponseMetadata }
9012
+ ]);
9013
+ }
9014
+ create(value) {
9015
+ const message = globalThis.Object.create((this.messagePrototype));
9016
+ message.result = { oneofKind: undefined };
9017
+ if (value !== undefined)
9018
+ reflectionMergePartial(this, message, value);
9019
+ return message;
9020
+ }
9021
+ internalBinaryRead(reader, length, options, target) {
9022
+ let message = target ?? this.create(), end = reader.pos + length;
9023
+ while (reader.pos < end) {
9024
+ let [fieldNo, wireType] = reader.tag();
9025
+ switch (fieldNo) {
9026
+ case /* org.dash.platform.dapi.v0.AddressInfoEntries address_info_entries */ 1:
9027
+ message.result = {
9028
+ oneofKind: "addressInfoEntries",
9029
+ addressInfoEntries: AddressInfoEntries.internalBinaryRead(reader, reader.uint32(), options, message.result.addressInfoEntries)
9030
+ };
9031
+ break;
9032
+ case /* org.dash.platform.dapi.v0.Proof proof */ 2:
9033
+ message.result = {
9034
+ oneofKind: "proof",
9035
+ proof: Proof.internalBinaryRead(reader, reader.uint32(), options, message.result.proof)
9036
+ };
9037
+ break;
9038
+ case /* org.dash.platform.dapi.v0.ResponseMetadata metadata */ 3:
9039
+ message.metadata = ResponseMetadata.internalBinaryRead(reader, reader.uint32(), options, message.metadata);
9040
+ break;
9041
+ default:
9042
+ let u = options.readUnknownField;
9043
+ if (u === "throw")
9044
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
9045
+ let d = reader.skip(wireType);
9046
+ if (u !== false)
9047
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
9048
+ }
9049
+ }
9050
+ return message;
9051
+ }
9052
+ internalBinaryWrite(message, writer, options) {
9053
+ /* org.dash.platform.dapi.v0.AddressInfoEntries address_info_entries = 1; */
9054
+ if (message.result.oneofKind === "addressInfoEntries")
9055
+ AddressInfoEntries.internalBinaryWrite(message.result.addressInfoEntries, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
9056
+ /* org.dash.platform.dapi.v0.Proof proof = 2; */
9057
+ if (message.result.oneofKind === "proof")
9058
+ Proof.internalBinaryWrite(message.result.proof, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
9059
+ /* org.dash.platform.dapi.v0.ResponseMetadata metadata = 3; */
9060
+ if (message.metadata)
9061
+ ResponseMetadata.internalBinaryWrite(message.metadata, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
9062
+ let u = options.writeUnknownFields;
9063
+ if (u !== false)
9064
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
9065
+ return writer;
9066
+ }
9067
+ }
9068
+ /**
9069
+ * @generated MessageType for protobuf message org.dash.platform.dapi.v0.GetAddressesInfosResponse.GetAddressesInfosResponseV0
9070
+ */
9071
+ export const GetAddressesInfosResponse_GetAddressesInfosResponseV0 = new GetAddressesInfosResponse_GetAddressesInfosResponseV0$Type();
8803
9072
  /**
8804
9073
  * @generated ServiceType for protobuf service org.dash.platform.dapi.v0.Platform
8805
9074
  */
@@ -8828,5 +9097,6 @@ export const Platform = new ServiceType("org.dash.platform.dapi.v0.Platform", [
8828
9097
  { name: "getTokenDirectPurchasePrices", options: {}, I: GetTokenDirectPurchasePricesRequest, O: GetTokenDirectPurchasePricesResponse },
8829
9098
  { name: "getTokenTotalSupply", options: {}, I: GetTokenTotalSupplyRequest, O: GetTokenTotalSupplyResponse },
8830
9099
  { name: "waitForStateTransitionResult", options: {}, I: WaitForStateTransitionResultRequest, O: WaitForStateTransitionResultResponse },
8831
- { name: "getAddressInfo", options: {}, I: GetAddressInfoRequest, O: GetAddressInfoResponse }
9100
+ { name: "getAddressInfo", options: {}, I: GetAddressInfoRequest, O: GetAddressInfoResponse },
9101
+ { name: "getAddressesInfos", options: {}, I: GetAddressesInfosRequest, O: GetAddressesInfosResponse }
8832
9102
  ]);
@@ -28,7 +28,7 @@ export async function getAddressInfo(grpcPool, platformAddress) {
28
28
  if (metadata == null) {
29
29
  throw new Error('Metadata not found');
30
30
  }
31
- const { rootHash, address, nonce, balance } = await verifyPlatformAddressInfo(proof.grovedbProof, platformAddressWASM, true, LATEST_PLATFORM_VERSION);
31
+ const { rootHash, address, nonce, balance } = verifyPlatformAddressInfo(proof.grovedbProof, platformAddressWASM, true, LATEST_PLATFORM_VERSION);
32
32
  if (address == null || nonce == null || balance == null) {
33
33
  throw new Error(`Failed to fetch info for address ${platformAddressWASM.toBech32m(grpcPool.network)}`);
34
34
  }
@@ -0,0 +1,4 @@
1
+ import GRPCConnectionPool from '../grpcConnectionPool.js';
2
+ import { PlatformAddressLike } from 'pshenmic-dpp';
3
+ import { PlatformAddressInfo } from '../../types.js';
4
+ export declare function getAddressesInfos(grpcPool: GRPCConnectionPool, platformAddresses: PlatformAddressLike[]): Promise<PlatformAddressInfo[]>;
@@ -0,0 +1,43 @@
1
+ import { PlatformAddressWASM, verifyPlatformAddressesInfos } from 'pshenmic-dpp';
2
+ import { GetAddressesInfosRequest } from '../../proto/generated/platform.js';
3
+ import { LATEST_PLATFORM_VERSION } from '../constants.js';
4
+ import { getQuorumPublicKey } from '../utils/getQuorumPublicKey.js';
5
+ import bytesToHex from '../utils/bytesToHex.js';
6
+ import verifyTenderdashProof from '../utils/verifyTenderdashProof.js';
7
+ export async function getAddressesInfos(grpcPool, platformAddresses) {
8
+ const platformAddressesWASM = platformAddresses.map(addr => new PlatformAddressWASM(addr));
9
+ const getAddressInfoRequest = GetAddressesInfosRequest.create({
10
+ version: {
11
+ oneofKind: 'v0',
12
+ v0: {
13
+ addresses: platformAddressesWASM.map(addr => addr.bytes()),
14
+ prove: true
15
+ }
16
+ }
17
+ });
18
+ const { response } = await grpcPool.getClient().getAddressesInfos(getAddressInfoRequest);
19
+ const { version } = response;
20
+ if (version.oneofKind !== 'v0') {
21
+ throw new Error('Unexpected oneOf type returned from DAPI (must be v0)');
22
+ }
23
+ const { v0 } = version;
24
+ if (v0.result.oneofKind !== 'proof') {
25
+ throw new Error('Unexpected oneOf type returned from DAPI (must be proof)');
26
+ }
27
+ const { result: { proof }, metadata } = v0;
28
+ if (metadata == null) {
29
+ throw new Error('Metadata not found');
30
+ }
31
+ const { rootHash, infos } = verifyPlatformAddressesInfos(proof.grovedbProof, platformAddressesWASM, true, LATEST_PLATFORM_VERSION);
32
+ const quorumPublicKey = await getQuorumPublicKey(grpcPool.network, proof.quorumType, bytesToHex(proof.quorumHash));
33
+ const verify = await verifyTenderdashProof(proof, metadata, rootHash, quorumPublicKey);
34
+ if (!verify) {
35
+ throw new Error('Failed to verify query');
36
+ }
37
+ return infos
38
+ .map(info => ({
39
+ address: info.address,
40
+ nonce: info.nonce ?? 0,
41
+ balance: BigInt(info.balance ?? 0)
42
+ }));
43
+ }
@@ -12,4 +12,11 @@ export declare class PlatformAddressesController {
12
12
  * @return {Promise<PlatformAddressInfo>}
13
13
  */
14
14
  getAddressInfo(address: PlatformAddressLike): Promise<PlatformAddressInfo>;
15
+ /**
16
+ * Makes a query for platform addresses infos, returns array with an object with address, balance and nonce
17
+ *
18
+ * @param addresses {PlatformAddressLike[]}
19
+ * @return {Promise<PlatformAddressInfo[]>}
20
+ */
21
+ getAddressesInfos(addresses: PlatformAddressLike[]): Promise<PlatformAddressInfo[]>;
15
22
  }
@@ -1,4 +1,5 @@
1
1
  import { getAddressInfo } from './getAddressInfo.js';
2
+ import { getAddressesInfos } from './getAddressesInfos.js';
2
3
  export class PlatformAddressesController {
3
4
  /** @ignore **/
4
5
  grpcPool;
@@ -14,4 +15,13 @@ export class PlatformAddressesController {
14
15
  async getAddressInfo(address) {
15
16
  return await getAddressInfo(this.grpcPool, address);
16
17
  }
18
+ /**
19
+ * Makes a query for platform addresses infos, returns array with an object with address, balance and nonce
20
+ *
21
+ * @param addresses {PlatformAddressLike[]}
22
+ * @return {Promise<PlatformAddressInfo[]>}
23
+ */
24
+ async getAddressesInfos(addresses) {
25
+ return await getAddressesInfos(this.grpcPool, addresses);
26
+ }
17
27
  }
@@ -1,10 +1,21 @@
1
1
  import { BroadcastStateTransitionRequest } from '../../proto/generated/platform.js';
2
+ import { deserializeConsensusError } from '../utils/deserializeConsensusError.js';
2
3
  export default async function broadcast(grpcPool, stateTransition) {
3
- if (stateTransition.signature?.length === 0) {
4
- throw new Error('State Transition is not signed');
4
+ try {
5
+ if (stateTransition.signature?.length === 0) {
6
+ throw new Error('State Transition is not signed');
7
+ }
8
+ const broadcastStateTransitionRequest = BroadcastStateTransitionRequest.create({
9
+ stateTransition: stateTransition.bytes()
10
+ });
11
+ await grpcPool.getClient().broadcastStateTransition(broadcastStateTransitionRequest);
12
+ }
13
+ catch (err) {
14
+ if (err.meta?.['dash-serialized-consensus-error-bin']?.length !== 0) {
15
+ throw new Error(deserializeConsensusError(err.meta['dash-serialized-consensus-error-bin']));
16
+ }
17
+ else {
18
+ throw err;
19
+ }
5
20
  }
6
- const broadcastStateTransitionRequest = BroadcastStateTransitionRequest.create({
7
- stateTransition: stateTransition.bytes()
8
- });
9
- await grpcPool.getClient().broadcastStateTransition(broadcastStateTransitionRequest);
10
21
  }
@@ -0,0 +1 @@
1
+ export declare function deserializeConsensusError(error: string | Uint8Array): string;
@@ -0,0 +1,17 @@
1
+ import { base64 } from '@scure/base';
2
+ import { ConsensusErrorWASM } from 'pshenmic-dpp';
3
+ export function deserializeConsensusError(error) {
4
+ let normError;
5
+ if (typeof error === 'string') {
6
+ // @scure/base64 works only with padded base64, but cbor can return unpadded base64
7
+ const padding = error.length % 4;
8
+ if (padding !== 0) {
9
+ error += '='.repeat(4 - padding);
10
+ }
11
+ normError = base64.decode(error);
12
+ }
13
+ else {
14
+ normError = error;
15
+ }
16
+ return ConsensusErrorWASM.deserialize(normError).message;
17
+ }
@@ -69,4 +69,11 @@ export declare class UtilsController {
69
69
  * @return {boolean}
70
70
  * */
71
71
  validateIdentifier(identifier: IdentifierLike): boolean;
72
+ /**
73
+ * Allows to deserialize consensus error
74
+ *
75
+ * @param error {string | Uint8Array} error in base64 or bytes
76
+ * @return {string}
77
+ */
78
+ deserializeConsensusError(error: string | Uint8Array): string;
72
79
  }
@@ -5,6 +5,7 @@ import bytesToHex from './bytesToHex.js';
5
5
  import { createVoterIdentityId } from './createVoterIdentityId.js';
6
6
  import { IdentifierWASM } from 'pshenmic-dpp';
7
7
  import { createMasternodeIdentityId } from './createMasternodeIdentityId.js';
8
+ import { deserializeConsensusError } from './deserializeConsensusError.js';
8
9
  /**
9
10
  * Collection of conversion functions
10
11
  *
@@ -98,4 +99,13 @@ export class UtilsController {
98
99
  return false;
99
100
  }
100
101
  }
102
+ /**
103
+ * Allows to deserialize consensus error
104
+ *
105
+ * @param error {string | Uint8Array} error in base64 or bytes
106
+ * @return {string}
107
+ */
108
+ deserializeConsensusError(error) {
109
+ return deserializeConsensusError(error);
110
+ }
101
111
  }