@buildonspark/spark-sdk 0.2.2 → 0.2.4

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.
Files changed (94) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{chunk-TM6CHQXC.js → chunk-3SEOTO43.js} +1 -1
  3. package/dist/{chunk-2ENZX6LT.js → chunk-AAZWSPUK.js} +84 -8
  4. package/dist/{chunk-4JD4HIAN.js → chunk-G4MSZ6DE.js} +299 -1
  5. package/dist/{chunk-S2AL73MZ.js → chunk-TVUMSHWA.js} +1 -1
  6. package/dist/{chunk-2TUM3R6C.js → chunk-W4ZRBSWM.js} +2351 -797
  7. package/dist/{chunk-CDLETEDT.js → chunk-WAQKYSDI.js} +13 -1
  8. package/dist/{client-CGTRS23n.d.ts → client-BF4cn8F4.d.ts} +15 -3
  9. package/dist/{client-CcYzmpmj.d.cts → client-KhNkrXz4.d.cts} +15 -3
  10. package/dist/debug.cjs +2948 -1023
  11. package/dist/debug.d.cts +19 -6
  12. package/dist/debug.d.ts +19 -6
  13. package/dist/debug.js +5 -5
  14. package/dist/graphql/objects/index.cjs +13 -1
  15. package/dist/graphql/objects/index.d.cts +2 -2
  16. package/dist/graphql/objects/index.d.ts +2 -2
  17. package/dist/graphql/objects/index.js +1 -1
  18. package/dist/index.cjs +2794 -858
  19. package/dist/index.d.cts +190 -9
  20. package/dist/index.d.ts +190 -9
  21. package/dist/index.js +32 -6
  22. package/dist/index.node.cjs +2931 -892
  23. package/dist/index.node.d.cts +10 -188
  24. package/dist/index.node.d.ts +10 -188
  25. package/dist/index.node.js +134 -6
  26. package/dist/native/index.cjs +2794 -858
  27. package/dist/native/index.d.cts +148 -40
  28. package/dist/native/index.d.ts +148 -40
  29. package/dist/native/index.js +2799 -877
  30. package/dist/proto/lrc20.d.cts +1 -1
  31. package/dist/proto/lrc20.d.ts +1 -1
  32. package/dist/proto/lrc20.js +1 -1
  33. package/dist/proto/spark.cjs +84 -8
  34. package/dist/proto/spark.d.cts +1 -1
  35. package/dist/proto/spark.d.ts +1 -1
  36. package/dist/proto/spark.js +1 -1
  37. package/dist/proto/spark_token.cjs +301 -0
  38. package/dist/proto/spark_token.d.cts +35 -2
  39. package/dist/proto/spark_token.d.ts +35 -2
  40. package/dist/proto/spark_token.js +8 -2
  41. package/dist/{sdk-types-DJ2ve9YY.d.cts → sdk-types-CB9HrW5O.d.cts} +1 -1
  42. package/dist/{sdk-types-DCIVdKUT.d.ts → sdk-types-CkRNraXT.d.ts} +1 -1
  43. package/dist/{spark-BUOx3U7Q.d.cts → spark-B_7nZx6T.d.cts} +112 -10
  44. package/dist/{spark-BUOx3U7Q.d.ts → spark-B_7nZx6T.d.ts} +112 -10
  45. package/dist/{spark-wallet-B_96y9BS.d.ts → spark-wallet-C1Tr_VKI.d.ts} +38 -28
  46. package/dist/{spark-wallet-CHwKQYJu.d.cts → spark-wallet-DG3x2obf.d.cts} +38 -28
  47. package/dist/spark-wallet.node-CGxoeCpH.d.ts +13 -0
  48. package/dist/spark-wallet.node-CN9LoB_O.d.cts +13 -0
  49. package/dist/tests/test-utils.cjs +1086 -218
  50. package/dist/tests/test-utils.d.cts +13 -13
  51. package/dist/tests/test-utils.d.ts +13 -13
  52. package/dist/tests/test-utils.js +56 -19
  53. package/dist/types/index.cjs +97 -9
  54. package/dist/types/index.d.cts +3 -3
  55. package/dist/types/index.d.ts +3 -3
  56. package/dist/types/index.js +3 -3
  57. package/dist/{xchain-address-D5MIHCDL.d.cts → xchain-address-BHu6CpZC.d.ts} +55 -8
  58. package/dist/{xchain-address-DLbW1iDh.d.ts → xchain-address-HBr6isnc.d.cts} +55 -8
  59. package/package.json +1 -1
  60. package/src/graphql/client.ts +8 -0
  61. package/src/graphql/mutations/CompleteLeavesSwap.ts +9 -1
  62. package/src/graphql/mutations/RequestSwapLeaves.ts +4 -0
  63. package/src/graphql/objects/CompleteLeavesSwapInput.ts +34 -34
  64. package/src/graphql/objects/LeavesSwapRequest.ts +4 -0
  65. package/src/graphql/objects/RequestLeavesSwapInput.ts +48 -47
  66. package/src/graphql/objects/SwapLeaf.ts +40 -32
  67. package/src/graphql/objects/UserLeafInput.ts +24 -0
  68. package/src/graphql/objects/UserRequest.ts +4 -0
  69. package/src/index.node.ts +1 -1
  70. package/src/native/index.ts +4 -5
  71. package/src/proto/spark.ts +172 -16
  72. package/src/proto/spark_token.ts +369 -0
  73. package/src/services/coop-exit.ts +171 -36
  74. package/src/services/deposit.ts +471 -74
  75. package/src/services/lightning.ts +18 -5
  76. package/src/services/signing.ts +162 -50
  77. package/src/services/token-transactions.ts +6 -2
  78. package/src/services/transfer.ts +950 -384
  79. package/src/services/tree-creation.ts +342 -121
  80. package/src/spark-wallet/spark-wallet.node.ts +71 -66
  81. package/src/spark-wallet/spark-wallet.ts +459 -166
  82. package/src/tests/integration/coop-exit.test.ts +3 -8
  83. package/src/tests/integration/deposit.test.ts +3 -3
  84. package/src/tests/integration/lightning.test.ts +521 -466
  85. package/src/tests/integration/swap.test.ts +559 -307
  86. package/src/tests/integration/transfer.test.ts +625 -623
  87. package/src/tests/integration/wallet.test.ts +2 -2
  88. package/src/tests/integration/watchtower.test.ts +211 -0
  89. package/src/tests/test-utils.ts +63 -14
  90. package/src/tests/utils/test-faucet.ts +4 -2
  91. package/src/utils/adaptor-signature.ts +15 -5
  92. package/src/utils/fetch.ts +75 -0
  93. package/src/utils/mempool.ts +9 -4
  94. package/src/utils/transaction.ts +388 -26
@@ -17638,14 +17638,6 @@ export const SparkServiceDefinition = {
17638
17638
  responseStream: false,
17639
17639
  options: {},
17640
17640
  },
17641
- create_tree_v2: {
17642
- name: "create_tree_v2",
17643
- requestType: CreateTreeRequest,
17644
- requestStream: false,
17645
- responseType: CreateTreeResponse,
17646
- responseStream: false,
17647
- options: {},
17648
- },
17649
17641
  get_signing_operator_list: {
17650
17642
  name: "get_signing_operator_list",
17651
17643
  requestType: Empty,
@@ -17813,6 +17805,90 @@ export const SparkServiceDefinition = {
17813
17805
  responseStream: false,
17814
17806
  options: {},
17815
17807
  },
17808
+ /**
17809
+ * The following endpoints enforce inclusion of Direct Transactions used
17810
+ * for unilateral exits
17811
+ */
17812
+ create_tree_v2: {
17813
+ name: "create_tree_v2",
17814
+ requestType: CreateTreeRequest,
17815
+ requestStream: false,
17816
+ responseType: CreateTreeResponse,
17817
+ responseStream: false,
17818
+ options: {},
17819
+ },
17820
+ cooperative_exit_v2: {
17821
+ name: "cooperative_exit_v2",
17822
+ requestType: CooperativeExitRequest,
17823
+ requestStream: false,
17824
+ responseType: CooperativeExitResponse,
17825
+ responseStream: false,
17826
+ options: {},
17827
+ },
17828
+ extend_leaf_v2: {
17829
+ name: "extend_leaf_v2",
17830
+ requestType: ExtendLeafRequest,
17831
+ requestStream: false,
17832
+ responseType: ExtendLeafResponse,
17833
+ responseStream: false,
17834
+ options: {},
17835
+ },
17836
+ claim_transfer_sign_refunds_v2: {
17837
+ name: "claim_transfer_sign_refunds_v2",
17838
+ requestType: ClaimTransferSignRefundsRequest,
17839
+ requestStream: false,
17840
+ responseType: ClaimTransferSignRefundsResponse,
17841
+ responseStream: false,
17842
+ options: {},
17843
+ },
17844
+ finalize_node_signatures_v2: {
17845
+ name: "finalize_node_signatures_v2",
17846
+ requestType: FinalizeNodeSignaturesRequest,
17847
+ requestStream: false,
17848
+ responseType: FinalizeNodeSignaturesResponse,
17849
+ responseStream: false,
17850
+ options: {},
17851
+ },
17852
+ initiate_preimage_swap_v2: {
17853
+ name: "initiate_preimage_swap_v2",
17854
+ requestType: InitiatePreimageSwapRequest,
17855
+ requestStream: false,
17856
+ responseType: InitiatePreimageSwapResponse,
17857
+ responseStream: false,
17858
+ options: {},
17859
+ },
17860
+ start_leaf_swap_v2: {
17861
+ name: "start_leaf_swap_v2",
17862
+ requestType: StartTransferRequest,
17863
+ requestStream: false,
17864
+ responseType: StartTransferResponse,
17865
+ responseStream: false,
17866
+ options: {},
17867
+ },
17868
+ counter_leaf_swap_v2: {
17869
+ name: "counter_leaf_swap_v2",
17870
+ requestType: CounterLeafSwapRequest,
17871
+ requestStream: false,
17872
+ responseType: CounterLeafSwapResponse,
17873
+ responseStream: false,
17874
+ options: {},
17875
+ },
17876
+ start_transfer_v2: {
17877
+ name: "start_transfer_v2",
17878
+ requestType: StartTransferRequest,
17879
+ requestStream: false,
17880
+ responseType: StartTransferResponse,
17881
+ responseStream: false,
17882
+ options: {},
17883
+ },
17884
+ refresh_timelock_v2: {
17885
+ name: "refresh_timelock_v2",
17886
+ requestType: RefreshTimelockRequest,
17887
+ requestStream: false,
17888
+ responseType: RefreshTimelockResponse,
17889
+ responseStream: false,
17890
+ options: {},
17891
+ },
17816
17892
  },
17817
17893
  } as const;
17818
17894
 
@@ -17936,10 +18012,6 @@ export interface SparkServiceImplementation<CallContextExt = {}> {
17936
18012
  request: CreateTreeRequest,
17937
18013
  context: CallContext & CallContextExt,
17938
18014
  ): Promise<DeepPartial<CreateTreeResponse>>;
17939
- create_tree_v2(
17940
- request: CreateTreeRequest,
17941
- context: CallContext & CallContextExt,
17942
- ): Promise<DeepPartial<CreateTreeResponse>>;
17943
18015
  get_signing_operator_list(
17944
18016
  request: Empty,
17945
18017
  context: CallContext & CallContextExt,
@@ -18031,6 +18103,50 @@ export interface SparkServiceImplementation<CallContextExt = {}> {
18031
18103
  request: ExitSingleNodeTreesRequest,
18032
18104
  context: CallContext & CallContextExt,
18033
18105
  ): Promise<DeepPartial<ExitSingleNodeTreesResponse>>;
18106
+ /**
18107
+ * The following endpoints enforce inclusion of Direct Transactions used
18108
+ * for unilateral exits
18109
+ */
18110
+ create_tree_v2(
18111
+ request: CreateTreeRequest,
18112
+ context: CallContext & CallContextExt,
18113
+ ): Promise<DeepPartial<CreateTreeResponse>>;
18114
+ cooperative_exit_v2(
18115
+ request: CooperativeExitRequest,
18116
+ context: CallContext & CallContextExt,
18117
+ ): Promise<DeepPartial<CooperativeExitResponse>>;
18118
+ extend_leaf_v2(
18119
+ request: ExtendLeafRequest,
18120
+ context: CallContext & CallContextExt,
18121
+ ): Promise<DeepPartial<ExtendLeafResponse>>;
18122
+ claim_transfer_sign_refunds_v2(
18123
+ request: ClaimTransferSignRefundsRequest,
18124
+ context: CallContext & CallContextExt,
18125
+ ): Promise<DeepPartial<ClaimTransferSignRefundsResponse>>;
18126
+ finalize_node_signatures_v2(
18127
+ request: FinalizeNodeSignaturesRequest,
18128
+ context: CallContext & CallContextExt,
18129
+ ): Promise<DeepPartial<FinalizeNodeSignaturesResponse>>;
18130
+ initiate_preimage_swap_v2(
18131
+ request: InitiatePreimageSwapRequest,
18132
+ context: CallContext & CallContextExt,
18133
+ ): Promise<DeepPartial<InitiatePreimageSwapResponse>>;
18134
+ start_leaf_swap_v2(
18135
+ request: StartTransferRequest,
18136
+ context: CallContext & CallContextExt,
18137
+ ): Promise<DeepPartial<StartTransferResponse>>;
18138
+ counter_leaf_swap_v2(
18139
+ request: CounterLeafSwapRequest,
18140
+ context: CallContext & CallContextExt,
18141
+ ): Promise<DeepPartial<CounterLeafSwapResponse>>;
18142
+ start_transfer_v2(
18143
+ request: StartTransferRequest,
18144
+ context: CallContext & CallContextExt,
18145
+ ): Promise<DeepPartial<StartTransferResponse>>;
18146
+ refresh_timelock_v2(
18147
+ request: RefreshTimelockRequest,
18148
+ context: CallContext & CallContextExt,
18149
+ ): Promise<DeepPartial<RefreshTimelockResponse>>;
18034
18150
  }
18035
18151
 
18036
18152
  export interface SparkServiceClient<CallOptionsExt = {}> {
@@ -18153,10 +18269,6 @@ export interface SparkServiceClient<CallOptionsExt = {}> {
18153
18269
  request: DeepPartial<CreateTreeRequest>,
18154
18270
  options?: CallOptions & CallOptionsExt,
18155
18271
  ): Promise<CreateTreeResponse>;
18156
- create_tree_v2(
18157
- request: DeepPartial<CreateTreeRequest>,
18158
- options?: CallOptions & CallOptionsExt,
18159
- ): Promise<CreateTreeResponse>;
18160
18272
  get_signing_operator_list(
18161
18273
  request: DeepPartial<Empty>,
18162
18274
  options?: CallOptions & CallOptionsExt,
@@ -18248,6 +18360,50 @@ export interface SparkServiceClient<CallOptionsExt = {}> {
18248
18360
  request: DeepPartial<ExitSingleNodeTreesRequest>,
18249
18361
  options?: CallOptions & CallOptionsExt,
18250
18362
  ): Promise<ExitSingleNodeTreesResponse>;
18363
+ /**
18364
+ * The following endpoints enforce inclusion of Direct Transactions used
18365
+ * for unilateral exits
18366
+ */
18367
+ create_tree_v2(
18368
+ request: DeepPartial<CreateTreeRequest>,
18369
+ options?: CallOptions & CallOptionsExt,
18370
+ ): Promise<CreateTreeResponse>;
18371
+ cooperative_exit_v2(
18372
+ request: DeepPartial<CooperativeExitRequest>,
18373
+ options?: CallOptions & CallOptionsExt,
18374
+ ): Promise<CooperativeExitResponse>;
18375
+ extend_leaf_v2(
18376
+ request: DeepPartial<ExtendLeafRequest>,
18377
+ options?: CallOptions & CallOptionsExt,
18378
+ ): Promise<ExtendLeafResponse>;
18379
+ claim_transfer_sign_refunds_v2(
18380
+ request: DeepPartial<ClaimTransferSignRefundsRequest>,
18381
+ options?: CallOptions & CallOptionsExt,
18382
+ ): Promise<ClaimTransferSignRefundsResponse>;
18383
+ finalize_node_signatures_v2(
18384
+ request: DeepPartial<FinalizeNodeSignaturesRequest>,
18385
+ options?: CallOptions & CallOptionsExt,
18386
+ ): Promise<FinalizeNodeSignaturesResponse>;
18387
+ initiate_preimage_swap_v2(
18388
+ request: DeepPartial<InitiatePreimageSwapRequest>,
18389
+ options?: CallOptions & CallOptionsExt,
18390
+ ): Promise<InitiatePreimageSwapResponse>;
18391
+ start_leaf_swap_v2(
18392
+ request: DeepPartial<StartTransferRequest>,
18393
+ options?: CallOptions & CallOptionsExt,
18394
+ ): Promise<StartTransferResponse>;
18395
+ counter_leaf_swap_v2(
18396
+ request: DeepPartial<CounterLeafSwapRequest>,
18397
+ options?: CallOptions & CallOptionsExt,
18398
+ ): Promise<CounterLeafSwapResponse>;
18399
+ start_transfer_v2(
18400
+ request: DeepPartial<StartTransferRequest>,
18401
+ options?: CallOptions & CallOptionsExt,
18402
+ ): Promise<StartTransferResponse>;
18403
+ refresh_timelock_v2(
18404
+ request: DeepPartial<RefreshTimelockRequest>,
18405
+ options?: CallOptions & CallOptionsExt,
18406
+ ): Promise<RefreshTimelockResponse>;
18251
18407
  }
18252
18408
 
18253
18409
  function bytesFromBase64(b64: string): Uint8Array {
@@ -344,6 +344,31 @@ export interface TokenTransactionWithStatus {
344
344
  tokenTransactionHash: Uint8Array;
345
345
  }
346
346
 
347
+ export interface FreezeTokensPayload {
348
+ version: number;
349
+ ownerPublicKey: Uint8Array;
350
+ tokenPublicKey?: Uint8Array | undefined;
351
+ tokenIdentifier?: Uint8Array | undefined;
352
+ issuerProvidedTimestamp: number;
353
+ operatorIdentityPublicKey: Uint8Array;
354
+ /** Set to false when requesting a freeze. */
355
+ shouldUnfreeze: boolean;
356
+ }
357
+
358
+ export interface FreezeTokensRequest {
359
+ freezeTokensPayload:
360
+ | FreezeTokensPayload
361
+ | undefined;
362
+ /** This is a Schnorr or ECDSA DER signature which can be between 64 and 73 bytes. */
363
+ issuerSignature: Uint8Array;
364
+ }
365
+
366
+ export interface FreezeTokensResponse {
367
+ impactedOutputIds: string[];
368
+ /** Decoded uint128 */
369
+ impactedTokenAmount: Uint8Array;
370
+ }
371
+
347
372
  function createBaseTokenOutputToSpend(): TokenOutputToSpend {
348
373
  return { prevTokenTransactionHash: new Uint8Array(0), prevTokenTransactionVout: 0 };
349
374
  }
@@ -2803,6 +2828,334 @@ export const TokenTransactionWithStatus: MessageFns<TokenTransactionWithStatus>
2803
2828
  },
2804
2829
  };
2805
2830
 
2831
+ function createBaseFreezeTokensPayload(): FreezeTokensPayload {
2832
+ return {
2833
+ version: 0,
2834
+ ownerPublicKey: new Uint8Array(0),
2835
+ tokenPublicKey: undefined,
2836
+ tokenIdentifier: undefined,
2837
+ issuerProvidedTimestamp: 0,
2838
+ operatorIdentityPublicKey: new Uint8Array(0),
2839
+ shouldUnfreeze: false,
2840
+ };
2841
+ }
2842
+
2843
+ export const FreezeTokensPayload: MessageFns<FreezeTokensPayload> = {
2844
+ encode(message: FreezeTokensPayload, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
2845
+ if (message.version !== 0) {
2846
+ writer.uint32(8).uint32(message.version);
2847
+ }
2848
+ if (message.ownerPublicKey.length !== 0) {
2849
+ writer.uint32(18).bytes(message.ownerPublicKey);
2850
+ }
2851
+ if (message.tokenPublicKey !== undefined) {
2852
+ writer.uint32(26).bytes(message.tokenPublicKey);
2853
+ }
2854
+ if (message.tokenIdentifier !== undefined) {
2855
+ writer.uint32(34).bytes(message.tokenIdentifier);
2856
+ }
2857
+ if (message.issuerProvidedTimestamp !== 0) {
2858
+ writer.uint32(40).uint64(message.issuerProvidedTimestamp);
2859
+ }
2860
+ if (message.operatorIdentityPublicKey.length !== 0) {
2861
+ writer.uint32(50).bytes(message.operatorIdentityPublicKey);
2862
+ }
2863
+ if (message.shouldUnfreeze !== false) {
2864
+ writer.uint32(56).bool(message.shouldUnfreeze);
2865
+ }
2866
+ return writer;
2867
+ },
2868
+
2869
+ decode(input: BinaryReader | Uint8Array, length?: number): FreezeTokensPayload {
2870
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
2871
+ const end = length === undefined ? reader.len : reader.pos + length;
2872
+ const message = createBaseFreezeTokensPayload();
2873
+ while (reader.pos < end) {
2874
+ const tag = reader.uint32();
2875
+ switch (tag >>> 3) {
2876
+ case 1: {
2877
+ if (tag !== 8) {
2878
+ break;
2879
+ }
2880
+
2881
+ message.version = reader.uint32();
2882
+ continue;
2883
+ }
2884
+ case 2: {
2885
+ if (tag !== 18) {
2886
+ break;
2887
+ }
2888
+
2889
+ message.ownerPublicKey = reader.bytes();
2890
+ continue;
2891
+ }
2892
+ case 3: {
2893
+ if (tag !== 26) {
2894
+ break;
2895
+ }
2896
+
2897
+ message.tokenPublicKey = reader.bytes();
2898
+ continue;
2899
+ }
2900
+ case 4: {
2901
+ if (tag !== 34) {
2902
+ break;
2903
+ }
2904
+
2905
+ message.tokenIdentifier = reader.bytes();
2906
+ continue;
2907
+ }
2908
+ case 5: {
2909
+ if (tag !== 40) {
2910
+ break;
2911
+ }
2912
+
2913
+ message.issuerProvidedTimestamp = longToNumber(reader.uint64());
2914
+ continue;
2915
+ }
2916
+ case 6: {
2917
+ if (tag !== 50) {
2918
+ break;
2919
+ }
2920
+
2921
+ message.operatorIdentityPublicKey = reader.bytes();
2922
+ continue;
2923
+ }
2924
+ case 7: {
2925
+ if (tag !== 56) {
2926
+ break;
2927
+ }
2928
+
2929
+ message.shouldUnfreeze = reader.bool();
2930
+ continue;
2931
+ }
2932
+ }
2933
+ if ((tag & 7) === 4 || tag === 0) {
2934
+ break;
2935
+ }
2936
+ reader.skip(tag & 7);
2937
+ }
2938
+ return message;
2939
+ },
2940
+
2941
+ fromJSON(object: any): FreezeTokensPayload {
2942
+ return {
2943
+ version: isSet(object.version) ? globalThis.Number(object.version) : 0,
2944
+ ownerPublicKey: isSet(object.ownerPublicKey) ? bytesFromBase64(object.ownerPublicKey) : new Uint8Array(0),
2945
+ tokenPublicKey: isSet(object.tokenPublicKey) ? bytesFromBase64(object.tokenPublicKey) : undefined,
2946
+ tokenIdentifier: isSet(object.tokenIdentifier) ? bytesFromBase64(object.tokenIdentifier) : undefined,
2947
+ issuerProvidedTimestamp: isSet(object.issuerProvidedTimestamp)
2948
+ ? globalThis.Number(object.issuerProvidedTimestamp)
2949
+ : 0,
2950
+ operatorIdentityPublicKey: isSet(object.operatorIdentityPublicKey)
2951
+ ? bytesFromBase64(object.operatorIdentityPublicKey)
2952
+ : new Uint8Array(0),
2953
+ shouldUnfreeze: isSet(object.shouldUnfreeze) ? globalThis.Boolean(object.shouldUnfreeze) : false,
2954
+ };
2955
+ },
2956
+
2957
+ toJSON(message: FreezeTokensPayload): unknown {
2958
+ const obj: any = {};
2959
+ if (message.version !== 0) {
2960
+ obj.version = Math.round(message.version);
2961
+ }
2962
+ if (message.ownerPublicKey.length !== 0) {
2963
+ obj.ownerPublicKey = base64FromBytes(message.ownerPublicKey);
2964
+ }
2965
+ if (message.tokenPublicKey !== undefined) {
2966
+ obj.tokenPublicKey = base64FromBytes(message.tokenPublicKey);
2967
+ }
2968
+ if (message.tokenIdentifier !== undefined) {
2969
+ obj.tokenIdentifier = base64FromBytes(message.tokenIdentifier);
2970
+ }
2971
+ if (message.issuerProvidedTimestamp !== 0) {
2972
+ obj.issuerProvidedTimestamp = Math.round(message.issuerProvidedTimestamp);
2973
+ }
2974
+ if (message.operatorIdentityPublicKey.length !== 0) {
2975
+ obj.operatorIdentityPublicKey = base64FromBytes(message.operatorIdentityPublicKey);
2976
+ }
2977
+ if (message.shouldUnfreeze !== false) {
2978
+ obj.shouldUnfreeze = message.shouldUnfreeze;
2979
+ }
2980
+ return obj;
2981
+ },
2982
+
2983
+ create(base?: DeepPartial<FreezeTokensPayload>): FreezeTokensPayload {
2984
+ return FreezeTokensPayload.fromPartial(base ?? {});
2985
+ },
2986
+ fromPartial(object: DeepPartial<FreezeTokensPayload>): FreezeTokensPayload {
2987
+ const message = createBaseFreezeTokensPayload();
2988
+ message.version = object.version ?? 0;
2989
+ message.ownerPublicKey = object.ownerPublicKey ?? new Uint8Array(0);
2990
+ message.tokenPublicKey = object.tokenPublicKey ?? undefined;
2991
+ message.tokenIdentifier = object.tokenIdentifier ?? undefined;
2992
+ message.issuerProvidedTimestamp = object.issuerProvidedTimestamp ?? 0;
2993
+ message.operatorIdentityPublicKey = object.operatorIdentityPublicKey ?? new Uint8Array(0);
2994
+ message.shouldUnfreeze = object.shouldUnfreeze ?? false;
2995
+ return message;
2996
+ },
2997
+ };
2998
+
2999
+ function createBaseFreezeTokensRequest(): FreezeTokensRequest {
3000
+ return { freezeTokensPayload: undefined, issuerSignature: new Uint8Array(0) };
3001
+ }
3002
+
3003
+ export const FreezeTokensRequest: MessageFns<FreezeTokensRequest> = {
3004
+ encode(message: FreezeTokensRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
3005
+ if (message.freezeTokensPayload !== undefined) {
3006
+ FreezeTokensPayload.encode(message.freezeTokensPayload, writer.uint32(10).fork()).join();
3007
+ }
3008
+ if (message.issuerSignature.length !== 0) {
3009
+ writer.uint32(18).bytes(message.issuerSignature);
3010
+ }
3011
+ return writer;
3012
+ },
3013
+
3014
+ decode(input: BinaryReader | Uint8Array, length?: number): FreezeTokensRequest {
3015
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
3016
+ const end = length === undefined ? reader.len : reader.pos + length;
3017
+ const message = createBaseFreezeTokensRequest();
3018
+ while (reader.pos < end) {
3019
+ const tag = reader.uint32();
3020
+ switch (tag >>> 3) {
3021
+ case 1: {
3022
+ if (tag !== 10) {
3023
+ break;
3024
+ }
3025
+
3026
+ message.freezeTokensPayload = FreezeTokensPayload.decode(reader, reader.uint32());
3027
+ continue;
3028
+ }
3029
+ case 2: {
3030
+ if (tag !== 18) {
3031
+ break;
3032
+ }
3033
+
3034
+ message.issuerSignature = reader.bytes();
3035
+ continue;
3036
+ }
3037
+ }
3038
+ if ((tag & 7) === 4 || tag === 0) {
3039
+ break;
3040
+ }
3041
+ reader.skip(tag & 7);
3042
+ }
3043
+ return message;
3044
+ },
3045
+
3046
+ fromJSON(object: any): FreezeTokensRequest {
3047
+ return {
3048
+ freezeTokensPayload: isSet(object.freezeTokensPayload)
3049
+ ? FreezeTokensPayload.fromJSON(object.freezeTokensPayload)
3050
+ : undefined,
3051
+ issuerSignature: isSet(object.issuerSignature) ? bytesFromBase64(object.issuerSignature) : new Uint8Array(0),
3052
+ };
3053
+ },
3054
+
3055
+ toJSON(message: FreezeTokensRequest): unknown {
3056
+ const obj: any = {};
3057
+ if (message.freezeTokensPayload !== undefined) {
3058
+ obj.freezeTokensPayload = FreezeTokensPayload.toJSON(message.freezeTokensPayload);
3059
+ }
3060
+ if (message.issuerSignature.length !== 0) {
3061
+ obj.issuerSignature = base64FromBytes(message.issuerSignature);
3062
+ }
3063
+ return obj;
3064
+ },
3065
+
3066
+ create(base?: DeepPartial<FreezeTokensRequest>): FreezeTokensRequest {
3067
+ return FreezeTokensRequest.fromPartial(base ?? {});
3068
+ },
3069
+ fromPartial(object: DeepPartial<FreezeTokensRequest>): FreezeTokensRequest {
3070
+ const message = createBaseFreezeTokensRequest();
3071
+ message.freezeTokensPayload = (object.freezeTokensPayload !== undefined && object.freezeTokensPayload !== null)
3072
+ ? FreezeTokensPayload.fromPartial(object.freezeTokensPayload)
3073
+ : undefined;
3074
+ message.issuerSignature = object.issuerSignature ?? new Uint8Array(0);
3075
+ return message;
3076
+ },
3077
+ };
3078
+
3079
+ function createBaseFreezeTokensResponse(): FreezeTokensResponse {
3080
+ return { impactedOutputIds: [], impactedTokenAmount: new Uint8Array(0) };
3081
+ }
3082
+
3083
+ export const FreezeTokensResponse: MessageFns<FreezeTokensResponse> = {
3084
+ encode(message: FreezeTokensResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
3085
+ for (const v of message.impactedOutputIds) {
3086
+ writer.uint32(10).string(v!);
3087
+ }
3088
+ if (message.impactedTokenAmount.length !== 0) {
3089
+ writer.uint32(18).bytes(message.impactedTokenAmount);
3090
+ }
3091
+ return writer;
3092
+ },
3093
+
3094
+ decode(input: BinaryReader | Uint8Array, length?: number): FreezeTokensResponse {
3095
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
3096
+ const end = length === undefined ? reader.len : reader.pos + length;
3097
+ const message = createBaseFreezeTokensResponse();
3098
+ while (reader.pos < end) {
3099
+ const tag = reader.uint32();
3100
+ switch (tag >>> 3) {
3101
+ case 1: {
3102
+ if (tag !== 10) {
3103
+ break;
3104
+ }
3105
+
3106
+ message.impactedOutputIds.push(reader.string());
3107
+ continue;
3108
+ }
3109
+ case 2: {
3110
+ if (tag !== 18) {
3111
+ break;
3112
+ }
3113
+
3114
+ message.impactedTokenAmount = reader.bytes();
3115
+ continue;
3116
+ }
3117
+ }
3118
+ if ((tag & 7) === 4 || tag === 0) {
3119
+ break;
3120
+ }
3121
+ reader.skip(tag & 7);
3122
+ }
3123
+ return message;
3124
+ },
3125
+
3126
+ fromJSON(object: any): FreezeTokensResponse {
3127
+ return {
3128
+ impactedOutputIds: globalThis.Array.isArray(object?.impactedOutputIds)
3129
+ ? object.impactedOutputIds.map((e: any) => globalThis.String(e))
3130
+ : [],
3131
+ impactedTokenAmount: isSet(object.impactedTokenAmount)
3132
+ ? bytesFromBase64(object.impactedTokenAmount)
3133
+ : new Uint8Array(0),
3134
+ };
3135
+ },
3136
+
3137
+ toJSON(message: FreezeTokensResponse): unknown {
3138
+ const obj: any = {};
3139
+ if (message.impactedOutputIds?.length) {
3140
+ obj.impactedOutputIds = message.impactedOutputIds;
3141
+ }
3142
+ if (message.impactedTokenAmount.length !== 0) {
3143
+ obj.impactedTokenAmount = base64FromBytes(message.impactedTokenAmount);
3144
+ }
3145
+ return obj;
3146
+ },
3147
+
3148
+ create(base?: DeepPartial<FreezeTokensResponse>): FreezeTokensResponse {
3149
+ return FreezeTokensResponse.fromPartial(base ?? {});
3150
+ },
3151
+ fromPartial(object: DeepPartial<FreezeTokensResponse>): FreezeTokensResponse {
3152
+ const message = createBaseFreezeTokensResponse();
3153
+ message.impactedOutputIds = object.impactedOutputIds?.map((e) => e) || [];
3154
+ message.impactedTokenAmount = object.impactedTokenAmount ?? new Uint8Array(0);
3155
+ return message;
3156
+ },
3157
+ };
3158
+
2806
3159
  export type SparkTokenServiceDefinition = typeof SparkTokenServiceDefinition;
2807
3160
  export const SparkTokenServiceDefinition = {
2808
3161
  name: "SparkTokenService",
@@ -2856,6 +3209,14 @@ export const SparkTokenServiceDefinition = {
2856
3209
  responseStream: false,
2857
3210
  options: {},
2858
3211
  },
3212
+ freeze_tokens: {
3213
+ name: "freeze_tokens",
3214
+ requestType: FreezeTokensRequest,
3215
+ requestStream: false,
3216
+ responseType: FreezeTokensResponse,
3217
+ responseStream: false,
3218
+ options: {},
3219
+ },
2859
3220
  },
2860
3221
  } as const;
2861
3222
 
@@ -2888,6 +3249,10 @@ export interface SparkTokenServiceImplementation<CallContextExt = {}> {
2888
3249
  request: QueryTokenOutputsRequest,
2889
3250
  context: CallContext & CallContextExt,
2890
3251
  ): Promise<DeepPartial<QueryTokenOutputsResponse>>;
3252
+ freeze_tokens(
3253
+ request: FreezeTokensRequest,
3254
+ context: CallContext & CallContextExt,
3255
+ ): Promise<DeepPartial<FreezeTokensResponse>>;
2891
3256
  }
2892
3257
 
2893
3258
  export interface SparkTokenServiceClient<CallOptionsExt = {}> {
@@ -2919,6 +3284,10 @@ export interface SparkTokenServiceClient<CallOptionsExt = {}> {
2919
3284
  request: DeepPartial<QueryTokenOutputsRequest>,
2920
3285
  options?: CallOptions & CallOptionsExt,
2921
3286
  ): Promise<QueryTokenOutputsResponse>;
3287
+ freeze_tokens(
3288
+ request: DeepPartial<FreezeTokensRequest>,
3289
+ options?: CallOptions & CallOptionsExt,
3290
+ ): Promise<FreezeTokensResponse>;
2922
3291
  }
2923
3292
 
2924
3293
  function bytesFromBase64(b64: string): Uint8Array {