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

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 (39) hide show
  1. package/dist/neutral/config/Config.d.ts +9 -0
  2. package/dist/neutral/config/Config.d.ts.map +1 -1
  3. package/dist/neutral/config/Validation.d.ts +9 -0
  4. package/dist/neutral/config/Validation.d.ts.map +1 -1
  5. package/dist/neutral/index.d.ts +2 -0
  6. package/dist/neutral/index.d.ts.map +1 -1
  7. package/dist/neutral/index.mjs +121 -27
  8. package/dist/neutral/index.mjs.map +1 -1
  9. package/dist/neutral/primitives/index.d.ts +3 -0
  10. package/dist/neutral/primitives/index.d.ts.map +1 -0
  11. package/dist/neutral/primitives/step/completedStepRewardAddress.d.ts +4 -0
  12. package/dist/neutral/primitives/step/completedStepRewardAddress.d.ts.map +1 -0
  13. package/dist/neutral/primitives/step/derivedReceiveAddress.d.ts +3 -0
  14. package/dist/neutral/primitives/step/derivedReceiveAddress.d.ts.map +1 -0
  15. package/dist/neutral/primitives/step/index.d.ts +5 -0
  16. package/dist/neutral/primitives/step/index.d.ts.map +1 -0
  17. package/dist/neutral/primitives/step/spec/stepTransferIndex.spec.d.ts +2 -0
  18. package/dist/neutral/primitives/step/spec/stepTransferIndex.spec.d.ts.map +1 -0
  19. package/dist/neutral/primitives/step/stepBlockRange.d.ts +3 -0
  20. package/dist/neutral/primitives/step/stepBlockRange.d.ts.map +1 -0
  21. package/dist/neutral/primitives/step/stepTransferIndex.d.ts +2 -0
  22. package/dist/neutral/primitives/step/stepTransferIndex.d.ts.map +1 -0
  23. package/dist/neutral/primitives/transaction/elevatedPayloads.d.ts +4 -0
  24. package/dist/neutral/primitives/transaction/elevatedPayloads.d.ts.map +1 -0
  25. package/dist/neutral/primitives/transaction/index.d.ts +2 -0
  26. package/dist/neutral/primitives/transaction/index.d.ts.map +1 -0
  27. package/package.json +2 -1
  28. package/src/config/RewardRedemptionApi.ts +3 -3
  29. package/src/config/Validation.ts +10 -1
  30. package/src/index.ts +2 -0
  31. package/src/primitives/index.ts +2 -0
  32. package/src/primitives/step/completedStepRewardAddress.ts +8 -0
  33. package/src/primitives/step/derivedReceiveAddress.ts +8 -0
  34. package/src/primitives/step/index.ts +4 -0
  35. package/src/primitives/step/spec/stepTransferIndex.spec.ts +23 -0
  36. package/src/primitives/step/stepBlockRange.ts +8 -0
  37. package/src/primitives/step/stepTransferIndex.ts +18 -0
  38. package/src/primitives/transaction/elevatedPayloads.ts +21 -0
  39. package/src/primitives/transaction/index.ts +1 -0
@@ -85,6 +85,15 @@ export declare const ConfigZod: z.ZodObject<{
85
85
  }>, {
86
86
  readonly __address: true;
87
87
  }>, unknown>>>>>;
88
+ allowedRewardEscrowAccountSigners: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodArray<z.ZodType<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
89
+ readonly __hex: true;
90
+ }>, {
91
+ readonly __address: true;
92
+ }>, unknown, z.core.$ZodTypeInternals<import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
93
+ readonly __hex: true;
94
+ }>, {
95
+ readonly __address: true;
96
+ }>, unknown>>>>>;
88
97
  }, z.core.$strip>>;
89
98
  logLevel: z.ZodDefault<z.ZodEnum<{
90
99
  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"}
@@ -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"}
@@ -772,18 +772,18 @@ var RewardRedemptionApiConfigZod = z9.object({
772
772
  host: z9.string().default("localhost").register(globalRegistry8, {
773
773
  default: "localhost",
774
774
  description: "Host for the Redemption API",
775
- title: "redemption.host",
775
+ title: "rewardRedemptionApi.host",
776
776
  type: "string"
777
777
  }),
778
778
  mnemonic: MnemonicStringZod.optional().register(globalRegistry8, {
779
779
  description: "Mnemonic for the Redemption API wallet",
780
- title: "redemption.mnemonic",
780
+ title: "rewardRedemptionApi.mnemonic",
781
781
  type: "string"
782
782
  }),
783
783
  port: z9.coerce.number().default(8082).register(globalRegistry8, {
784
784
  default: 8082,
785
785
  description: "Port for the Redemption API",
786
- title: "redemption.port",
786
+ title: "rewardRedemptionApi.port",
787
787
  type: "number"
788
788
  })
789
789
  });
@@ -867,6 +867,16 @@ var ValidationConfigZod = z13.object({
867
867
  description: "List of allowed reward redeemer addresses, if undefined anyone can participate",
868
868
  title: "allowedRewardRedeemers",
869
869
  type: "array"
870
+ })),
871
+ allowedRewardEscrowAccountSigners: z13.preprocess((val) => {
872
+ if (typeof val === "string") {
873
+ return val.split(",").map((s) => asAddress4(s.trim()));
874
+ }
875
+ return val;
876
+ }, z13.array(AddressZod2).optional().register(globalRegistry12, {
877
+ description: "List of allowed reward escrow account signer addresses, if undefined anyone can participate",
878
+ title: "allowedRewardEscrowAccountSigners",
879
+ type: "array"
870
880
  }))
871
881
  });
872
882
 
@@ -949,8 +959,87 @@ var RewardMultipliers = {
949
959
  ]
950
960
  };
951
961
 
952
- // src/time/primitives/xl1BlockNumberToEthBlockNumber.ts
962
+ // src/primitives/step/completedStepRewardAddress.ts
963
+ import { toAddress as toAddress2 } from "@xylabs/hex";
964
+ import { keccak256 } from "ethers";
965
+ function completedStepRewardAddress({ block, step }) {
966
+ const addressKey = new TextEncoder().encode(`${block}|${step}`);
967
+ return toAddress2(keccak256(addressKey).slice(-40), {
968
+ prefix: false
969
+ });
970
+ }
971
+ __name(completedStepRewardAddress, "completedStepRewardAddress");
972
+
973
+ // src/primitives/step/derivedReceiveAddress.ts
974
+ import { toAddress as toAddress3 } from "@xylabs/hex";
975
+ import { isDefined as isDefined5 } from "@xylabs/typeof";
976
+ import { keccak256 as keccak2562 } from "ethers";
977
+ function derivedReceiveAddress(address, scope) {
978
+ const addressKey = new TextEncoder().encode(isDefined5(scope) ? `${scope}|${address}` : address);
979
+ return toAddress3(keccak2562(addressKey).slice(-40), {
980
+ prefix: false
981
+ });
982
+ }
983
+ __name(derivedReceiveAddress, "derivedReceiveAddress");
984
+
985
+ // src/primitives/step/stepBlockRange.ts
986
+ import { asXL1BlockRange, StepSizes as StepSizes5 } from "@xyo-network/xl1-protocol";
987
+ function stepBlockRange({ block, step }) {
988
+ const stepSize2 = StepSizes5[step];
989
+ const start = block - stepSize2;
990
+ return asXL1BlockRange([
991
+ start,
992
+ start + stepSize2 - 1
993
+ ]);
994
+ }
995
+ __name(stepBlockRange, "stepBlockRange");
996
+
997
+ // src/primitives/step/stepTransferIndex.ts
953
998
  import { assertEx as assertEx6 } from "@xylabs/assert";
999
+ import { StepSizes as StepSizes6 } from "@xyo-network/xl1-protocol";
1000
+ function stepTransferIndex(block, step) {
1001
+ let rewardTransferCount = 0;
1002
+ let rewardTransferIndex = -1;
1003
+ for (let i = 3; i < StepSizes6.length; i++) {
1004
+ const stepSize2 = StepSizes6[i];
1005
+ if (block % stepSize2 === 0) {
1006
+ if (stepSize2 === StepSizes6[step]) {
1007
+ rewardTransferIndex = rewardTransferCount;
1008
+ }
1009
+ rewardTransferCount++;
1010
+ }
1011
+ }
1012
+ assertEx6(rewardTransferIndex >= 0, () => `Error: Could not find step size for step ${step} at block ${block}`);
1013
+ return [
1014
+ rewardTransferIndex,
1015
+ rewardTransferCount
1016
+ ];
1017
+ }
1018
+ __name(stepTransferIndex, "stepTransferIndex");
1019
+
1020
+ // src/primitives/transaction/elevatedPayloads.ts
1021
+ import { isAllowedBlockPayload } from "@xyo-network/xl1-protocol";
1022
+ function elevatedPayloads([tx, payloads]) {
1023
+ const opCodes = (tx.script ?? []).filter((operation) => operation.startsWith("elevate|"));
1024
+ const elevatedPayloads2 = [];
1025
+ for (const opCode of opCodes) {
1026
+ const [code, hash] = opCode.split("|");
1027
+ if (code === "elevated") {
1028
+ const elevatedPayload = payloads.find((payload) => payload._hash === hash);
1029
+ if (isAllowedBlockPayload(elevatedPayload)) {
1030
+ elevatedPayloads2.push(elevatedPayload);
1031
+ }
1032
+ }
1033
+ }
1034
+ if (opCodes.length === elevatedPayloads2.length) {
1035
+ return elevatedPayloads2;
1036
+ }
1037
+ throw new Error("Not all elevated payloads could be found in the transaction payloads");
1038
+ }
1039
+ __name(elevatedPayloads, "elevatedPayloads");
1040
+
1041
+ // src/time/primitives/xl1BlockNumberToEthBlockNumber.ts
1042
+ import { assertEx as assertEx7 } from "@xylabs/assert";
954
1043
  import { asTimePayload, TimeSchema } from "@xyo-network/xl1-protocol";
955
1044
  async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
956
1045
  const blockHash = await hashFromBlockNumber(context, xl1BlockNumber);
@@ -958,12 +1047,12 @@ async function xl1BlockNumberToEthBlockNumber(context, xl1BlockNumber) {
958
1047
  const timePayload = asTimePayload(hydratedBlock[1].find((p) => p.schema === TimeSchema), {
959
1048
  required: true
960
1049
  });
961
- return assertEx6(timePayload.ethereum, () => "No ethereum timestamp found on block");
1050
+ return assertEx7(timePayload.ethereum, () => "No ethereum timestamp found on block");
962
1051
  }
963
1052
  __name(xl1BlockNumberToEthBlockNumber, "xl1BlockNumberToEthBlockNumber");
964
1053
 
965
1054
  // src/transaction/buildTransaction.ts
966
- import { assertEx as assertEx7 } from "@xylabs/assert";
1055
+ import { assertEx as assertEx8 } from "@xylabs/assert";
967
1056
  import { toHex as toHex2 } from "@xylabs/hex";
968
1057
  import { BoundWitnessBuilder } from "@xyo-network/boundwitness-builder";
969
1058
  import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
@@ -990,7 +1079,7 @@ async function buildTransaction(chain, onChainPayloads, offChainPayloads, signer
990
1079
  }
991
1080
  const fields = {
992
1081
  ...txBoundWitnessFields,
993
- from: from ?? (Array.isArray(signer) ? assertEx7(signer.at(0)?.address) : signer.address)
1082
+ from: from ?? (Array.isArray(signer) ? assertEx8(signer.at(0)?.address) : signer.address)
994
1083
  };
995
1084
  if (script.length > 0) {
996
1085
  fields.script = script;
@@ -1054,7 +1143,7 @@ __name(buildUnsignedTransaction, "buildUnsignedTransaction");
1054
1143
 
1055
1144
  // src/transaction/confirmSubmittedTransaction.ts
1056
1145
  import { delay } from "@xylabs/delay";
1057
- import { isDefined as isDefined5 } from "@xylabs/typeof";
1146
+ import { isDefined as isDefined6 } from "@xylabs/typeof";
1058
1147
  import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/payload-builder";
1059
1148
  var DEFAULT_CONFIRMATION_ATTEMPTS = 20;
1060
1149
  var DEFAULT_DELAY_BETWEEN_ATTEMPTS = 1e3;
@@ -1065,7 +1154,7 @@ var confirmSubmittedTransaction = /* @__PURE__ */ __name(async (viewer, transact
1065
1154
  let attempts = 0;
1066
1155
  while (true) {
1067
1156
  const tx = await viewer.transactionByHash(txBWHash) ?? void 0;
1068
- if (isDefined5(tx)) {
1157
+ if (isDefined6(tx)) {
1069
1158
  options?.logger?.log("\u2705 Transaction confirmed:", txBWHash, "\n");
1070
1159
  return tx;
1071
1160
  } else {
@@ -1082,9 +1171,9 @@ var confirmSubmittedTransaction = /* @__PURE__ */ __name(async (viewer, transact
1082
1171
  }, "confirmSubmittedTransaction");
1083
1172
 
1084
1173
  // src/transaction/hydrateTransaction.ts
1085
- import { assertEx as assertEx8 } from "@xylabs/assert";
1174
+ import { assertEx as assertEx9 } from "@xylabs/assert";
1086
1175
  import { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from "@xyo-network/archivist-model";
1087
- import { isAllowedBlockPayload, isSignedTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
1176
+ import { isAllowedBlockPayload as isAllowedBlockPayload2, isSignedTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
1088
1177
  var tryHydrateTransaction = /* @__PURE__ */ __name(async ({ chainMap }, hash) => {
1089
1178
  return await tryHydrateTypedBoundWitness({
1090
1179
  get(hashes) {
@@ -1122,26 +1211,26 @@ var tryHydrateElevatedTransaction = /* @__PURE__ */ __name(async ({ chainMap },
1122
1211
  }
1123
1212
  const [transaction, payloads] = hydratedTransaction;
1124
1213
  const opCodes = (transaction.script ?? []).filter((operation) => operation.startsWith("elevate|"));
1125
- const elevatedPayloads = [];
1214
+ const elevatedPayloads2 = [];
1126
1215
  for (const opCode of opCodes) {
1127
1216
  const [code, hash2] = opCode.split("|");
1128
1217
  if (code === "elevated") {
1129
1218
  const elevatedPayload = payloads.find((payload) => payload._hash === hash2);
1130
- if (isAllowedBlockPayload(elevatedPayload)) {
1131
- elevatedPayloads.push(elevatedPayload);
1219
+ if (isAllowedBlockPayload2(elevatedPayload)) {
1220
+ elevatedPayloads2.push(elevatedPayload);
1132
1221
  }
1133
1222
  }
1134
1223
  }
1135
- if (opCodes.length === elevatedPayloads.length) {
1224
+ if (opCodes.length === elevatedPayloads2.length) {
1136
1225
  return [
1137
1226
  transaction,
1138
- elevatedPayloads
1227
+ elevatedPayloads2
1139
1228
  ];
1140
1229
  }
1141
1230
  return void 0;
1142
1231
  }, "tryHydrateElevatedTransaction");
1143
1232
  var hydrateElevatedTransaction = /* @__PURE__ */ __name(async (context, hash) => {
1144
- return assertEx8(await tryHydrateElevatedTransaction(context, hash), () => "Hydration failed");
1233
+ return assertEx9(await tryHydrateElevatedTransaction(context, hash), () => "Hydration failed");
1145
1234
  }, "hydrateElevatedTransaction");
1146
1235
 
1147
1236
  // src/transaction/primitives/transactionBlockByteCount.ts
@@ -1182,8 +1271,8 @@ function transactionElevatedPayloadHashes(transaction) {
1182
1271
  __name(transactionElevatedPayloadHashes, "transactionElevatedPayloadHashes");
1183
1272
  function transactionElevatedPayloads([transaction, payloads]) {
1184
1273
  const hashes = transactionElevatedPayloadHashes(transaction);
1185
- const elevatedPayloads = payloads.filter((payload) => hashes.includes(payload._hash));
1186
- return elevatedPayloads;
1274
+ const elevatedPayloads2 = payloads.filter((payload) => hashes.includes(payload._hash));
1275
+ return elevatedPayloads2;
1187
1276
  }
1188
1277
  __name(transactionElevatedPayloads, "transactionElevatedPayloads");
1189
1278
 
@@ -1198,16 +1287,16 @@ function transactionBytesRequiredGas([transaction, payloads]) {
1198
1287
  }
1199
1288
  __name(transactionBytesRequiredGas, "transactionBytesRequiredGas");
1200
1289
  function transactionRequiredGas(hydratedTransaction) {
1201
- const elevatedPayloads = transactionElevatedPayloads(hydratedTransaction);
1202
- const hashes = elevatedPayloads.length + 1;
1290
+ const elevatedPayloads2 = transactionElevatedPayloads(hydratedTransaction);
1291
+ const hashes = elevatedPayloads2.length + 1;
1203
1292
  const signatures = hydratedTransaction[0].addresses.length;
1204
- return AttoXL1(transactionBytesRequiredGas(hydratedTransaction) + TransactionGasCosts.hashValidation * BigInt(hashes) + TransactionGasCosts.signatureValidation * BigInt(signatures) + TransactionGasCosts.payloadValidation * BigInt(elevatedPayloads.length));
1293
+ return AttoXL1(transactionBytesRequiredGas(hydratedTransaction) + TransactionGasCosts.hashValidation * BigInt(hashes) + TransactionGasCosts.signatureValidation * BigInt(signatures) + TransactionGasCosts.payloadValidation * BigInt(elevatedPayloads2.length));
1205
1294
  }
1206
1295
  __name(transactionRequiredGas, "transactionRequiredGas");
1207
1296
 
1208
1297
  // src/transaction/script.ts
1209
1298
  import { filterAs as filterAs2 } from "@xylabs/array";
1210
- import { assertEx as assertEx9 } from "@xylabs/assert";
1299
+ import { assertEx as assertEx10 } from "@xylabs/assert";
1211
1300
  import { asHash as asHash3 } from "@xylabs/hex";
1212
1301
  import { isAllowedBlockPayloadWithHashStorageMeta } from "@xyo-network/xl1-protocol";
1213
1302
  var tryExtractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
@@ -1217,7 +1306,7 @@ var tryExtractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
1217
1306
  var extractElevatedHashesFromScript = /* @__PURE__ */ __name((strings) => {
1218
1307
  const hashes = strings.filter((str) => str.startsWith("elevate|")).map((str) => str.split("|")[1]);
1219
1308
  const filtered = filterAs2(hashes, (h) => asHash3(h));
1220
- assertEx9(filtered.length === hashes.length, () => "Invalid elevated hashes");
1309
+ assertEx10(filtered.length === hashes.length, () => "Invalid elevated hashes");
1221
1310
  return filtered;
1222
1311
  }, "extractElevatedHashesFromScript");
1223
1312
  var tryExtractElevatedHashes = /* @__PURE__ */ __name((tx) => {
@@ -1231,17 +1320,17 @@ var extractElevatedHashes = /* @__PURE__ */ __name((tx) => {
1231
1320
  const { script } = bw;
1232
1321
  const hashes = script ? tryExtractElevatedHashesFromScript(script) : [];
1233
1322
  const filtered = payloads.filter((p) => hashes.includes(p._hash)).filter(isAllowedBlockPayloadWithHashStorageMeta);
1234
- assertEx9(filtered.length === hashes.length, () => "Invalid elevated hashes");
1323
+ assertEx10(filtered.length === hashes.length, () => "Invalid elevated hashes");
1235
1324
  return filtered;
1236
1325
  }, "extractElevatedHashes");
1237
1326
 
1238
1327
  // src/transaction/signTransaction.ts
1239
1328
  import { toArrayBuffer } from "@xylabs/arraybuffer";
1240
- import { assertEx as assertEx10 } from "@xylabs/assert";
1329
+ import { assertEx as assertEx11 } from "@xylabs/assert";
1241
1330
  import { hexFromArrayBuffer } from "@xylabs/hex";
1242
1331
  import { PayloadBuilder as PayloadBuilder7 } from "@xyo-network/payload-builder";
1243
1332
  async function signTransaction(tx, account) {
1244
- assertEx10(tx.from === account.address, () => "Signer address does not match transaction from address");
1333
+ assertEx11(tx.from === account.address, () => "Signer address does not match transaction from address");
1245
1334
  const signedTx = structuredClone(tx);
1246
1335
  signedTx.addresses = [
1247
1336
  account.address
@@ -1322,10 +1411,13 @@ export {
1322
1411
  buildTransaction,
1323
1412
  buildUnsignedTransaction,
1324
1413
  calculateFramesFromRange,
1414
+ completedStepRewardAddress,
1325
1415
  confirmSubmittedTransaction,
1326
1416
  crackOperation,
1327
1417
  crackOperations,
1328
1418
  deepCalculateFramesFromRange,
1419
+ derivedReceiveAddress,
1420
+ elevatedPayloads,
1329
1421
  extractElevatedHashes,
1330
1422
  extractElevatedHashesFromScript,
1331
1423
  flattenHydratedBlock,
@@ -1354,6 +1446,8 @@ export {
1354
1446
  parseSignedBigInt,
1355
1447
  readPayloadMapFromStore,
1356
1448
  signTransaction,
1449
+ stepBlockRange,
1450
+ stepTransferIndex,
1357
1451
  toPositiveBigInt,
1358
1452
  toSignedBigInt,
1359
1453
  transactionBlockByteCount,