@glowlabs-org/utils 0.2.50 → 0.2.52

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.
@@ -11941,12 +11941,12 @@ var z = /*#__PURE__*/Object.freeze({
11941
11941
  xid: xid
11942
11942
  });
11943
11943
 
11944
- const stakeControlEIP712Domain = {
11944
+ const stakeControlEIP712Domain = (chainId) => ({
11945
11945
  name: "ControlManager",
11946
11946
  version: "1",
11947
- chainId: Number(process.env.CHAIN_ID) || 1,
11947
+ chainId,
11948
11948
  verifyingContract: "0x0000000000000000000000000000000000000000",
11949
- };
11949
+ });
11950
11950
  // Distinct EIP-712 type sets for stake vs unstake
11951
11951
  const stakeEIP712Types = {
11952
11952
  Stake: [
@@ -11983,6 +11983,14 @@ const restakeEIP712Types = {
11983
11983
  { name: "deadline", type: "uint256" },
11984
11984
  ],
11985
11985
  };
11986
+ const commitKickstarterEIP712Types = {
11987
+ CommitKickstarter: [
11988
+ { name: "nonce", type: "uint256" },
11989
+ { name: "amount", type: "uint256" },
11990
+ { name: "kickstarterId", type: "string" },
11991
+ { name: "deadline", type: "uint256" },
11992
+ ],
11993
+ };
11986
11994
  // Separate request schemas for clarity between stake and unstake
11987
11995
  const stakeSignatureRequestSchema = z.object({
11988
11996
  wallet: z.string().regex(/^0x[a-fA-F0-9]{40}$/),
@@ -12018,6 +12026,14 @@ const restakeSignatureRequestSchema = z.object({
12018
12026
  toZoneId: z.string(),
12019
12027
  deadline: z.string(),
12020
12028
  });
12029
+ const commitKickstarterSignatureRequestSchema = z.object({
12030
+ wallet: z.string().regex(/^0x[a-fA-F0-9]{40}$/),
12031
+ signature: z.string().regex(/^0x[a-fA-F0-9]{130}$/),
12032
+ nonce: z.string(),
12033
+ amount: z.string(),
12034
+ kickstarterId: z.string(),
12035
+ deadline: z.string(),
12036
+ });
12021
12037
  function isDeadlineExpired(deadline) {
12022
12038
  const nowSeconds = BigInt(Math.floor(Date.now() / 1000));
12023
12039
  return deadline < nowSeconds;
@@ -12084,8 +12100,23 @@ function buildRestakeMessage(req) {
12084
12100
  throw new Error("Zone must be non-negative");
12085
12101
  return { nonce, amount, fromZoneId, toZoneId, deadline };
12086
12102
  }
12103
+ function buildCommitKickstarterMessage(req) {
12104
+ const nonce = BigInt(req.nonce);
12105
+ const amount = BigInt(req.amount);
12106
+ const deadline = BigInt(req.deadline);
12107
+ const kickstarterId = req.kickstarterId;
12108
+ if (nonce < 0n)
12109
+ throw new Error("Nonce must be non-negative");
12110
+ if (amount < 0n)
12111
+ throw new Error("Amount must be non-negative");
12112
+ if (deadline < 0n)
12113
+ throw new Error("Deadline must be non-negative");
12114
+ if (!kickstarterId)
12115
+ throw new Error("kickstarterId must be non-empty");
12116
+ return { nonce, amount, kickstarterId, deadline };
12117
+ }
12087
12118
  // Helper to validate the signature using viem
12088
- async function validateStakeSignature(input, domain = stakeControlEIP712Domain) {
12119
+ async function validateStakeSignature(input, domain = stakeControlEIP712Domain(1)) {
12089
12120
  const message = buildStakeMessage({
12090
12121
  nonce: input.nonce,
12091
12122
  amount: input.amount,
@@ -12112,7 +12143,7 @@ async function validateStakeSignature(input, domain = stakeControlEIP712Domain)
12112
12143
  return { valid: false, recovered: null, reason: "signature_failed" };
12113
12144
  }
12114
12145
  }
12115
- async function validateUnstakeUnlockSignature(input, domain = stakeControlEIP712Domain) {
12146
+ async function validateUnstakeUnlockSignature(input, domain = stakeControlEIP712Domain(1)) {
12116
12147
  const message = buildUnstakeUnlockMessage({
12117
12148
  nonce: input.nonce,
12118
12149
  amount: input.amount,
@@ -12139,7 +12170,7 @@ async function validateUnstakeUnlockSignature(input, domain = stakeControlEIP712
12139
12170
  return { valid: false, recovered: null, reason: "signature_failed" };
12140
12171
  }
12141
12172
  }
12142
- async function validateUnstakeMoveSignature(input, domain = stakeControlEIP712Domain) {
12173
+ async function validateUnstakeMoveSignature(input, domain = stakeControlEIP712Domain(1)) {
12143
12174
  const message = buildUnstakeMoveMessage({
12144
12175
  nonce: input.nonce,
12145
12176
  amount: input.amount,
@@ -12167,7 +12198,7 @@ async function validateUnstakeMoveSignature(input, domain = stakeControlEIP712Do
12167
12198
  return { valid: false, recovered: null, reason: "signature_failed" };
12168
12199
  }
12169
12200
  }
12170
- async function validateRestakeSignature(input, domain = stakeControlEIP712Domain) {
12201
+ async function validateRestakeSignature(input, domain = stakeControlEIP712Domain(1)) {
12171
12202
  const message = buildRestakeMessage({
12172
12203
  nonce: input.nonce,
12173
12204
  amount: input.amount,
@@ -12195,6 +12226,33 @@ async function validateRestakeSignature(input, domain = stakeControlEIP712Domain
12195
12226
  return { valid: false, recovered: null, reason: "signature_failed" };
12196
12227
  }
12197
12228
  }
12229
+ async function validateCommitKickstarterSignature(input, domain = stakeControlEIP712Domain(1)) {
12230
+ const message = buildCommitKickstarterMessage({
12231
+ nonce: input.nonce,
12232
+ amount: input.amount,
12233
+ kickstarterId: input.kickstarterId,
12234
+ deadline: input.deadline,
12235
+ });
12236
+ if (isDeadlineExpired(message.deadline)) {
12237
+ return { valid: false, recovered: null, reason: "deadline_expired" };
12238
+ }
12239
+ try {
12240
+ const verified = await viem.verifyTypedData({
12241
+ address: input.wallet,
12242
+ domain,
12243
+ types: commitKickstarterEIP712Types,
12244
+ primaryType: "CommitKickstarter",
12245
+ message,
12246
+ signature: input.signature,
12247
+ });
12248
+ return verified
12249
+ ? { valid: true, recovered: input.wallet, reason: null }
12250
+ : { valid: false, recovered: null, reason: "signer_mismatch" };
12251
+ }
12252
+ catch (_) {
12253
+ return { valid: false, recovered: null, reason: "signature_failed" };
12254
+ }
12255
+ }
12198
12256
 
12199
12257
  exports.ControlRouter = regionRouter.ControlRouter;
12200
12258
  exports.DECIMALS_BY_TOKEN = regionRouter.DECIMALS_BY_TOKEN;
@@ -12215,10 +12273,13 @@ exports.getAddresses = regionRouter.getAddresses;
12215
12273
  exports.regionMetadata = regionRouter.regionMetadata;
12216
12274
  exports.usStates = regionRouter.usStates;
12217
12275
  exports.useForwarder = regionRouter.useForwarder;
12276
+ exports.buildCommitKickstarterMessage = buildCommitKickstarterMessage;
12218
12277
  exports.buildRestakeMessage = buildRestakeMessage;
12219
12278
  exports.buildStakeMessage = buildStakeMessage;
12220
12279
  exports.buildUnstakeMoveMessage = buildUnstakeMoveMessage;
12221
12280
  exports.buildUnstakeUnlockMessage = buildUnstakeUnlockMessage;
12281
+ exports.commitKickstarterEIP712Types = commitKickstarterEIP712Types;
12282
+ exports.commitKickstarterSignatureRequestSchema = commitKickstarterSignatureRequestSchema;
12222
12283
  exports.restakeEIP712Types = restakeEIP712Types;
12223
12284
  exports.restakeSignatureRequestSchema = restakeSignatureRequestSchema;
12224
12285
  exports.stakeControlEIP712Domain = stakeControlEIP712Domain;
@@ -12228,6 +12289,7 @@ exports.unstakeMoveEIP712Types = unstakeMoveEIP712Types;
12228
12289
  exports.unstakeMoveSignatureRequestSchema = unstakeMoveSignatureRequestSchema;
12229
12290
  exports.unstakeUnlockEIP712Types = unstakeUnlockEIP712Types;
12230
12291
  exports.unstakeUnlockSignatureRequestSchema = unstakeUnlockSignatureRequestSchema;
12292
+ exports.validateCommitKickstarterSignature = validateCommitKickstarterSignature;
12231
12293
  exports.validateRestakeSignature = validateRestakeSignature;
12232
12294
  exports.validateStakeSignature = validateStakeSignature;
12233
12295
  exports.validateUnstakeMoveSignature = validateUnstakeMoveSignature;