@xyo-network/xl1-protocol-sdk 1.15.10 → 1.15.12

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 (47) hide show
  1. package/dist/neutral/config/Config.d.ts +10 -0
  2. package/dist/neutral/config/Config.d.ts.map +1 -1
  3. package/dist/neutral/config/RewardRedemptionApi.d.ts +1 -0
  4. package/dist/neutral/config/RewardRedemptionApi.d.ts.map +1 -1
  5. package/dist/neutral/config/Validation.d.ts +9 -0
  6. package/dist/neutral/config/Validation.d.ts.map +1 -1
  7. package/dist/neutral/index.d.ts +2 -0
  8. package/dist/neutral/index.d.ts.map +1 -1
  9. package/dist/neutral/index.mjs +149 -37
  10. package/dist/neutral/index.mjs.map +1 -1
  11. package/dist/neutral/payload/AddressPairPayload.d.ts +15 -0
  12. package/dist/neutral/payload/AddressPairPayload.d.ts.map +1 -0
  13. package/dist/neutral/payload/index.d.ts +1 -0
  14. package/dist/neutral/payload/index.d.ts.map +1 -1
  15. package/dist/neutral/primitives/index.d.ts +3 -0
  16. package/dist/neutral/primitives/index.d.ts.map +1 -0
  17. package/dist/neutral/primitives/step/completedStepRewardAddress.d.ts +4 -0
  18. package/dist/neutral/primitives/step/completedStepRewardAddress.d.ts.map +1 -0
  19. package/dist/neutral/primitives/step/derivedReceiveAddress.d.ts +3 -0
  20. package/dist/neutral/primitives/step/derivedReceiveAddress.d.ts.map +1 -0
  21. package/dist/neutral/primitives/step/index.d.ts +5 -0
  22. package/dist/neutral/primitives/step/index.d.ts.map +1 -0
  23. package/dist/neutral/primitives/step/spec/stepTransferIndex.spec.d.ts +2 -0
  24. package/dist/neutral/primitives/step/spec/stepTransferIndex.spec.d.ts.map +1 -0
  25. package/dist/neutral/primitives/step/stepBlockRange.d.ts +3 -0
  26. package/dist/neutral/primitives/step/stepBlockRange.d.ts.map +1 -0
  27. package/dist/neutral/primitives/step/stepTransferIndex.d.ts +2 -0
  28. package/dist/neutral/primitives/step/stepTransferIndex.d.ts.map +1 -0
  29. package/dist/neutral/primitives/transaction/elevatedPayloads.d.ts +4 -0
  30. package/dist/neutral/primitives/transaction/elevatedPayloads.d.ts.map +1 -0
  31. package/dist/neutral/primitives/transaction/index.d.ts +2 -0
  32. package/dist/neutral/primitives/transaction/index.d.ts.map +1 -0
  33. package/package.json +23 -22
  34. package/src/config/RewardRedemptionApi.ts +9 -3
  35. package/src/config/Validation.ts +10 -1
  36. package/src/index.ts +2 -0
  37. package/src/payload/AddressPairPayload.ts +19 -0
  38. package/src/payload/index.ts +1 -0
  39. package/src/primitives/index.ts +2 -0
  40. package/src/primitives/step/completedStepRewardAddress.ts +8 -0
  41. package/src/primitives/step/derivedReceiveAddress.ts +8 -0
  42. package/src/primitives/step/index.ts +4 -0
  43. package/src/primitives/step/spec/stepTransferIndex.spec.ts +23 -0
  44. package/src/primitives/step/stepBlockRange.ts +8 -0
  45. package/src/primitives/step/stepTransferIndex.ts +18 -0
  46. package/src/primitives/transaction/elevatedPayloads.ts +21 -0
  47. package/src/primitives/transaction/index.ts +1 -0
@@ -56,6 +56,7 @@ export declare const ConfigZod: z.ZodObject<{
56
56
  rewardAddress: z.ZodOptional<z.ZodString>;
57
57
  }, z.core.$strip>>;
58
58
  rewardRedemptionApi: z.ZodDefault<z.ZodObject<{
59
+ chainRpcApiUrl: z.ZodDefault<z.ZodString>;
59
60
  host: z.ZodDefault<z.ZodString>;
60
61
  mnemonic: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
61
62
  port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
@@ -85,6 +86,15 @@ export declare const ConfigZod: z.ZodObject<{
85
86
  }>, {
86
87
  readonly __address: true;
87
88
  }>, unknown>>>>>;
89
+ allowedRewardEscrowAccountSigners: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodArray<z.ZodType<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
90
+ readonly __hex: true;
91
+ }>, {
92
+ readonly __address: true;
93
+ }>, unknown, z.core.$ZodTypeInternals<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
94
+ readonly __hex: true;
95
+ }>, {
96
+ readonly __address: true;
97
+ }>, unknown>>>>>;
88
98
  }, z.core.$strip>>;
89
99
  logLevel: z.ZodDefault<z.ZodEnum<{
90
100
  error: "error";
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/config/Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAcxB,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAAmF,CAAA;AAErH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYpB,CAAA;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAE9C,eAAO,MAAM,gBAAgB,QAAO,MAA6B,CAAA"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/config/Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAcxB,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAAmF,CAAA;AAErH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYpB,CAAA;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAE9C,eAAO,MAAM,gBAAgB,QAAO,MAA6B,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import * as z from 'zod';
2
2
  export declare const RewardRedemptionApiConfigZod: z.ZodObject<{
3
+ chainRpcApiUrl: z.ZodDefault<z.ZodString>;
3
4
  host: z.ZodDefault<z.ZodString>;
4
5
  mnemonic: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
5
6
  port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
@@ -1 +1 @@
1
- {"version":3,"file":"RewardRedemptionApi.d.ts","sourceRoot":"","sources":["../../../src/config/RewardRedemptionApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAIxB,eAAO,MAAM,4BAA4B;;;;iBAkBvC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA"}
1
+ {"version":3,"file":"RewardRedemptionApi.d.ts","sourceRoot":"","sources":["../../../src/config/RewardRedemptionApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAIxB,eAAO,MAAM,4BAA4B;;;;;iBAwBvC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA"}
@@ -9,6 +9,15 @@ export declare const ValidationConfigZod: z.ZodObject<{
9
9
  }>, {
10
10
  readonly __address: true;
11
11
  }>, unknown>>>>>;
12
+ allowedRewardEscrowAccountSigners: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodArray<z.ZodType<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
13
+ readonly __hex: true;
14
+ }>, {
15
+ readonly __address: true;
16
+ }>, unknown, z.core.$ZodTypeInternals<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
17
+ readonly __hex: true;
18
+ }>, {
19
+ readonly __address: true;
20
+ }>, unknown>>>>>;
12
21
  }, z.core.$strip>;
13
22
  export type ValidationConfig = z.infer<typeof ValidationConfigZod>;
14
23
  //# sourceMappingURL=Validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../../src/config/Validation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAY9B,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA"}
1
+ {"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../../src/config/Validation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;iBAqB9B,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA"}
@@ -8,6 +8,8 @@ export * from './map/index.ts';
8
8
  export * from './model/index.ts';
9
9
  export * from './multipliers.ts';
10
10
  export * from './payload/index.ts';
11
+ export * from './primitives/index.ts';
12
+ export * from './primitives/index.ts';
11
13
  export * from './SignedBigInt.ts';
12
14
  export * from './time/index.ts';
13
15
  export * from './transaction/index.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA"}
@@ -38,6 +38,14 @@ import { PayloadBuilder } from "@xyo-network/payload-builder";
38
38
  import { isAnyPayload } from "@xyo-network/payload-model";
39
39
  import { StepSizes as StepSizes3 } from "@xyo-network/xl1-protocol";
40
40
 
41
+ // src/payload/AddressPairPayload.ts
42
+ import { AsObjectFactory } from "@xylabs/object";
43
+ import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
44
+ var AddressPairSchema = "network.xyo.address.pair";
45
+ var isAddressPairPayload = isPayloadOfSchemaType(AddressPairSchema);
46
+ var asAddressPairPayload = AsObjectFactory.create(isAddressPairPayload);
47
+ var asOptionalAddressPairPayload = AsObjectFactory.createOptional(isAddressPairPayload);
48
+
41
49
  // src/payload/netBalancesForPayloads.ts
42
50
  import { hexToBigInt, toAddress } from "@xylabs/hex";
43
51
  import { span } from "@xylabs/telemetry";
@@ -232,29 +240,29 @@ async function hashFromBlockNumber(context, blockNumber) {
232
240
  __name(hashFromBlockNumber, "hashFromBlockNumber");
233
241
 
234
242
  // src/block/primitives/payloads/BalancesStepSummary.ts
235
- import { AsObjectFactory } from "@xylabs/object";
236
- import { isPayloadOfSchemaType, isStorageMeta } from "@xyo-network/payload-model";
243
+ import { AsObjectFactory as AsObjectFactory2 } from "@xylabs/object";
244
+ import { isPayloadOfSchemaType as isPayloadOfSchemaType2, isStorageMeta } from "@xyo-network/payload-model";
237
245
  var BalancesStepSummarySchema = "network.xyo.step.summary.balances";
238
- var isBalancesStepSummary = isPayloadOfSchemaType(BalancesStepSummarySchema);
239
- var asBalancesStepSummary = AsObjectFactory.create(isBalancesStepSummary);
246
+ var isBalancesStepSummary = isPayloadOfSchemaType2(BalancesStepSummarySchema);
247
+ var asBalancesStepSummary = AsObjectFactory2.create(isBalancesStepSummary);
240
248
  var isBalancesStepSummaryWithStorageMeta = /* @__PURE__ */ __name((value) => {
241
249
  return isBalancesStepSummary(value) && isStorageMeta(value);
242
250
  }, "isBalancesStepSummaryWithStorageMeta");
243
- var asBalancesStepSummaryWithStorageMeta = AsObjectFactory.create(isBalancesStepSummaryWithStorageMeta);
251
+ var asBalancesStepSummaryWithStorageMeta = AsObjectFactory2.create(isBalancesStepSummaryWithStorageMeta);
244
252
 
245
253
  // src/block/primitives/payloads/StepSummary.ts
246
254
  var StepSummarySchema = "network.xyo.step.summary";
247
255
 
248
256
  // src/block/primitives/payloads/TransfersSummary.ts
249
- import { AsObjectFactory as AsObjectFactory2 } from "@xylabs/object";
250
- import { isPayloadOfSchemaType as isPayloadOfSchemaType2, isStorageMeta as isStorageMeta2 } from "@xyo-network/payload-model";
257
+ import { AsObjectFactory as AsObjectFactory3 } from "@xylabs/object";
258
+ import { isPayloadOfSchemaType as isPayloadOfSchemaType3, isStorageMeta as isStorageMeta2 } from "@xyo-network/payload-model";
251
259
  var TransfersStepSummarySchema = "network.xyo.step.summary.transfer";
252
- var isTransfersStepSummary = isPayloadOfSchemaType2(TransfersStepSummarySchema);
253
- var asTransfersStepSummary = AsObjectFactory2.create(isTransfersStepSummary);
260
+ var isTransfersStepSummary = isPayloadOfSchemaType3(TransfersStepSummarySchema);
261
+ var asTransfersStepSummary = AsObjectFactory3.create(isTransfersStepSummary);
254
262
  var isTransfersStepSummaryWithStorageMeta = /* @__PURE__ */ __name((value) => {
255
263
  return isTransfersStepSummary(value) && isStorageMeta2(value);
256
264
  }, "isTransfersStepSummaryWithStorageMeta");
257
- var asTransfersStepSummaryWithStorageMeta = AsObjectFactory2.create(isTransfersStepSummaryWithStorageMeta);
265
+ var asTransfersStepSummaryWithStorageMeta = AsObjectFactory3.create(isTransfersStepSummaryWithStorageMeta);
258
266
 
259
267
  // src/block/primitives/balances/balancesStepSummaryFromRange.ts
260
268
  async function balancesStepSummaryFromRange(context, range) {
@@ -769,21 +777,27 @@ var ProducerConfigZod = z8.object({
769
777
  import { globalRegistry as globalRegistry8 } from "zod";
770
778
  import * as z9 from "zod";
771
779
  var RewardRedemptionApiConfigZod = z9.object({
780
+ chainRpcApiUrl: z9.string().default("http://localhost:8080/rpc").register(globalRegistry8, {
781
+ default: "http://localhost:8080/rpc",
782
+ description: "URL for the Chain RPC API",
783
+ title: "rewardRedemptionApi.chainRpcApiUrl",
784
+ type: "string"
785
+ }),
772
786
  host: z9.string().default("localhost").register(globalRegistry8, {
773
787
  default: "localhost",
774
788
  description: "Host for the Redemption API",
775
- title: "redemption.host",
789
+ title: "rewardRedemptionApi.host",
776
790
  type: "string"
777
791
  }),
778
792
  mnemonic: MnemonicStringZod.optional().register(globalRegistry8, {
779
793
  description: "Mnemonic for the Redemption API wallet",
780
- title: "redemption.mnemonic",
794
+ title: "rewardRedemptionApi.mnemonic",
781
795
  type: "string"
782
796
  }),
783
797
  port: z9.coerce.number().default(8082).register(globalRegistry8, {
784
798
  default: 8082,
785
799
  description: "Port for the Redemption API",
786
- title: "redemption.port",
800
+ title: "rewardRedemptionApi.port",
787
801
  type: "number"
788
802
  })
789
803
  });
@@ -867,6 +881,16 @@ var ValidationConfigZod = z13.object({
867
881
  description: "List of allowed reward redeemer addresses, if undefined anyone can participate",
868
882
  title: "allowedRewardRedeemers",
869
883
  type: "array"
884
+ })),
885
+ allowedRewardEscrowAccountSigners: z13.preprocess((val) => {
886
+ if (typeof val === "string") {
887
+ return val.split(",").map((s) => asAddress4(s.trim()));
888
+ }
889
+ return val;
890
+ }, z13.array(AddressZod2).optional().register(globalRegistry12, {
891
+ description: "List of allowed reward escrow account signer addresses, if undefined anyone can participate",
892
+ title: "allowedRewardEscrowAccountSigners",
893
+ type: "array"
870
894
  }))
871
895
  });
872
896
 
@@ -949,8 +973,87 @@ var RewardMultipliers = {
949
973
  ]
950
974
  };
951
975
 
952
- // src/time/primitives/xl1BlockNumberToEthBlockNumber.ts
976
+ // src/primitives/step/completedStepRewardAddress.ts
977
+ import { toAddress as toAddress2 } from "@xylabs/hex";
978
+ import { keccak256 } from "ethers";
979
+ function completedStepRewardAddress({ block, step }) {
980
+ const addressKey = new TextEncoder().encode(`${block}|${step}`);
981
+ return toAddress2(keccak256(addressKey).slice(-40), {
982
+ prefix: false
983
+ });
984
+ }
985
+ __name(completedStepRewardAddress, "completedStepRewardAddress");
986
+
987
+ // src/primitives/step/derivedReceiveAddress.ts
988
+ import { toAddress as toAddress3 } from "@xylabs/hex";
989
+ import { isDefined as isDefined5 } from "@xylabs/typeof";
990
+ import { keccak256 as keccak2562 } from "ethers";
991
+ function derivedReceiveAddress(address, scope) {
992
+ const addressKey = new TextEncoder().encode(isDefined5(scope) ? `${scope}|${address}` : address);
993
+ return toAddress3(keccak2562(addressKey).slice(-40), {
994
+ prefix: false
995
+ });
996
+ }
997
+ __name(derivedReceiveAddress, "derivedReceiveAddress");
998
+
999
+ // src/primitives/step/stepBlockRange.ts
1000
+ import { asXL1BlockRange, StepSizes as StepSizes5 } from "@xyo-network/xl1-protocol";
1001
+ function stepBlockRange({ block, step }) {
1002
+ const stepSize2 = StepSizes5[step];
1003
+ const start = block - stepSize2;
1004
+ return asXL1BlockRange([
1005
+ start,
1006
+ start + stepSize2 - 1
1007
+ ]);
1008
+ }
1009
+ __name(stepBlockRange, "stepBlockRange");
1010
+
1011
+ // src/primitives/step/stepTransferIndex.ts
953
1012
  import { assertEx as assertEx6 } from "@xylabs/assert";
1013
+ import { StepSizes as StepSizes6 } from "@xyo-network/xl1-protocol";
1014
+ function stepTransferIndex(block, step) {
1015
+ let rewardTransferCount = 0;
1016
+ let rewardTransferIndex = -1;
1017
+ for (let i = 3; i < StepSizes6.length; i++) {
1018
+ const stepSize2 = StepSizes6[i];
1019
+ if (block % stepSize2 === 0) {
1020
+ if (stepSize2 === StepSizes6[step]) {
1021
+ rewardTransferIndex = rewardTransferCount;
1022
+ }
1023
+ rewardTransferCount++;
1024
+ }
1025
+ }
1026
+ assertEx6(rewardTransferIndex >= 0, () => `Error: Could not find step size for step ${step} at block ${block}`);
1027
+ return [
1028
+ rewardTransferIndex,
1029
+ rewardTransferCount
1030
+ ];
1031
+ }
1032
+ __name(stepTransferIndex, "stepTransferIndex");
1033
+
1034
+ // src/primitives/transaction/elevatedPayloads.ts
1035
+ import { isAllowedBlockPayload } from "@xyo-network/xl1-protocol";
1036
+ function elevatedPayloads([tx, payloads]) {
1037
+ const opCodes = (tx.script ?? []).filter((operation) => operation.startsWith("elevate|"));
1038
+ const elevatedPayloads2 = [];
1039
+ for (const opCode of opCodes) {
1040
+ const [code, hash] = opCode.split("|");
1041
+ if (code === "elevated") {
1042
+ const elevatedPayload = payloads.find((payload) => payload._hash === hash);
1043
+ if (isAllowedBlockPayload(elevatedPayload)) {
1044
+ elevatedPayloads2.push(elevatedPayload);
1045
+ }
1046
+ }
1047
+ }
1048
+ if (opCodes.length === elevatedPayloads2.length) {
1049
+ return elevatedPayloads2;
1050
+ }
1051
+ throw new Error("Not all elevated payloads could be found in the transaction payloads");
1052
+ }
1053
+ __name(elevatedPayloads, "elevatedPayloads");
1054
+
1055
+ // src/time/primitives/xl1BlockNumberToEthBlockNumber.ts
1056
+ import { assertEx as assertEx7 } from "@xylabs/assert";
954
1057
  import { asTimePayload, TimeSchema } from "@xyo-network/xl1-protocol";
955
1058
  async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
956
1059
  const blockHash = await hashFromBlockNumber(context, xl1BlockNumber);
@@ -958,12 +1061,12 @@ async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
958
1061
  const timePayload = asTimePayload(hydratedBlock[1].find((p) => p.schema === TimeSchema), {
959
1062
  required: true
960
1063
  });
961
- return assertEx6(timePayload.ethereum, () => "No ethereum timestamp found on block");
1064
+ return assertEx7(timePayload.ethereum, () => "No ethereum timestamp found on block");
962
1065
  }
963
1066
  __name(xl1BlockNumberToEthBlockNumber, "xl1BlockNumberToEthBlockNumber");
964
1067
 
965
1068
  // src/transaction/buildTransaction.ts
966
- import { assertEx as assertEx7 } from "@xylabs/assert";
1069
+ import { assertEx as assertEx8 } from "@xylabs/assert";
967
1070
  import { toHex as toHex2 } from "@xylabs/hex";
968
1071
  import { BoundWitnessBuilder } from "@xyo-network/boundwitness-builder";
969
1072
  import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
@@ -990,7 +1093,7 @@ async function buildTransaction(chain, onChainPayloads, offChainPayloads, signer
990
1093
  }
991
1094
  const fields = {
992
1095
  ...txBoundWitnessFields,
993
- from: from ?? (Array.isArray(signer) ? assertEx7(signer.at(0)?.address) : signer.address)
1096
+ from: from ?? (Array.isArray(signer) ? assertEx8(signer.at(0)?.address) : signer.address)
994
1097
  };
995
1098
  if (script.length > 0) {
996
1099
  fields.script = script;
@@ -1054,7 +1157,7 @@ __name(buildUnsignedTransaction, "buildUnsignedTransaction");
1054
1157
 
1055
1158
  // src/transaction/confirmSubmittedTransaction.ts
1056
1159
  import { delay } from "@xylabs/delay";
1057
- import { isDefined as isDefined5 } from "@xylabs/typeof";
1160
+ import { isDefined as isDefined6 } from "@xylabs/typeof";
1058
1161
  import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/payload-builder";
1059
1162
  var DEFAULT_CONFIRMATION_ATTEMPTS = 20;
1060
1163
  var DEFAULT_DELAY_BETWEEN_ATTEMPTS = 1e3;
@@ -1065,7 +1168,7 @@ var confirmSubmittedTransaction = /* @__PURE__ */ __name(async (viewer, transact
1065
1168
  let attempts = 0;
1066
1169
  while (true) {
1067
1170
  const tx = await viewer.transactionByHash(txBWHash) ?? void 0;
1068
- if (isDefined5(tx)) {
1171
+ if (isDefined6(tx)) {
1069
1172
  options?.logger?.log("\u2705 Transaction confirmed:", txBWHash, "\n");
1070
1173
  return tx;
1071
1174
  } else {
@@ -1082,9 +1185,9 @@ var confirmSubmittedTransaction = /* @__PURE__ */ __name(async (viewer, transact
1082
1185
  }, "confirmSubmittedTransaction");
1083
1186
 
1084
1187
  // src/transaction/hydrateTransaction.ts
1085
- import { assertEx as assertEx8 } from "@xylabs/assert";
1188
+ import { assertEx as assertEx9 } from "@xylabs/assert";
1086
1189
  import { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from "@xyo-network/archivist-model";
1087
- import { isAllowedBlockPayload, isSignedTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
1190
+ import { isAllowedBlockPayload as isAllowedBlockPayload2, isSignedTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
1088
1191
  var tryHydrateTransaction = /* @__PURE__ */ __name(async ({ chainMap }, hash) => {
1089
1192
  return await tryHydrateTypedBoundWitness({
1090
1193
  get(hashes) {
@@ -1122,26 +1225,26 @@ var tryHydrateElevatedTransaction = /* @__PURE__ */ __name(async ({ chainMap },
1122
1225
  }
1123
1226
  const [transaction, payloads] = hydratedTransaction;
1124
1227
  const opCodes = (transaction.script ?? []).filter((operation) => operation.startsWith("elevate|"));
1125
- const elevatedPayloads = [];
1228
+ const elevatedPayloads2 = [];
1126
1229
  for (const opCode of opCodes) {
1127
1230
  const [code, hash2] = opCode.split("|");
1128
1231
  if (code === "elevated") {
1129
1232
  const elevatedPayload = payloads.find((payload) => payload._hash === hash2);
1130
- if (isAllowedBlockPayload(elevatedPayload)) {
1131
- elevatedPayloads.push(elevatedPayload);
1233
+ if (isAllowedBlockPayload2(elevatedPayload)) {
1234
+ elevatedPayloads2.push(elevatedPayload);
1132
1235
  }
1133
1236
  }
1134
1237
  }
1135
- if (opCodes.length === elevatedPayloads.length) {
1238
+ if (opCodes.length === elevatedPayloads2.length) {
1136
1239
  return [
1137
1240
  transaction,
1138
- elevatedPayloads
1241
+ elevatedPayloads2
1139
1242
  ];
1140
1243
  }
1141
1244
  return void 0;
1142
1245
  }, "tryHydrateElevatedTransaction");
1143
1246
  var hydrateElevatedTransaction = /* @__PURE__ */ __name(async (context, hash) => {
1144
- return assertEx8(await tryHydrateElevatedTransaction(context, hash), () => "Hydration failed");
1247
+ return assertEx9(await tryHydrateElevatedTransaction(context, hash), () => "Hydration failed");
1145
1248
  }, "hydrateElevatedTransaction");
1146
1249
 
1147
1250
  // src/transaction/primitives/transactionBlockByteCount.ts
@@ -1182,8 +1285,8 @@ function transactionElevatedPayloadHashes(transaction) {
1182
1285
  __name(transactionElevatedPayloadHashes, "transactionElevatedPayloadHashes");
1183
1286
  function transactionElevatedPayloads([transaction, payloads]) {
1184
1287
  const hashes = transactionElevatedPayloadHashes(transaction);
1185
- const elevatedPayloads = payloads.filter((payload) => hashes.includes(payload._hash));
1186
- return elevatedPayloads;
1288
+ const elevatedPayloads2 = payloads.filter((payload) => hashes.includes(payload._hash));
1289
+ return elevatedPayloads2;
1187
1290
  }
1188
1291
  __name(transactionElevatedPayloads, "transactionElevatedPayloads");
1189
1292
 
@@ -1198,16 +1301,16 @@ function transactionBytesRequiredGas([transaction, payloads]) {
1198
1301
  }
1199
1302
  __name(transactionBytesRequiredGas, "transactionBytesRequiredGas");
1200
1303
  function transactionRequiredGas(hydratedTransaction) {
1201
- const elevatedPayloads = transactionElevatedPayloads(hydratedTransaction);
1202
- const hashes = elevatedPayloads.length + 1;
1304
+ const elevatedPayloads2 = transactionElevatedPayloads(hydratedTransaction);
1305
+ const hashes = elevatedPayloads2.length + 1;
1203
1306
  const signatures = hydratedTransaction[0].addresses.length;
1204
- return AttoXL1(transactionBytesRequiredGas(hydratedTransaction) + TransactionGasCosts.hashValidation * BigInt(hashes) + TransactionGasCosts.signatureValidation * BigInt(signatures) + TransactionGasCosts.payloadValidation * BigInt(elevatedPayloads.length));
1307
+ return AttoXL1(transactionBytesRequiredGas(hydratedTransaction) + TransactionGasCosts.hashValidation * BigInt(hashes) + TransactionGasCosts.signatureValidation * BigInt(signatures) + TransactionGasCosts.payloadValidation * BigInt(elevatedPayloads2.length));
1205
1308
  }
1206
1309
  __name(transactionRequiredGas, "transactionRequiredGas");
1207
1310
 
1208
1311
  // src/transaction/script.ts
1209
1312
  import { filterAs as filterAs2 } from "@xylabs/array";
1210
- import { assertEx as assertEx9 } from "@xylabs/assert";
1313
+ import { assertEx as assertEx10 } from "@xylabs/assert";
1211
1314
  import { asHash as asHash3 } from "@xylabs/hex";
1212
1315
  import { isAllowedBlockPayloadWithHashStorageMeta } from "@xyo-network/xl1-protocol";
1213
1316
  var tryExtractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
@@ -1217,7 +1320,7 @@ var tryExtractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
1217
1320
  var extractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
1218
1321
  const hashes = strings.filter((str) => str.startsWith("elevate|")).map((str) => str.split("|")[1]);
1219
1322
  const filtered = filterAs2(hashes, (h) => asHash3(h));
1220
- assertEx9(filtered.length === hashes.length, () => "Invalid elevated hashes");
1323
+ assertEx10(filtered.length === hashes.length, () => "Invalid elevated hashes");
1221
1324
  return filtered;
1222
1325
  }, "extractElevatedHashesFromScript");
1223
1326
  var tryExtractElevatedHashes = /* @__PURE__ */ __name((tx) => {
@@ -1231,17 +1334,17 @@ var extractElevatedHashes = /* @__PURE__ */ __name((tx) => {
1231
1334
  const { script } = bw;
1232
1335
  const hashes = script ? tryExtractElevatedHashesFromScript(script) : [];
1233
1336
  const filtered = payloads.filter((p) => hashes.includes(p._hash)).filter(isAllowedBlockPayloadWithHashStorageMeta);
1234
- assertEx9(filtered.length === hashes.length, () => "Invalid elevated hashes");
1337
+ assertEx10(filtered.length === hashes.length, () => "Invalid elevated hashes");
1235
1338
  return filtered;
1236
1339
  }, "extractElevatedHashes");
1237
1340
 
1238
1341
  // src/transaction/signTransaction.ts
1239
1342
  import { toArrayBuffer } from "@xylabs/arraybuffer";
1240
- import { assertEx as assertEx10 } from "@xylabs/assert";
1343
+ import { assertEx as assertEx11 } from "@xylabs/assert";
1241
1344
  import { hexFromArrayBuffer } from "@xylabs/hex";
1242
1345
  import { PayloadBuilder as PayloadBuilder7 } from "@xyo-network/payload-builder";
1243
1346
  async function signTransaction(tx, account) {
1244
- assertEx10(tx.from === account.address, () => "Signer address does not match transaction from address");
1347
+ assertEx11(tx.from === account.address, () => "Signer address does not match transaction from address");
1245
1348
  const signedTx = structuredClone(tx);
1246
1349
  signedTx.addresses = [
1247
1350
  account.address
@@ -1289,6 +1392,7 @@ var generateXyoBaseWalletFromPhrase = /* @__PURE__ */ __name((walletPhrase) => {
1289
1392
  export {
1290
1393
  ACCOUNT_TYPE,
1291
1394
  ADDRESS_INDEX,
1395
+ AddressPairSchema,
1292
1396
  BalancesStepSummarySchema,
1293
1397
  CHANGE_ADDRESS,
1294
1398
  COIN_TYPES,
@@ -1311,8 +1415,10 @@ export {
1311
1415
  XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_REWARDS,
1312
1416
  Xl1CommonConfigSchema,
1313
1417
  allHashesPresent,
1418
+ asAddressPairPayload,
1314
1419
  asBalancesStepSummary,
1315
1420
  asBalancesStepSummaryWithStorageMeta,
1421
+ asOptionalAddressPairPayload,
1316
1422
  asTransfersStepSummary,
1317
1423
  asTransfersStepSummaryWithStorageMeta,
1318
1424
  balancesStepSummaryFromRange,
@@ -1322,10 +1428,13 @@ export {
1322
1428
  buildTransaction,
1323
1429
  buildUnsignedTransaction,
1324
1430
  calculateFramesFromRange,
1431
+ completedStepRewardAddress,
1325
1432
  confirmSubmittedTransaction,
1326
1433
  crackOperation,
1327
1434
  crackOperations,
1328
1435
  deepCalculateFramesFromRange,
1436
+ derivedReceiveAddress,
1437
+ elevatedPayloads,
1329
1438
  extractElevatedHashes,
1330
1439
  extractElevatedHashesFromScript,
1331
1440
  flattenHydratedBlock,
@@ -1340,6 +1449,7 @@ export {
1340
1449
  hydrateBlock,
1341
1450
  hydrateElevatedTransaction,
1342
1451
  hydrateTransaction,
1452
+ isAddressPairPayload,
1343
1453
  isBalancesStepSummary,
1344
1454
  isBalancesStepSummaryWithStorageMeta,
1345
1455
  isLocalhost,
@@ -1354,6 +1464,8 @@ export {
1354
1464
  parseSignedBigInt,
1355
1465
  readPayloadMapFromStore,
1356
1466
  signTransaction,
1467
+ stepBlockRange,
1468
+ stepTransferIndex,
1357
1469
  toPositiveBigInt,
1358
1470
  toSignedBigInt,
1359
1471
  transactionBlockByteCount,