@boostxyz/sdk 8.0.0-canary.3 → 8.0.0-canary.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.
- package/dist/Actions/Action.cjs +1 -1
- package/dist/Actions/Action.js +2 -2
- package/dist/Actions/EventAction.cjs +1 -1
- package/dist/Actions/EventAction.js +45 -45
- package/dist/{AllowList-DQf-8HQC.js → AllowList-CTRuUBCQ.js} +41 -41
- package/dist/{AllowList-DQf-8HQC.js.map → AllowList-CTRuUBCQ.js.map} +1 -1
- package/dist/{AllowList-DaX239DR.cjs → AllowList-GEmUfOR1.cjs} +2 -2
- package/dist/{AllowList-DaX239DR.cjs.map → AllowList-GEmUfOR1.cjs.map} +1 -1
- package/dist/AllowLists/AllowList.cjs +1 -1
- package/dist/AllowLists/AllowList.js +4 -4
- package/dist/AllowLists/SimpleAllowList.cjs +1 -1
- package/dist/AllowLists/SimpleAllowList.js +7 -7
- package/dist/AllowLists/SimpleDenyList.cjs +1 -1
- package/dist/AllowLists/SimpleDenyList.js +3 -3
- package/dist/Auth/PassthroughAuth.cjs +1 -1
- package/dist/Auth/PassthroughAuth.js +2 -2
- package/dist/BoostCore.cjs +2 -2
- package/dist/BoostCore.cjs.map +1 -1
- package/dist/BoostCore.d.ts +137 -2
- package/dist/BoostCore.d.ts.map +1 -1
- package/dist/BoostCore.js +336 -206
- package/dist/BoostCore.js.map +1 -1
- package/dist/BoostRegistry.cjs +1 -1
- package/dist/BoostRegistry.js +21 -21
- package/dist/{Budget-LnAQ_Slw.js → Budget-BH0s7Bxu.js} +52 -52
- package/dist/{Budget-LnAQ_Slw.js.map → Budget-BH0s7Bxu.js.map} +1 -1
- package/dist/{Budget-WIB8IJoM.cjs → Budget-CwNhsa3m.cjs} +2 -2
- package/dist/{Budget-WIB8IJoM.cjs.map → Budget-CwNhsa3m.cjs.map} +1 -1
- package/dist/Budgets/Budget.cjs +1 -1
- package/dist/Budgets/Budget.js +3 -3
- package/dist/Budgets/ManagedBudget.cjs +1 -1
- package/dist/Budgets/ManagedBudget.js +26 -26
- package/dist/Deployable/DeployableTarget.cjs +1 -1
- package/dist/Deployable/DeployableTarget.js +1 -1
- package/dist/Deployable/DeployableTargetWithRBAC.cjs +1 -1
- package/dist/Deployable/DeployableTargetWithRBAC.js +17 -17
- package/dist/{Incentive-gT7z-4v3.cjs → Incentive-B2ZBE5LU.cjs} +2 -2
- package/dist/{Incentive-gT7z-4v3.cjs.map → Incentive-B2ZBE5LU.cjs.map} +1 -1
- package/dist/{Incentive-D_IBex5V.js → Incentive-BCSV7OtF.js} +41 -41
- package/dist/{Incentive-D_IBex5V.js.map → Incentive-BCSV7OtF.js.map} +1 -1
- package/dist/Incentives/AllowListIncentive.cjs +1 -1
- package/dist/Incentives/AllowListIncentive.js +17 -17
- package/dist/Incentives/CGDAIncentive.cjs +1 -1
- package/dist/Incentives/CGDAIncentive.js +14 -14
- package/dist/Incentives/ERC20Incentive.cjs +1 -1
- package/dist/Incentives/ERC20Incentive.js +13 -13
- package/dist/Incentives/ERC20PeggedVariableCriteriaIncentive.cjs +1 -1
- package/dist/Incentives/ERC20PeggedVariableCriteriaIncentive.js +71 -71
- package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.cjs +1 -1
- package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.js +35 -35
- package/dist/Incentives/ERC20VariableCriteriaIncentive.cjs +1 -1
- package/dist/Incentives/ERC20VariableCriteriaIncentive.js +9 -9
- package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.cjs +1 -1
- package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.js +12 -12
- package/dist/Incentives/ERC20VariableIncentive.cjs +1 -1
- package/dist/Incentives/ERC20VariableIncentive.js +8 -8
- package/dist/Incentives/Incentive.cjs +1 -1
- package/dist/Incentives/Incentive.js +3 -3
- package/dist/Incentives/PointsIncentive.cjs +1 -1
- package/dist/Incentives/PointsIncentive.js +28 -28
- package/dist/{SimpleDenyList-D5AoBdVi.cjs → SimpleDenyList-6_sxnZB0.cjs} +2 -2
- package/dist/{SimpleDenyList-D5AoBdVi.cjs.map → SimpleDenyList-6_sxnZB0.cjs.map} +1 -1
- package/dist/{SimpleDenyList-CtdXM49y.js → SimpleDenyList-CrjjFnn5.js} +17 -17
- package/dist/{SimpleDenyList-CtdXM49y.js.map → SimpleDenyList-CrjjFnn5.js.map} +1 -1
- package/dist/Validators/LimitedSignerValidator.cjs +1 -1
- package/dist/Validators/LimitedSignerValidator.cjs.map +1 -1
- package/dist/Validators/LimitedSignerValidator.d.ts +9 -9
- package/dist/Validators/LimitedSignerValidator.d.ts.map +1 -1
- package/dist/Validators/LimitedSignerValidator.js +19 -19
- package/dist/Validators/LimitedSignerValidator.js.map +1 -1
- package/dist/Validators/LimitedSignerValidatorV2.cjs +2 -0
- package/dist/Validators/LimitedSignerValidatorV2.cjs.map +1 -0
- package/dist/Validators/LimitedSignerValidatorV2.d.ts +842 -0
- package/dist/Validators/LimitedSignerValidatorV2.d.ts.map +1 -0
- package/dist/Validators/LimitedSignerValidatorV2.js +301 -0
- package/dist/Validators/LimitedSignerValidatorV2.js.map +1 -0
- package/dist/Validators/PayableLimitedSignerValidator.cjs +2 -0
- package/dist/Validators/PayableLimitedSignerValidator.cjs.map +1 -0
- package/dist/Validators/PayableLimitedSignerValidator.d.ts.map +1 -1
- package/dist/{Validator-BEUqV28V.js → Validators/PayableLimitedSignerValidator.js} +56 -102
- package/dist/Validators/PayableLimitedSignerValidator.js.map +1 -0
- package/dist/Validators/PayableLimitedSignerValidatorV2.cjs +2 -0
- package/dist/Validators/PayableLimitedSignerValidatorV2.cjs.map +1 -0
- package/dist/Validators/PayableLimitedSignerValidatorV2.d.ts +855 -0
- package/dist/Validators/PayableLimitedSignerValidatorV2.d.ts.map +1 -0
- package/dist/Validators/PayableLimitedSignerValidatorV2.js +372 -0
- package/dist/Validators/PayableLimitedSignerValidatorV2.js.map +1 -0
- package/dist/Validators/SignerValidator.cjs +1 -1
- package/dist/Validators/SignerValidator.cjs.map +1 -1
- package/dist/Validators/SignerValidator.d.ts +4 -2
- package/dist/Validators/SignerValidator.d.ts.map +1 -1
- package/dist/Validators/SignerValidator.js +12 -12
- package/dist/Validators/SignerValidator.js.map +1 -1
- package/dist/Validators/SignerValidatorV2.cjs +2 -0
- package/dist/Validators/SignerValidatorV2.cjs.map +1 -0
- package/dist/Validators/SignerValidatorV2.d.ts +728 -0
- package/dist/Validators/SignerValidatorV2.d.ts.map +1 -0
- package/dist/Validators/SignerValidatorV2.js +299 -0
- package/dist/Validators/SignerValidatorV2.js.map +1 -0
- package/dist/Validators/Validator.cjs +1 -1
- package/dist/Validators/Validator.cjs.map +1 -1
- package/dist/Validators/Validator.d.ts +19 -4
- package/dist/Validators/Validator.d.ts.map +1 -1
- package/dist/Validators/Validator.js +79 -14
- package/dist/Validators/Validator.js.map +1 -1
- package/dist/componentInterfaces-43ygGrVO.js +28 -0
- package/dist/componentInterfaces-43ygGrVO.js.map +1 -0
- package/dist/componentInterfaces-JU4NBkEc.cjs +2 -0
- package/dist/componentInterfaces-JU4NBkEc.cjs.map +1 -0
- package/dist/{deployments-Dw5Suk_D.js → deployments-COm00j8v.js} +48 -39
- package/dist/{deployments-Dw5Suk_D.js.map → deployments-COm00j8v.js.map} +1 -1
- package/dist/deployments-uLDgrxCp.cjs +2 -0
- package/dist/deployments-uLDgrxCp.cjs.map +1 -0
- package/dist/deployments.json +30 -21
- package/dist/generated-CkZm1EVH.cjs +3 -0
- package/dist/generated-CkZm1EVH.cjs.map +1 -0
- package/dist/{generated-krkFnwbV.js → generated-DRbljODL.js} +2314 -1284
- package/dist/generated-DRbljODL.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +185 -165
- package/dist/index.js.map +1 -1
- package/package.json +25 -1
- package/src/BoostCore.test.ts +77 -11
- package/src/BoostCore.ts +165 -4
- package/src/Budgets/ManagedBudgetWithFees.test.ts +14 -14
- package/src/Budgets/ManagedBudgetWithFeesV2.test.ts +3 -3
- package/src/Incentives/AllowListIncentive.test.ts +5 -5
- package/src/Incentives/CGDAIncentive.test.ts +6 -6
- package/src/Incentives/ERC1155Incentive.test.ts +2 -2
- package/src/Incentives/ERC20Incentive.test.ts +6 -6
- package/src/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.test.ts +5 -5
- package/src/Incentives/ERC20VariableCriteriaIncentiveV2.test.ts +5 -5
- package/src/Incentives/ERC20VariableIncentive.test.ts +7 -8
- package/src/Incentives/PointsIncentive.test.ts +5 -5
- package/src/Validators/LimitedSignerValidator.test.ts +1 -1
- package/src/Validators/LimitedSignerValidator.ts +9 -10
- package/src/Validators/LimitedSignerValidatorV2.test.ts +231 -0
- package/src/Validators/LimitedSignerValidatorV2.ts +707 -0
- package/src/Validators/PayableLimitedSignerValidator.test.ts +1 -1
- package/src/Validators/PayableLimitedSignerValidator.ts +0 -1
- package/src/Validators/PayableLimitedSignerValidatorV2.test.ts +202 -0
- package/src/Validators/PayableLimitedSignerValidatorV2.ts +688 -0
- package/src/Validators/SignerValidator.ts +4 -2
- package/src/Validators/SignerValidatorV2.test.ts +163 -0
- package/src/Validators/SignerValidatorV2.ts +635 -0
- package/src/Validators/Validator.ts +45 -2
- package/src/index.ts +3 -0
- package/dist/Validator-BEUqV28V.js.map +0 -1
- package/dist/Validator-FxcxYKhR.cjs +0 -2
- package/dist/Validator-FxcxYKhR.cjs.map +0 -1
- package/dist/componentInterfaces-BZ3fSNkT.cjs +0 -2
- package/dist/componentInterfaces-BZ3fSNkT.cjs.map +0 -1
- package/dist/componentInterfaces-D2s6AXlV.js +0 -25
- package/dist/componentInterfaces-D2s6AXlV.js.map +0 -1
- package/dist/deployments-DimWVnA4.cjs +0 -2
- package/dist/deployments-DimWVnA4.cjs.map +0 -1
- package/dist/generated-Cf82M-QP.cjs +0 -3
- package/dist/generated-Cf82M-QP.cjs.map +0 -1
- package/dist/generated-krkFnwbV.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LimitedSignerValidator.cjs","sources":["../../src/Validators/LimitedSignerValidator.ts"],"sourcesContent":["import {\n limitedSignerValidatorAbi,\n readLimitedSignerValidatorHashSignerData,\n readLimitedSignerValidatorSigners,\n simulateLimitedSignerValidatorSetAuthorized,\n simulateLimitedSignerValidatorSetValidatorCaller,\n simulateLimitedSignerValidatorValidate,\n writeLimitedSignerValidatorSetAuthorized,\n writeLimitedSignerValidatorSetValidatorCaller,\n writeLimitedSignerValidatorValidate,\n} from '@boostxyz/evm';\nimport { bytecode } from '@boostxyz/evm/artifacts/contracts/validators/LimitedSignerValidator.sol/LimitedSignerValidator.json';\nimport {\n type Address,\n type ContractEventName,\n type Hex,\n type PrivateKeyAccount,\n encodeAbiParameters,\n} from 'viem';\nimport { signTypedData } from 'viem/accounts';\nimport { LimitedSignerValidator as SignerValidatorBases } from '../../dist/deployments.json';\nimport type {\n DeployableOptions,\n GenericDeployableParams,\n} from '../Deployable/Deployable';\nimport { DeployableTarget } from '../Deployable/DeployableTarget';\nimport {\n type GenericLog,\n type ReadParams,\n RegistryType,\n type WriteParams,\n} from '../utils';\n\nexport { limitedSignerValidatorAbi };\n\n/**\n * Object reprentation of a {@link LimitedSignerValidator} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorPayload\n * @typedef {LimitedSignerValidatorPayload}\n */\nexport interface LimitedSignerValidatorPayload {\n /**\n * The list of authorized signers. The first address in the list will be the initial owner of the contract.\n *\n * @type {Address[]}\n */\n signers: Address[];\n /**\n * The authorized caller of the {@link prepareSignerValidator} function\n * @type {Address}\n */\n validatorCaller: Address;\n /**\n * The max quantity of claims a user can make for a given incentive,\n * regardless of how many valid transactions they have\n * @type {number}\n */\n maxClaimCount: number;\n}\n\n/**\n * Description placeholder\n *\n * @export\n * @interface LimitedSignerValidatorValidatePayload\n * @typedef {LimitedSignerValidatorValidatePayload}\n */\nexport interface LimitedSignerValidatorValidatePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {bigint}\n */\n incentiveId: bigint;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n claimData: Hex;\n}\n\n/**\n * Object reprentation of a {@link LimitedSignerValidator} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorPayload\n * @typedef {LimitedSignerValidatorPayload}\n */\nexport interface LimitedSignerValidatorPayload {\n /**\n * The list of authorized signers. The first address in the list will be the initial owner of the contract.\n *\n * @type {Address[]}\n */\n signers: Address[];\n /**\n * The authorized caller of the {@link prepareSignerValidator} function\n * @type {Address}\n */\n validatorCaller: Address;\n}\n\n/**\n * Description placeholder\n *\n * @export\n * @interface LimitedSignerValidatorValidatePayload\n * @typedef {LimitedSignerValidatorValidatePayload}\n */\nexport interface LimitedSignerValidatorValidatePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {bigint}\n */\n incentiveId: bigint;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n claimData: Hex;\n}\n\n/**\n * Signer Validator Claim Data Payload\n *\n * @export\n * @interface LimitedSignerValidatorClaimDataParams\n * @typedef {LimitedSignerValidatorClaimDataParams}\n */\nexport interface LimitedSignerValidatorClaimDataParams {\n /**\n * The signer with which to sign the input\n *\n * @type {{\n * account: Address;\n * key: Hex;\n * privateKey: PrivateKeyAccount;\n * }}\n */\n signer: {\n account: Address;\n key: Hex;\n privateKey: PrivateKeyAccount;\n };\n /**\n * The encoded data to provide the underlying incentive. You can use {@link prepareAllowListIncentivePayload}, {@link prepareCGDAIncentivePayload}, {@link prepareERC20IncentivePayload}, {@link prepareERC1155IncentivePayload}, or {@link preparePointsIncentivePayload}\n *\n * @type {Hex}\n */\n incentiveData: Hex;\n /**\n * The chain id to target\n *\n * @type {number}\n */\n chainId: number;\n /**\n * The address of the validator\n *\n * @type {Address}\n */\n validator: Address;\n /**\n * The incentive quantity.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n /**\n * The address of the claimant\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The ID of the boost\n *\n * @type {bigint}\n */\n boostId: bigint;\n}\n\n/**\n * Object representation of a {@link LimitedSignerValidatorInputParams} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorInputParams\n * @typedef {LimitedSignerValidatorInputParams}\n */\nexport interface LimitedSignerValidatorInputParams {\n /**\n * The signer address.\n *\n * @type {Address}\n */\n signer: Address;\n\n /**\n * The signature data.\n *\n * @type {string}\n */\n signature: Hex;\n\n /**\n * The incentive quantity.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n}\n\n/**\n * Object representing the payload for signing before validaton.\n *\n * @export\n * @interface LimitedSignerValidatorSignaturePayload\n * @typedef {LimitedSignerValidatorSignaturePayload}\n */\nexport interface LimitedSignerValidatorSignaturePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n incentiveData: Hex;\n}\n\n/**\n * A generic `viem.Log` event with support for `BoostCore` event types.\n *\n * @export\n * @typedef {LimitedSignerValidatorLog}\n * @template {ContractEventName<\n * typeof limitedSignerValidatorAbi\n * >} [event=ContractEventName<typeof limitedSignerValidatorAbi>]\n */\nexport type LimitedSignerValidatorLog<\n event extends ContractEventName<\n typeof limitedSignerValidatorAbi\n > = ContractEventName<typeof limitedSignerValidatorAbi>,\n> = GenericLog<typeof limitedSignerValidatorAbi, event>;\n\n/**\n * A simple implementation of a Validator that verifies a given signature and checks the recovered address against a set of authorized signers\n *\n * @export\n * @class SignerValidator\n * @typedef {SignerValidator}\n * @extends {DeployableTarget<SignerValidatorPayload>}\n */\nexport class LimitedSignerValidator extends DeployableTarget<\n LimitedSignerValidatorPayload,\n typeof limitedSignerValidatorAbi\n> {\n /**\n * @inheritdoc\n *\n * @public\n * @readonly\n * @type {*}\n */\n public override readonly abi = limitedSignerValidatorAbi;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {Record<number, Address>}\n */\n public static override bases: Record<number, Address> = {\n ...(import.meta.env?.VITE_LIMITED_SIGNER_VALIDATOR_BASE\n ? { 31337: import.meta.env.VITE_LIMITED_SIGNER_VALIDATOR_BASE }\n : {}),\n ...(SignerValidatorBases as Record<number, Address>),\n };\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {RegistryType}\n */\n public static override registryType: RegistryType = RegistryType.VALIDATOR;\n\n /**\n * The set of authorized signers\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?ReadParams} [params]\n * @returns {Promise<boolean>}\n */\n public async signers(address: Address, params?: ReadParams) {\n return await readLimitedSignerValidatorSigners(this._config, {\n address: this.assertValidAddress(),\n args: [address],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Retrieve the hash and signer data for a given hash\n *\n * @public\n * @async\n * @param {SignerValidatorSignaturePayload} payload\n * @param {?ReadParams} [params]\n * @returns {Promise<Hex>}\n */\n public async hashSignerData(\n payload: LimitedSignerValidatorSignaturePayload,\n params?: ReadParams,\n ) {\n return await readLimitedSignerValidatorHashSignerData(this._config, {\n address: this.assertValidAddress(),\n args: [\n payload.boostId,\n payload.incentiveQuantity,\n payload.claimant,\n payload.incentiveData,\n ],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Validate that the action has been completed successfully. The data payload is expected to be a tuple of (address signer, bytes32 hash, bytes signature). The signature is expected to be a valid ECDSA or EIP-1271 signature of a unique hash by an authorized signer.\n *\n * @public\n * @async\n * @param {SignerValidatorValidatePayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the action has been validated based on the data payload\n */\n protected async validate(\n payload: LimitedSignerValidatorValidatePayload,\n params?: WriteParams,\n ) {\n return await this.awaitResult(this.validateRaw(payload, params));\n }\n\n /**\n * Validate that the action has been completed successfully. The data payload is expected to be a tuple of (address signer, bytes32 hash, bytes signature). The signature is expected to be a valid ECDSA or EIP-1271 signature of a unique hash by an authorized signer.\n *\n * @public\n * @async\n * @param {SignerValidatorValidatePayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the action has been validated based on the data payload\n */\n protected async validateRaw(\n payload: LimitedSignerValidatorValidatePayload,\n params?: WriteParams,\n ) {\n const { request, result } = await simulateLimitedSignerValidatorValidate(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [\n payload.boostId,\n payload.incentiveId,\n payload.claimant,\n payload.claimData,\n ],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n },\n );\n const hash = await writeLimitedSignerValidatorValidate(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Set the authorized status of a signer\n *\n * @public\n * @async\n * @param {Address[]} addresses - The list of signers to update\n * @param {boolean[]} allowed - The authorized status of each signer\n * @param {?WriteParams} [params]\n * @returns {Promise<void>}\n */\n public async setAuthorized(\n addresses: Address[],\n allowed: boolean[],\n params?: WriteParams,\n ) {\n return await this.awaitResult(\n this.setAuthorizedRaw(addresses, allowed, params),\n );\n }\n\n /**\n * Set the authorized status of a signer\n *\n * @public\n * @async\n * @param {Address[]} addresses - The list of signers to update\n * @param {boolean[]} allowed - The authorized status of each signer\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: void; }>}\n */\n public async setAuthorizedRaw(\n addresses: Address[],\n allowed: boolean[],\n params?: WriteParams,\n ) {\n const { request, result } =\n await simulateLimitedSignerValidatorSetAuthorized(this._config, {\n address: this.assertValidAddress(),\n args: [addresses, allowed],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n const hash = await writeLimitedSignerValidatorSetAuthorized(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Update the authorized caller of the validator function\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: void; }>}\n */\n public async setValidatorCallerRaw(address: Address, params?: WriteParams) {\n const { request, result } =\n await simulateLimitedSignerValidatorSetValidatorCaller(this._config, {\n address: this.assertValidAddress(),\n args: [address],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n const hash = await writeLimitedSignerValidatorSetValidatorCaller(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Update the authorized caller of the validator function\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?WriteParams} [params]\n * @returns {Promise<void>}\n */\n public async setValidatorCaller(address: Address, params?: WriteParams) {\n return await this.awaitResult(this.setValidatorCallerRaw(address, params));\n }\n\n /**\n * Properly encodes the data needed to claim\n *\n * @public\n * @async\n * @param {SignerValidatorClaimDataParams} params\n * @returns {Promise<Hex>}\n */\n public async encodeClaimData(\n params: Omit<LimitedSignerValidatorClaimDataParams, 'validator'>,\n ): Promise<Hex> {\n return await prepareLimitedSignerValidatorClaimDataPayload({\n ...params,\n validator: this.assertValidAddress(),\n });\n }\n\n /**\n * @inheritdoc\n *\n * @public\n * @param {?SignerValidatorPayload} [_payload]\n * @param {?DeployableOptions} [_options]\n * @returns {GenericDeployableParams}\n */\n public override buildParameters(\n _payload?: LimitedSignerValidatorPayload,\n _options?: DeployableOptions,\n ): GenericDeployableParams {\n const [payload, options] = this.validateDeploymentConfig(\n _payload,\n _options,\n );\n return {\n abi: limitedSignerValidatorAbi,\n bytecode: bytecode as Hex,\n args: [prepareLimitedSignerValidatorPayload(payload)],\n ...this.optionallyAttachAccount(options.account),\n };\n }\n}\n\n/**\n * Signer Validator Claim Data Payload Preparation\n *\n * @export\n * @async\n * @param {SignerValidatorClaimDataParams} param0\n * @param {{ account: Address; key: Hex; privateKey: PrivateKeyAccount; }} param0.signer\n * @param {Hex} param0.incentiveData\n * @param {number} param0.chainId\n * @param {Address} param0.validator\n * @param {number} param0.incentiveQuantity\n * @param {Address} param0.claimant\n * @param {bigint} param0.boostId\n * @returns {Promise<Hex>}\n */\nexport async function prepareLimitedSignerValidatorClaimDataPayload({\n signer,\n incentiveData,\n chainId,\n validator,\n incentiveQuantity,\n claimant,\n boostId,\n}: LimitedSignerValidatorClaimDataParams): Promise<Hex> {\n const domain = {\n name: 'LimitedSignerValidator',\n version: '1',\n chainId: chainId,\n verifyingContract: validator,\n };\n const typedData = {\n domain,\n types: {\n SignerValidatorData: [\n { name: 'boostId', type: 'uint256' },\n { name: 'incentiveQuantity', type: 'uint8' },\n { name: 'claimant', type: 'address' },\n { name: 'incentiveData', type: 'bytes' },\n ],\n },\n primaryType: 'SignerValidatorData' as const,\n message: {\n boostId,\n incentiveQuantity,\n claimant,\n incentiveData: incentiveData,\n },\n };\n\n const trustedSignature = await signer.privateKey.signTypedData(typedData);\n\n // Prepare the claim data payload using the new helper\n const validatorData = prepareLimitedSignerValidatorInputParams({\n signer: signer.account,\n signature: trustedSignature,\n incentiveQuantity, // Adjust incentive quantity as necessary\n });\n\n const boostClaimDataPayload = encodeAbiParameters(\n [\n {\n type: 'tuple',\n name: 'BoostClaimData',\n components: [\n { type: 'bytes', name: 'validatorData' },\n { type: 'bytes', name: 'incentiveData' },\n ],\n },\n ],\n [{ validatorData, incentiveData }],\n );\n\n return boostClaimDataPayload;\n}\n\n/**\n * Given a {@link SignerValidatorInputParams}, properly encode the initialization payload.\n *\n * @param {SignerValidatorInputParams} param0\n * @param {Address} param0.signer\n * @param {Hex} param0.signature\n * @param {number} param0.incentiveQuantity\n * @returns {Hex}\n */\nexport function prepareLimitedSignerValidatorInputParams({\n signer,\n signature,\n incentiveQuantity,\n}: LimitedSignerValidatorInputParams) {\n return encodeAbiParameters(\n [\n {\n type: 'tuple',\n name: 'SignerValidatorInputParams',\n components: [\n { type: 'address', name: 'signer' },\n { type: 'bytes', name: 'signature' },\n { type: 'uint8', name: 'incentiveQuantity' },\n ],\n },\n ],\n [{ signer, signature, incentiveQuantity }],\n );\n}\n\n/**\n * Given a {@link SignerValidatorPayload}, properly encode the initialization payload.\n *\n * @param {SignerValidatorPayload} param0\n SignerValidator: class TSignerValidator extends SignerValidator {\n public static override bases: Record<number, Address> = {\n [chainId]: signerValidatorBase,\n };\n },\n * @param {Address[]} param0.signers\n * @param {Address} param0.validatorCaller\n * @returns {Hex}\n */\nexport function prepareLimitedSignerValidatorPayload({\n signers,\n validatorCaller,\n maxClaimCount,\n}: LimitedSignerValidatorPayload) {\n return encodeAbiParameters(\n [\n { type: 'address[]', name: 'signers' },\n { type: 'address', name: 'validatorCaller' },\n { type: 'uint256', name: 'maxClaimCount' },\n ],\n [signers, validatorCaller, BigInt(maxClaimCount)],\n );\n}\n"],"names":["_LimitedSignerValidator","DeployableTarget","limitedSignerValidatorAbi","address","params","readLimitedSignerValidatorSigners","payload","readLimitedSignerValidatorHashSignerData","request","result","simulateLimitedSignerValidatorValidate","writeLimitedSignerValidatorValidate","addresses","allowed","simulateLimitedSignerValidatorSetAuthorized","writeLimitedSignerValidatorSetAuthorized","simulateLimitedSignerValidatorSetValidatorCaller","writeLimitedSignerValidatorSetValidatorCaller","prepareLimitedSignerValidatorClaimDataPayload","_payload","_options","options","bytecode","prepareLimitedSignerValidatorPayload","__vite_import_meta_env__","SignerValidatorBases","RegistryType","LimitedSignerValidator","signer","incentiveData","chainId","validator","incentiveQuantity","claimant","boostId","typedData","trustedSignature","validatorData","prepareLimitedSignerValidatorInputParams","encodeAbiParameters","signature","signers","validatorCaller","maxClaimCount"],"mappings":"o/aA0SaA,EAAN,MAAMA,UAA+BC,EAAAA,gBAG1C,CAHK,aAAA,CAAA,MAAA,GAAA,SAAA,EAWL,KAAyB,IAAMC,GAAA,CAgC/B,MAAa,QAAQC,EAAkBC,EAAqB,CACnD,OAAA,MAAMC,EAAAA,GAAkC,KAAK,QAAS,CAC3D,QAAS,KAAK,mBAAmB,EACjC,KAAM,CAACF,CAAO,EAEd,GAAIC,CAAA,CACL,CACH,CAWA,MAAa,eACXE,EACAF,EACA,CACO,OAAA,MAAMG,EAAAA,GAAyC,KAAK,QAAS,CAClE,QAAS,KAAK,mBAAmB,EACjC,KAAM,CACJD,EAAQ,QACRA,EAAQ,kBACRA,EAAQ,SACRA,EAAQ,aACV,EAEA,GAAIF,CAAA,CACL,CACH,CAWA,MAAgB,SACdE,EACAF,EACA,CACA,OAAO,MAAM,KAAK,YAAY,KAAK,YAAYE,EAASF,CAAM,CAAC,CACjE,CAWA,MAAgB,YACdE,EACAF,EACA,CACA,KAAM,CAAE,QAAAI,EAAS,OAAAC,CAAO,EAAI,MAAMC,EAAA,GAChC,KAAK,QACL,CACE,QAAS,KAAK,mBAAmB,EACjC,KAAM,CACJJ,EAAQ,QACRA,EAAQ,YACRA,EAAQ,SACRA,EAAQ,SACV,EACA,GAAG,KAAK,wBAAwB,EAEhC,GAAIF,CACN,CAAA,EAMK,MAAA,CAAE,KAJI,MAAMO,EAAA,GACjB,KAAK,QACLH,CAAA,EAEa,OAAAC,EACjB,CAYA,MAAa,cACXG,EACAC,EACAT,EACA,CACA,OAAO,MAAM,KAAK,YAChB,KAAK,iBAAiBQ,EAAWC,EAAST,CAAM,CAAA,CAEpD,CAYA,MAAa,iBACXQ,EACAC,EACAT,EACA,CACA,KAAM,CAAE,QAAAI,EAAS,OAAAC,CAAA,EACf,MAAMK,EAAA,GAA4C,KAAK,QAAS,CAC9D,QAAS,KAAK,mBAAmB,EACjC,KAAM,CAACF,EAAWC,CAAO,EACzB,GAAG,KAAK,wBAAwB,EAEhC,GAAIT,CAAA,CACL,EAKI,MAAA,CAAE,KAJI,MAAMW,EAAA,GACjB,KAAK,QACLP,CAAA,EAEa,OAAAC,EACjB,CAWA,MAAa,sBAAsBN,EAAkBC,EAAsB,CACzE,KAAM,CAAE,QAAAI,EAAS,OAAAC,CAAA,EACf,MAAMO,EAAA,GAAiD,KAAK,QAAS,CACnE,QAAS,KAAK,mBAAmB,EACjC,KAAM,CAACb,CAAO,EACd,GAAG,KAAK,wBAAwB,EAEhC,GAAIC,CAAA,CACL,EAKI,MAAA,CAAE,KAJI,MAAMa,EAAA,GACjB,KAAK,QACLT,CAAA,EAEa,OAAAC,EACjB,CAWA,MAAa,mBAAmBN,EAAkBC,EAAsB,CACtE,OAAO,MAAM,KAAK,YAAY,KAAK,sBAAsBD,EAASC,CAAM,CAAC,CAC3E,CAUA,MAAa,gBACXA,EACc,CACd,OAAO,MAAMc,EAA8C,CACzD,GAAGd,EACH,UAAW,KAAK,mBAAmB,CAAA,CACpC,CACH,CAUgB,gBACde,EACAC,EACyB,CACzB,KAAM,CAACd,EAASe,CAAO,EAAI,KAAK,yBAC9BF,EACAC,CAAA,EAEK,MAAA,CACL,IAAKlB,EAAA,EACL,SAAAoB,EACA,KAAM,CAACC,EAAqCjB,CAAO,CAAC,EACpD,GAAG,KAAK,wBAAwBe,EAAQ,OAAO,CAAA,CAEnD,CACF,EA9OErB,EAAuB,MAAiC,CACtD,GAAIwB,GAAA,MAAAA,EAAiB,mCACjB,CAAE,MAAO,QACT,CAAC,EACL,GAAIC,EAAA,sBAAA,EASNzB,EAAuB,aAA6B0B,EAAa,aAAA,UAhC5D,IAAMC,EAAN3B,EAkRP,eAAsBkB,EAA8C,CAClE,OAAAU,EACA,cAAAC,EACA,QAAAC,EACA,UAAAC,EACA,kBAAAC,EACA,SAAAC,EACA,QAAAC,CACF,EAAwD,CAOtD,MAAMC,EAAY,CAChB,OAPa,CACb,KAAM,yBACN,QAAS,IACT,QAAAL,EACA,kBAAmBC,CAAA,EAInB,MAAO,CACL,oBAAqB,CACnB,CAAE,KAAM,UAAW,KAAM,SAAU,EACnC,CAAE,KAAM,oBAAqB,KAAM,OAAQ,EAC3C,CAAE,KAAM,WAAY,KAAM,SAAU,EACpC,CAAE,KAAM,gBAAiB,KAAM,OAAQ,CACzC,CACF,EACA,YAAa,sBACb,QAAS,CACP,QAAAG,EACA,kBAAAF,EACA,SAAAC,EACA,cAAAJ,CACF,CAAA,EAGIO,EAAmB,MAAMR,EAAO,WAAW,cAAcO,CAAS,EAGlEE,EAAgBC,EAAyC,CAC7D,OAAQV,EAAO,QACf,UAAWQ,EACX,kBAAAJ,CAAA,CACD,EAgBM,OAduBO,EAAA,oBAC5B,CACE,CACE,KAAM,QACN,KAAM,iBACN,WAAY,CACV,CAAE,KAAM,QAAS,KAAM,eAAgB,EACvC,CAAE,KAAM,QAAS,KAAM,eAAgB,CACzC,CACF,CACF,EACA,CAAC,CAAE,cAAAF,EAAe,cAAAR,EAAe,CAAA,CAIrC,CAWO,SAASS,EAAyC,CACvD,OAAAV,EACA,UAAAY,EACA,kBAAAR,CACF,EAAsC,CAC7B,OAAAO,EAAA,oBACL,CACE,CACE,KAAM,QACN,KAAM,6BACN,WAAY,CACV,CAAE,KAAM,UAAW,KAAM,QAAS,EAClC,CAAE,KAAM,QAAS,KAAM,WAAY,EACnC,CAAE,KAAM,QAAS,KAAM,mBAAoB,CAC7C,CACF,CACF,EACA,CAAC,CAAE,OAAAX,EAAQ,UAAAY,EAAW,kBAAAR,EAAmB,CAAA,CAE7C,CAeO,SAAST,EAAqC,CACnD,QAAAkB,EACA,gBAAAC,EACA,cAAAC,CACF,EAAkC,CACzB,OAAAJ,EAAA,oBACL,CACE,CAAE,KAAM,YAAa,KAAM,SAAU,EACrC,CAAE,KAAM,UAAW,KAAM,iBAAkB,EAC3C,CAAE,KAAM,UAAW,KAAM,eAAgB,CAC3C,EACA,CAACE,EAASC,EAAiB,OAAOC,CAAa,CAAC,CAAA,CAEpD"}
|
|
1
|
+
{"version":3,"file":"LimitedSignerValidator.cjs","sources":["../../src/Validators/LimitedSignerValidator.ts"],"sourcesContent":["import {\n limitedSignerValidatorAbi,\n readLimitedSignerValidatorHashSignerData,\n readLimitedSignerValidatorSigners,\n simulateLimitedSignerValidatorSetAuthorized,\n simulateLimitedSignerValidatorSetValidatorCaller,\n simulateLimitedSignerValidatorValidate,\n writeLimitedSignerValidatorSetAuthorized,\n writeLimitedSignerValidatorSetValidatorCaller,\n writeLimitedSignerValidatorValidate,\n} from '@boostxyz/evm';\nimport { bytecode } from '@boostxyz/evm/artifacts/contracts/validators/LimitedSignerValidator.sol/LimitedSignerValidator.json';\nimport {\n type Address,\n type ContractEventName,\n type Hex,\n type PrivateKeyAccount,\n encodeAbiParameters,\n} from 'viem';\nimport { LimitedSignerValidator as SignerValidatorBases } from '../../dist/deployments.json';\nimport type {\n DeployableOptions,\n GenericDeployableParams,\n} from '../Deployable/Deployable';\nimport { DeployableTarget } from '../Deployable/DeployableTarget';\nimport {\n type GenericLog,\n type ReadParams,\n RegistryType,\n type WriteParams,\n} from '../utils';\n\nexport { limitedSignerValidatorAbi };\n\n/**\n * Object reprentation of a {@link LimitedSignerValidator} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorPayload\n * @typedef {LimitedSignerValidatorPayload}\n */\nexport interface LimitedSignerValidatorPayload {\n /**\n * The list of authorized signers. The first address in the list will be the initial owner of the contract.\n *\n * @type {Address[]}\n */\n signers: Address[];\n /**\n * The authorized caller of the {@link prepareSignerValidator} function\n * @type {Address}\n */\n validatorCaller: Address;\n /**\n * The max quantity of claims a user can make for a given incentive,\n * regardless of how many valid transactions they have\n * @type {number}\n */\n maxClaimCount: number;\n}\n\n/**\n * Description placeholder\n *\n * @export\n * @interface LimitedSignerValidatorValidatePayload\n * @typedef {LimitedSignerValidatorValidatePayload}\n */\nexport interface LimitedSignerValidatorValidatePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {bigint}\n */\n incentiveId: bigint;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n claimData: Hex;\n}\n\n/**\n * Object reprentation of a {@link LimitedSignerValidator} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorPayload\n * @typedef {LimitedSignerValidatorPayload}\n */\nexport interface LimitedSignerValidatorPayload {\n /**\n * The list of authorized signers. The first address in the list will be the initial owner of the contract.\n *\n * @type {Address[]}\n */\n signers: Address[];\n /**\n * The authorized caller of the {@link prepareSignerValidator} function\n * @type {Address}\n */\n validatorCaller: Address;\n}\n\n/**\n * Description placeholder\n *\n * @export\n * @interface LimitedSignerValidatorValidatePayload\n * @typedef {LimitedSignerValidatorValidatePayload}\n */\nexport interface LimitedSignerValidatorValidatePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {bigint}\n */\n incentiveId: bigint;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n claimData: Hex;\n}\n\n/**\n * Signer Validator Claim Data Payload\n *\n * @export\n * @interface LimitedSignerValidatorClaimDataParams\n * @typedef {LimitedSignerValidatorClaimDataParams}\n */\nexport interface LimitedSignerValidatorClaimDataParams {\n /**\n * The signer with which to sign the input\n *\n * @type {{\n * account: Address;\n * key: Hex;\n * privateKey: PrivateKeyAccount;\n * }}\n */\n signer: {\n account: Address;\n key: Hex;\n privateKey: PrivateKeyAccount;\n };\n /**\n * The encoded data to provide the underlying incentive. You can use {@link prepareAllowListIncentivePayload}, {@link prepareCGDAIncentivePayload}, {@link prepareERC20IncentivePayload}, {@link prepareERC1155IncentivePayload}, or {@link preparePointsIncentivePayload}\n *\n * @type {Hex}\n */\n incentiveData: Hex;\n /**\n * The chain id to target\n *\n * @type {number}\n */\n chainId: number;\n /**\n * The address of the validator\n *\n * @type {Address}\n */\n validator: Address;\n /**\n * The incentive quantity.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n /**\n * The address of the claimant\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The ID of the boost\n *\n * @type {bigint}\n */\n boostId: bigint;\n}\n\n/**\n * Object representation of a {@link LimitedSignerValidatorInputParams} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorInputParams\n * @typedef {LimitedSignerValidatorInputParams}\n */\nexport interface LimitedSignerValidatorInputParams {\n /**\n * The signer address.\n *\n * @type {Address}\n */\n signer: Address;\n\n /**\n * The signature data.\n *\n * @type {string}\n */\n signature: Hex;\n\n /**\n * The incentive quantity.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n}\n\n/**\n * Object representing the payload for signing before validaton.\n *\n * @export\n * @interface LimitedSignerValidatorSignaturePayload\n * @typedef {LimitedSignerValidatorSignaturePayload}\n */\nexport interface LimitedSignerValidatorSignaturePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n incentiveData: Hex;\n}\n\n/**\n * A generic `viem.Log` event with support for `BoostCore` event types.\n *\n * @export\n * @typedef {LimitedSignerValidatorLog}\n * @template {ContractEventName<\n * typeof limitedSignerValidatorAbi\n * >} [event=ContractEventName<typeof limitedSignerValidatorAbi>]\n */\nexport type LimitedSignerValidatorLog<\n event extends ContractEventName<\n typeof limitedSignerValidatorAbi\n > = ContractEventName<typeof limitedSignerValidatorAbi>,\n> = GenericLog<typeof limitedSignerValidatorAbi, event>;\n\n/**\n * A simple implementation of a Validator that verifies a given signature and checks the recovered address against a set of authorized signers\n *\n * @export\n * @class LimitedSignerValidator\n * @typedef {LimitedSignerValidator}\n * @extends {DeployableTarget<LimitedSignerValidatorPayload>}\n */\nexport class LimitedSignerValidator extends DeployableTarget<\n LimitedSignerValidatorPayload,\n typeof limitedSignerValidatorAbi\n> {\n /**\n * @inheritdoc\n *\n * @public\n * @readonly\n * @type {*}\n */\n public override readonly abi = limitedSignerValidatorAbi;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {Record<number, Address>}\n */\n public static override bases: Record<number, Address> = {\n ...(import.meta.env?.VITE_LIMITED_SIGNER_VALIDATOR_BASE\n ? { 31337: import.meta.env.VITE_LIMITED_SIGNER_VALIDATOR_BASE }\n : {}),\n ...(SignerValidatorBases as Record<number, Address>),\n };\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {RegistryType}\n */\n public static override registryType: RegistryType = RegistryType.VALIDATOR;\n\n /**\n * The set of authorized signers\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?ReadParams} [params]\n * @returns {Promise<boolean>}\n */\n public async signers(address: Address, params?: ReadParams) {\n return await readLimitedSignerValidatorSigners(this._config, {\n address: this.assertValidAddress(),\n args: [address],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Retrieve the hash and signer data for a given hash\n *\n * @public\n * @async\n * @param {SignerValidatorSignaturePayload} payload\n * @param {?ReadParams} [params]\n * @returns {Promise<Hex>}\n */\n public async hashSignerData(\n payload: LimitedSignerValidatorSignaturePayload,\n params?: ReadParams,\n ) {\n return await readLimitedSignerValidatorHashSignerData(this._config, {\n address: this.assertValidAddress(),\n args: [\n payload.boostId,\n payload.incentiveQuantity,\n payload.claimant,\n payload.incentiveData,\n ],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Validate that the action has been completed successfully. The data payload is expected to be a tuple of (address signer, bytes32 hash, bytes signature). The signature is expected to be a valid ECDSA or EIP-1271 signature of a unique hash by an authorized signer.\n *\n * @public\n * @async\n * @param {LimitedSignerValidatorValidatePayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the action has been validated based on the data payload\n */\n public async validate(\n payload: LimitedSignerValidatorValidatePayload,\n params?: WriteParams,\n ) {\n return await this.awaitResult(this.validateRaw(payload, params));\n }\n\n /**\n * Validate that the action has been completed successfully. The data payload is expected to be a tuple of (address signer, bytes32 hash, bytes signature). The signature is expected to be a valid ECDSA or EIP-1271 signature of a unique hash by an authorized signer.\n *\n * @public\n * @async\n * @param {LimitedSignerValidatorValidatePayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the action has been validated based on the data payload\n */\n public async validateRaw(\n payload: LimitedSignerValidatorValidatePayload,\n params?: WriteParams,\n ) {\n const { request, result } = await simulateLimitedSignerValidatorValidate(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [\n payload.boostId,\n payload.incentiveId,\n payload.claimant,\n payload.claimData,\n ],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n },\n );\n const hash = await writeLimitedSignerValidatorValidate(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Set the authorized status of a signer\n *\n * @public\n * @async\n * @param {Address[]} addresses - The list of signers to update\n * @param {boolean[]} allowed - The authorized status of each signer\n * @param {?WriteParams} [params]\n * @returns {Promise<void>}\n */\n public async setAuthorized(\n addresses: Address[],\n allowed: boolean[],\n params?: WriteParams,\n ) {\n return await this.awaitResult(\n this.setAuthorizedRaw(addresses, allowed, params),\n );\n }\n\n /**\n * Set the authorized status of a signer\n *\n * @public\n * @async\n * @param {Address[]} addresses - The list of signers to update\n * @param {boolean[]} allowed - The authorized status of each signer\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: void; }>}\n */\n public async setAuthorizedRaw(\n addresses: Address[],\n allowed: boolean[],\n params?: WriteParams,\n ) {\n const { request, result } =\n await simulateLimitedSignerValidatorSetAuthorized(this._config, {\n address: this.assertValidAddress(),\n args: [addresses, allowed],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n const hash = await writeLimitedSignerValidatorSetAuthorized(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Update the authorized caller of the validator function\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: void; }>}\n */\n public async setValidatorCallerRaw(address: Address, params?: WriteParams) {\n const { request, result } =\n await simulateLimitedSignerValidatorSetValidatorCaller(this._config, {\n address: this.assertValidAddress(),\n args: [address],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n const hash = await writeLimitedSignerValidatorSetValidatorCaller(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Update the authorized caller of the validator function\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?WriteParams} [params]\n * @returns {Promise<void>}\n */\n public async setValidatorCaller(address: Address, params?: WriteParams) {\n return await this.awaitResult(this.setValidatorCallerRaw(address, params));\n }\n\n /**\n * Properly encodes the data needed to claim\n *\n * @public\n * @async\n * @param {LimitedSignerValidatorClaimDataParams} params\n * @returns {Promise<Hex>}\n */\n public async encodeClaimData(\n params: Omit<LimitedSignerValidatorClaimDataParams, 'validator'>,\n ): Promise<Hex> {\n return await prepareLimitedSignerValidatorClaimDataPayload({\n ...params,\n validator: this.assertValidAddress(),\n });\n }\n\n /**\n * @inheritdoc\n *\n * @public\n * @param {?LimitedSignerValidatorPayload} [_payload]\n * @param {?DeployableOptions} [_options]\n * @returns {GenericDeployableParams}\n */\n public override buildParameters(\n _payload?: LimitedSignerValidatorPayload,\n _options?: DeployableOptions,\n ): GenericDeployableParams {\n const [payload, options] = this.validateDeploymentConfig(\n _payload,\n _options,\n );\n return {\n abi: limitedSignerValidatorAbi,\n bytecode: bytecode as Hex,\n args: [prepareLimitedSignerValidatorPayload(payload)],\n ...this.optionallyAttachAccount(options.account),\n };\n }\n}\n\n/**\n * Signer Validator Claim Data Payload Preparation\n *\n * @export\n * @async\n * @param {SignerValidatorClaimDataParams} param0\n * @param {{ account: Address; key: Hex; privateKey: PrivateKeyAccount; }} param0.signer\n * @param {Hex} param0.incentiveData\n * @param {number} param0.chainId\n * @param {Address} param0.validator\n * @param {number} param0.incentiveQuantity\n * @param {Address} param0.claimant\n * @param {bigint} param0.boostId\n * @returns {Promise<Hex>}\n */\nexport async function prepareLimitedSignerValidatorClaimDataPayload({\n signer,\n incentiveData,\n chainId,\n validator,\n incentiveQuantity,\n claimant,\n boostId,\n}: LimitedSignerValidatorClaimDataParams): Promise<Hex> {\n const domain = {\n name: 'LimitedSignerValidator',\n version: '1',\n chainId: chainId,\n verifyingContract: validator,\n };\n const typedData = {\n domain,\n types: {\n SignerValidatorData: [\n { name: 'boostId', type: 'uint256' },\n { name: 'incentiveQuantity', type: 'uint8' },\n { name: 'claimant', type: 'address' },\n { name: 'incentiveData', type: 'bytes' },\n ],\n },\n primaryType: 'SignerValidatorData' as const,\n message: {\n boostId,\n incentiveQuantity,\n claimant,\n incentiveData: incentiveData,\n },\n };\n\n const trustedSignature = await signer.privateKey.signTypedData(typedData);\n\n // Prepare the claim data payload using the new helper\n const validatorData = prepareLimitedSignerValidatorInputParams({\n signer: signer.account,\n signature: trustedSignature,\n incentiveQuantity, // Adjust incentive quantity as necessary\n });\n\n const boostClaimDataPayload = encodeAbiParameters(\n [\n {\n type: 'tuple',\n name: 'BoostClaimData',\n components: [\n { type: 'bytes', name: 'validatorData' },\n { type: 'bytes', name: 'incentiveData' },\n ],\n },\n ],\n [{ validatorData, incentiveData }],\n );\n\n return boostClaimDataPayload;\n}\n\n/**\n * Given a {@link SignerValidatorInputParams}, properly encode the initialization payload.\n *\n * @param {SignerValidatorInputParams} param0\n * @param {Address} param0.signer\n * @param {Hex} param0.signature\n * @param {number} param0.incentiveQuantity\n * @returns {Hex}\n */\nexport function prepareLimitedSignerValidatorInputParams({\n signer,\n signature,\n incentiveQuantity,\n}: LimitedSignerValidatorInputParams) {\n return encodeAbiParameters(\n [\n {\n type: 'tuple',\n name: 'SignerValidatorInputParams',\n components: [\n { type: 'address', name: 'signer' },\n { type: 'bytes', name: 'signature' },\n { type: 'uint8', name: 'incentiveQuantity' },\n ],\n },\n ],\n [{ signer, signature, incentiveQuantity }],\n );\n}\n\n/**\n * Given a {@link SignerValidatorPayload}, properly encode the initialization payload.\n *\n * @param {SignerValidatorPayload} param0\n SignerValidator: class TSignerValidator extends SignerValidator {\n public static override bases: Record<number, Address> = {\n [chainId]: signerValidatorBase,\n };\n },\n * @param {Address[]} param0.signers\n * @param {Address} param0.validatorCaller\n * @returns {Hex}\n */\nexport function prepareLimitedSignerValidatorPayload({\n signers,\n validatorCaller,\n maxClaimCount,\n}: LimitedSignerValidatorPayload) {\n return encodeAbiParameters(\n [\n { type: 'address[]', name: 'signers' },\n { type: 'address', name: 'validatorCaller' },\n { type: 'uint256', name: 'maxClaimCount' },\n ],\n [signers, validatorCaller, BigInt(maxClaimCount)],\n );\n}\n"],"names":["_LimitedSignerValidator","DeployableTarget","limitedSignerValidatorAbi","address","params","readLimitedSignerValidatorSigners","payload","readLimitedSignerValidatorHashSignerData","request","result","simulateLimitedSignerValidatorValidate","writeLimitedSignerValidatorValidate","addresses","allowed","simulateLimitedSignerValidatorSetAuthorized","writeLimitedSignerValidatorSetAuthorized","simulateLimitedSignerValidatorSetValidatorCaller","writeLimitedSignerValidatorSetValidatorCaller","prepareLimitedSignerValidatorClaimDataPayload","_payload","_options","options","bytecode","prepareLimitedSignerValidatorPayload","__vite_import_meta_env__","SignerValidatorBases","RegistryType","LimitedSignerValidator","signer","incentiveData","chainId","validator","incentiveQuantity","claimant","boostId","typedData","trustedSignature","validatorData","prepareLimitedSignerValidatorInputParams","encodeAbiParameters","signature","signers","validatorCaller","maxClaimCount"],"mappings":"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"}
|
|
@@ -249,9 +249,9 @@ export type LimitedSignerValidatorLog<event extends ContractEventName<typeof lim
|
|
|
249
249
|
* A simple implementation of a Validator that verifies a given signature and checks the recovered address against a set of authorized signers
|
|
250
250
|
*
|
|
251
251
|
* @export
|
|
252
|
-
* @class
|
|
253
|
-
* @typedef {
|
|
254
|
-
* @extends {DeployableTarget<
|
|
252
|
+
* @class LimitedSignerValidator
|
|
253
|
+
* @typedef {LimitedSignerValidator}
|
|
254
|
+
* @extends {DeployableTarget<LimitedSignerValidatorPayload>}
|
|
255
255
|
*/
|
|
256
256
|
export declare class LimitedSignerValidator extends DeployableTarget<LimitedSignerValidatorPayload, typeof limitedSignerValidatorAbi> {
|
|
257
257
|
/**
|
|
@@ -688,21 +688,21 @@ export declare class LimitedSignerValidator extends DeployableTarget<LimitedSign
|
|
|
688
688
|
*
|
|
689
689
|
* @public
|
|
690
690
|
* @async
|
|
691
|
-
* @param {
|
|
691
|
+
* @param {LimitedSignerValidatorValidatePayload} payload
|
|
692
692
|
* @param {?WriteParams} [params]
|
|
693
693
|
* @returns {Promise<boolean>} - True if the action has been validated based on the data payload
|
|
694
694
|
*/
|
|
695
|
-
|
|
695
|
+
validate(payload: LimitedSignerValidatorValidatePayload, params?: WriteParams): Promise<boolean>;
|
|
696
696
|
/**
|
|
697
697
|
* Validate that the action has been completed successfully. The data payload is expected to be a tuple of (address signer, bytes32 hash, bytes signature). The signature is expected to be a valid ECDSA or EIP-1271 signature of a unique hash by an authorized signer.
|
|
698
698
|
*
|
|
699
699
|
* @public
|
|
700
700
|
* @async
|
|
701
|
-
* @param {
|
|
701
|
+
* @param {LimitedSignerValidatorValidatePayload} payload
|
|
702
702
|
* @param {?WriteParams} [params]
|
|
703
703
|
* @returns {Promise<boolean>} - True if the action has been validated based on the data payload
|
|
704
704
|
*/
|
|
705
|
-
|
|
705
|
+
validateRaw(payload: LimitedSignerValidatorValidatePayload, params?: WriteParams): Promise<{
|
|
706
706
|
hash: `0x${string}`;
|
|
707
707
|
result: boolean;
|
|
708
708
|
}>;
|
|
@@ -759,7 +759,7 @@ export declare class LimitedSignerValidator extends DeployableTarget<LimitedSign
|
|
|
759
759
|
*
|
|
760
760
|
* @public
|
|
761
761
|
* @async
|
|
762
|
-
* @param {
|
|
762
|
+
* @param {LimitedSignerValidatorClaimDataParams} params
|
|
763
763
|
* @returns {Promise<Hex>}
|
|
764
764
|
*/
|
|
765
765
|
encodeClaimData(params: Omit<LimitedSignerValidatorClaimDataParams, 'validator'>): Promise<Hex>;
|
|
@@ -767,7 +767,7 @@ export declare class LimitedSignerValidator extends DeployableTarget<LimitedSign
|
|
|
767
767
|
* @inheritdoc
|
|
768
768
|
*
|
|
769
769
|
* @public
|
|
770
|
-
* @param {?
|
|
770
|
+
* @param {?LimitedSignerValidatorPayload} [_payload]
|
|
771
771
|
* @param {?DeployableOptions} [_options]
|
|
772
772
|
* @returns {GenericDeployableParams}
|
|
773
773
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LimitedSignerValidator.d.ts","sourceRoot":"","sources":["../../src/Validators/LimitedSignerValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAS1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACtB,KAAK,GAAG,EACR,KAAK,iBAAiB,EAEvB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"LimitedSignerValidator.d.ts","sourceRoot":"","sources":["../../src/Validators/LimitedSignerValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $ as r, cd as m, ce as y, cf as p, cg as g, ch as A, ci as D, cj as w, ck as V } from "../generated-DRbljODL.js";
|
|
2
2
|
import { encodeAbiParameters as i } from "viem";
|
|
3
|
-
import { L as
|
|
3
|
+
import { L as _ } from "../deployments-COm00j8v.js";
|
|
4
4
|
import { DeployableTarget as E } from "../Deployable/DeployableTarget.js";
|
|
5
5
|
import { RegistryType as I } from "../utils.js";
|
|
6
|
-
const R = "0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b61009a565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b6001600160401b03808260011c14610095578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e051610100516119466100c85f395f50505f50505f50505f50505f50506119465ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b366004611106565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f366004611166565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b5061019461020036600461119c565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b3660046111fb565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112a5565b6105c9565b6101aa61075e565b6101606102653660046112e4565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611349565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b0565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611349565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115b9565b610917565b6101aa61037b366004611349565b6109aa565b6101aa61038e366004611349565b6109e7565b34801561039e575f80fd5b506101946103ad366004611349565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611621565b905060200201602081019061053f919061164e565b5f8087878581811061055357610553611621565b90506020020160208101906105689190611349565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a8587018761167d565b925092509250610652835f8151811061064557610645611621565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611621565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b259161174d565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb483850185611785565b90505f815f0151806020019051810190610bce9190611845565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f53565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611020565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff84161561047957604051843b610f0b57825160408114610e8e5760418114610ec85750610f4b565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610edb565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052610f4b565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f805f80610fc5604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f60208284031215611116575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f60608486031215611178575f80fd5b8335925060208401359150604084013561119181611145565b809150509250925092565b5f602082840312156111ac575f80fd5b5035919050565b5f8083601f8401126111c3575f80fd5b50813567ffffffffffffffff8111156111da575f80fd5b6020830191508360208260051b85010111156111f4575f80fd5b9250929050565b5f805f806040858703121561120e575f80fd5b843567ffffffffffffffff811115611224575f80fd5b611230878288016111b3565b909550935050602085013567ffffffffffffffff81111561124f575f80fd5b61125b878288016111b3565b95989497509550505050565b5f8083601f840112611277575f80fd5b50813567ffffffffffffffff81111561128e575f80fd5b6020830191508360208285010111156111f4575f80fd5b5f80602083850312156112b6575f80fd5b823567ffffffffffffffff8111156112cc575f80fd5b6112d885828601611267565b90969095509350505050565b5f805f805f608086880312156112f8575f80fd5b8535945060208601359350604086013561131181611145565b9250606086013567ffffffffffffffff81111561132c575f80fd5b61133888828901611267565b969995985093965092949392505050565b5f60208284031215611359575f80fd5b813561047981611145565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113ea60e0830189611364565b82810360408401526113fc8189611364565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561145e578351835260209384019390920191600101611440565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114cd576114cd61147d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561151a5761151a61147d565b604052919050565b5f67ffffffffffffffff82111561153b5761153b61147d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611576575f80fd5b813561158961158482611522565b6114d3565b81815284602083860101111561159d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115cc575f80fd5b8435935060208501356115de8161146f565b925060408501356115ee81611145565b9150606085013567ffffffffffffffff811115611609575f80fd5b61161587828801611567565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561165e575f80fd5b81358015158114610479575f80fd5b803561167881611145565b919050565b5f805f6060848603121561168f575f80fd5b833567ffffffffffffffff8111156116a5575f80fd5b8401601f810186136116b5575f80fd5b803567ffffffffffffffff8111156116cf576116cf61147d565b8060051b6116df602082016114d3565b918252602081840181019290810190898411156116fa575f80fd5b6020850194505b83851015611728578435925061171683611145565b82825260209485019490910190611701565b809750505050505061173c6020850161166d565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611795575f80fd5b813567ffffffffffffffff8111156117ab575f80fd5b8201604081850312156117bc575f80fd5b6040805190810167ffffffffffffffff811182821017156117df576117df61147d565b604052813567ffffffffffffffff8111156117f8575f80fd5b61180486828501611567565b825250602082013567ffffffffffffffff811115611820575f80fd5b61182c86828501611567565b602083015250949350505050565b80516116788161146f565b5f60208284031215611855575f80fd5b815167ffffffffffffffff81111561186b575f80fd5b82016060818503121561187c575f80fd5b6118846114aa565b815161188f81611145565b8152602082015167ffffffffffffffff8111156118aa575f80fd5b8201601f810186136118ba575f80fd5b80516118c861158482611522565b8181528760208385010111156118dc575f80fd5b8160208401602083015e5f602083830101528060208501525050506119036040830161183a565b604082015294935050505056fea2646970667358221220115474c7aaa8c062bbbfdcf3a77edb3c05355de6e9f8a02b5df129f9a023088c64736f6c634300081a0033", s = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1, VITE_BOOST_MAINNET_SIGNER_EOA: "0xCBD0C302040bC803B4B2EDaF21Be0e49Deff5480", VITE_BOOST_TESTNET_SIGNER_EOA: "0xd63167e9db11B108940b2E8236581F961f33f396" }, c = class c extends E {
|
|
6
|
+
const R = "0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b61009a565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b6001600160401b03808260011c14610095578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e051610100516119466100c85f395f50505f50505f50505f50505f50506119465ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b366004611106565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f366004611166565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b5061019461020036600461119c565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b3660046111fb565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112a5565b6105c9565b6101aa61075e565b6101606102653660046112e4565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611349565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b0565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611349565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115b9565b610917565b6101aa61037b366004611349565b6109aa565b6101aa61038e366004611349565b6109e7565b34801561039e575f80fd5b506101946103ad366004611349565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611621565b905060200201602081019061053f919061164e565b5f8087878581811061055357610553611621565b90506020020160208101906105689190611349565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a8587018761167d565b925092509250610652835f8151811061064557610645611621565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611621565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b259161174d565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb483850185611785565b90505f815f0151806020019051810190610bce9190611845565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f53565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611020565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff84161561047957604051843b610f0b57825160408114610e8e5760418114610ec85750610f4b565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610edb565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052610f4b565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f805f80610fc5604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f60208284031215611116575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f60608486031215611178575f80fd5b8335925060208401359150604084013561119181611145565b809150509250925092565b5f602082840312156111ac575f80fd5b5035919050565b5f8083601f8401126111c3575f80fd5b50813567ffffffffffffffff8111156111da575f80fd5b6020830191508360208260051b85010111156111f4575f80fd5b9250929050565b5f805f806040858703121561120e575f80fd5b843567ffffffffffffffff811115611224575f80fd5b611230878288016111b3565b909550935050602085013567ffffffffffffffff81111561124f575f80fd5b61125b878288016111b3565b95989497509550505050565b5f8083601f840112611277575f80fd5b50813567ffffffffffffffff81111561128e575f80fd5b6020830191508360208285010111156111f4575f80fd5b5f80602083850312156112b6575f80fd5b823567ffffffffffffffff8111156112cc575f80fd5b6112d885828601611267565b90969095509350505050565b5f805f805f608086880312156112f8575f80fd5b8535945060208601359350604086013561131181611145565b9250606086013567ffffffffffffffff81111561132c575f80fd5b61133888828901611267565b969995985093965092949392505050565b5f60208284031215611359575f80fd5b813561047981611145565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113ea60e0830189611364565b82810360408401526113fc8189611364565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561145e578351835260209384019390920191600101611440565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114cd576114cd61147d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561151a5761151a61147d565b604052919050565b5f67ffffffffffffffff82111561153b5761153b61147d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611576575f80fd5b813561158961158482611522565b6114d3565b81815284602083860101111561159d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115cc575f80fd5b8435935060208501356115de8161146f565b925060408501356115ee81611145565b9150606085013567ffffffffffffffff811115611609575f80fd5b61161587828801611567565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561165e575f80fd5b81358015158114610479575f80fd5b803561167881611145565b919050565b5f805f6060848603121561168f575f80fd5b833567ffffffffffffffff8111156116a5575f80fd5b8401601f810186136116b5575f80fd5b803567ffffffffffffffff8111156116cf576116cf61147d565b8060051b6116df602082016114d3565b918252602081840181019290810190898411156116fa575f80fd5b6020850194505b83851015611728578435925061171683611145565b82825260209485019490910190611701565b809750505050505061173c6020850161166d565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611795575f80fd5b813567ffffffffffffffff8111156117ab575f80fd5b8201604081850312156117bc575f80fd5b6040805190810167ffffffffffffffff811182821017156117df576117df61147d565b604052813567ffffffffffffffff8111156117f8575f80fd5b61180486828501611567565b825250602082013567ffffffffffffffff811115611820575f80fd5b61182c86828501611567565b602083015250949350505050565b80516116788161146f565b5f60208284031215611855575f80fd5b815167ffffffffffffffff81111561186b575f80fd5b82016060818503121561187c575f80fd5b6118846114aa565b815161188f81611145565b8152602082015167ffffffffffffffff8111156118aa575f80fd5b8201601f810186136118ba575f80fd5b80516118c861158482611522565b8181528760208385010111156118dc575f80fd5b8160208401602083015e5f602083830101528060208501525050506119036040830161183a565b604082015294935050505056fea26469706673582212202392f6a5c41e70fb67911cd52729d03aa3cf3bf35387f4648be859c9c32f26b864736f6c634300081a0033", s = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1, VITE_BOOST_MAINNET_SIGNER_EOA: "0xCBD0C302040bC803B4B2EDaF21Be0e49Deff5480", VITE_BOOST_TESTNET_SIGNER_EOA: "0xd63167e9db11B108940b2E8236581F961f33f396" }, c = class c extends E {
|
|
7
7
|
constructor() {
|
|
8
8
|
super(...arguments), this.abi = r;
|
|
9
9
|
}
|
|
@@ -51,7 +51,7 @@ const R = "0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e
|
|
|
51
51
|
*
|
|
52
52
|
* @public
|
|
53
53
|
* @async
|
|
54
|
-
* @param {
|
|
54
|
+
* @param {LimitedSignerValidatorValidatePayload} payload
|
|
55
55
|
* @param {?WriteParams} [params]
|
|
56
56
|
* @returns {Promise<boolean>} - True if the action has been validated based on the data payload
|
|
57
57
|
*/
|
|
@@ -63,7 +63,7 @@ const R = "0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e
|
|
|
63
63
|
*
|
|
64
64
|
* @public
|
|
65
65
|
* @async
|
|
66
|
-
* @param {
|
|
66
|
+
* @param {LimitedSignerValidatorValidatePayload} payload
|
|
67
67
|
* @param {?WriteParams} [params]
|
|
68
68
|
* @returns {Promise<boolean>} - True if the action has been validated based on the data payload
|
|
69
69
|
*/
|
|
@@ -136,14 +136,14 @@ const R = "0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e
|
|
|
136
136
|
* @returns {Promise<{ hash: `0x${string}`; result: void; }>}
|
|
137
137
|
*/
|
|
138
138
|
async setValidatorCallerRaw(f, b) {
|
|
139
|
-
const { request: a, result: e } = await
|
|
139
|
+
const { request: a, result: e } = await w(this._config, {
|
|
140
140
|
address: this.assertValidAddress(),
|
|
141
141
|
args: [f],
|
|
142
142
|
...this.optionallyAttachAccount(),
|
|
143
143
|
// biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally
|
|
144
144
|
...b
|
|
145
145
|
});
|
|
146
|
-
return { hash: await
|
|
146
|
+
return { hash: await V(
|
|
147
147
|
this._config,
|
|
148
148
|
a
|
|
149
149
|
), result: e };
|
|
@@ -165,11 +165,11 @@ const R = "0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e
|
|
|
165
165
|
*
|
|
166
166
|
* @public
|
|
167
167
|
* @async
|
|
168
|
-
* @param {
|
|
168
|
+
* @param {LimitedSignerValidatorClaimDataParams} params
|
|
169
169
|
* @returns {Promise<Hex>}
|
|
170
170
|
*/
|
|
171
171
|
async encodeClaimData(f) {
|
|
172
|
-
return await
|
|
172
|
+
return await S({
|
|
173
173
|
...f,
|
|
174
174
|
validator: this.assertValidAddress()
|
|
175
175
|
});
|
|
@@ -178,7 +178,7 @@ const R = "0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e
|
|
|
178
178
|
* @inheritdoc
|
|
179
179
|
*
|
|
180
180
|
* @public
|
|
181
|
-
* @param {?
|
|
181
|
+
* @param {?LimitedSignerValidatorPayload} [_payload]
|
|
182
182
|
* @param {?DeployableOptions} [_options]
|
|
183
183
|
* @returns {GenericDeployableParams}
|
|
184
184
|
*/
|
|
@@ -190,17 +190,17 @@ const R = "0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e
|
|
|
190
190
|
return {
|
|
191
191
|
abi: r,
|
|
192
192
|
bytecode: R,
|
|
193
|
-
args: [
|
|
193
|
+
args: [C(a)],
|
|
194
194
|
...this.optionallyAttachAccount(e.account)
|
|
195
195
|
};
|
|
196
196
|
}
|
|
197
197
|
};
|
|
198
198
|
c.bases = {
|
|
199
199
|
...s != null && s.VITE_LIMITED_SIGNER_VALIDATOR_BASE ? { 31337: void 0 } : {},
|
|
200
|
-
...
|
|
200
|
+
..._
|
|
201
201
|
}, c.registryType = I.VALIDATOR;
|
|
202
202
|
let o = c;
|
|
203
|
-
async function
|
|
203
|
+
async function S({
|
|
204
204
|
signer: d,
|
|
205
205
|
incentiveData: f,
|
|
206
206
|
chainId: b,
|
|
@@ -231,7 +231,7 @@ async function T({
|
|
|
231
231
|
claimant: t,
|
|
232
232
|
incentiveData: f
|
|
233
233
|
}
|
|
234
|
-
}, u = await d.privateKey.signTypedData(l), h =
|
|
234
|
+
}, u = await d.privateKey.signTypedData(l), h = T({
|
|
235
235
|
signer: d.account,
|
|
236
236
|
signature: u,
|
|
237
237
|
incentiveQuantity: e
|
|
@@ -251,7 +251,7 @@ async function T({
|
|
|
251
251
|
[{ validatorData: h, incentiveData: f }]
|
|
252
252
|
);
|
|
253
253
|
}
|
|
254
|
-
function
|
|
254
|
+
function T({
|
|
255
255
|
signer: d,
|
|
256
256
|
signature: f,
|
|
257
257
|
incentiveQuantity: b
|
|
@@ -271,7 +271,7 @@ function C({
|
|
|
271
271
|
[{ signer: d, signature: f, incentiveQuantity: b }]
|
|
272
272
|
);
|
|
273
273
|
}
|
|
274
|
-
function
|
|
274
|
+
function C({
|
|
275
275
|
signers: d,
|
|
276
276
|
validatorCaller: f,
|
|
277
277
|
maxClaimCount: b
|
|
@@ -288,8 +288,8 @@ function v({
|
|
|
288
288
|
export {
|
|
289
289
|
o as LimitedSignerValidator,
|
|
290
290
|
r as limitedSignerValidatorAbi,
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
291
|
+
S as prepareLimitedSignerValidatorClaimDataPayload,
|
|
292
|
+
T as prepareLimitedSignerValidatorInputParams,
|
|
293
|
+
C as prepareLimitedSignerValidatorPayload
|
|
294
294
|
};
|
|
295
295
|
//# sourceMappingURL=LimitedSignerValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LimitedSignerValidator.js","sources":["../../src/Validators/LimitedSignerValidator.ts"],"sourcesContent":["import {\n limitedSignerValidatorAbi,\n readLimitedSignerValidatorHashSignerData,\n readLimitedSignerValidatorSigners,\n simulateLimitedSignerValidatorSetAuthorized,\n simulateLimitedSignerValidatorSetValidatorCaller,\n simulateLimitedSignerValidatorValidate,\n writeLimitedSignerValidatorSetAuthorized,\n writeLimitedSignerValidatorSetValidatorCaller,\n writeLimitedSignerValidatorValidate,\n} from '@boostxyz/evm';\nimport { bytecode } from '@boostxyz/evm/artifacts/contracts/validators/LimitedSignerValidator.sol/LimitedSignerValidator.json';\nimport {\n type Address,\n type ContractEventName,\n type Hex,\n type PrivateKeyAccount,\n encodeAbiParameters,\n} from 'viem';\nimport { signTypedData } from 'viem/accounts';\nimport { LimitedSignerValidator as SignerValidatorBases } from '../../dist/deployments.json';\nimport type {\n DeployableOptions,\n GenericDeployableParams,\n} from '../Deployable/Deployable';\nimport { DeployableTarget } from '../Deployable/DeployableTarget';\nimport {\n type GenericLog,\n type ReadParams,\n RegistryType,\n type WriteParams,\n} from '../utils';\n\nexport { limitedSignerValidatorAbi };\n\n/**\n * Object reprentation of a {@link LimitedSignerValidator} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorPayload\n * @typedef {LimitedSignerValidatorPayload}\n */\nexport interface LimitedSignerValidatorPayload {\n /**\n * The list of authorized signers. The first address in the list will be the initial owner of the contract.\n *\n * @type {Address[]}\n */\n signers: Address[];\n /**\n * The authorized caller of the {@link prepareSignerValidator} function\n * @type {Address}\n */\n validatorCaller: Address;\n /**\n * The max quantity of claims a user can make for a given incentive,\n * regardless of how many valid transactions they have\n * @type {number}\n */\n maxClaimCount: number;\n}\n\n/**\n * Description placeholder\n *\n * @export\n * @interface LimitedSignerValidatorValidatePayload\n * @typedef {LimitedSignerValidatorValidatePayload}\n */\nexport interface LimitedSignerValidatorValidatePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {bigint}\n */\n incentiveId: bigint;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n claimData: Hex;\n}\n\n/**\n * Object reprentation of a {@link LimitedSignerValidator} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorPayload\n * @typedef {LimitedSignerValidatorPayload}\n */\nexport interface LimitedSignerValidatorPayload {\n /**\n * The list of authorized signers. The first address in the list will be the initial owner of the contract.\n *\n * @type {Address[]}\n */\n signers: Address[];\n /**\n * The authorized caller of the {@link prepareSignerValidator} function\n * @type {Address}\n */\n validatorCaller: Address;\n}\n\n/**\n * Description placeholder\n *\n * @export\n * @interface LimitedSignerValidatorValidatePayload\n * @typedef {LimitedSignerValidatorValidatePayload}\n */\nexport interface LimitedSignerValidatorValidatePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {bigint}\n */\n incentiveId: bigint;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n claimData: Hex;\n}\n\n/**\n * Signer Validator Claim Data Payload\n *\n * @export\n * @interface LimitedSignerValidatorClaimDataParams\n * @typedef {LimitedSignerValidatorClaimDataParams}\n */\nexport interface LimitedSignerValidatorClaimDataParams {\n /**\n * The signer with which to sign the input\n *\n * @type {{\n * account: Address;\n * key: Hex;\n * privateKey: PrivateKeyAccount;\n * }}\n */\n signer: {\n account: Address;\n key: Hex;\n privateKey: PrivateKeyAccount;\n };\n /**\n * The encoded data to provide the underlying incentive. You can use {@link prepareAllowListIncentivePayload}, {@link prepareCGDAIncentivePayload}, {@link prepareERC20IncentivePayload}, {@link prepareERC1155IncentivePayload}, or {@link preparePointsIncentivePayload}\n *\n * @type {Hex}\n */\n incentiveData: Hex;\n /**\n * The chain id to target\n *\n * @type {number}\n */\n chainId: number;\n /**\n * The address of the validator\n *\n * @type {Address}\n */\n validator: Address;\n /**\n * The incentive quantity.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n /**\n * The address of the claimant\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The ID of the boost\n *\n * @type {bigint}\n */\n boostId: bigint;\n}\n\n/**\n * Object representation of a {@link LimitedSignerValidatorInputParams} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorInputParams\n * @typedef {LimitedSignerValidatorInputParams}\n */\nexport interface LimitedSignerValidatorInputParams {\n /**\n * The signer address.\n *\n * @type {Address}\n */\n signer: Address;\n\n /**\n * The signature data.\n *\n * @type {string}\n */\n signature: Hex;\n\n /**\n * The incentive quantity.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n}\n\n/**\n * Object representing the payload for signing before validaton.\n *\n * @export\n * @interface LimitedSignerValidatorSignaturePayload\n * @typedef {LimitedSignerValidatorSignaturePayload}\n */\nexport interface LimitedSignerValidatorSignaturePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n incentiveData: Hex;\n}\n\n/**\n * A generic `viem.Log` event with support for `BoostCore` event types.\n *\n * @export\n * @typedef {LimitedSignerValidatorLog}\n * @template {ContractEventName<\n * typeof limitedSignerValidatorAbi\n * >} [event=ContractEventName<typeof limitedSignerValidatorAbi>]\n */\nexport type LimitedSignerValidatorLog<\n event extends ContractEventName<\n typeof limitedSignerValidatorAbi\n > = ContractEventName<typeof limitedSignerValidatorAbi>,\n> = GenericLog<typeof limitedSignerValidatorAbi, event>;\n\n/**\n * A simple implementation of a Validator that verifies a given signature and checks the recovered address against a set of authorized signers\n *\n * @export\n * @class SignerValidator\n * @typedef {SignerValidator}\n * @extends {DeployableTarget<SignerValidatorPayload>}\n */\nexport class LimitedSignerValidator extends DeployableTarget<\n LimitedSignerValidatorPayload,\n typeof limitedSignerValidatorAbi\n> {\n /**\n * @inheritdoc\n *\n * @public\n * @readonly\n * @type {*}\n */\n public override readonly abi = limitedSignerValidatorAbi;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {Record<number, Address>}\n */\n public static override bases: Record<number, Address> = {\n ...(import.meta.env?.VITE_LIMITED_SIGNER_VALIDATOR_BASE\n ? { 31337: import.meta.env.VITE_LIMITED_SIGNER_VALIDATOR_BASE }\n : {}),\n ...(SignerValidatorBases as Record<number, Address>),\n };\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {RegistryType}\n */\n public static override registryType: RegistryType = RegistryType.VALIDATOR;\n\n /**\n * The set of authorized signers\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?ReadParams} [params]\n * @returns {Promise<boolean>}\n */\n public async signers(address: Address, params?: ReadParams) {\n return await readLimitedSignerValidatorSigners(this._config, {\n address: this.assertValidAddress(),\n args: [address],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Retrieve the hash and signer data for a given hash\n *\n * @public\n * @async\n * @param {SignerValidatorSignaturePayload} payload\n * @param {?ReadParams} [params]\n * @returns {Promise<Hex>}\n */\n public async hashSignerData(\n payload: LimitedSignerValidatorSignaturePayload,\n params?: ReadParams,\n ) {\n return await readLimitedSignerValidatorHashSignerData(this._config, {\n address: this.assertValidAddress(),\n args: [\n payload.boostId,\n payload.incentiveQuantity,\n payload.claimant,\n payload.incentiveData,\n ],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Validate that the action has been completed successfully. The data payload is expected to be a tuple of (address signer, bytes32 hash, bytes signature). The signature is expected to be a valid ECDSA or EIP-1271 signature of a unique hash by an authorized signer.\n *\n * @public\n * @async\n * @param {SignerValidatorValidatePayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the action has been validated based on the data payload\n */\n protected async validate(\n payload: LimitedSignerValidatorValidatePayload,\n params?: WriteParams,\n ) {\n return await this.awaitResult(this.validateRaw(payload, params));\n }\n\n /**\n * Validate that the action has been completed successfully. The data payload is expected to be a tuple of (address signer, bytes32 hash, bytes signature). The signature is expected to be a valid ECDSA or EIP-1271 signature of a unique hash by an authorized signer.\n *\n * @public\n * @async\n * @param {SignerValidatorValidatePayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the action has been validated based on the data payload\n */\n protected async validateRaw(\n payload: LimitedSignerValidatorValidatePayload,\n params?: WriteParams,\n ) {\n const { request, result } = await simulateLimitedSignerValidatorValidate(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [\n payload.boostId,\n payload.incentiveId,\n payload.claimant,\n payload.claimData,\n ],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n },\n );\n const hash = await writeLimitedSignerValidatorValidate(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Set the authorized status of a signer\n *\n * @public\n * @async\n * @param {Address[]} addresses - The list of signers to update\n * @param {boolean[]} allowed - The authorized status of each signer\n * @param {?WriteParams} [params]\n * @returns {Promise<void>}\n */\n public async setAuthorized(\n addresses: Address[],\n allowed: boolean[],\n params?: WriteParams,\n ) {\n return await this.awaitResult(\n this.setAuthorizedRaw(addresses, allowed, params),\n );\n }\n\n /**\n * Set the authorized status of a signer\n *\n * @public\n * @async\n * @param {Address[]} addresses - The list of signers to update\n * @param {boolean[]} allowed - The authorized status of each signer\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: void; }>}\n */\n public async setAuthorizedRaw(\n addresses: Address[],\n allowed: boolean[],\n params?: WriteParams,\n ) {\n const { request, result } =\n await simulateLimitedSignerValidatorSetAuthorized(this._config, {\n address: this.assertValidAddress(),\n args: [addresses, allowed],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n const hash = await writeLimitedSignerValidatorSetAuthorized(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Update the authorized caller of the validator function\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: void; }>}\n */\n public async setValidatorCallerRaw(address: Address, params?: WriteParams) {\n const { request, result } =\n await simulateLimitedSignerValidatorSetValidatorCaller(this._config, {\n address: this.assertValidAddress(),\n args: [address],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n const hash = await writeLimitedSignerValidatorSetValidatorCaller(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Update the authorized caller of the validator function\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?WriteParams} [params]\n * @returns {Promise<void>}\n */\n public async setValidatorCaller(address: Address, params?: WriteParams) {\n return await this.awaitResult(this.setValidatorCallerRaw(address, params));\n }\n\n /**\n * Properly encodes the data needed to claim\n *\n * @public\n * @async\n * @param {SignerValidatorClaimDataParams} params\n * @returns {Promise<Hex>}\n */\n public async encodeClaimData(\n params: Omit<LimitedSignerValidatorClaimDataParams, 'validator'>,\n ): Promise<Hex> {\n return await prepareLimitedSignerValidatorClaimDataPayload({\n ...params,\n validator: this.assertValidAddress(),\n });\n }\n\n /**\n * @inheritdoc\n *\n * @public\n * @param {?SignerValidatorPayload} [_payload]\n * @param {?DeployableOptions} [_options]\n * @returns {GenericDeployableParams}\n */\n public override buildParameters(\n _payload?: LimitedSignerValidatorPayload,\n _options?: DeployableOptions,\n ): GenericDeployableParams {\n const [payload, options] = this.validateDeploymentConfig(\n _payload,\n _options,\n );\n return {\n abi: limitedSignerValidatorAbi,\n bytecode: bytecode as Hex,\n args: [prepareLimitedSignerValidatorPayload(payload)],\n ...this.optionallyAttachAccount(options.account),\n };\n }\n}\n\n/**\n * Signer Validator Claim Data Payload Preparation\n *\n * @export\n * @async\n * @param {SignerValidatorClaimDataParams} param0\n * @param {{ account: Address; key: Hex; privateKey: PrivateKeyAccount; }} param0.signer\n * @param {Hex} param0.incentiveData\n * @param {number} param0.chainId\n * @param {Address} param0.validator\n * @param {number} param0.incentiveQuantity\n * @param {Address} param0.claimant\n * @param {bigint} param0.boostId\n * @returns {Promise<Hex>}\n */\nexport async function prepareLimitedSignerValidatorClaimDataPayload({\n signer,\n incentiveData,\n chainId,\n validator,\n incentiveQuantity,\n claimant,\n boostId,\n}: LimitedSignerValidatorClaimDataParams): Promise<Hex> {\n const domain = {\n name: 'LimitedSignerValidator',\n version: '1',\n chainId: chainId,\n verifyingContract: validator,\n };\n const typedData = {\n domain,\n types: {\n SignerValidatorData: [\n { name: 'boostId', type: 'uint256' },\n { name: 'incentiveQuantity', type: 'uint8' },\n { name: 'claimant', type: 'address' },\n { name: 'incentiveData', type: 'bytes' },\n ],\n },\n primaryType: 'SignerValidatorData' as const,\n message: {\n boostId,\n incentiveQuantity,\n claimant,\n incentiveData: incentiveData,\n },\n };\n\n const trustedSignature = await signer.privateKey.signTypedData(typedData);\n\n // Prepare the claim data payload using the new helper\n const validatorData = prepareLimitedSignerValidatorInputParams({\n signer: signer.account,\n signature: trustedSignature,\n incentiveQuantity, // Adjust incentive quantity as necessary\n });\n\n const boostClaimDataPayload = encodeAbiParameters(\n [\n {\n type: 'tuple',\n name: 'BoostClaimData',\n components: [\n { type: 'bytes', name: 'validatorData' },\n { type: 'bytes', name: 'incentiveData' },\n ],\n },\n ],\n [{ validatorData, incentiveData }],\n );\n\n return boostClaimDataPayload;\n}\n\n/**\n * Given a {@link SignerValidatorInputParams}, properly encode the initialization payload.\n *\n * @param {SignerValidatorInputParams} param0\n * @param {Address} param0.signer\n * @param {Hex} param0.signature\n * @param {number} param0.incentiveQuantity\n * @returns {Hex}\n */\nexport function prepareLimitedSignerValidatorInputParams({\n signer,\n signature,\n incentiveQuantity,\n}: LimitedSignerValidatorInputParams) {\n return encodeAbiParameters(\n [\n {\n type: 'tuple',\n name: 'SignerValidatorInputParams',\n components: [\n { type: 'address', name: 'signer' },\n { type: 'bytes', name: 'signature' },\n { type: 'uint8', name: 'incentiveQuantity' },\n ],\n },\n ],\n [{ signer, signature, incentiveQuantity }],\n );\n}\n\n/**\n * Given a {@link SignerValidatorPayload}, properly encode the initialization payload.\n *\n * @param {SignerValidatorPayload} param0\n SignerValidator: class TSignerValidator extends SignerValidator {\n public static override bases: Record<number, Address> = {\n [chainId]: signerValidatorBase,\n };\n },\n * @param {Address[]} param0.signers\n * @param {Address} param0.validatorCaller\n * @returns {Hex}\n */\nexport function prepareLimitedSignerValidatorPayload({\n signers,\n validatorCaller,\n maxClaimCount,\n}: LimitedSignerValidatorPayload) {\n return encodeAbiParameters(\n [\n { type: 'address[]', name: 'signers' },\n { type: 'address', name: 'validatorCaller' },\n { type: 'uint256', name: 'maxClaimCount' },\n ],\n [signers, validatorCaller, BigInt(maxClaimCount)],\n );\n}\n"],"names":["_LimitedSignerValidator","DeployableTarget","limitedSignerValidatorAbi","address","params","readLimitedSignerValidatorSigners","payload","readLimitedSignerValidatorHashSignerData","request","result","simulateLimitedSignerValidatorValidate","writeLimitedSignerValidatorValidate","addresses","allowed","simulateLimitedSignerValidatorSetAuthorized","writeLimitedSignerValidatorSetAuthorized","simulateLimitedSignerValidatorSetValidatorCaller","writeLimitedSignerValidatorSetValidatorCaller","prepareLimitedSignerValidatorClaimDataPayload","_payload","_options","options","bytecode","prepareLimitedSignerValidatorPayload","__vite_import_meta_env__","SignerValidatorBases","RegistryType","LimitedSignerValidator","signer","incentiveData","chainId","validator","incentiveQuantity","claimant","boostId","typedData","trustedSignature","validatorData","prepareLimitedSignerValidatorInputParams","encodeAbiParameters","signature","signers","validatorCaller","maxClaimCount"],"mappings":";;;;;6waA0SaA,IAAN,MAAMA,UAA+BC,EAG1C;AAAA,EAHK,cAAA;AAAA,UAAA,GAAA,SAAA,GAWL,KAAyB,MAAMC;AAAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgC/B,MAAa,QAAQC,GAAkBC,GAAqB;AACnD,WAAA,MAAMC,EAAkC,KAAK,SAAS;AAAA,MAC3D,SAAS,KAAK,mBAAmB;AAAA,MACjC,MAAM,CAACF,CAAO;AAAA;AAAA,MAEd,GAAIC;AAAA,IAAA,CACL;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,eACXE,GACAF,GACA;AACO,WAAA,MAAMG,EAAyC,KAAK,SAAS;AAAA,MAClE,SAAS,KAAK,mBAAmB;AAAA,MACjC,MAAM;AAAA,QACJD,EAAQ;AAAA,QACRA,EAAQ;AAAA,QACRA,EAAQ;AAAA,QACRA,EAAQ;AAAA,MACV;AAAA;AAAA,MAEA,GAAIF;AAAA,IAAA,CACL;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAgB,SACdE,GACAF,GACA;AACA,WAAO,MAAM,KAAK,YAAY,KAAK,YAAYE,GAASF,CAAM,CAAC;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAgB,YACdE,GACAF,GACA;AACA,UAAM,EAAE,SAAAI,GAAS,QAAAC,EAAO,IAAI,MAAMC;AAAAA,MAChC,KAAK;AAAA,MACL;AAAA,QACE,SAAS,KAAK,mBAAmB;AAAA,QACjC,MAAM;AAAA,UACJJ,EAAQ;AAAA,UACRA,EAAQ;AAAA,UACRA,EAAQ;AAAA,UACRA,EAAQ;AAAA,QACV;AAAA,QACA,GAAG,KAAK,wBAAwB;AAAA;AAAA,QAEhC,GAAIF;AAAA,MACN;AAAA,IAAA;AAMK,WAAA,EAAE,MAJI,MAAMO;AAAAA,MACjB,KAAK;AAAA,MACLH;AAAA,IAAA,GAEa,QAAAC;EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,cACXG,GACAC,GACAT,GACA;AACA,WAAO,MAAM,KAAK;AAAA,MAChB,KAAK,iBAAiBQ,GAAWC,GAAST,CAAM;AAAA,IAAA;AAAA,EAEpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,iBACXQ,GACAC,GACAT,GACA;AACA,UAAM,EAAE,SAAAI,GAAS,QAAAC,EAAA,IACf,MAAMK,EAA4C,KAAK,SAAS;AAAA,MAC9D,SAAS,KAAK,mBAAmB;AAAA,MACjC,MAAM,CAACF,GAAWC,CAAO;AAAA,MACzB,GAAG,KAAK,wBAAwB;AAAA;AAAA,MAEhC,GAAIT;AAAA,IAAA,CACL;AAKI,WAAA,EAAE,MAJI,MAAMW;AAAAA,MACjB,KAAK;AAAA,MACLP;AAAA,IAAA,GAEa,QAAAC;EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,sBAAsBN,GAAkBC,GAAsB;AACzE,UAAM,EAAE,SAAAI,GAAS,QAAAC,EAAA,IACf,MAAMO,EAAiD,KAAK,SAAS;AAAA,MACnE,SAAS,KAAK,mBAAmB;AAAA,MACjC,MAAM,CAACb,CAAO;AAAA,MACd,GAAG,KAAK,wBAAwB;AAAA;AAAA,MAEhC,GAAIC;AAAA,IAAA,CACL;AAKI,WAAA,EAAE,MAJI,MAAMa;AAAAA,MACjB,KAAK;AAAA,MACLT;AAAA,IAAA,GAEa,QAAAC;EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,mBAAmBN,GAAkBC,GAAsB;AACtE,WAAO,MAAM,KAAK,YAAY,KAAK,sBAAsBD,GAASC,CAAM,CAAC;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,gBACXA,GACc;AACd,WAAO,MAAMc,EAA8C;AAAA,MACzD,GAAGd;AAAA,MACH,WAAW,KAAK,mBAAmB;AAAA,IAAA,CACpC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUgB,gBACde,GACAC,GACyB;AACzB,UAAM,CAACd,GAASe,CAAO,IAAI,KAAK;AAAA,MAC9BF;AAAA,MACAC;AAAA,IAAA;AAEK,WAAA;AAAA,MACL,KAAKlB;AAAAA,MACL,UAAAoB;AAAA,MACA,MAAM,CAACC,EAAqCjB,CAAO,CAAC;AAAA,MACpD,GAAG,KAAK,wBAAwBe,EAAQ,OAAO;AAAA,IAAA;AAAA,EAEnD;AACF;AA9OErB,EAAuB,QAAiC;AAAA,EACtD,GAAIwB,KAAA,QAAAA,EAAiB,qCACjB,EAAE,OAAO,WACT,CAAC;AAAA,EACL,GAAIC;AAAA,GASNzB,EAAuB,eAA6B0B,EAAa;AAhC5D,IAAMC,IAAN3B;AAkRP,eAAsBkB,EAA8C;AAAA,EAClE,QAAAU;AAAA,EACA,eAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AACF,GAAwD;AAOtD,QAAMC,IAAY;AAAA,IAChB,QAPa;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAAL;AAAA,MACA,mBAAmBC;AAAA,IAAA;AAAA,IAInB,OAAO;AAAA,MACL,qBAAqB;AAAA,QACnB,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,QACnC,EAAE,MAAM,qBAAqB,MAAM,QAAQ;AAAA,QAC3C,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC,EAAE,MAAM,iBAAiB,MAAM,QAAQ;AAAA,MACzC;AAAA,IACF;AAAA,IACA,aAAa;AAAA,IACb,SAAS;AAAA,MACP,SAAAG;AAAA,MACA,mBAAAF;AAAA,MACA,UAAAC;AAAA,MACA,eAAAJ;AAAA,IACF;AAAA,EAAA,GAGIO,IAAmB,MAAMR,EAAO,WAAW,cAAcO,CAAS,GAGlEE,IAAgBC,EAAyC;AAAA,IAC7D,QAAQV,EAAO;AAAA,IACf,WAAWQ;AAAA,IACX,mBAAAJ;AAAA;AAAA,EAAA,CACD;AAgBM,SAduBO;AAAA,IAC5B;AAAA,MACE;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,SAAS,MAAM,gBAAgB;AAAA,UACvC,EAAE,MAAM,SAAS,MAAM,gBAAgB;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,EAAE,eAAAF,GAAe,eAAAR,GAAe;AAAA,EAAA;AAIrC;AAWO,SAASS,EAAyC;AAAA,EACvD,QAAAV;AAAA,EACA,WAAAY;AAAA,EACA,mBAAAR;AACF,GAAsC;AAC7B,SAAAO;AAAA,IACL;AAAA,MACE;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,WAAW,MAAM,SAAS;AAAA,UAClC,EAAE,MAAM,SAAS,MAAM,YAAY;AAAA,UACnC,EAAE,MAAM,SAAS,MAAM,oBAAoB;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,EAAE,QAAAX,GAAQ,WAAAY,GAAW,mBAAAR,GAAmB;AAAA,EAAA;AAE7C;AAeO,SAAST,EAAqC;AAAA,EACnD,SAAAkB;AAAA,EACA,iBAAAC;AAAA,EACA,eAAAC;AACF,GAAkC;AACzB,SAAAJ;AAAA,IACL;AAAA,MACE,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,MACrC,EAAE,MAAM,WAAW,MAAM,kBAAkB;AAAA,MAC3C,EAAE,MAAM,WAAW,MAAM,gBAAgB;AAAA,IAC3C;AAAA,IACA,CAACE,GAASC,GAAiB,OAAOC,CAAa,CAAC;AAAA,EAAA;AAEpD;"}
|
|
1
|
+
{"version":3,"file":"LimitedSignerValidator.js","sources":["../../src/Validators/LimitedSignerValidator.ts"],"sourcesContent":["import {\n limitedSignerValidatorAbi,\n readLimitedSignerValidatorHashSignerData,\n readLimitedSignerValidatorSigners,\n simulateLimitedSignerValidatorSetAuthorized,\n simulateLimitedSignerValidatorSetValidatorCaller,\n simulateLimitedSignerValidatorValidate,\n writeLimitedSignerValidatorSetAuthorized,\n writeLimitedSignerValidatorSetValidatorCaller,\n writeLimitedSignerValidatorValidate,\n} from '@boostxyz/evm';\nimport { bytecode } from '@boostxyz/evm/artifacts/contracts/validators/LimitedSignerValidator.sol/LimitedSignerValidator.json';\nimport {\n type Address,\n type ContractEventName,\n type Hex,\n type PrivateKeyAccount,\n encodeAbiParameters,\n} from 'viem';\nimport { LimitedSignerValidator as SignerValidatorBases } from '../../dist/deployments.json';\nimport type {\n DeployableOptions,\n GenericDeployableParams,\n} from '../Deployable/Deployable';\nimport { DeployableTarget } from '../Deployable/DeployableTarget';\nimport {\n type GenericLog,\n type ReadParams,\n RegistryType,\n type WriteParams,\n} from '../utils';\n\nexport { limitedSignerValidatorAbi };\n\n/**\n * Object reprentation of a {@link LimitedSignerValidator} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorPayload\n * @typedef {LimitedSignerValidatorPayload}\n */\nexport interface LimitedSignerValidatorPayload {\n /**\n * The list of authorized signers. The first address in the list will be the initial owner of the contract.\n *\n * @type {Address[]}\n */\n signers: Address[];\n /**\n * The authorized caller of the {@link prepareSignerValidator} function\n * @type {Address}\n */\n validatorCaller: Address;\n /**\n * The max quantity of claims a user can make for a given incentive,\n * regardless of how many valid transactions they have\n * @type {number}\n */\n maxClaimCount: number;\n}\n\n/**\n * Description placeholder\n *\n * @export\n * @interface LimitedSignerValidatorValidatePayload\n * @typedef {LimitedSignerValidatorValidatePayload}\n */\nexport interface LimitedSignerValidatorValidatePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {bigint}\n */\n incentiveId: bigint;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n claimData: Hex;\n}\n\n/**\n * Object reprentation of a {@link LimitedSignerValidator} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorPayload\n * @typedef {LimitedSignerValidatorPayload}\n */\nexport interface LimitedSignerValidatorPayload {\n /**\n * The list of authorized signers. The first address in the list will be the initial owner of the contract.\n *\n * @type {Address[]}\n */\n signers: Address[];\n /**\n * The authorized caller of the {@link prepareSignerValidator} function\n * @type {Address}\n */\n validatorCaller: Address;\n}\n\n/**\n * Description placeholder\n *\n * @export\n * @interface LimitedSignerValidatorValidatePayload\n * @typedef {LimitedSignerValidatorValidatePayload}\n */\nexport interface LimitedSignerValidatorValidatePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {bigint}\n */\n incentiveId: bigint;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n claimData: Hex;\n}\n\n/**\n * Signer Validator Claim Data Payload\n *\n * @export\n * @interface LimitedSignerValidatorClaimDataParams\n * @typedef {LimitedSignerValidatorClaimDataParams}\n */\nexport interface LimitedSignerValidatorClaimDataParams {\n /**\n * The signer with which to sign the input\n *\n * @type {{\n * account: Address;\n * key: Hex;\n * privateKey: PrivateKeyAccount;\n * }}\n */\n signer: {\n account: Address;\n key: Hex;\n privateKey: PrivateKeyAccount;\n };\n /**\n * The encoded data to provide the underlying incentive. You can use {@link prepareAllowListIncentivePayload}, {@link prepareCGDAIncentivePayload}, {@link prepareERC20IncentivePayload}, {@link prepareERC1155IncentivePayload}, or {@link preparePointsIncentivePayload}\n *\n * @type {Hex}\n */\n incentiveData: Hex;\n /**\n * The chain id to target\n *\n * @type {number}\n */\n chainId: number;\n /**\n * The address of the validator\n *\n * @type {Address}\n */\n validator: Address;\n /**\n * The incentive quantity.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n /**\n * The address of the claimant\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The ID of the boost\n *\n * @type {bigint}\n */\n boostId: bigint;\n}\n\n/**\n * Object representation of a {@link LimitedSignerValidatorInputParams} initialization payload\n *\n * @export\n * @interface LimitedSignerValidatorInputParams\n * @typedef {LimitedSignerValidatorInputParams}\n */\nexport interface LimitedSignerValidatorInputParams {\n /**\n * The signer address.\n *\n * @type {Address}\n */\n signer: Address;\n\n /**\n * The signature data.\n *\n * @type {string}\n */\n signature: Hex;\n\n /**\n * The incentive quantity.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n}\n\n/**\n * Object representing the payload for signing before validaton.\n *\n * @export\n * @interface LimitedSignerValidatorSignaturePayload\n * @typedef {LimitedSignerValidatorSignaturePayload}\n */\nexport interface LimitedSignerValidatorSignaturePayload {\n /**\n * The ID of the boost.\n *\n * @type {bigint}\n */\n boostId: bigint;\n /**\n * The ID of the incentive.\n *\n * @type {number}\n */\n incentiveQuantity: number;\n /**\n * The address of the claimant.\n *\n * @type {Address}\n */\n claimant: Address;\n /**\n * The claim data.\n *\n * @type {Hex}\n */\n incentiveData: Hex;\n}\n\n/**\n * A generic `viem.Log` event with support for `BoostCore` event types.\n *\n * @export\n * @typedef {LimitedSignerValidatorLog}\n * @template {ContractEventName<\n * typeof limitedSignerValidatorAbi\n * >} [event=ContractEventName<typeof limitedSignerValidatorAbi>]\n */\nexport type LimitedSignerValidatorLog<\n event extends ContractEventName<\n typeof limitedSignerValidatorAbi\n > = ContractEventName<typeof limitedSignerValidatorAbi>,\n> = GenericLog<typeof limitedSignerValidatorAbi, event>;\n\n/**\n * A simple implementation of a Validator that verifies a given signature and checks the recovered address against a set of authorized signers\n *\n * @export\n * @class LimitedSignerValidator\n * @typedef {LimitedSignerValidator}\n * @extends {DeployableTarget<LimitedSignerValidatorPayload>}\n */\nexport class LimitedSignerValidator extends DeployableTarget<\n LimitedSignerValidatorPayload,\n typeof limitedSignerValidatorAbi\n> {\n /**\n * @inheritdoc\n *\n * @public\n * @readonly\n * @type {*}\n */\n public override readonly abi = limitedSignerValidatorAbi;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {Record<number, Address>}\n */\n public static override bases: Record<number, Address> = {\n ...(import.meta.env?.VITE_LIMITED_SIGNER_VALIDATOR_BASE\n ? { 31337: import.meta.env.VITE_LIMITED_SIGNER_VALIDATOR_BASE }\n : {}),\n ...(SignerValidatorBases as Record<number, Address>),\n };\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {RegistryType}\n */\n public static override registryType: RegistryType = RegistryType.VALIDATOR;\n\n /**\n * The set of authorized signers\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?ReadParams} [params]\n * @returns {Promise<boolean>}\n */\n public async signers(address: Address, params?: ReadParams) {\n return await readLimitedSignerValidatorSigners(this._config, {\n address: this.assertValidAddress(),\n args: [address],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Retrieve the hash and signer data for a given hash\n *\n * @public\n * @async\n * @param {SignerValidatorSignaturePayload} payload\n * @param {?ReadParams} [params]\n * @returns {Promise<Hex>}\n */\n public async hashSignerData(\n payload: LimitedSignerValidatorSignaturePayload,\n params?: ReadParams,\n ) {\n return await readLimitedSignerValidatorHashSignerData(this._config, {\n address: this.assertValidAddress(),\n args: [\n payload.boostId,\n payload.incentiveQuantity,\n payload.claimant,\n payload.incentiveData,\n ],\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n }\n\n /**\n * Validate that the action has been completed successfully. The data payload is expected to be a tuple of (address signer, bytes32 hash, bytes signature). The signature is expected to be a valid ECDSA or EIP-1271 signature of a unique hash by an authorized signer.\n *\n * @public\n * @async\n * @param {LimitedSignerValidatorValidatePayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the action has been validated based on the data payload\n */\n public async validate(\n payload: LimitedSignerValidatorValidatePayload,\n params?: WriteParams,\n ) {\n return await this.awaitResult(this.validateRaw(payload, params));\n }\n\n /**\n * Validate that the action has been completed successfully. The data payload is expected to be a tuple of (address signer, bytes32 hash, bytes signature). The signature is expected to be a valid ECDSA or EIP-1271 signature of a unique hash by an authorized signer.\n *\n * @public\n * @async\n * @param {LimitedSignerValidatorValidatePayload} payload\n * @param {?WriteParams} [params]\n * @returns {Promise<boolean>} - True if the action has been validated based on the data payload\n */\n public async validateRaw(\n payload: LimitedSignerValidatorValidatePayload,\n params?: WriteParams,\n ) {\n const { request, result } = await simulateLimitedSignerValidatorValidate(\n this._config,\n {\n address: this.assertValidAddress(),\n args: [\n payload.boostId,\n payload.incentiveId,\n payload.claimant,\n payload.claimData,\n ],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n },\n );\n const hash = await writeLimitedSignerValidatorValidate(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Set the authorized status of a signer\n *\n * @public\n * @async\n * @param {Address[]} addresses - The list of signers to update\n * @param {boolean[]} allowed - The authorized status of each signer\n * @param {?WriteParams} [params]\n * @returns {Promise<void>}\n */\n public async setAuthorized(\n addresses: Address[],\n allowed: boolean[],\n params?: WriteParams,\n ) {\n return await this.awaitResult(\n this.setAuthorizedRaw(addresses, allowed, params),\n );\n }\n\n /**\n * Set the authorized status of a signer\n *\n * @public\n * @async\n * @param {Address[]} addresses - The list of signers to update\n * @param {boolean[]} allowed - The authorized status of each signer\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: void; }>}\n */\n public async setAuthorizedRaw(\n addresses: Address[],\n allowed: boolean[],\n params?: WriteParams,\n ) {\n const { request, result } =\n await simulateLimitedSignerValidatorSetAuthorized(this._config, {\n address: this.assertValidAddress(),\n args: [addresses, allowed],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n const hash = await writeLimitedSignerValidatorSetAuthorized(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Update the authorized caller of the validator function\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: void; }>}\n */\n public async setValidatorCallerRaw(address: Address, params?: WriteParams) {\n const { request, result } =\n await simulateLimitedSignerValidatorSetValidatorCaller(this._config, {\n address: this.assertValidAddress(),\n args: [address],\n ...this.optionallyAttachAccount(),\n // biome-ignore lint/suspicious/noExplicitAny: Accept any shape of valid wagmi/viem parameters, wagmi does the same thing internally\n ...(params as any),\n });\n const hash = await writeLimitedSignerValidatorSetValidatorCaller(\n this._config,\n request,\n );\n return { hash, result };\n }\n\n /**\n * Update the authorized caller of the validator function\n *\n * @public\n * @async\n * @param {Address} address\n * @param {?WriteParams} [params]\n * @returns {Promise<void>}\n */\n public async setValidatorCaller(address: Address, params?: WriteParams) {\n return await this.awaitResult(this.setValidatorCallerRaw(address, params));\n }\n\n /**\n * Properly encodes the data needed to claim\n *\n * @public\n * @async\n * @param {LimitedSignerValidatorClaimDataParams} params\n * @returns {Promise<Hex>}\n */\n public async encodeClaimData(\n params: Omit<LimitedSignerValidatorClaimDataParams, 'validator'>,\n ): Promise<Hex> {\n return await prepareLimitedSignerValidatorClaimDataPayload({\n ...params,\n validator: this.assertValidAddress(),\n });\n }\n\n /**\n * @inheritdoc\n *\n * @public\n * @param {?LimitedSignerValidatorPayload} [_payload]\n * @param {?DeployableOptions} [_options]\n * @returns {GenericDeployableParams}\n */\n public override buildParameters(\n _payload?: LimitedSignerValidatorPayload,\n _options?: DeployableOptions,\n ): GenericDeployableParams {\n const [payload, options] = this.validateDeploymentConfig(\n _payload,\n _options,\n );\n return {\n abi: limitedSignerValidatorAbi,\n bytecode: bytecode as Hex,\n args: [prepareLimitedSignerValidatorPayload(payload)],\n ...this.optionallyAttachAccount(options.account),\n };\n }\n}\n\n/**\n * Signer Validator Claim Data Payload Preparation\n *\n * @export\n * @async\n * @param {SignerValidatorClaimDataParams} param0\n * @param {{ account: Address; key: Hex; privateKey: PrivateKeyAccount; }} param0.signer\n * @param {Hex} param0.incentiveData\n * @param {number} param0.chainId\n * @param {Address} param0.validator\n * @param {number} param0.incentiveQuantity\n * @param {Address} param0.claimant\n * @param {bigint} param0.boostId\n * @returns {Promise<Hex>}\n */\nexport async function prepareLimitedSignerValidatorClaimDataPayload({\n signer,\n incentiveData,\n chainId,\n validator,\n incentiveQuantity,\n claimant,\n boostId,\n}: LimitedSignerValidatorClaimDataParams): Promise<Hex> {\n const domain = {\n name: 'LimitedSignerValidator',\n version: '1',\n chainId: chainId,\n verifyingContract: validator,\n };\n const typedData = {\n domain,\n types: {\n SignerValidatorData: [\n { name: 'boostId', type: 'uint256' },\n { name: 'incentiveQuantity', type: 'uint8' },\n { name: 'claimant', type: 'address' },\n { name: 'incentiveData', type: 'bytes' },\n ],\n },\n primaryType: 'SignerValidatorData' as const,\n message: {\n boostId,\n incentiveQuantity,\n claimant,\n incentiveData: incentiveData,\n },\n };\n\n const trustedSignature = await signer.privateKey.signTypedData(typedData);\n\n // Prepare the claim data payload using the new helper\n const validatorData = prepareLimitedSignerValidatorInputParams({\n signer: signer.account,\n signature: trustedSignature,\n incentiveQuantity, // Adjust incentive quantity as necessary\n });\n\n const boostClaimDataPayload = encodeAbiParameters(\n [\n {\n type: 'tuple',\n name: 'BoostClaimData',\n components: [\n { type: 'bytes', name: 'validatorData' },\n { type: 'bytes', name: 'incentiveData' },\n ],\n },\n ],\n [{ validatorData, incentiveData }],\n );\n\n return boostClaimDataPayload;\n}\n\n/**\n * Given a {@link SignerValidatorInputParams}, properly encode the initialization payload.\n *\n * @param {SignerValidatorInputParams} param0\n * @param {Address} param0.signer\n * @param {Hex} param0.signature\n * @param {number} param0.incentiveQuantity\n * @returns {Hex}\n */\nexport function prepareLimitedSignerValidatorInputParams({\n signer,\n signature,\n incentiveQuantity,\n}: LimitedSignerValidatorInputParams) {\n return encodeAbiParameters(\n [\n {\n type: 'tuple',\n name: 'SignerValidatorInputParams',\n components: [\n { type: 'address', name: 'signer' },\n { type: 'bytes', name: 'signature' },\n { type: 'uint8', name: 'incentiveQuantity' },\n ],\n },\n ],\n [{ signer, signature, incentiveQuantity }],\n );\n}\n\n/**\n * Given a {@link SignerValidatorPayload}, properly encode the initialization payload.\n *\n * @param {SignerValidatorPayload} param0\n SignerValidator: class TSignerValidator extends SignerValidator {\n public static override bases: Record<number, Address> = {\n [chainId]: signerValidatorBase,\n };\n },\n * @param {Address[]} param0.signers\n * @param {Address} param0.validatorCaller\n * @returns {Hex}\n */\nexport function prepareLimitedSignerValidatorPayload({\n signers,\n validatorCaller,\n maxClaimCount,\n}: LimitedSignerValidatorPayload) {\n return encodeAbiParameters(\n [\n { type: 'address[]', name: 'signers' },\n { type: 'address', name: 'validatorCaller' },\n { type: 'uint256', name: 'maxClaimCount' },\n ],\n [signers, validatorCaller, BigInt(maxClaimCount)],\n );\n}\n"],"names":["_LimitedSignerValidator","DeployableTarget","limitedSignerValidatorAbi","address","params","readLimitedSignerValidatorSigners","payload","readLimitedSignerValidatorHashSignerData","request","result","simulateLimitedSignerValidatorValidate","writeLimitedSignerValidatorValidate","addresses","allowed","simulateLimitedSignerValidatorSetAuthorized","writeLimitedSignerValidatorSetAuthorized","simulateLimitedSignerValidatorSetValidatorCaller","writeLimitedSignerValidatorSetValidatorCaller","prepareLimitedSignerValidatorClaimDataPayload","_payload","_options","options","bytecode","prepareLimitedSignerValidatorPayload","__vite_import_meta_env__","SignerValidatorBases","RegistryType","LimitedSignerValidator","signer","incentiveData","chainId","validator","incentiveQuantity","claimant","boostId","typedData","trustedSignature","validatorData","prepareLimitedSignerValidatorInputParams","encodeAbiParameters","signature","signers","validatorCaller","maxClaimCount"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../generated-CkZm1EVH.cjs"),n=require("viem"),A=require("../deployments-uLDgrxCp.cjs"),D=require("../Deployable/DeployableTarget.cjs"),S=require("../utils.cjs"),w="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b61009a565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b6001600160401b03808260011c14610095578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e051610100516119cf6100c85f395f50505f50505f50505f50505f50506119cf5ff3fe608060405260043610610157575f3560e01c8063703b6900116100bb578063a1d2756f11610071578063f04e283e11610057578063f04e283e146103d2578063f2fde38b146103e5578063fee81cf4146103f8575f80fd5b8063a1d2756f1461039e578063ce5c134f146103bd575f80fd5b8063736c0d5b116100a1578063736c0d5b146102f657806384b0196e146103245780638da5cb5b1461034b575f80fd5b8063703b6900146102db578063715018a6146102ee575f80fd5b8063394ff18111610110578063439fab91116100f6578063439fab911461029557806354d1f13d146102b4578063637d7cbe146102bc575f80fd5b8063394ff1811461022b5780634359d28a14610276575f80fd5b8063256929621161014057806325692962146101bc57806328d6183b146101c65780632f9e058b14610200575f80fd5b806301ffc9a71461015b5780630668e9d41461018f575b5f80fd5b348015610166575f80fd5b5061017a610175366004611170565b610429565b60405190151581526020015b60405180910390f35b34801561019a575f80fd5b506101ae6101a93660046111d0565b610484565b604051908152602001610186565b6101c46104e5565b005b3480156101d1575f80fd5b506040517ff1a436d9000000000000000000000000000000000000000000000000000000008152602001610186565b34801561020b575f80fd5b506101ae61021a366004611206565b60016020525f908152604090205481565b348015610236575f80fd5b50604080518082018252601881527f4c696d697465645369676e657256616c696461746f7256320000000000000000602082015290516101869190611269565b348015610281575f80fd5b506101c46102903660046112c3565b610532565b3480156102a0575f80fd5b506101c46102af36600461136d565b61062e565b6101c46107c3565b3480156102c7575f80fd5b506101ae6102d63660046114f6565b6107fc565b61017a6102e9366004611572565b61089d565b6101c461095f565b348015610301575f80fd5b5061017a6103103660046115d7565b5f6020819052908152604090205460ff1681565b34801561032f575f80fd5b50610338610972565b60405161018697969594939291906115f2565b348015610356575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610186565b3480156103a9575f80fd5b506101c46103b83660046115d7565b610a1a565b3480156103c8575f80fd5b506101ae60025481565b6101c46103e03660046115d7565b610a69565b6101c46103f33660046115d7565b610aa6565b348015610403575f80fd5b506101ae6104123660046115d7565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167ff1a436d900000000000000000000000000000000000000000000000000000000148061047e575061047e82610acc565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61053a610b21565b828114610573576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106275782828281811061058f5761058f6116b1565b90506020020160208101906105a491906116de565b5f808787858181106105b8576105b86116b1565b90506020020160208101906105cd91906115d7565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610575565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561067f5760018160011c14303b106106765763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061068f8587018761170d565b9250925092506106b7835f815181106106aa576106aa6116b1565b6020026020010151610b56565b60028190555f5b83518110156107415760015f808684815181106106dd576106dd6116b1565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016106be565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555080156107be576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b8151602080840191909120604080517f8fb7610832fbad31db1c5a2a863d64e24447977c1c2eee76e29788abaf1cf3a593810193909352820187905260ff8616606083015273ffffffffffffffffffffffffffffffffffffffff808616608084015260a0830191909152821660c08201525f906108919060e00160405160208183030381529060405280519060200120610bb9565b90505b95945050505050565b5f806108aa878787610484565b5f81815260016020819052604082205492935090916108c8916117dd565b9050600254811115610923576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024015b60405180910390fd5b5f6109318989898989610be5565b905080610943575f9350505050610894565b505f918252600160208190526040909220559695505050505050565b610967610b21565b6109705f610d72565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610a08604080518082018252601881527f4c696d697465645369676e657256616c696461746f72563200000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610a22610b21565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a71610b21565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f9055610aa381610d72565b50565b610aae610b21565b8060601b610ac357637448fbae5f526004601cfd5b610aa381610d72565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167ff1a436d900000000000000000000000000000000000000000000000000000000148061047e575061047e82610dd7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610970576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f610bc2610e2c565b6719010000000000005f908152601a91909152603a928352604260182092525090565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610c38576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c4583850185611815565b90505f815f0151806020019051810190610c5f91906118ce565b90505f610c7b89836040015189866020015187604001516107fc565b905087826040015160ff1611610ccf5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440161091a565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610d2e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d3a6003828a610ef9565b60208201518251610d659173ffffffffffffffffffffffffffffffffffffffff909116908390610f87565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f81818aa300000000000000000000000000000000000000000000000000000000148061047e575061047e8261108a565b5f805f80610e9e604080518082018252601881527f4c696d697465645369676e657256616c696461746f72563200000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610f5057815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610f7d57835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416156104de57604051843b61104257825160408114610fc55760418114610fff5750611082565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052611012565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052611082565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061047e575061047e825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061047e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461047e565b5f60208284031215611180575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104de575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610aa3575f80fd5b5f805f606084860312156111e2575f80fd5b833592506020840135915060408401356111fb816111af565b809150509250925092565b5f60208284031215611216575f80fd5b5035919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104de602083018461121d565b5f8083601f84011261128b575f80fd5b50813567ffffffffffffffff8111156112a2575f80fd5b6020830191508360208260051b85010111156112bc575f80fd5b9250929050565b5f805f80604085870312156112d6575f80fd5b843567ffffffffffffffff8111156112ec575f80fd5b6112f88782880161127b565b909550935050602085013567ffffffffffffffff811115611317575f80fd5b6113238782880161127b565b95989497509550505050565b5f8083601f84011261133f575f80fd5b50813567ffffffffffffffff811115611356575f80fd5b6020830191508360208285010111156112bc575f80fd5b5f806020838503121561137e575f80fd5b823567ffffffffffffffff811115611394575f80fd5b6113a08582860161132f565b90969095509350505050565b60ff81168114610aa3575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561140a5761140a6113ba565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611457576114576113ba565b604052919050565b5f67ffffffffffffffff821115611478576114786113ba565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126114b3575f80fd5b81356114c66114c18261145f565b611410565b8181528460208386010111156114da575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f60a0868803121561150a575f80fd5b85359450602086013561151c816113ac565b9350604086013561152c816111af565b9250606086013567ffffffffffffffff811115611547575f80fd5b611553888289016114a4565b9250506080860135611564816111af565b809150509295509295909350565b5f805f805f60808688031215611586575f80fd5b8535945060208601359350604086013561159f816111af565b9250606086013567ffffffffffffffff8111156115ba575f80fd5b6115c68882890161132f565b969995985093965092949392505050565b5f602082840312156115e7575f80fd5b81356104de816111af565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61162c60e083018961121d565b828103604084015261163e818961121d565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156116a0578351835260209384019390920191600101611682565b50909b9a5050505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156116ee575f80fd5b813580151581146104de575f80fd5b8035611708816111af565b919050565b5f805f6060848603121561171f575f80fd5b833567ffffffffffffffff811115611735575f80fd5b8401601f81018613611745575f80fd5b803567ffffffffffffffff81111561175f5761175f6113ba565b8060051b61176f60208201611410565b9182526020818401810192908101908984111561178a575f80fd5b6020850194505b838510156117b857843592506117a6836111af565b82825260209485019490910190611791565b80975050505050506117cc602085016116fd565b929592945050506040919091013590565b8082018082111561047e577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611825575f80fd5b813567ffffffffffffffff81111561183b575f80fd5b82016060818503121561184c575f80fd5b6118546113e7565b813567ffffffffffffffff81111561186a575f80fd5b611876868285016114a4565b825250602082013567ffffffffffffffff811115611892575f80fd5b61189e868285016114a4565b602083015250604082013591506118b4826111af565b60408101919091529392505050565b8051611708816113ac565b5f602082840312156118de575f80fd5b815167ffffffffffffffff8111156118f4575f80fd5b820160608185031215611905575f80fd5b61190d6113e7565b8151611918816111af565b8152602082015167ffffffffffffffff811115611933575f80fd5b8201601f81018613611943575f80fd5b80516119516114c18261145f565b818152876020838501011115611965575f80fd5b8160208401602083015e5f6020838301015280602085015250505061198c604083016118c3565b604082015294935050505056fea2646970667358221220c58cb33920f4b88f418d656aad642d41d5150afcb4c7d65e8e3ce9c7b790967264736f6c634300081a0033",s={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1,VITE_BOOST_MAINNET_SIGNER_EOA:"0xCBD0C302040bC803B4B2EDaF21Be0e49Deff5480",VITE_BOOST_TESTNET_SIGNER_EOA:"0xd63167e9db11B108940b2E8236581F961f33f396"},r=class r extends D.DeployableTarget{constructor(){super(...arguments),this.abi=e.W}async signers(f,a){return await e.fk(this._config,{address:this.assertValidAddress(),args:[f],...a})}async hashSignerData(f,a){const b=f.referrer??f.claimant;return await e.yk(this._config,{address:this.assertValidAddress(),args:[f.boostId,f.incentiveQuantity,f.claimant,f.incentiveData,b],...a})}async validate(f,a){return await this.awaitResult(this.validateRaw(f,a))}async validateRaw(f,a){const{request:b,result:d}=await e.Pk(this._config,{address:this.assertValidAddress(),args:[f.boostId,f.incentiveId,f.claimant,f.claimData],...this.optionallyAttachAccount(),...a});return{hash:await e.Ok(this._config,b),result:d}}async setAuthorized(f,a,b){return await this.awaitResult(this.setAuthorizedRaw(f,a,b))}async setAuthorizedRaw(f,a,b){const{request:d,result:c}=await e.Fk(this._config,{address:this.assertValidAddress(),args:[f,a],...this.optionallyAttachAccount(),...b});return{hash:await e.Mk(this._config,d),result:c}}async setValidatorCallerRaw(f,a){const{request:b,result:d}=await e.Sk(this._config,{address:this.assertValidAddress(),args:[f],...this.optionallyAttachAccount(),...a});return{hash:await e.Rk(this._config,b),result:d}}async setValidatorCaller(f,a){return await this.awaitResult(this.setValidatorCallerRaw(f,a))}async encodeClaimData(f){return await u({...f,validator:this.assertValidAddress()})}buildParameters(f,a){const[b,d]=this.validateDeploymentConfig(f,a);return{abi:e.W,bytecode:w,args:[m(b)],...this.optionallyAttachAccount(d.account)}}};r.bases={...s!=null&&s.VITE_LIMITED_SIGNER_VALIDATOR_BASE?{31337:void 0}:{},...A.LimitedSignerValidatorV2},r.registryType=S.RegistryType.VALIDATOR;let i=r;async function u({signer:t,incentiveData:f,chainId:a,validator:b,incentiveQuantity:d,claimant:c,boostId:o,referrer:h}){const l=h??c,p={domain:{name:"LimitedSignerValidatorV2",version:"1",chainId:a,verifyingContract:b},types:{SignerValidatorData:[{name:"boostId",type:"uint256"},{name:"incentiveQuantity",type:"uint8"},{name:"claimant",type:"address"},{name:"incentiveData",type:"bytes"},{name:"referrer",type:"address"}]},primaryType:"SignerValidatorData",message:{boostId:o,incentiveQuantity:d,claimant:c,incentiveData:f,referrer:l}},g=await t.privateKey.signTypedData(p),V=y({signer:t.account,signature:g,incentiveQuantity:d});return n.encodeAbiParameters([{type:"tuple",name:"BoostClaimDataWithReferrer",components:[{type:"bytes",name:"validatorData"},{type:"bytes",name:"incentiveData"},{type:"address",name:"referrer"}]}],[{validatorData:V,incentiveData:f,referrer:l}])}function y({signer:t,signature:f,incentiveQuantity:a}){return n.encodeAbiParameters([{type:"tuple",name:"SignerValidatorInputParams",components:[{type:"address",name:"signer"},{type:"bytes",name:"signature"},{type:"uint8",name:"incentiveQuantity"}]}],[{signer:t,signature:f,incentiveQuantity:a}])}function m({signers:t,validatorCaller:f,maxClaimCount:a}){return n.encodeAbiParameters([{type:"address[]",name:"signers"},{type:"address",name:"validatorCaller"},{type:"uint256",name:"maxClaimCount"}],[t,f,BigInt(a)])}exports.limitedSignerValidatorV2Abi=e.W;exports.LimitedSignerValidatorV2=i;exports.prepareLimitedSignerValidatorV2ClaimDataPayload=u;exports.prepareLimitedSignerValidatorV2InputParams=y;exports.prepareLimitedSignerValidatorV2Payload=m;
|
|
2
|
+
//# sourceMappingURL=LimitedSignerValidatorV2.cjs.map
|