@boostxyz/sdk 7.0.0 → 7.2.0
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/EventAction.cjs +1 -1
- package/dist/Actions/EventAction.cjs.map +1 -1
- package/dist/Actions/EventAction.d.ts +46 -0
- package/dist/Actions/EventAction.d.ts.map +1 -1
- package/dist/Actions/EventAction.js +395 -345
- package/dist/Actions/EventAction.js.map +1 -1
- package/dist/BoostCore.cjs.map +1 -1
- package/dist/BoostCore.d.ts +2 -2
- package/dist/BoostCore.d.ts.map +1 -1
- package/dist/BoostCore.js.map +1 -1
- package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.cjs +1 -1
- package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.cjs.map +1 -1
- package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.d.ts.map +1 -1
- package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.js +79 -68
- package/dist/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.js.map +1 -1
- package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.cjs +1 -1
- package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.cjs.map +1 -1
- package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.d.ts.map +1 -1
- package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.js +84 -73
- package/dist/Incentives/ERC20VariableCriteriaIncentiveV2.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +179 -175
- package/package.json +1 -1
- package/src/Actions/EventAction.test.ts +90 -0
- package/src/Actions/EventAction.ts +119 -2
- package/src/BoostCore.ts +1 -1
- package/src/Incentives/ERC20PeggedVariableCriteriaIncentiveV2.ts +24 -5
- package/src/Incentives/ERC20VariableCriteriaIncentiveV2.ts +25 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventAction.cjs","sources":["../../../../node_modules/.pnpm/ts-pattern@5.6.2/node_modules/ts-pattern/dist/index.js","../../src/Actions/EventAction.ts"],"sourcesContent":["const t=Symbol.for(\"@ts-pattern/matcher\"),e=Symbol.for(\"@ts-pattern/isVariadic\"),n=\"@ts-pattern/anonymous-select-key\",r=t=>Boolean(t&&\"object\"==typeof t),i=e=>e&&!!e[t],s=(n,o,c)=>{if(i(n)){const e=n[t](),{matched:r,selections:i}=e.match(o);return r&&i&&Object.keys(i).forEach(t=>c(t,i[t])),r}if(r(n)){if(!r(o))return!1;if(Array.isArray(n)){if(!Array.isArray(o))return!1;let t=[],r=[],a=[];for(const s of n.keys()){const o=n[s];i(o)&&o[e]?a.push(o):a.length?r.push(o):t.push(o)}if(a.length){if(a.length>1)throw new Error(\"Pattern error: Using `...P.array(...)` several times in a single pattern is not allowed.\");if(o.length<t.length+r.length)return!1;const e=o.slice(0,t.length),n=0===r.length?[]:o.slice(-r.length),i=o.slice(t.length,0===r.length?Infinity:-r.length);return t.every((t,n)=>s(t,e[n],c))&&r.every((t,e)=>s(t,n[e],c))&&(0===a.length||s(a[0],i,c))}return n.length===o.length&&n.every((t,e)=>s(t,o[e],c))}return Reflect.ownKeys(n).every(e=>{const r=n[e];return(e in o||i(a=r)&&\"optional\"===a[t]().matcherType)&&s(r,o[e],c);var a})}return Object.is(o,n)},o=e=>{var n,s,a;return r(e)?i(e)?null!=(n=null==(s=(a=e[t]()).getSelectionKeys)?void 0:s.call(a))?n:[]:Array.isArray(e)?c(e,o):c(Object.values(e),o):[]},c=(t,e)=>t.reduce((t,n)=>t.concat(e(n)),[]);function a(...t){if(1===t.length){const[e]=t;return t=>s(e,t,()=>{})}if(2===t.length){const[e,n]=t;return s(e,n,()=>{})}throw new Error(`isMatching wasn't given the right number of arguments: expected 1 or 2, received ${t.length}.`)}function u(t){return Object.assign(t,{optional:()=>h(t),and:e=>m(t,e),or:e=>d(t,e),select:e=>void 0===e?y(t):y(e,t)})}function l(t){return Object.assign((t=>Object.assign(t,{[Symbol.iterator](){let n=0;const r=[{value:Object.assign(t,{[e]:!0}),done:!1},{done:!0,value:void 0}];return{next:()=>{var t;return null!=(t=r[n++])?t:r.at(-1)}}}}))(t),{optional:()=>l(h(t)),select:e=>l(void 0===e?y(t):y(e,t))})}function h(e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return void 0===t?(o(e).forEach(t=>r(t,void 0)),{matched:!0,selections:n}):{matched:s(e,t,r),selections:n}},getSelectionKeys:()=>o(e),matcherType:\"optional\"})})}const f=(t,e)=>{for(const n of t)if(!e(n))return!1;return!0},g=(t,e)=>{for(const[n,r]of t.entries())if(!e(r,n))return!1;return!0};function m(...e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return{matched:e.every(e=>s(e,t,r)),selections:n}},getSelectionKeys:()=>c(e,o),matcherType:\"and\"})})}function d(...e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return c(e,o).forEach(t=>r(t,void 0)),{matched:e.some(e=>s(e,t,r)),selections:n}},getSelectionKeys:()=>c(e,o),matcherType:\"or\"})})}function p(e){return{[t]:()=>({match:t=>({matched:Boolean(e(t))})})}}function y(...e){const r=\"string\"==typeof e[0]?e[0]:void 0,i=2===e.length?e[1]:\"string\"==typeof e[0]?void 0:e[0];return u({[t]:()=>({match:t=>{let e={[null!=r?r:n]:t};return{matched:void 0===i||s(i,t,(t,n)=>{e[t]=n}),selections:e}},getSelectionKeys:()=>[null!=r?r:n].concat(void 0===i?[]:o(i))})})}function v(t){return\"number\"==typeof t}function b(t){return\"string\"==typeof t}function w(t){return\"bigint\"==typeof t}const S=u(p(function(t){return!0})),O=S,j=t=>Object.assign(u(t),{startsWith:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.startsWith(n)))));var n},endsWith:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.endsWith(n)))));var n},minLength:e=>j(m(t,(t=>p(e=>b(e)&&e.length>=t))(e))),length:e=>j(m(t,(t=>p(e=>b(e)&&e.length===t))(e))),maxLength:e=>j(m(t,(t=>p(e=>b(e)&&e.length<=t))(e))),includes:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.includes(n)))));var n},regex:e=>{return j(m(t,(n=e,p(t=>b(t)&&Boolean(t.match(n))))));var n}}),K=j(p(b)),x=t=>Object.assign(u(t),{between:(e,n)=>x(m(t,((t,e)=>p(n=>v(n)&&t<=n&&e>=n))(e,n))),lt:e=>x(m(t,(t=>p(e=>v(e)&&e<t))(e))),gt:e=>x(m(t,(t=>p(e=>v(e)&&e>t))(e))),lte:e=>x(m(t,(t=>p(e=>v(e)&&e<=t))(e))),gte:e=>x(m(t,(t=>p(e=>v(e)&&e>=t))(e))),int:()=>x(m(t,p(t=>v(t)&&Number.isInteger(t)))),finite:()=>x(m(t,p(t=>v(t)&&Number.isFinite(t)))),positive:()=>x(m(t,p(t=>v(t)&&t>0))),negative:()=>x(m(t,p(t=>v(t)&&t<0)))}),E=x(p(v)),A=t=>Object.assign(u(t),{between:(e,n)=>A(m(t,((t,e)=>p(n=>w(n)&&t<=n&&e>=n))(e,n))),lt:e=>A(m(t,(t=>p(e=>w(e)&&e<t))(e))),gt:e=>A(m(t,(t=>p(e=>w(e)&&e>t))(e))),lte:e=>A(m(t,(t=>p(e=>w(e)&&e<=t))(e))),gte:e=>A(m(t,(t=>p(e=>w(e)&&e>=t))(e))),positive:()=>A(m(t,p(t=>w(t)&&t>0))),negative:()=>A(m(t,p(t=>w(t)&&t<0)))}),P=A(p(w)),T=u(p(function(t){return\"boolean\"==typeof t})),B=u(p(function(t){return\"symbol\"==typeof t})),_=u(p(function(t){return null==t})),k=u(p(function(t){return null!=t}));var N={__proto__:null,matcher:t,optional:h,array:function(...e){return l({[t]:()=>({match:t=>{if(!Array.isArray(t))return{matched:!1};if(0===e.length)return{matched:!0};const n=e[0];let r={};if(0===t.length)return o(n).forEach(t=>{r[t]=[]}),{matched:!0,selections:r};const i=(t,e)=>{r[t]=(r[t]||[]).concat([e])};return{matched:t.every(t=>s(n,t,i)),selections:r}},getSelectionKeys:()=>0===e.length?[]:o(e[0])})})},set:function(...e){return u({[t]:()=>({match:t=>{if(!(t instanceof Set))return{matched:!1};let n={};if(0===t.size)return{matched:!0,selections:n};if(0===e.length)return{matched:!0};const r=(t,e)=>{n[t]=(n[t]||[]).concat([e])},i=e[0];return{matched:f(t,t=>s(i,t,r)),selections:n}},getSelectionKeys:()=>0===e.length?[]:o(e[0])})})},map:function(...e){return u({[t]:()=>({match:t=>{if(!(t instanceof Map))return{matched:!1};let n={};if(0===t.size)return{matched:!0,selections:n};const r=(t,e)=>{n[t]=(n[t]||[]).concat([e])};if(0===e.length)return{matched:!0};var i;if(1===e.length)throw new Error(`\\`P.map\\` wasn't given enough arguments. Expected (key, value), received ${null==(i=e[0])?void 0:i.toString()}`);const[o,c]=e;return{matched:g(t,(t,e)=>{const n=s(o,e,r),i=s(c,t,r);return n&&i}),selections:n}},getSelectionKeys:()=>0===e.length?[]:[...o(e[0]),...o(e[1])]})})},intersection:m,union:d,not:function(e){return u({[t]:()=>({match:t=>({matched:!s(e,t,()=>{})}),getSelectionKeys:()=>[],matcherType:\"not\"})})},when:p,select:y,any:S,_:O,string:K,number:E,bigint:P,boolean:T,symbol:B,nullish:_,nonNullable:k,instanceOf:function(t){return u(p(function(t){return e=>e instanceof t}(t)))},shape:function(t){return u(p(a(t)))}};class W extends Error{constructor(t){let e;try{e=JSON.stringify(t)}catch(n){e=t}super(`Pattern matching error: no pattern matches value ${e}`),this.input=void 0,this.input=t}}const $={matched:!1,value:void 0};function z(t){return new I(t,$)}class I{constructor(t,e){this.input=void 0,this.state=void 0,this.input=t,this.state=e}with(...t){if(this.state.matched)return this;const e=t[t.length-1],r=[t[0]];let i;3===t.length&&\"function\"==typeof t[1]?i=t[1]:t.length>2&&r.push(...t.slice(1,t.length-1));let o=!1,c={};const a=(t,e)=>{o=!0,c[t]=e},u=!r.some(t=>s(t,this.input,a))||i&&!Boolean(i(this.input))?$:{matched:!0,value:e(o?n in c?c[n]:c:this.input,this.input)};return new I(this.input,u)}when(t,e){if(this.state.matched)return this;const n=Boolean(t(this.input));return new I(this.input,n?{matched:!0,value:e(this.input,this.input)}:$)}otherwise(t){return this.state.matched?this.state.value:t(this.input)}exhaustive(){if(this.state.matched)return this.state.value;throw new W(this.input)}run(){return this.exhaustive()}returnType(){return this}}export{W as NonExhaustiveError,N as P,N as Pattern,a as isMatching,z as match};\n//# sourceMappingURL=index.js.map\n","import {\n eventActionAbi,\n readEventActionGetActionClaimant,\n readEventActionGetActionSteps,\n simulateEventActionExecute,\n writeEventActionExecute,\n} from '@boostxyz/evm';\nimport { bytecode } from '@boostxyz/evm/artifacts/contracts/actions/EventAction.sol/EventAction.json';\nimport { abi } from '@boostxyz/signatures/events';\nimport { getTransaction, getTransactionReceipt } from '@wagmi/core';\nimport { match } from 'ts-pattern';\nimport {\n type AbiEvent,\n type AbiFunction,\n type AbiParameter,\n type Address,\n type GetLogsReturnType,\n type GetTransactionParameters,\n type GetTransactionReceiptReturnType,\n type Hex,\n type Log,\n type Transaction,\n decodeEventLog,\n decodeFunctionData,\n encodeAbiParameters,\n fromHex,\n isAddress,\n isAddressEqual,\n pad,\n toEventSelector,\n trim,\n zeroAddress,\n zeroHash,\n} from 'viem';\nimport { EventAction as EventActionBases } from '../../dist/deployments.json';\nimport type {\n DeployableOptions,\n GenericDeployableParams,\n} from '../Deployable/Deployable';\nimport { DeployableTarget } from '../Deployable/DeployableTarget';\nimport {\n DecodedArgsError,\n DecodedArgsMalformedError,\n FieldValueNotComparableError,\n FieldValueUndefinedError,\n FunctionDataDecodeError,\n InvalidNumericalCriteriaError,\n InvalidTupleDecodingError,\n InvalidTupleEncodingError,\n NoEventActionStepsProvidedError,\n TooManyEventActionStepsProvidedError,\n UnparseableAbiParamError,\n UnrecognizedFilterTypeError,\n ValidationAbiMissingError,\n} from '../errors';\nimport {\n CheatCodes,\n type Overwrite,\n type ReadParams,\n RegistryType,\n TRANSFER_SIGNATURE,\n type WriteParams,\n} from '../utils';\n\n/*\n * Action Event Payloads\n */\n\n/**\n * Filter types used to determine how criteria are evaluated.\n *\n * @export\n * @enum {number}\n */\nexport enum FilterType {\n EQUAL = 0,\n NOT_EQUAL = 1,\n GREATER_THAN = 2,\n LESS_THAN = 3,\n CONTAINS = 4,\n REGEX = 5,\n GREATER_THAN_OR_EQUAL = 6,\n LESS_THAN_OR_EQUAL = 7,\n}\n\n/**\n * The primitive types supported for filtering.\n *\n * @export\n * @enum {number}\n */\nexport enum PrimitiveType {\n UINT = 0,\n ADDRESS = 1,\n BYTES = 2,\n STRING = 3,\n TUPLE = 4,\n INT = 5,\n}\n\n/**\n * Object representation of a `Criteria` struct used in event actions.\n *\n * @export\n * @interface Criteria\n * @typedef {Criteria}\n */\nexport interface Criteria {\n /**\n * The filter type used in this criteria.\n *\n * @type {FilterType}\n */\n filterType: FilterType;\n /**\n * The primitive type of the field being filtered.\n *\n * @type {PrimitiveType}\n */\n fieldType: PrimitiveType;\n /**\n * The index in the logs argument array where the field is located.\n *\n * If `fieldType` is TUPLE, this value is **bitpacked** with up to 5 sub-indexes,\n * with the maximum 6-bit value used as a \"terminator\" to indicate no further indexes.\n *\n * @type {number}\n */\n fieldIndex: number;\n /**\n * The filter data used for complex filtering.\n *\n * @type {Hex}\n */\n filterData: Hex;\n}\n\n/**\n * Whether a given signature is an event or function\n *\n * @export\n * @enum {number}\n */\nexport enum SignatureType {\n EVENT = 0,\n FUNC = 1,\n}\n\n/**\n * The type of value used for the scalar value (RAW or WAD).\n *\n * @export\n * @enum {number}\n */\nexport enum ValueType {\n RAW = 0,\n WAD = 1,\n}\n\n/**\n * The payload describing how claimants are identified\n *\n * @export\n * @interface ActionClaimant\n * @typedef {ActionClaimant}\n */\nexport interface ActionClaimant {\n /**\n * Whether claimaint is inferred from event or function\n *\n * @type {SignatureType}\n */\n signatureType?: SignatureType;\n /**\n * The 4 byte signature of the event or function\n *\n * @type {Hex}\n */\n signature: Hex;\n /**\n * The index corresponding to claimant.\n *\n * @type {number}\n */\n fieldIndex: number;\n /**\n * The address of the target contract\n *\n * @type {Address}\n */\n targetContract: Address;\n /**\n * The chain id of the target contract.\n * @type {number}\n */\n chainid: number;\n}\n\n/**\n * Object representation of an `ActionStep` struct used in event actions.\n *\n * @export\n * @interface ActionStep\n * @typedef {ActionStep}\n */\nexport interface ActionStep {\n /**\n * The signature of the event.\n *\n * @type {Hex}\n */\n signature: Hex;\n /**\n * Whether claimaint is inferred from event or function\n *\n * @type {SignatureType}\n */\n signatureType?: SignatureType;\n /**\n * The type of action being performed.\n *\n * @type {number}\n */\n actionType?: number;\n /**\n * The address of the target contract.\n *\n * @type {Address}\n */\n targetContract: Address;\n /**\n * The chain id of the target contract.\n * @type {number}\n */\n chainid: number;\n /**\n * The criteria used for this action step.\n *\n * @type {Criteria}\n */\n actionParameter: Criteria;\n}\n\n/**\n * Parameters for validating an action step.\n *\n * @typedef {Object} ValidateActionStepParams\n * @property {Record<Hex, AbiEvent | AbiFunction>} [knownSignatures] - Record of known events, keyed by 32 byte selectors. You can use [@boostxyz/signatures](https://www.npmjs.com/package/@boostxyz/signatures) to assemble this parameter.\n * @property {AbiEvent | AbiFunction} [abiItem] - Optional ABI item definition.\n * @property {EventLogs} [logs] - Event logs to validate against. Required if 'hash' is not provided.\n * @property {Hex} [hash] - Transaction hash to validate against. Required if 'logs' is not provided.\n */\nexport type ValidateActionStepParams = {\n knownSignatures: Record<Hex, AbiEvent | AbiFunction>;\n abiItem?: AbiEvent | AbiFunction;\n notBeforeBlockNumber?: bigint;\n} & ({ logs: EventLogs } | (GetTransactionParameters & { hash: Hex }));\n\n/**\n * You can either supply a simplified version of the payload, or one that explicitly declares action steps.\n *\n * @export\n * @typedef {EventActionPayload}\n */\nexport type EventActionPayload =\n | EventActionPayloadSimple\n | EventActionPayloadRaw;\n\nexport interface EventActionPayloadSimple {\n /**\n * The payload describing how claimants are identified\n *\n * @type {ActionClaimant}\n */\n actionClaimant: ActionClaimant;\n\n /**\n * Up to 4 action steps.\n * If you supply less than 4, then the last step will be reused to satisfy the EventAction.InitPayload\n * Any more than 4 will throw an error.\n *\n * @type {ActionStep[]}\n */\n actionSteps: ActionStep[];\n}\n\nexport type ActionStepTuple = [ActionStep, ActionStep, ActionStep, ActionStep];\n\n/**\n * Typeguard to determine if a user is supplying a simple or raw EventActionPayload\n *\n * @param {*} opts\n * @returns {opts is EventActionPayloadSimple}\n */\nexport function isEventActionPayloadSimple(\n opts: EventActionPayload,\n): opts is EventActionPayloadSimple {\n return Array.isArray((opts as EventActionPayloadSimple).actionSteps);\n}\n\n/**\n * Object representation of an `InitPayload` struct used to initialize event actions.\n *\n * @export\n * @interface EventActionPayloadRaw\n * @typedef {EventActionPayloadRaw}\n */\nexport interface EventActionPayloadRaw {\n /**\n * The payload describing how claimants are identified\n *\n * @type {ActionClaimant}\n */\n actionClaimant: ActionClaimant;\n /**\n * The first action step.\n *\n * @type {ActionStep}\n */\n actionStepOne: ActionStep;\n /**\n * The second action step.\n *\n * @type {ActionStep}\n */\n actionStepTwo: ActionStep;\n /**\n * The third action step.\n *\n * @type {ActionStep}\n */\n actionStepThree: ActionStep;\n /**\n * The fourth action step.\n *\n * @type {ActionStep}\n */\n actionStepFour: ActionStep;\n}\n\n/**\n * Array of event logs to pass into TxParams\n * @export\n * @typedef {EventLogs}\n */\nexport type EventLogs = GetLogsReturnType<AbiEvent, AbiEvent[], true>;\n\n/**\n * Single event log\n * @export\n * @typedef {EventLog}\n */\nexport type EventLog = EventLogs[0] & { args: unknown[] };\n\n/**\n * A generic event action\n *\n * @export\n * @class EventAction\n * @typedef {EventAction}\n * @extends {DeployableTarget<EventActionPayload>}\n */\nexport class EventAction extends DeployableTarget<\n EventActionPayload,\n typeof eventActionAbi\n> {\n /**\n * @inheritdoc\n *\n * @public\n * @readonly\n * @type {*}\n */\n public override readonly abi = eventActionAbi;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {Record<number, Address>}\n */\n public static override bases: Record<number, Address> = {\n 31337: import.meta.env.VITE_EVENT_ACTION_BASE,\n ...(EventActionBases as Record<number, Address>),\n };\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {RegistryType}\n */\n public static override registryType: RegistryType = RegistryType.ACTION;\n\n /**\n * Gets a specific action event by index\n *\n * @public\n * @async\n * @param {number} index The index of the action event to retrieve\n * @param {?ReadEventActionParams<'getActionStep'>} [params]\n * @returns {Promise<ActionStep>}\n */\n public async getActionStep(index: number, params?: ReadParams) {\n const steps = await this.getActionSteps(params);\n return steps.at(index);\n }\n\n /**\n * Gets all action events\n *\n * @public\n * @async\n * @param {?ReadEventActionParams<'getActionSteps'>} [params]\n * @returns {Promise<ActionStep[]>}\n */\n public async getActionSteps(params?: ReadParams) {\n const steps = (await readEventActionGetActionSteps(this._config, {\n address: this.assertValidAddress(),\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 })) as RawActionStep[];\n return _dedupeActionSteps(steps.map(_fromRawActionStep));\n }\n\n /**\n * Gets the count of action events\n *\n * @public\n * @async\n * @param {?ReadEventActionParams<'getActionStepsCount'>} [params]\n * @returns {Promise<bigint>}\n */\n public async getActionStepsCount(params?: ReadParams) {\n const steps = await this.getActionSteps(params);\n return steps.length;\n }\n\n /**\n * Retrieves the payload describing how claimants can be identified from logs or function calls.\n *\n * @public\n * @async\n * @param {?ReadEventActionParams<'getActionClaimant'>} [params]\n * @returns {Promise<ActionClaimant>}\n */\n public async getActionClaimant(params?: ReadParams): Promise<ActionClaimant> {\n const result = (await readEventActionGetActionClaimant(this._config, {\n address: this.assertValidAddress(),\n ...this.optionallyAttachAccount(),\n ...params,\n })) as RawActionClaimant;\n return _fromRawActionStep(result);\n }\n\n /**\n * Executes a prepared event action\n *\n * @public\n * @async\n * @param {Hex} data\n * @param {?WriteParams} [params]\n * @returns {Promise<readonly [boolean, `0x${string}`]>}\n */\n public async execute(data: Hex, params?: WriteParams) {\n return await this.awaitResult(this.executeRaw(data, params));\n }\n\n /**\n * Executes a prepared event action\n *\n * @public\n * @async\n * @param {Hex} data\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: readonly [boolean, `0x${string}`]; }>}\n */\n public async executeRaw(data: Hex, params?: WriteParams) {\n const { request, result } = await simulateEventActionExecute(this._config, {\n address: this.assertValidAddress(),\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 args: [data],\n });\n const hash = await writeEventActionExecute(this._config, request);\n return { hash, result };\n }\n\n /**\n * Derives the action claimant address from a transaction based on the provided ActionClaimant configuration.\n * This method supports both event-based and function-based claimant derivation.\n * **Important**: The claimant is considered to be `transaction.from` when `claimant.fieldIndex` is 255 using CheatCodes enum.\n * This may have unintended side effects for bridged transactions and SCW transactions, so these are considered unsupported use cases for the time being.\n *\n ** @example\n * // Example usage\n * const eventAction = boost.action as EventAction\n * const claimant = await eventAction.getActionClaimant() // {\n * signatureType: SignatureType.EVENT,\n * signature: '0x1234...',\n * fieldIndex: 2,\n * targetContract: '0xabcd...',\n * chainid: 1\n * };\n * const params: ValidateActionStepParams = {\n * hash: '0x5678...',\n * chainId: 1,\n * knownSignatures: {\n * '0x1234...': {\n * type: 'event',\n * name: 'Transfer(...)'\n * }\n * }\n * };\n * const claimantAddress = await eventAction.deriveActionClaimantFromTransaction(claimant, params);\n *\n * @param {ActionClaimant} claimant - The configuration specifying how to derive the claimant.\n * @param {ValidateActionStepParams} params - Parameters for validation, including transaction hash, known signatures, logs, and chain ID.\n * @returns {Promise<Address | undefined>} The derived claimant address if found, undefined otherwise.\n * @throws {ValidationAbiMissingError} If the ABI for the specified signature is not found.\n * @throws {FunctionDataDecodeError} If there's an error decoding function data (for function-based derivation).\n */\n public async deriveActionClaimantFromTransaction(\n claimant: ActionClaimant,\n params: ValidateActionStepParams,\n ): Promise<Address | undefined> {\n // find message sender and return it\n // WARNING: this is error prone in bridged transactions and SCW transactions, as this will return exit node\n if (claimant.fieldIndex === CheatCodes.TX_SENDER_CLAIMANT) {\n if ('hash' in params) {\n const transaction = await getTransaction(this._config, {\n ...params,\n chainId: claimant.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n transaction.blockNumber < params.notBeforeBlockNumber\n ) {\n return undefined;\n }\n return transaction.from;\n }\n if ('logs' in params) {\n for (let log of params.logs) {\n if (log.transactionHash) {\n const transaction = await getTransaction(this._config, {\n ...params,\n hash: log.transactionHash,\n chainId: claimant.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n transaction.blockNumber < params.notBeforeBlockNumber\n ) {\n return undefined;\n }\n return transaction.from;\n }\n }\n }\n return undefined;\n }\n\n const signature = claimant.signature;\n\n if (claimant.signatureType === SignatureType.EVENT) {\n let event: AbiEvent;\n if (params.abiItem) event = params.abiItem as AbiEvent;\n else {\n const sigPool = params.knownSignatures as Record<Hex, AbiEvent>;\n event = sigPool[signature] as AbiEvent;\n }\n if (!event) {\n throw new ValidationAbiMissingError(signature);\n }\n\n let address: Address | undefined;\n if ('logs' in params) {\n for (let log of params.logs) {\n if (!isAddressEqual(log.address, claimant.targetContract)) continue;\n let addressCandidate = this.validateClaimantAgainstArgs(\n claimant,\n log,\n );\n if (addressCandidate) address = addressCandidate;\n }\n return address;\n }\n const receipt = await getTransactionReceipt(this._config, {\n ...params,\n chainId: claimant.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n receipt.blockNumber < params.notBeforeBlockNumber\n ) {\n return undefined;\n }\n\n let decodedLogs: EventLogs;\n if (signature === TRANSFER_SIGNATURE) {\n ({ decodedLogs } = await this.decodeTransferLogs(receipt));\n } else {\n decodedLogs = receipt.logs\n .filter((log) => log.topics[0] === toEventSelector(event))\n .map((log) => decodeAndReorderLogArgs(event, log));\n }\n\n for (let log of decodedLogs) {\n if (!isAddressEqual(log.address, claimant.targetContract)) continue;\n let addressCandidate = this.validateClaimantAgainstArgs(claimant, log);\n if (addressCandidate) address = addressCandidate;\n }\n return address;\n }\n if (claimant.signatureType === SignatureType.FUNC && 'hash' in params) {\n const transaction = await getTransaction(this._config, {\n ...params,\n chainId: claimant.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n transaction.blockNumber < params.notBeforeBlockNumber\n ) {\n return undefined;\n }\n if (!isAddressEqual(transaction.to!, claimant.targetContract)) return;\n let func: AbiFunction;\n if (params.abiItem) func = params.abiItem as AbiFunction;\n else {\n const sigPool = params.knownSignatures as Record<Hex, AbiFunction>;\n func = sigPool[signature] as AbiFunction;\n }\n if (!func) {\n throw new ValidationAbiMissingError(claimant.signature);\n }\n let decodedData;\n try {\n decodedData = decodeFunctionData({\n abi: [func],\n data: transaction.input,\n });\n } catch (e) {\n throw new FunctionDataDecodeError([func], e as Error);\n }\n return this.validateClaimantAgainstArgs(claimant, decodedData);\n }\n }\n\n /**\n * Validates the action claimant against the arguments of a log or function data.\n *\n * @param {ActionClaimant} claimant - The action claimant to validate.\n * @param {Object} [logOrFnData] - Optional object containing the arguments to validate against.\n * @param {Array<any> | readonly unknown[] | Record<string, unknown>} [logOrFnData.args] - The arguments from the log or function data.\n * @returns {Address | undefined} The validated address if found and valid, otherwise undefined.\n */\n public validateClaimantAgainstArgs(\n claimant: ActionClaimant,\n logOrFnData?: {\n args: Array<unknown> | readonly unknown[] | Record<string, unknown>;\n },\n ): Address | undefined {\n if (\n !logOrFnData ||\n !Array.isArray(logOrFnData?.args) ||\n logOrFnData?.args.length <= claimant.fieldIndex\n ) {\n return;\n }\n const maybeAddress = logOrFnData.args.at(claimant.fieldIndex);\n if (isAddress(maybeAddress)) return maybeAddress;\n }\n\n /**\n * Retrieves action steps, and uses them to validate against, and optionally fetch logs that match the step's signature.\n * If logs are provided in the optional `params` argument, then those logs will be used instead of fetched with the configured client.\n *\n * @public\n * @async\n * @param ValidateActionStepParams params\n * @returns {Promise<boolean>}\n */\n public async validateActionSteps(params: ValidateActionStepParams) {\n const actionSteps = await this.getActionSteps();\n for (const actionStep of actionSteps) {\n if (!(await this.isActionStepValid(actionStep, params))) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Validates a single action step with a given criteria against logs or function calls.\n * If logs are provided in the optional `params` argument, then those logs will be used instead of being fetched with the configured client.\n * For functions a hash is required.\n *\n * @public\n * @async\n * @param {ActionStep} actionStep - The action step to validate. Can be a function of event step.\n * @param {ValidateActionStepParams} params - Additional parameters for validation, including hash, known events, logs, and chain ID.\n * @returns {Promise<boolean>}\n */\n public async isActionStepValid(\n actionStep: ActionStep,\n params: ValidateActionStepParams,\n ) {\n if (actionStep.signatureType === SignatureType.EVENT) {\n const signature = actionStep.signature;\n let event: AbiEvent;\n if (params.abiItem) event = params.abiItem as AbiEvent;\n else {\n const sigPool = params.knownSignatures as Record<Hex, AbiEvent>;\n event = sigPool[signature] as AbiEvent;\n }\n\n if (!event) {\n throw new ValidationAbiMissingError(signature);\n }\n\n if (this.isArraylikeIndexed(actionStep, event)) {\n // If the field is indexed, we can't filter on it\n throw new UnparseableAbiParamError(\n actionStep.actionParameter.fieldIndex,\n event,\n );\n }\n\n // Use the provided logs, no need to fetch receipt\n if ('logs' in params) {\n return this.isActionEventValid(actionStep, params.logs, event);\n }\n\n const receipt = await getTransactionReceipt(this._config, {\n ...params,\n chainId: actionStep.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n receipt.blockNumber < params.notBeforeBlockNumber\n ) {\n return false;\n }\n\n // Special handling for Transfer events\n if (actionStep.signature === TRANSFER_SIGNATURE) {\n const { decodedLogs, event } = await this.decodeTransferLogs(receipt);\n return this.isActionEventValid(actionStep, decodedLogs, event);\n }\n\n const decodedLogs = receipt.logs\n .filter((log) => log.topics[0] === toEventSelector(event))\n .map((log) => decodeAndReorderLogArgs(event, log));\n\n return this.isActionEventValid(actionStep, decodedLogs, event);\n }\n if (actionStep.signatureType === SignatureType.FUNC) {\n if ('hash' in params) {\n const transaction = await getTransaction(this._config, {\n ...params,\n chainId: actionStep.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n transaction.blockNumber < params.notBeforeBlockNumber\n ) {\n return false;\n }\n return this.isActionFunctionValid(actionStep, transaction, params);\n }\n }\n return false;\n }\n\n /**\n * Validates a single action event with a given criteria against logs.\n *\n * @public\n * @param {ActionStep} actionStep - The action step containing the event to validate.\n * @param {EventLogs} logs - Event logs to validate the given step against\n * @param {AbiEvent} eventAbi - The ABI definition of the event\n * @returns {boolean} Resolves to true if the action event is valid, throws if input is invalid, otherwise false.\n */\n public isActionEventValid(\n actionStep: ActionStep,\n logs: EventLogs,\n eventAbi: AbiEvent,\n ): boolean {\n const criteria = actionStep.actionParameter;\n if (!logs.length) return false;\n\n // Check each log\n for (let log of logs) {\n // parse out final (scalar) field from the log args\n try {\n if (!Array.isArray(log.args)) {\n throw new DecodedArgsMalformedError({\n log,\n criteria,\n fieldValue: undefined,\n });\n }\n const { value, type } = this.parseFieldFromAbi(\n log.args,\n criteria.fieldIndex,\n eventAbi.inputs || [],\n criteria.fieldType,\n );\n criteria.fieldType = type;\n if (this.validateFieldAgainstCriteria(criteria, value, { log })) {\n return true;\n }\n } catch {\n // If there's an error on this log, keep trying with the next one\n }\n }\n return false;\n }\n\n /**\n * Decodes logs specifically for ERC721 and ERC20 Transfer events.\n *\n * This special handling is required because both ERC20 and ERC721 Transfer events:\n * 1. Share the same event signature (0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef)\n * 2. Have similar but distinct structures:\n * - ERC721: Transfer(address indexed from, address indexed to, uint256 indexed tokenId)\n * - ERC20: Transfer(address indexed from, address indexed to, uint256 value)\n *\n * This causes signature collisions in the known signatures package, requiring us to\n * try decoding both ways to determine which type of Transfer event we're dealing with.\n *\n * @param {GetTransactionReceiptReturnType} receipt - The transaction receipt containing the logs\n * @returns {Promise<{ decodedLogs: EventLogs; event: AbiEvent }>} - Returns the decoded logs and the transfer event ABI used for decoding\n * @throws {DecodedArgsError} - Throws if neither ERC20 nor ERC721 decoding succeeds\n */\n private async decodeTransferLogs(\n receipt: GetTransactionReceiptReturnType,\n ): Promise<{ decodedLogs: EventLogs; event: AbiEvent }> {\n const filteredLogs = receipt.logs.filter(\n (log) => log.topics[0] === TRANSFER_SIGNATURE,\n );\n const event = structuredClone(\n abi['Transfer(address indexed,address indexed,uint256 indexed)'],\n ) as AbiEvent;\n\n // ERC721\n try {\n const decodedLogs = filteredLogs.map((log) => {\n const { eventName, args } = decodeEventLog({\n abi: [event],\n data: log.data,\n topics: log.topics,\n });\n return { ...log, eventName, args };\n });\n\n return {\n decodedLogs,\n event,\n };\n } catch {\n // ERC20\n try {\n event.inputs[2]!.indexed = false;\n const decodedLogs = filteredLogs.map((log) => {\n const { eventName, args } = decodeEventLog({\n abi: [event],\n data: log.data,\n topics: log.topics,\n });\n return { ...log, eventName, args };\n });\n\n return {\n decodedLogs,\n event,\n };\n } catch {\n throw new DecodedArgsError('Failed to decode transfer logs');\n }\n }\n }\n\n /**\n * Parses the final (scalar) field from a set of decoded arguments, given an ABI definition.\n * If the fieldType is TUPLE, we decode `fieldIndex` as a bitpacked array of indexes to drill down\n * into nested tuples. Otherwise, we parse the single `fieldIndex` as normal.\n *\n * @public\n * @param {readonly unknown[]} allArgs - The decoded arguments array from an event log or function call.\n * @param {number} criteriaIndex - The field index (bitpacked if TUPLE).\n * @param {AbiParameter[]} abiInputs - The ABI inputs describing each decoded argument.\n * @param {PrimitiveType} declaredType - Either TUPLE or a standard scalar type\n * @returns {{ value: string | bigint | Hex; type: Exclude<PrimitiveType, PrimitiveType.TUPLE> }}\n */\n public parseFieldFromAbi(\n allArgs: readonly unknown[],\n criteriaIndex: number,\n abiInputs: readonly AbiParameter[],\n declaredType: PrimitiveType,\n ): {\n value: string | bigint | Hex;\n type: Exclude<PrimitiveType, PrimitiveType.TUPLE>;\n } {\n // If ANY_ACTION_PARAM, return a dummy \"any\" value so we can do special-case checks\n if (criteriaIndex === CheatCodes.ANY_ACTION_PARAM) {\n return { value: zeroHash, type: PrimitiveType.BYTES };\n }\n\n // If it's not TUPLE, parse as a single index (existing logic)\n if (declaredType !== PrimitiveType.TUPLE) {\n if (!Array.isArray(allArgs) || criteriaIndex >= allArgs.length) {\n throw new FieldValueUndefinedError({\n fieldValue: allArgs,\n criteria: {\n filterType: FilterType.EQUAL,\n fieldType: declaredType,\n fieldIndex: criteriaIndex,\n filterData: zeroHash,\n },\n });\n }\n const abiParam = abiInputs[criteriaIndex];\n if (!abiParam || !abiParam.type) {\n throw new UnparseableAbiParamError(criteriaIndex, abiParam as AbiEvent);\n }\n const rawValue = allArgs[criteriaIndex];\n\n const finalType = abiTypeToPrimitiveType(abiParam.type);\n\n if (\n finalType === PrimitiveType.ADDRESS &&\n (typeof rawValue !== 'string' || !isAddress(rawValue))\n ) {\n throw new FieldValueUndefinedError({\n fieldValue: rawValue,\n criteria: {\n fieldIndex: criteriaIndex,\n filterType: FilterType.EQUAL,\n fieldType: finalType,\n filterData: zeroHash,\n },\n });\n }\n\n return { value: rawValue as string | bigint | Hex, type: finalType };\n }\n\n // Otherwise, declaredType === TUPLE => decode bitpacked indexes\n const indexes = unpackFieldIndexes(criteriaIndex);\n return parseNestedTupleValue(allArgs as unknown[], indexes, abiInputs);\n }\n\n /**\n * Validates a single action function with a given criteria against the transaction input.\n *\n * @public\n * @param {ActionStep} actionStep - The action step containing the function to validate.\n * @param {Transaction} transaction - The transaction that will be validated against.\n * @param {Object} [params] - Parameters for validation.\n * @param {AbiItem} [params.abiItem] - The ABI item for the function, if known.\n * @param {Record<Hex, AbiEvent | AbiFunction>} [params.knownSignatures] - A record of known signatures.\n * @returns {boolean} Returns true if the action function is valid, false otherwise.\n * @throws {ValidationAbiMissingError} Throws if the ABI for the function signature is not found.\n * @throws {FunctionDataDecodeError} Throws if there's an error decoding the function data.\n */\n public isActionFunctionValid(\n actionStep: ActionStep,\n transaction: Transaction,\n params: Pick<ValidateActionStepParams, 'abiItem' | 'knownSignatures'>,\n ) {\n const criteria = actionStep.actionParameter;\n const signature = actionStep.signature;\n\n let func: AbiFunction;\n if (params.abiItem) func = params.abiItem as AbiFunction;\n else {\n const sigPool = params.knownSignatures as Record<Hex, AbiFunction>;\n func = sigPool[signature] as AbiFunction;\n }\n if (!func) {\n throw new ValidationAbiMissingError(signature);\n }\n\n let decodedData;\n try {\n decodedData = decodeFunctionData({\n abi: [func],\n data: transaction.input,\n });\n } catch (e) {\n throw new FunctionDataDecodeError([func], e as Error);\n }\n\n if (!decodedData?.args) {\n return false;\n }\n\n try {\n const { value, type } = this.parseFieldFromAbi(\n decodedData.args as unknown[],\n criteria.fieldIndex,\n func.inputs || [],\n criteria.fieldType,\n );\n criteria.fieldType = type;\n return this.validateFieldAgainstCriteria(criteria, value, {\n decodedArgs: decodedData.args as readonly (string | bigint)[],\n });\n } catch {\n return false;\n }\n }\n\n /**\n * Validates a field against a given criteria. The field is assumed to be a non-tuple scalar,\n * along with its final resolved `PrimitiveType`. (Any TUPLE logic has been extracted elsewhere.)\n *\n * @param {Criteria} criteria - The criteria to validate against.\n * @param {string | bigint | Hex} fieldValue - The field value to validate.\n * @param {Exclude<PrimitiveType, PrimitiveType.TUPLE>} fieldType - The final resolved primitive type.\n * @param {Object} input - Additional context for validation.\n * @param {EventLogs[0]} [input.log] - The event log, if validating an event.\n * @param {readonly (string | bigint)[]} [input.decodedArgs] - The decoded function arguments, if validating a function call.\n * @returns {boolean} - Returns true if the field passes the criteria, false otherwise.\n */\n public validateFieldAgainstCriteria(\n criteria: Criteria,\n fieldValue: string | bigint | Hex,\n input:\n | { log: EventLogs[0] }\n | { decodedArgs: readonly (string | bigint)[] },\n ): boolean {\n /*\n * Special-case: ANY_ACTION_PARAM. If we have filterType=EQUAL, fieldType=BYTES, fieldIndex=255,\n * we consider that a wildcard match. Return true immediately.\n */\n if (\n criteria.filterType === FilterType.EQUAL &&\n criteria.fieldType === PrimitiveType.BYTES &&\n criteria.fieldIndex === CheatCodes.ANY_ACTION_PARAM\n ) {\n return true;\n }\n if (criteria.fieldType === PrimitiveType.TUPLE) {\n throw new InvalidTupleDecodingError(\n 'Tuples should not be passed into validateFieldAgainstCriteria',\n );\n }\n const fieldType = criteria.fieldType;\n\n // Evaluate filter based on the final fieldType\n switch (criteria.filterType) {\n case FilterType.EQUAL:\n return match(fieldType)\n .with(PrimitiveType.ADDRESS, () =>\n isAddressEqual(criteria.filterData, fieldValue as Address),\n )\n .with(\n PrimitiveType.UINT,\n () => BigInt(fieldValue) === BigInt(criteria.filterData),\n )\n .with(\n PrimitiveType.STRING,\n () => fieldValue === fromHex(criteria.filterData, 'string'),\n )\n .otherwise(() => fieldValue === criteria.filterData);\n\n case FilterType.NOT_EQUAL:\n return match(fieldType)\n .with(\n PrimitiveType.ADDRESS,\n () => !isAddressEqual(criteria.filterData, fieldValue as Address),\n )\n .with(\n PrimitiveType.UINT,\n () => BigInt(fieldValue) !== BigInt(criteria.filterData),\n )\n .with(\n PrimitiveType.INT,\n () => BigInt(fieldValue) !== BigInt(criteria.filterData),\n )\n .with(\n PrimitiveType.STRING,\n () => fieldValue !== fromHex(criteria.filterData, 'string'),\n )\n .otherwise(() => fieldValue !== criteria.filterData);\n\n case FilterType.GREATER_THAN:\n if (\n fieldType === PrimitiveType.UINT ||\n fieldType === PrimitiveType.INT\n ) {\n return BigInt(fieldValue) > BigInt(criteria.filterData);\n }\n throw new InvalidNumericalCriteriaError({\n ...input,\n criteria,\n fieldValue,\n });\n\n case FilterType.GREATER_THAN_OR_EQUAL:\n if (\n fieldType === PrimitiveType.UINT ||\n fieldType === PrimitiveType.INT\n ) {\n return BigInt(fieldValue) >= BigInt(criteria.filterData);\n }\n throw new InvalidNumericalCriteriaError({\n ...input,\n criteria,\n fieldValue,\n });\n\n case FilterType.LESS_THAN:\n if (\n fieldType === PrimitiveType.UINT ||\n fieldType === PrimitiveType.INT\n ) {\n return BigInt(fieldValue) < BigInt(criteria.filterData);\n }\n throw new InvalidNumericalCriteriaError({\n ...input,\n criteria,\n fieldValue,\n });\n\n case FilterType.LESS_THAN_OR_EQUAL:\n if (\n fieldType === PrimitiveType.UINT ||\n fieldType === PrimitiveType.INT\n ) {\n return BigInt(fieldValue) <= BigInt(criteria.filterData);\n }\n throw new InvalidNumericalCriteriaError({\n ...input,\n criteria,\n fieldValue,\n });\n\n case FilterType.CONTAINS:\n if (\n fieldType === PrimitiveType.BYTES ||\n fieldType === PrimitiveType.STRING\n ) {\n let substring;\n if (fieldType === PrimitiveType.STRING) {\n substring = fromHex(criteria.filterData, 'string');\n } else {\n // truncate the `0x` prefix\n substring = criteria.filterData.slice(2);\n }\n return (fieldValue as string).includes(substring);\n }\n throw new FieldValueNotComparableError({\n ...input,\n criteria,\n fieldValue,\n });\n\n case FilterType.REGEX:\n if (typeof fieldValue !== 'string') {\n throw new FieldValueNotComparableError({\n ...input,\n criteria,\n fieldValue,\n });\n }\n if (fieldType === PrimitiveType.STRING) {\n const regexString = fromHex(criteria.filterData, 'string');\n return new RegExp(regexString).test(fieldValue);\n }\n // Otherwise unrecognized or not applicable\n\n default:\n throw new UnrecognizedFilterTypeError({\n ...input,\n criteria,\n fieldValue,\n });\n }\n }\n\n /**\n * @inheritdoc\n *\n * @public\n * @param {?EventActionPayload} [_payload]\n * @param {?DeployableOptions} [_options]\n * @returns {GenericDeployableParams}\n */\n public override buildParameters(\n _payload?: EventActionPayload,\n _options?: DeployableOptions,\n ): GenericDeployableParams {\n const [payload, options] = this.validateDeploymentConfig(\n _payload,\n _options,\n );\n let rawPayload: EventActionPayloadRaw;\n if (isEventActionPayloadSimple(payload)) {\n // filter out any falsy potential values\n let tmpSteps: ActionStep[] = payload.actionSteps.filter((step) => !!step);\n if (tmpSteps.length === 0) {\n throw new NoEventActionStepsProvidedError();\n }\n if (tmpSteps.length > 4) {\n throw new TooManyEventActionStepsProvidedError();\n }\n let steps: ActionStepTuple = Array.from({ length: 4 }, (_, i) => {\n // use either the provided step at the given index, or reuse the previous step\n // should aways exist\n return tmpSteps.at(i) || tmpSteps.at(-1);\n }) as ActionStepTuple;\n rawPayload = {\n actionClaimant: payload.actionClaimant,\n actionStepOne: steps[0],\n actionStepTwo: steps[1],\n actionStepThree: steps[2],\n actionStepFour: steps[3],\n };\n } else {\n rawPayload = payload;\n }\n return {\n abi: eventActionAbi,\n bytecode: bytecode as Hex,\n args: [prepareEventActionPayload(rawPayload)],\n ...this.optionallyAttachAccount(options.account),\n };\n }\n\n /**\n * Determines whether a string or bytes field is indexed in the event definition.\n * If the user tries to filter on an indexed string/bytes, we throw an error.\n *\n * @public\n * @param {ActionStep} step\n * @param {AbiEvent} event\n * @returns {boolean}\n */\n public isArraylikeIndexed(step: ActionStep, event: AbiEvent) {\n if (\n (step.actionParameter.fieldType === PrimitiveType.STRING ||\n step.actionParameter.fieldType === PrimitiveType.BYTES) &&\n event.inputs[step.actionParameter.fieldIndex]?.indexed\n ) {\n return true;\n }\n return false;\n }\n}\n\n/**\n * Checks if a particular ABI parameter is the \"tuple\" variant that can have `components`.\n *\n * @param {AbiParameter} param\n * @returns {boolean}\n */\nfunction isTupleAbiParameter(\n param: AbiParameter,\n): param is Extract<AbiParameter, { components: readonly AbiParameter[] }> {\n return param.type === 'tuple' || param.type.startsWith('tuple[');\n}\n\n/**\n * Recursively parses nested tuples by following an array of sub-indexes (unpacked from bitpacked `fieldIndex`).\n * Each entry in `indexes` is used to pick which sub-component in the current tuple's `components`.\n * If we encounter the \"terminator\" or run out of indexes, we stop.\n *\n * @param {unknown[]} rawArgs - The top-level arguments array.\n * @param {number[]} indexes - The array of indexes from `unpackFieldIndexes(...)`.\n * @param {readonly AbiParameter[]} abiInputs - The top-level ABI inputs for the entire arguments array.\n * @returns {{ value: string | bigint | Hex, type: Exclude<PrimitiveType, PrimitiveType.TUPLE> }}\n */\nfunction parseNestedTupleValue(\n rawArgs: unknown[],\n indexes: number[],\n abiInputs: readonly AbiParameter[],\n): {\n value: string | bigint | Hex;\n type: Exclude<PrimitiveType, PrimitiveType.TUPLE>;\n} {\n if (!indexes.length) {\n throw new InvalidTupleDecodingError(\n `No indexes found; cannot parse TUPLE field`,\n );\n }\n\n // The first index picks which top-level ABI param to look at\n const idx = indexes[0] ?? abiInputs.length + 1;\n // If idx is out of range or is a \"terminator,\" fail fast\n if (idx >= abiInputs.length) {\n throw new InvalidTupleDecodingError(undefined, idx);\n }\n\n const param = abiInputs[idx];\n const rawValue = rawArgs[idx];\n\n // If param isn't a tuple, we are at a leaf\n if (!isTupleAbiParameter(param!)) {\n const finalType = abiTypeToPrimitiveType(param!.type);\n return { value: rawValue as string | bigint | Hex, type: finalType };\n }\n\n // Otherwise param is a tuple => rawValue must be an array of subfields\n if (!Array.isArray(rawValue)) {\n throw new InvalidTupleDecodingError(\n `rawValue is not an array, but param.type is tuple`,\n );\n }\n\n // Move to the next sub-index\n const remaining = indexes.slice(1);\n if (!remaining.length) {\n // If there are no more indexes, we can't pick a sub-component\n // Typically you'd want at least one more index to say \"which subfield in the tuple we want\"\n throw new InvalidTupleDecodingError(undefined, -1);\n }\n\n // Check the next index for param.components\n const subIdx = remaining[0] ?? param.components.length + 1;\n if (subIdx >= param.components.length) {\n throw new InvalidTupleDecodingError(undefined, subIdx);\n }\n\n // Recurse deeper using param.components as the \"new top-level\" ABI param list\n return parseNestedTupleValue(rawValue, remaining, param.components);\n}\n\n/**\n * Maps an ABI type string (e.g. 'uint256', 'address', 'bytes', 'string', etc.) to a `PrimitiveType`.\n *\n * @param {string} abiType\n * @returns {Exclude<PrimitiveType, PrimitiveType.TUPLE>}\n */\nfunction abiTypeToPrimitiveType(\n abiType: string,\n): Exclude<PrimitiveType, PrimitiveType.TUPLE> {\n const lower = abiType.toLowerCase();\n\n if (lower.startsWith('uint')) {\n return PrimitiveType.UINT;\n }\n if (lower.startsWith('int')) {\n return PrimitiveType.INT;\n }\n if (lower === 'address') {\n return PrimitiveType.ADDRESS;\n }\n if (lower === 'bytes' || lower.startsWith('bytes')) {\n return PrimitiveType.BYTES;\n }\n if (lower === 'string') {\n return PrimitiveType.STRING;\n }\n\n // If it doesn't match any known scalar, throw. We expect parseNestedTupleValue() to handle nested tuple logic separately.\n throw new DecodedArgsError(`Unrecognized ABI type: ${abiType}`);\n}\n\nfunction _dedupeActionSteps(_steps: ActionStep[]): ActionStep[] {\n const steps: ActionStep[] = [];\n const signatures: Record<string, boolean> = {};\n for (let step of _steps) {\n const signature = JSON.stringify(step);\n if (signatures[signature]) continue;\n steps.push(step);\n signatures[signature] = true;\n }\n return steps;\n}\n\ntype RawActionStep = Overwrite<ActionStep, { chainid: bigint }>;\ntype RawActionClaimant = Overwrite<ActionClaimant, { chainid: bigint }>;\n\nfunction _toRawActionStep<T extends ActionStep | ActionClaimant>(obj: T) {\n return {\n ...obj,\n chainid: BigInt(obj.chainid),\n };\n}\n\nfunction _fromRawActionStep<T extends RawActionStep | RawActionClaimant>(\n obj: T,\n) {\n if (obj.chainid > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error('Chain ID exceeds max safe integer');\n }\n\n return {\n ...obj,\n chainid: Number(obj.chainid),\n };\n}\n\n/**\n * Typeguard to determine if a user is supplying a simple or raw EventActionPayload\n *\n * @param {*} opts\n * @returns {opts is EventActionPayloadSimple}\n */\nfunction _isEventActionPayloadSimple(\n opts: EventActionPayload,\n): opts is EventActionPayloadSimple {\n return Array.isArray((opts as EventActionPayloadSimple).actionSteps);\n}\n\n/**\n * Determines whether a signature is an event or function signature based on its format.\n * - 32-byte signatures (0x + 64 chars) that don't start with 28 zeros are event signatures\n * - 4-byte signatures (0x + 8 chars) or 32-byte signatures with 28 leading zeros are function signatures\n *\n * @param {Hex} signature - The signature to check\n * @returns {SignatureType} The detected signature type\n */\nexport function detectSignatureType(signature: Hex): SignatureType {\n const hexWithoutPrefix = signature.slice(2);\n\n // 4-byte function selectors (8 hex chars)\n if (hexWithoutPrefix.length === 8) {\n return SignatureType.FUNC;\n }\n\n // 32-byte selectors (64 hex chars)\n if (hexWithoutPrefix.length === 64) {\n // Check if it starts with 28 bytes (56 chars) of zeros\n const leadingPart = hexWithoutPrefix.slice(0, 56);\n if (leadingPart === '0'.repeat(56)) {\n return SignatureType.FUNC;\n }\n return SignatureType.EVENT;\n }\n\n throw new Error('Invalid signature format');\n}\n\n/**\n * Normalizes a hex value to ensure proper byte padding.\n * This prevents viem's automatic padding which can change the value.\n * For example:\n * - \"0x1\" -> \"0x01\"\n * - \"0xabc\" -> \"0x0abc\"\n * - \"0xabcd\" -> \"0xabcd\"\n *\n * @param {Hex} value - The hex value to normalize\n * @returns {Hex} The normalized hex string\n */\nfunction normalizeUintValue(value: Hex): Hex {\n return trim(pad(value));\n}\n\n/**\n * Helper function to prepare an action step for encoding\n *\n * @param {ActionStep} step - The action step to prepare\n * @returns {ActionStep} The prepared action step\n */\nfunction prepareActionStep(step: ActionStep) {\n return {\n ..._toRawActionStep(step),\n signatureType: step.signatureType ?? detectSignatureType(step.signature),\n signature: pad(step.signature),\n actionType: step.actionType || 0,\n actionParameter:\n step.actionParameter.fieldType === PrimitiveType.UINT\n ? {\n ...step.actionParameter,\n filterData: normalizeUintValue(step.actionParameter.filterData),\n }\n : step.actionParameter,\n };\n}\n\n/**\n * Function to properly encode an event action payload.\n *\n * @param {InitPayload} param0\n * @param {ActionStep} param0.actionStepOne - The first action step to initialize.\n * @param {ActionStep} param0.actionStepTwo - The second action step to initialize.\n * @param {ActionStep} param0.actionStepThree - The third action step to initialize.\n * @param {ActionStep} param0.actionStepFour - The fourth action step to initialize.\n * @returns {Hex}\n */\nexport function prepareEventActionPayload({\n actionClaimant,\n actionStepOne,\n actionStepTwo,\n actionStepThree,\n actionStepFour,\n}: EventActionPayloadRaw) {\n // note chainIds are technically uint256 but viem treats them (safely) as numbers,\n // so we encode them as uint32 here to avoid downcast issues\n return encodeAbiParameters(\n [\n {\n type: 'tuple',\n name: 'initPayload',\n components: [\n {\n type: 'tuple',\n name: 'actionClaimant',\n components: [\n { type: 'uint8', name: 'signatureType' },\n { type: 'bytes32', name: 'signature' },\n { type: 'uint8', name: 'fieldIndex' },\n { type: 'address', name: 'targetContract' },\n { type: 'uint256', name: 'chainid' },\n ],\n },\n {\n type: 'tuple',\n name: 'actionStepOne',\n components: [\n { type: 'bytes32', name: 'signature' },\n { type: 'uint8', name: 'signatureType' },\n { type: 'uint8', name: 'actionType' },\n { type: 'address', name: 'targetContract' },\n { type: 'uint256', name: 'chainid' },\n {\n type: 'tuple',\n name: 'actionParameter',\n components: [\n { type: 'uint8', name: 'filterType' },\n { type: 'uint8', name: 'fieldType' },\n { type: 'uint32', name: 'fieldIndex' },\n { type: 'bytes', name: 'filterData' },\n ],\n },\n ],\n },\n {\n type: 'tuple',\n name: 'actionStepTwo',\n components: [\n { type: 'bytes32', name: 'signature' },\n { type: 'uint8', name: 'signatureType' },\n { type: 'uint8', name: 'actionType' },\n { type: 'address', name: 'targetContract' },\n { type: 'uint256', name: 'chainid' },\n {\n type: 'tuple',\n name: 'actionParameter',\n components: [\n { type: 'uint8', name: 'filterType' },\n { type: 'uint8', name: 'fieldType' },\n { type: 'uint32', name: 'fieldIndex' },\n { type: 'bytes', name: 'filterData' },\n ],\n },\n ],\n },\n {\n type: 'tuple',\n name: 'actionStepThree',\n components: [\n { type: 'bytes32', name: 'signature' },\n { type: 'uint8', name: 'signatureType' },\n { type: 'uint8', name: 'actionType' },\n { type: 'address', name: 'targetContract' },\n { type: 'uint256', name: 'chainid' },\n {\n type: 'tuple',\n name: 'actionParameter',\n components: [\n { type: 'uint8', name: 'filterType' },\n { type: 'uint8', name: 'fieldType' },\n { type: 'uint32', name: 'fieldIndex' },\n { type: 'bytes', name: 'filterData' },\n ],\n },\n ],\n },\n {\n type: 'tuple',\n name: 'actionStepFour',\n components: [\n { type: 'bytes32', name: 'signature' },\n { type: 'uint8', name: 'signatureType' },\n { type: 'uint8', name: 'actionType' },\n { type: 'address', name: 'targetContract' },\n { type: 'uint256', name: 'chainid' },\n {\n type: 'tuple',\n name: 'actionParameter',\n components: [\n { type: 'uint8', name: 'filterType' },\n { type: 'uint8', name: 'fieldType' },\n { type: 'uint32', name: 'fieldIndex' },\n { type: 'bytes', name: 'filterData' },\n ],\n },\n ],\n },\n ],\n },\n ],\n [\n {\n actionClaimant: {\n ..._toRawActionStep(actionClaimant),\n signatureType:\n actionClaimant.signatureType ??\n detectSignatureType(actionClaimant.signature),\n signature: pad(actionClaimant.signature),\n },\n actionStepOne: prepareActionStep(actionStepOne),\n actionStepTwo: prepareActionStep(actionStepTwo),\n actionStepThree: prepareActionStep(actionStepThree),\n actionStepFour: prepareActionStep(actionStepFour),\n },\n ],\n );\n}\n\n/**\n * Creates a default Criteria object that allows validation to pass. This is used if you don't care about targeting specific parameters in the action step.\n *\n * This function returns a Criteria object with the following properties:\n * - filterType: Set to EQUAL for exact matching\n * - fieldType: Set to BYTES to handle any data type\n * - fieldIndex: Set to 255, which is typically used to indicate \"any\" or \"all\" in this context using CheatCodes enum\n * - filterData: Set to zeroHash (0x0000...0000)\n *\n * @returns {Criteria} A Criteria object that can be used to match any action parameter\n *\n * @example\n * const anyCriteria = anyActionParameter();\n * // Use this criteria in an ActionStep to match any parameter\n * const actionStep = {\n * // ... other properties ...\n * actionParameter: anyCriteria\n * };\n */\nexport function anyActionParameter(): Criteria {\n return {\n filterType: FilterType.EQUAL,\n fieldType: PrimitiveType.BYTES,\n fieldIndex: CheatCodes.ANY_ACTION_PARAM,\n filterData: zeroHash,\n };\n}\n\n/**\n * Creates an ActionClaimant object that represents the transaction sender as the claimant.\n * This function is useful when you want to set up an action where the transaction sender is always considered the valid claimant,\n * regardless of the event or function parameters.\n *\n * The returned ActionClaimant has the following properties:\n * - signatureType: Set to SignatureType.EVENT (though it doesn't matter for this case)\n * - signature: Set to zeroHash (0x0000...0000)\n * - fieldIndex: Set to 255, indicating \"any\" field using CheatCodes enum\n * - targetContract: Set to zeroAddress (0x0000...0000)\n * - chainid: The chain ID on which the transaction is sent, should match the chain ID for the action's {@link ActionStep}\n *\n * @param {number} chainId - The chain ID on which the transaction is sent, should match the chain ID for the action's {@link ActionStep}\n * @returns {ActionClaimant} An ActionClaimant object representing the msg.sender\n *\n * @example\n * const eventAction = new EventAction();\n * const payload: EventActionPayload = {\n * actionClaimant: transactionSenderClaimant(),\n * actionSteps: [\n * // ... define your action steps here\n * ]\n * };\n * await eventAction.deploy(payload);\n */\nexport function transactionSenderClaimant(chainId: number): ActionClaimant {\n return {\n signatureType: SignatureType.EVENT,\n signature: zeroHash,\n fieldIndex: CheatCodes.TX_SENDER_CLAIMANT,\n targetContract: zeroAddress,\n chainid: chainId,\n };\n}\n\n// Helper functions to bit-pack and decode fieldIndex values\nconst MAX_FIELD_INDEX = 0b111111; // Maximum value for 6 bits (63)\n\n/**\n * Packs up to five indexes into a single uint32 value.\n *\n * @param {number[]} indexes - Array of up to five indexes to pack.\n * @returns {number} - Packed uint32 value.\n * @throws {Error} - If more than five indexes are provided or an index exceeds the maximum value.\n */\nexport function packFieldIndexes(indexes: number[]): number {\n if (indexes.length > 5) {\n throw new InvalidTupleEncodingError('Can only pack up to 5 indexes.');\n }\n\n let packed = 0;\n indexes.forEach((index, i) => {\n if (index > MAX_FIELD_INDEX) {\n throw new InvalidTupleEncodingError(\n `Index ${index} exceeds the maximum allowed value (${MAX_FIELD_INDEX}).`,\n );\n }\n packed |= (index & MAX_FIELD_INDEX) << (i * 6); // Each index occupies 6 bits\n });\n if (indexes.length < 5) {\n packed |= MAX_FIELD_INDEX << (indexes.length * 6); // Terminator\n }\n\n return packed;\n}\n\n/**\n * Unpacks a uint32 fieldIndex value into an array of up to five indexes.\n *\n * @param {number} packed - Packed uint32 value.\n * @returns {number[]} - Array of unpacked indexes.\n */\nexport function unpackFieldIndexes(packed: number): number[] {\n const indexes: number[] = [];\n for (let i = 0; i < 5; i++) {\n const index = (packed >> (i * 6)) & MAX_FIELD_INDEX;\n if (index === MAX_FIELD_INDEX) break; // Terminator value\n indexes.push(index);\n }\n return indexes;\n}\n\n/**\n * Decodes an event log and reorders the arguments to match the original ABI order.\n * This is necessary because viem's decodeEventLog reorders indexed parameters to the front.\n *\n * @param event - The event ABI definition\n * @param log - The log to decode\n * @returns {EventLog} The decoded log with arguments in the original ABI order\n */\nexport function decodeAndReorderLogArgs(event: AbiEvent, log: Log) {\n const decodedLog = decodeEventLog({\n abi: [event],\n data: log.data,\n topics: log.topics,\n });\n\n const argsArray = Array.isArray(decodedLog.args)\n ? decodedLog.args\n : Object.values(decodedLog.args);\n\n if (!event.inputs.some((input) => input.indexed)) {\n return {\n ...log,\n ...decodedLog,\n } as EventLog;\n }\n\n const indexedIndices: number[] = [];\n const nonIndexedIndices: number[] = [];\n for (let i = 0; i < event.inputs.length; i++) {\n if (event.inputs[i]!.indexed) {\n indexedIndices.push(i);\n } else {\n nonIndexedIndices.push(i);\n }\n }\n\n const reorderedArgs = Array.from({ length: event.inputs.length });\n let currentIndex = 0;\n\n // Place the indexed arguments in their original positions\n for (let i = 0; i < indexedIndices.length; i++) {\n reorderedArgs[indexedIndices[i]!] = argsArray[currentIndex++];\n }\n\n // Place the non-indexed arguments in their original positions\n for (let i = 0; i < nonIndexedIndices.length; i++) {\n reorderedArgs[nonIndexedIndices[i]!] = argsArray[currentIndex++];\n }\n\n return {\n ...log,\n eventName: decodedLog.eventName,\n args: reorderedArgs,\n } as EventLog;\n}\n"],"names":["t","e","n","r","i","s","o","c","a","u","h","m","d","y","p","v","b","j","x","A","W","$","z","I","FilterType","PrimitiveType","SignatureType","ValueType","isEventActionPayloadSimple","opts","_EventAction","DeployableTarget","eventActionAbi","index","params","steps","readEventActionGetActionSteps","_dedupeActionSteps","_fromRawActionStep","result","readEventActionGetActionClaimant","data","request","simulateEventActionExecute","writeEventActionExecute","claimant","CheatCodes","transaction","getTransaction","log","signature","event","ValidationAbiMissingError","address","isAddressEqual","addressCandidate","receipt","getTransactionReceipt","decodedLogs","TRANSFER_SIGNATURE","toEventSelector","decodeAndReorderLogArgs","func","decodedData","decodeFunctionData","FunctionDataDecodeError","logOrFnData","maybeAddress","isAddress","actionSteps","actionStep","UnparseableAbiParamError","logs","eventAbi","criteria","DecodedArgsMalformedError","value","type","filteredLogs","abi","eventName","args","decodeEventLog","DecodedArgsError","allArgs","criteriaIndex","abiInputs","declaredType","zeroHash","FieldValueUndefinedError","abiParam","rawValue","finalType","abiTypeToPrimitiveType","indexes","unpackFieldIndexes","parseNestedTupleValue","fieldValue","input","InvalidTupleDecodingError","fieldType","match","fromHex","InvalidNumericalCriteriaError","substring","FieldValueNotComparableError","regexString","UnrecognizedFilterTypeError","_payload","_options","payload","options","rawPayload","tmpSteps","step","NoEventActionStepsProvidedError","TooManyEventActionStepsProvidedError","_","bytecode","prepareEventActionPayload","_a","EventActionBases","RegistryType","EventAction","isTupleAbiParameter","param","rawArgs","idx","remaining","subIdx","abiType","lower","_steps","signatures","_toRawActionStep","obj","detectSignatureType","hexWithoutPrefix","normalizeUintValue","trim","pad","prepareActionStep","actionClaimant","actionStepOne","actionStepTwo","actionStepThree","actionStepFour","encodeAbiParameters","anyActionParameter","transactionSenderClaimant","chainId","zeroAddress","MAX_FIELD_INDEX","packFieldIndexes","InvalidTupleEncodingError","packed","decodedLog","argsArray","indexedIndices","nonIndexedIndices","reorderedArgs","currentIndex"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"EventAction.cjs","sources":["../../../../node_modules/.pnpm/ts-pattern@5.6.2/node_modules/ts-pattern/dist/index.js","../../src/Actions/EventAction.ts"],"sourcesContent":["const t=Symbol.for(\"@ts-pattern/matcher\"),e=Symbol.for(\"@ts-pattern/isVariadic\"),n=\"@ts-pattern/anonymous-select-key\",r=t=>Boolean(t&&\"object\"==typeof t),i=e=>e&&!!e[t],s=(n,o,c)=>{if(i(n)){const e=n[t](),{matched:r,selections:i}=e.match(o);return r&&i&&Object.keys(i).forEach(t=>c(t,i[t])),r}if(r(n)){if(!r(o))return!1;if(Array.isArray(n)){if(!Array.isArray(o))return!1;let t=[],r=[],a=[];for(const s of n.keys()){const o=n[s];i(o)&&o[e]?a.push(o):a.length?r.push(o):t.push(o)}if(a.length){if(a.length>1)throw new Error(\"Pattern error: Using `...P.array(...)` several times in a single pattern is not allowed.\");if(o.length<t.length+r.length)return!1;const e=o.slice(0,t.length),n=0===r.length?[]:o.slice(-r.length),i=o.slice(t.length,0===r.length?Infinity:-r.length);return t.every((t,n)=>s(t,e[n],c))&&r.every((t,e)=>s(t,n[e],c))&&(0===a.length||s(a[0],i,c))}return n.length===o.length&&n.every((t,e)=>s(t,o[e],c))}return Reflect.ownKeys(n).every(e=>{const r=n[e];return(e in o||i(a=r)&&\"optional\"===a[t]().matcherType)&&s(r,o[e],c);var a})}return Object.is(o,n)},o=e=>{var n,s,a;return r(e)?i(e)?null!=(n=null==(s=(a=e[t]()).getSelectionKeys)?void 0:s.call(a))?n:[]:Array.isArray(e)?c(e,o):c(Object.values(e),o):[]},c=(t,e)=>t.reduce((t,n)=>t.concat(e(n)),[]);function a(...t){if(1===t.length){const[e]=t;return t=>s(e,t,()=>{})}if(2===t.length){const[e,n]=t;return s(e,n,()=>{})}throw new Error(`isMatching wasn't given the right number of arguments: expected 1 or 2, received ${t.length}.`)}function u(t){return Object.assign(t,{optional:()=>h(t),and:e=>m(t,e),or:e=>d(t,e),select:e=>void 0===e?y(t):y(e,t)})}function l(t){return Object.assign((t=>Object.assign(t,{[Symbol.iterator](){let n=0;const r=[{value:Object.assign(t,{[e]:!0}),done:!1},{done:!0,value:void 0}];return{next:()=>{var t;return null!=(t=r[n++])?t:r.at(-1)}}}}))(t),{optional:()=>l(h(t)),select:e=>l(void 0===e?y(t):y(e,t))})}function h(e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return void 0===t?(o(e).forEach(t=>r(t,void 0)),{matched:!0,selections:n}):{matched:s(e,t,r),selections:n}},getSelectionKeys:()=>o(e),matcherType:\"optional\"})})}const f=(t,e)=>{for(const n of t)if(!e(n))return!1;return!0},g=(t,e)=>{for(const[n,r]of t.entries())if(!e(r,n))return!1;return!0};function m(...e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return{matched:e.every(e=>s(e,t,r)),selections:n}},getSelectionKeys:()=>c(e,o),matcherType:\"and\"})})}function d(...e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return c(e,o).forEach(t=>r(t,void 0)),{matched:e.some(e=>s(e,t,r)),selections:n}},getSelectionKeys:()=>c(e,o),matcherType:\"or\"})})}function p(e){return{[t]:()=>({match:t=>({matched:Boolean(e(t))})})}}function y(...e){const r=\"string\"==typeof e[0]?e[0]:void 0,i=2===e.length?e[1]:\"string\"==typeof e[0]?void 0:e[0];return u({[t]:()=>({match:t=>{let e={[null!=r?r:n]:t};return{matched:void 0===i||s(i,t,(t,n)=>{e[t]=n}),selections:e}},getSelectionKeys:()=>[null!=r?r:n].concat(void 0===i?[]:o(i))})})}function v(t){return\"number\"==typeof t}function b(t){return\"string\"==typeof t}function w(t){return\"bigint\"==typeof t}const S=u(p(function(t){return!0})),O=S,j=t=>Object.assign(u(t),{startsWith:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.startsWith(n)))));var n},endsWith:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.endsWith(n)))));var n},minLength:e=>j(m(t,(t=>p(e=>b(e)&&e.length>=t))(e))),length:e=>j(m(t,(t=>p(e=>b(e)&&e.length===t))(e))),maxLength:e=>j(m(t,(t=>p(e=>b(e)&&e.length<=t))(e))),includes:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.includes(n)))));var n},regex:e=>{return j(m(t,(n=e,p(t=>b(t)&&Boolean(t.match(n))))));var n}}),K=j(p(b)),x=t=>Object.assign(u(t),{between:(e,n)=>x(m(t,((t,e)=>p(n=>v(n)&&t<=n&&e>=n))(e,n))),lt:e=>x(m(t,(t=>p(e=>v(e)&&e<t))(e))),gt:e=>x(m(t,(t=>p(e=>v(e)&&e>t))(e))),lte:e=>x(m(t,(t=>p(e=>v(e)&&e<=t))(e))),gte:e=>x(m(t,(t=>p(e=>v(e)&&e>=t))(e))),int:()=>x(m(t,p(t=>v(t)&&Number.isInteger(t)))),finite:()=>x(m(t,p(t=>v(t)&&Number.isFinite(t)))),positive:()=>x(m(t,p(t=>v(t)&&t>0))),negative:()=>x(m(t,p(t=>v(t)&&t<0)))}),E=x(p(v)),A=t=>Object.assign(u(t),{between:(e,n)=>A(m(t,((t,e)=>p(n=>w(n)&&t<=n&&e>=n))(e,n))),lt:e=>A(m(t,(t=>p(e=>w(e)&&e<t))(e))),gt:e=>A(m(t,(t=>p(e=>w(e)&&e>t))(e))),lte:e=>A(m(t,(t=>p(e=>w(e)&&e<=t))(e))),gte:e=>A(m(t,(t=>p(e=>w(e)&&e>=t))(e))),positive:()=>A(m(t,p(t=>w(t)&&t>0))),negative:()=>A(m(t,p(t=>w(t)&&t<0)))}),P=A(p(w)),T=u(p(function(t){return\"boolean\"==typeof t})),B=u(p(function(t){return\"symbol\"==typeof t})),_=u(p(function(t){return null==t})),k=u(p(function(t){return null!=t}));var N={__proto__:null,matcher:t,optional:h,array:function(...e){return l({[t]:()=>({match:t=>{if(!Array.isArray(t))return{matched:!1};if(0===e.length)return{matched:!0};const n=e[0];let r={};if(0===t.length)return o(n).forEach(t=>{r[t]=[]}),{matched:!0,selections:r};const i=(t,e)=>{r[t]=(r[t]||[]).concat([e])};return{matched:t.every(t=>s(n,t,i)),selections:r}},getSelectionKeys:()=>0===e.length?[]:o(e[0])})})},set:function(...e){return u({[t]:()=>({match:t=>{if(!(t instanceof Set))return{matched:!1};let n={};if(0===t.size)return{matched:!0,selections:n};if(0===e.length)return{matched:!0};const r=(t,e)=>{n[t]=(n[t]||[]).concat([e])},i=e[0];return{matched:f(t,t=>s(i,t,r)),selections:n}},getSelectionKeys:()=>0===e.length?[]:o(e[0])})})},map:function(...e){return u({[t]:()=>({match:t=>{if(!(t instanceof Map))return{matched:!1};let n={};if(0===t.size)return{matched:!0,selections:n};const r=(t,e)=>{n[t]=(n[t]||[]).concat([e])};if(0===e.length)return{matched:!0};var i;if(1===e.length)throw new Error(`\\`P.map\\` wasn't given enough arguments. Expected (key, value), received ${null==(i=e[0])?void 0:i.toString()}`);const[o,c]=e;return{matched:g(t,(t,e)=>{const n=s(o,e,r),i=s(c,t,r);return n&&i}),selections:n}},getSelectionKeys:()=>0===e.length?[]:[...o(e[0]),...o(e[1])]})})},intersection:m,union:d,not:function(e){return u({[t]:()=>({match:t=>({matched:!s(e,t,()=>{})}),getSelectionKeys:()=>[],matcherType:\"not\"})})},when:p,select:y,any:S,_:O,string:K,number:E,bigint:P,boolean:T,symbol:B,nullish:_,nonNullable:k,instanceOf:function(t){return u(p(function(t){return e=>e instanceof t}(t)))},shape:function(t){return u(p(a(t)))}};class W extends Error{constructor(t){let e;try{e=JSON.stringify(t)}catch(n){e=t}super(`Pattern matching error: no pattern matches value ${e}`),this.input=void 0,this.input=t}}const $={matched:!1,value:void 0};function z(t){return new I(t,$)}class I{constructor(t,e){this.input=void 0,this.state=void 0,this.input=t,this.state=e}with(...t){if(this.state.matched)return this;const e=t[t.length-1],r=[t[0]];let i;3===t.length&&\"function\"==typeof t[1]?i=t[1]:t.length>2&&r.push(...t.slice(1,t.length-1));let o=!1,c={};const a=(t,e)=>{o=!0,c[t]=e},u=!r.some(t=>s(t,this.input,a))||i&&!Boolean(i(this.input))?$:{matched:!0,value:e(o?n in c?c[n]:c:this.input,this.input)};return new I(this.input,u)}when(t,e){if(this.state.matched)return this;const n=Boolean(t(this.input));return new I(this.input,n?{matched:!0,value:e(this.input,this.input)}:$)}otherwise(t){return this.state.matched?this.state.value:t(this.input)}exhaustive(){if(this.state.matched)return this.state.value;throw new W(this.input)}run(){return this.exhaustive()}returnType(){return this}}export{W as NonExhaustiveError,N as P,N as Pattern,a as isMatching,z as match};\n//# sourceMappingURL=index.js.map\n","import {\n eventActionAbi,\n readEventActionGetActionClaimant,\n readEventActionGetActionSteps,\n simulateEventActionExecute,\n writeEventActionExecute,\n} from '@boostxyz/evm';\nimport { bytecode } from '@boostxyz/evm/artifacts/contracts/actions/EventAction.sol/EventAction.json';\nimport { abi } from '@boostxyz/signatures/events';\nimport { getTransaction, getTransactionReceipt } from '@wagmi/core';\nimport { match } from 'ts-pattern';\nimport {\n type AbiEvent,\n type AbiFunction,\n type AbiParameter,\n type Address,\n type GetLogsReturnType,\n type GetTransactionParameters,\n type GetTransactionReceiptReturnType,\n type Hex,\n type Log,\n type Transaction,\n decodeEventLog,\n decodeFunctionData,\n encodeAbiParameters,\n fromHex,\n isAddress,\n isAddressEqual,\n pad,\n toEventSelector,\n trim,\n zeroAddress,\n zeroHash,\n} from 'viem';\nimport { EventAction as EventActionBases } from '../../dist/deployments.json';\nimport type {\n DeployableOptions,\n GenericDeployableParams,\n} from '../Deployable/Deployable';\nimport { DeployableTarget } from '../Deployable/DeployableTarget';\nimport {\n DecodedArgsError,\n DecodedArgsMalformedError,\n FieldValueNotComparableError,\n FieldValueUndefinedError,\n FunctionDataDecodeError,\n InvalidNumericalCriteriaError,\n InvalidTupleDecodingError,\n InvalidTupleEncodingError,\n NoEventActionStepsProvidedError,\n TooManyEventActionStepsProvidedError,\n UnparseableAbiParamError,\n UnrecognizedFilterTypeError,\n ValidationAbiMissingError,\n} from '../errors';\nimport {\n CheatCodes,\n type Overwrite,\n type ReadParams,\n RegistryType,\n TRANSFER_SIGNATURE,\n type WriteParams,\n} from '../utils';\n\n/*\n * Action Event Payloads\n */\n\n/**\n * Filter types used to determine how criteria are evaluated.\n *\n * @export\n * @enum {number}\n */\nexport enum FilterType {\n EQUAL = 0,\n NOT_EQUAL = 1,\n GREATER_THAN = 2,\n LESS_THAN = 3,\n CONTAINS = 4,\n REGEX = 5,\n GREATER_THAN_OR_EQUAL = 6,\n LESS_THAN_OR_EQUAL = 7,\n}\n\n/**\n * The primitive types supported for filtering.\n *\n * @export\n * @enum {number}\n */\nexport enum PrimitiveType {\n UINT = 0,\n ADDRESS = 1,\n BYTES = 2,\n STRING = 3,\n TUPLE = 4,\n INT = 5,\n}\n\n/**\n * Object representation of a `Criteria` struct used in event actions.\n *\n * @export\n * @interface Criteria\n * @typedef {Criteria}\n */\nexport interface Criteria {\n /**\n * The filter type used in this criteria.\n *\n * @type {FilterType}\n */\n filterType: FilterType;\n /**\n * The primitive type of the field being filtered.\n *\n * @type {PrimitiveType}\n */\n fieldType: PrimitiveType;\n /**\n * The index in the logs argument array where the field is located.\n *\n * If `fieldType` is TUPLE, this value is **bitpacked** with up to 5 sub-indexes,\n * with the maximum 6-bit value used as a \"terminator\" to indicate no further indexes.\n *\n * @type {number}\n */\n fieldIndex: number;\n /**\n * The filter data used for complex filtering.\n *\n * @type {Hex}\n */\n filterData: Hex;\n}\n\n/**\n * Whether a given signature is an event or function\n *\n * @export\n * @enum {number}\n */\nexport enum SignatureType {\n EVENT = 0,\n FUNC = 1,\n}\n\n/**\n * The type of value used for the scalar value (RAW or WAD).\n *\n * @export\n * @enum {number}\n */\nexport enum ValueType {\n RAW = 0,\n WAD = 1,\n}\n\n/**\n * The payload describing how claimants are identified\n *\n * @export\n * @interface ActionClaimant\n * @typedef {ActionClaimant}\n */\nexport interface ActionClaimant {\n /**\n * Whether claimaint is inferred from event or function\n *\n * @type {SignatureType}\n */\n signatureType?: SignatureType;\n /**\n * The 4 byte signature of the event or function\n *\n * @type {Hex}\n */\n signature: Hex;\n /**\n * The index corresponding to claimant.\n *\n * @type {number}\n */\n fieldIndex: number;\n /**\n * The address of the target contract\n *\n * @type {Address}\n */\n targetContract: Address;\n /**\n * The chain id of the target contract.\n * @type {number}\n */\n chainid: number;\n}\n\n/**\n * Object representation of an `ActionStep` struct used in event actions.\n *\n * @export\n * @interface ActionStep\n * @typedef {ActionStep}\n */\nexport interface ActionStep {\n /**\n * The signature of the event.\n *\n * @type {Hex}\n */\n signature: Hex;\n /**\n * Whether claimaint is inferred from event or function\n *\n * @type {SignatureType}\n */\n signatureType?: SignatureType;\n /**\n * The type of action being performed.\n *\n * @type {number}\n */\n actionType?: number;\n /**\n * The address of the target contract.\n *\n * @type {Address}\n */\n targetContract: Address;\n /**\n * The chain id of the target contract.\n * @type {number}\n */\n chainid: number;\n /**\n * The criteria used for this action step.\n *\n * @type {Criteria}\n */\n actionParameter: Criteria;\n}\n\n/**\n * Parameters for validating an action step.\n *\n * @typedef {Object} ValidateActionStepParams\n * @property {Record<Hex, AbiEvent | AbiFunction>} [knownSignatures] - Record of known events, keyed by 32 byte selectors. You can use [@boostxyz/signatures](https://www.npmjs.com/package/@boostxyz/signatures) to assemble this parameter.\n * @property {AbiEvent | AbiFunction} [abiItem] - Optional ABI item definition.\n * @property {EventLogs} [logs] - Event logs to validate against. Required if 'hash' is not provided.\n * @property {Hex} [hash] - Transaction hash to validate against. Required if 'logs' is not provided.\n */\nexport type ValidateActionStepParams = {\n knownSignatures: Record<Hex, AbiEvent | AbiFunction>;\n abiItem?: AbiEvent | AbiFunction;\n notBeforeBlockNumber?: bigint;\n} & ({ logs: EventLogs } | (GetTransactionParameters & { hash: Hex }));\n\n/**\n * You can either supply a simplified version of the payload, or one that explicitly declares action steps.\n *\n * @export\n * @typedef {EventActionPayload}\n */\nexport type EventActionPayload =\n | EventActionPayloadSimple\n | EventActionPayloadRaw;\n\nexport interface EventActionPayloadSimple {\n /**\n * The payload describing how claimants are identified\n *\n * @type {ActionClaimant}\n */\n actionClaimant: ActionClaimant;\n\n /**\n * Up to 4 action steps.\n * If you supply less than 4, then the last step will be reused to satisfy the EventAction.InitPayload\n * Any more than 4 will throw an error.\n *\n * @type {ActionStep[]}\n */\n actionSteps: ActionStep[];\n}\n\nexport type ActionStepTuple = [ActionStep, ActionStep, ActionStep, ActionStep];\n\n/**\n * Typeguard to determine if a user is supplying a simple or raw EventActionPayload\n *\n * @param {*} opts\n * @returns {opts is EventActionPayloadSimple}\n */\nexport function isEventActionPayloadSimple(\n opts: EventActionPayload,\n): opts is EventActionPayloadSimple {\n return Array.isArray((opts as EventActionPayloadSimple).actionSteps);\n}\n\n/**\n * Object representation of an `InitPayload` struct used to initialize event actions.\n *\n * @export\n * @interface EventActionPayloadRaw\n * @typedef {EventActionPayloadRaw}\n */\nexport interface EventActionPayloadRaw {\n /**\n * The payload describing how claimants are identified\n *\n * @type {ActionClaimant}\n */\n actionClaimant: ActionClaimant;\n /**\n * The first action step.\n *\n * @type {ActionStep}\n */\n actionStepOne: ActionStep;\n /**\n * The second action step.\n *\n * @type {ActionStep}\n */\n actionStepTwo: ActionStep;\n /**\n * The third action step.\n *\n * @type {ActionStep}\n */\n actionStepThree: ActionStep;\n /**\n * The fourth action step.\n *\n * @type {ActionStep}\n */\n actionStepFour: ActionStep;\n}\n\n/**\n * Array of event logs to pass into TxParams\n * @export\n * @typedef {EventLogs}\n */\nexport type EventLogs = GetLogsReturnType<AbiEvent, AbiEvent[], true>;\n\n/**\n * Single event log\n * @export\n * @typedef {EventLog}\n */\nexport type EventLog = EventLogs[0] & { args: unknown[] };\n\n/**\n * A generic event action\n *\n * @export\n * @class EventAction\n * @typedef {EventAction}\n * @extends {DeployableTarget<EventActionPayload>}\n */\nexport class EventAction extends DeployableTarget<\n EventActionPayload,\n typeof eventActionAbi\n> {\n /**\n * @inheritdoc\n *\n * @public\n * @readonly\n * @type {*}\n */\n public override readonly abi = eventActionAbi;\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {Record<number, Address>}\n */\n public static override bases: Record<number, Address> = {\n 31337: import.meta.env.VITE_EVENT_ACTION_BASE,\n ...(EventActionBases as Record<number, Address>),\n };\n /**\n * @inheritdoc\n *\n * @public\n * @static\n * @type {RegistryType}\n */\n public static override registryType: RegistryType = RegistryType.ACTION;\n\n /**\n * Gets a specific action event by index\n *\n * @public\n * @async\n * @param {number} index The index of the action event to retrieve\n * @param {?ReadEventActionParams<'getActionStep'>} [params]\n * @returns {Promise<ActionStep>}\n */\n public async getActionStep(index: number, params?: ReadParams) {\n const steps = await this.getActionSteps(params);\n return steps.at(index);\n }\n\n /**\n * Gets all action events\n *\n * @public\n * @async\n * @param {?ReadEventActionParams<'getActionSteps'>} [params]\n * @returns {Promise<ActionStep[]>}\n */\n public async getActionSteps(params?: ReadParams) {\n const steps = (await readEventActionGetActionSteps(this._config, {\n address: this.assertValidAddress(),\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 })) as RawActionStep[];\n return _dedupeActionSteps(steps.map(_fromRawActionStep));\n }\n\n /**\n * Gets the count of action events\n *\n * @public\n * @async\n * @param {?ReadEventActionParams<'getActionStepsCount'>} [params]\n * @returns {Promise<bigint>}\n */\n public async getActionStepsCount(params?: ReadParams) {\n const steps = await this.getActionSteps(params);\n return steps.length;\n }\n\n /**\n * Retrieves the payload describing how claimants can be identified from logs or function calls.\n *\n * @public\n * @async\n * @param {?ReadEventActionParams<'getActionClaimant'>} [params]\n * @returns {Promise<ActionClaimant>}\n */\n public async getActionClaimant(params?: ReadParams): Promise<ActionClaimant> {\n const result = (await readEventActionGetActionClaimant(this._config, {\n address: this.assertValidAddress(),\n ...this.optionallyAttachAccount(),\n ...params,\n })) as RawActionClaimant;\n return _fromRawActionStep(result);\n }\n\n /**\n * Executes a prepared event action\n *\n * @public\n * @async\n * @param {Hex} data\n * @param {?WriteParams} [params]\n * @returns {Promise<readonly [boolean, `0x${string}`]>}\n */\n public async execute(data: Hex, params?: WriteParams) {\n return await this.awaitResult(this.executeRaw(data, params));\n }\n\n /**\n * Executes a prepared event action\n *\n * @public\n * @async\n * @param {Hex} data\n * @param {?WriteParams} [params]\n * @returns {Promise<{ hash: `0x${string}`; result: readonly [boolean, `0x${string}`]; }>}\n */\n public async executeRaw(data: Hex, params?: WriteParams) {\n const { request, result } = await simulateEventActionExecute(this._config, {\n address: this.assertValidAddress(),\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 args: [data],\n });\n const hash = await writeEventActionExecute(this._config, request);\n return { hash, result };\n }\n\n /**\n * Derives the action claimant address from a transaction based on the provided ActionClaimant configuration.\n * This method supports both event-based and function-based claimant derivation.\n * **Important**: The claimant is considered to be `transaction.from` when `claimant.fieldIndex` is 255 using CheatCodes enum.\n * This may have unintended side effects for bridged transactions and SCW transactions, so these are considered unsupported use cases for the time being.\n *\n ** @example\n * // Example usage\n * const eventAction = boost.action as EventAction\n * const claimant = await eventAction.getActionClaimant() // {\n * signatureType: SignatureType.EVENT,\n * signature: '0x1234...',\n * fieldIndex: 2,\n * targetContract: '0xabcd...',\n * chainid: 1\n * };\n * const params: ValidateActionStepParams = {\n * hash: '0x5678...',\n * chainId: 1,\n * knownSignatures: {\n * '0x1234...': {\n * type: 'event',\n * name: 'Transfer(...)'\n * }\n * }\n * };\n * const claimantAddress = await eventAction.deriveActionClaimantFromTransaction(claimant, params);\n *\n * @param {ActionClaimant} claimant - The configuration specifying how to derive the claimant.\n * @param {ValidateActionStepParams} params - Parameters for validation, including transaction hash, known signatures, logs, and chain ID.\n * @returns {Promise<Address | undefined>} The derived claimant address if found, undefined otherwise.\n * @throws {ValidationAbiMissingError} If the ABI for the specified signature is not found.\n * @throws {FunctionDataDecodeError} If there's an error decoding function data (for function-based derivation).\n */\n public async deriveActionClaimantFromTransaction(\n claimant: ActionClaimant,\n params: ValidateActionStepParams,\n ): Promise<Address | undefined> {\n // find message sender and return it\n // WARNING: this is error prone in bridged transactions and SCW transactions, as this will return exit node\n if (claimant.fieldIndex === CheatCodes.TX_SENDER_CLAIMANT) {\n if ('hash' in params) {\n const transaction = await getTransaction(this._config, {\n ...params,\n chainId: claimant.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n transaction.blockNumber < params.notBeforeBlockNumber\n ) {\n return undefined;\n }\n return transaction.from;\n }\n if ('logs' in params) {\n for (let log of params.logs) {\n if (log.transactionHash) {\n const transaction = await getTransaction(this._config, {\n ...params,\n hash: log.transactionHash,\n chainId: claimant.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n transaction.blockNumber < params.notBeforeBlockNumber\n ) {\n return undefined;\n }\n return transaction.from;\n }\n }\n }\n return undefined;\n }\n\n const signature = claimant.signature;\n\n if (claimant.signatureType === SignatureType.EVENT) {\n let event: AbiEvent;\n if (params.abiItem) event = params.abiItem as AbiEvent;\n else {\n const sigPool = params.knownSignatures as Record<Hex, AbiEvent>;\n event = sigPool[signature] as AbiEvent;\n }\n if (!event) {\n throw new ValidationAbiMissingError(signature);\n }\n\n let address: Address | undefined;\n if ('logs' in params) {\n for (let log of params.logs) {\n if (!isAddressEqual(log.address, claimant.targetContract)) continue;\n let addressCandidate = this.validateClaimantAgainstArgs(\n claimant,\n log,\n );\n if (addressCandidate) return addressCandidate;\n }\n return address;\n }\n const receipt = await getTransactionReceipt(this._config, {\n ...params,\n chainId: claimant.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n receipt.blockNumber < params.notBeforeBlockNumber\n ) {\n return undefined;\n }\n\n let decodedLogs: EventLogs;\n if (signature === TRANSFER_SIGNATURE) {\n ({ decodedLogs } = await this.decodeTransferLogs(receipt));\n } else {\n decodedLogs = receipt.logs\n .filter((log) => log.topics[0] === toEventSelector(event))\n .map((log) => decodeAndReorderLogArgs(event, log));\n }\n\n for (let log of decodedLogs) {\n if (!isAddressEqual(log.address, claimant.targetContract)) continue;\n let addressCandidate = this.validateClaimantAgainstArgs(claimant, log);\n if (addressCandidate) return addressCandidate;\n }\n return address;\n }\n if (claimant.signatureType === SignatureType.FUNC && 'hash' in params) {\n const transaction = await getTransaction(this._config, {\n ...params,\n chainId: claimant.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n transaction.blockNumber < params.notBeforeBlockNumber\n ) {\n return undefined;\n }\n if (!isAddressEqual(transaction.to!, claimant.targetContract)) return;\n let func: AbiFunction;\n if (params.abiItem) func = params.abiItem as AbiFunction;\n else {\n const sigPool = params.knownSignatures as Record<Hex, AbiFunction>;\n func = sigPool[signature] as AbiFunction;\n }\n if (!func) {\n throw new ValidationAbiMissingError(claimant.signature);\n }\n let decodedData;\n try {\n decodedData = decodeFunctionData({\n abi: [func],\n data: transaction.input,\n });\n } catch (e) {\n throw new FunctionDataDecodeError([func], e as Error);\n }\n return this.validateClaimantAgainstArgs(claimant, decodedData);\n }\n }\n\n /**\n * Validates the action claimant against the arguments of a log or function data.\n *\n * @param {ActionClaimant} claimant - The action claimant to validate.\n * @param {Object} [logOrFnData] - Optional object containing the arguments to validate against.\n * @param {Array<any> | readonly unknown[] | Record<string, unknown>} [logOrFnData.args] - The arguments from the log or function data.\n * @returns {Address | undefined} The validated address if found and valid, otherwise undefined.\n */\n public validateClaimantAgainstArgs(\n claimant: ActionClaimant,\n logOrFnData?: {\n args: Array<unknown> | readonly unknown[] | Record<string, unknown>;\n },\n ): Address | undefined {\n if (\n !logOrFnData ||\n !Array.isArray(logOrFnData?.args) ||\n logOrFnData?.args.length <= claimant.fieldIndex\n ) {\n return;\n }\n const maybeAddress = logOrFnData.args.at(claimant.fieldIndex);\n if (isAddress(maybeAddress)) return maybeAddress;\n }\n\n /**\n * Retrieves action steps, and uses them to validate against, and optionally fetch logs that match the step's signature.\n * If logs are provided in the optional `params` argument, then those logs will be used instead of fetched with the configured client.\n *\n * @public\n * @async\n * @param ValidateActionStepParams params\n * @returns {Promise<boolean>}\n */\n public async validateActionSteps(params: ValidateActionStepParams) {\n const actionSteps = await this.getActionSteps();\n for (const actionStep of actionSteps) {\n if (!(await this.isActionStepValid(actionStep, params))) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Validates a single action step with a given criteria against logs or function calls.\n * If logs are provided in the optional `params` argument, then those logs will be used instead of being fetched with the configured client.\n * For functions a hash is required.\n *\n * @public\n * @async\n * @param {ActionStep} actionStep - The action step to validate. Can be a function of event step.\n * @param {ValidateActionStepParams} params - Additional parameters for validation, including hash, known events, logs, and chain ID.\n * @returns {Promise<boolean>}\n */\n public async isActionStepValid(\n actionStep: ActionStep,\n params: ValidateActionStepParams,\n ) {\n if (actionStep.signatureType === SignatureType.EVENT) {\n const signature = actionStep.signature;\n let event: AbiEvent;\n if (params.abiItem) event = params.abiItem as AbiEvent;\n else {\n const sigPool = params.knownSignatures as Record<Hex, AbiEvent>;\n event = sigPool[signature] as AbiEvent;\n }\n\n if (!event) {\n throw new ValidationAbiMissingError(signature);\n }\n\n if (this.isArraylikeIndexed(actionStep, event)) {\n // If the field is indexed, we can't filter on it\n throw new UnparseableAbiParamError(\n actionStep.actionParameter.fieldIndex,\n event,\n );\n }\n\n // Use the provided logs, no need to fetch receipt\n if ('logs' in params) {\n return this.isActionEventValid(actionStep, params.logs, event);\n }\n\n const receipt = await getTransactionReceipt(this._config, {\n ...params,\n chainId: actionStep.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n receipt.blockNumber < params.notBeforeBlockNumber\n ) {\n return false;\n }\n\n // Special handling for Transfer events\n if (actionStep.signature === TRANSFER_SIGNATURE) {\n const { decodedLogs, event } = await this.decodeTransferLogs(receipt);\n return this.isActionEventValid(actionStep, decodedLogs, event);\n }\n\n const decodedLogs = receipt.logs\n .filter((log) => log.topics[0] === toEventSelector(event))\n .map((log) => decodeAndReorderLogArgs(event, log));\n\n return this.isActionEventValid(actionStep, decodedLogs, event);\n }\n if (actionStep.signatureType === SignatureType.FUNC) {\n if ('hash' in params) {\n const transaction = await getTransaction(this._config, {\n ...params,\n chainId: actionStep.chainid,\n });\n if (\n params.notBeforeBlockNumber &&\n transaction.blockNumber < params.notBeforeBlockNumber\n ) {\n return false;\n }\n return this.isActionFunctionValid(actionStep, transaction, params);\n }\n }\n return false;\n }\n\n /**\n * Validates a single action event with a given criteria against logs.\n *\n * @public\n * @param {ActionStep} actionStep - The action step containing the event to validate.\n * @param {EventLogs} logs - Event logs to validate the given step against\n * @param {AbiEvent} eventAbi - The ABI definition of the event\n * @returns {boolean} Resolves to true if the action event is valid, throws if input is invalid, otherwise false.\n */\n public isActionEventValid(\n actionStep: ActionStep,\n logs: EventLogs,\n eventAbi: AbiEvent,\n ): boolean {\n const criteria = actionStep.actionParameter;\n if (!logs.length) return false;\n\n // Check each log\n for (let log of logs) {\n // parse out final (scalar) field from the log args\n try {\n if (!Array.isArray(log.args)) {\n throw new DecodedArgsMalformedError({\n log,\n criteria,\n fieldValue: undefined,\n });\n }\n const { value, type } = this.parseFieldFromAbi(\n log.args,\n criteria.fieldIndex,\n eventAbi.inputs || [],\n criteria.fieldType,\n );\n criteria.fieldType = type;\n if (this.validateFieldAgainstCriteria(criteria, value, { log })) {\n return true;\n }\n } catch {\n // If there's an error on this log, keep trying with the next one\n }\n }\n return false;\n }\n\n /**\n * Decodes logs specifically for ERC721 and ERC20 Transfer events.\n *\n * This special handling is required because both ERC20 and ERC721 Transfer events:\n * 1. Share the same event signature (0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef)\n * 2. Have similar but distinct structures:\n * - ERC721: Transfer(address indexed from, address indexed to, uint256 indexed tokenId)\n * - ERC20: Transfer(address indexed from, address indexed to, uint256 value)\n *\n * This causes signature collisions in the known signatures package, requiring us to\n * try decoding both ways to determine which type of Transfer event we're dealing with.\n *\n * @param {GetTransactionReceiptReturnType} receipt - The transaction receipt containing the logs\n * @returns {Promise<{ decodedLogs: EventLogs; event: AbiEvent }>} - Returns the decoded logs and the transfer event ABI used for decoding\n * @throws {DecodedArgsError} - Throws if neither ERC20 nor ERC721 decoding succeeds\n */\n private async decodeTransferLogs(\n receipt: GetTransactionReceiptReturnType,\n ): Promise<{ decodedLogs: EventLogs; event: AbiEvent }> {\n const filteredLogs = receipt.logs.filter(\n (log) => log.topics[0] === TRANSFER_SIGNATURE,\n );\n const event = structuredClone(\n abi['Transfer(address indexed,address indexed,uint256 indexed)'],\n ) as AbiEvent;\n\n // ERC721\n try {\n const decodedLogs = filteredLogs.map((log) => {\n const { eventName, args } = decodeEventLog({\n abi: [event],\n data: log.data,\n topics: log.topics,\n });\n return { ...log, eventName, args };\n });\n\n return {\n decodedLogs,\n event,\n };\n } catch {\n // ERC20\n try {\n event.inputs[2]!.indexed = false;\n const decodedLogs = filteredLogs.map((log) => {\n const { eventName, args } = decodeEventLog({\n abi: [event],\n data: log.data,\n topics: log.topics,\n });\n return { ...log, eventName, args };\n });\n\n return {\n decodedLogs,\n event,\n };\n } catch {\n throw new DecodedArgsError('Failed to decode transfer logs');\n }\n }\n }\n\n /**\n * Parses the final (scalar) field from a set of decoded arguments, given an ABI definition.\n * If the fieldType is TUPLE, we decode `fieldIndex` as a bitpacked array of indexes to drill down\n * into nested tuples. Otherwise, we parse the single `fieldIndex` as normal.\n *\n * @public\n * @param {readonly unknown[]} allArgs - The decoded arguments array from an event log or function call.\n * @param {number} criteriaIndex - The field index (bitpacked if TUPLE).\n * @param {AbiParameter[]} abiInputs - The ABI inputs describing each decoded argument.\n * @param {PrimitiveType} declaredType - Either TUPLE or a standard scalar type\n * @returns {{ value: string | bigint | Hex; type: Exclude<PrimitiveType, PrimitiveType.TUPLE> }}\n */\n public parseFieldFromAbi(\n allArgs: readonly unknown[],\n criteriaIndex: number,\n abiInputs: readonly AbiParameter[],\n declaredType: PrimitiveType,\n ): {\n value: string | bigint | Hex;\n type: Exclude<PrimitiveType, PrimitiveType.TUPLE>;\n } {\n // If ANY_ACTION_PARAM, return a dummy \"any\" value so we can do special-case checks\n if (criteriaIndex === CheatCodes.ANY_ACTION_PARAM) {\n return { value: zeroHash, type: PrimitiveType.BYTES };\n }\n\n // If it's not TUPLE, parse as a single index (existing logic)\n if (declaredType !== PrimitiveType.TUPLE) {\n if (!Array.isArray(allArgs) || criteriaIndex >= allArgs.length) {\n throw new FieldValueUndefinedError({\n fieldValue: allArgs,\n criteria: {\n filterType: FilterType.EQUAL,\n fieldType: declaredType,\n fieldIndex: criteriaIndex,\n filterData: zeroHash,\n },\n });\n }\n const abiParam = abiInputs[criteriaIndex];\n if (!abiParam || !abiParam.type) {\n throw new UnparseableAbiParamError(criteriaIndex, abiParam as AbiEvent);\n }\n const rawValue = allArgs[criteriaIndex];\n\n const finalType = abiTypeToPrimitiveType(abiParam.type);\n\n if (\n finalType === PrimitiveType.ADDRESS &&\n (typeof rawValue !== 'string' || !isAddress(rawValue))\n ) {\n throw new FieldValueUndefinedError({\n fieldValue: rawValue,\n criteria: {\n fieldIndex: criteriaIndex,\n filterType: FilterType.EQUAL,\n fieldType: finalType,\n filterData: zeroHash,\n },\n });\n }\n\n return { value: rawValue as string | bigint | Hex, type: finalType };\n }\n\n // Otherwise, declaredType === TUPLE => decode bitpacked indexes\n const indexes = unpackFieldIndexes(criteriaIndex);\n return parseNestedTupleValue(allArgs as unknown[], indexes, abiInputs);\n }\n\n /**\n * Validates a single action function with a given criteria against the transaction input.\n *\n * @public\n * @param {ActionStep} actionStep - The action step containing the function to validate.\n * @param {Transaction} transaction - The transaction that will be validated against.\n * @param {Object} [params] - Parameters for validation.\n * @param {AbiItem} [params.abiItem] - The ABI item for the function, if known.\n * @param {Record<Hex, AbiEvent | AbiFunction>} [params.knownSignatures] - A record of known signatures.\n * @returns {boolean} Returns true if the action function is valid, false otherwise.\n * @throws {ValidationAbiMissingError} Throws if the ABI for the function signature is not found.\n * @throws {FunctionDataDecodeError} Throws if there's an error decoding the function data.\n */\n public isActionFunctionValid(\n actionStep: ActionStep,\n transaction: Transaction,\n params: Pick<ValidateActionStepParams, 'abiItem' | 'knownSignatures'>,\n ) {\n const criteria = actionStep.actionParameter;\n const signature = actionStep.signature;\n\n let func: AbiFunction;\n if (params.abiItem) func = params.abiItem as AbiFunction;\n else {\n const sigPool = params.knownSignatures as Record<Hex, AbiFunction>;\n func = sigPool[signature] as AbiFunction;\n }\n if (!func) {\n throw new ValidationAbiMissingError(signature);\n }\n\n let decodedData;\n try {\n decodedData = decodeFunctionData({\n abi: [func],\n data: transaction.input,\n });\n } catch (e) {\n throw new FunctionDataDecodeError([func], e as Error);\n }\n\n if (!decodedData?.args) {\n return false;\n }\n\n try {\n const { value, type } = this.parseFieldFromAbi(\n decodedData.args as unknown[],\n criteria.fieldIndex,\n func.inputs || [],\n criteria.fieldType,\n );\n criteria.fieldType = type;\n return this.validateFieldAgainstCriteria(criteria, value, {\n decodedArgs: decodedData.args as readonly (string | bigint)[],\n });\n } catch {\n return false;\n }\n }\n\n /**\n * Validates a field against a given criteria. The field is assumed to be a non-tuple scalar,\n * along with its final resolved `PrimitiveType`. (Any TUPLE logic has been extracted elsewhere.)\n *\n * @param {Criteria} criteria - The criteria to validate against.\n * @param {string | bigint | Hex} fieldValue - The field value to validate.\n * @param {Exclude<PrimitiveType, PrimitiveType.TUPLE>} fieldType - The final resolved primitive type.\n * @param {Object} input - Additional context for validation.\n * @param {EventLogs[0]} [input.log] - The event log, if validating an event.\n * @param {readonly (string | bigint)[]} [input.decodedArgs] - The decoded function arguments, if validating a function call.\n * @returns {boolean} - Returns true if the field passes the criteria, false otherwise.\n */\n public validateFieldAgainstCriteria(\n criteria: Criteria,\n fieldValue: string | bigint | Hex,\n input:\n | { log: EventLogs[0] }\n | { decodedArgs: readonly (string | bigint)[] },\n ): boolean {\n /*\n * Special-case: ANY_ACTION_PARAM. If we have filterType=EQUAL, fieldType=BYTES, fieldIndex=255,\n * we consider that a wildcard match. Return true immediately.\n */\n if (\n criteria.filterType === FilterType.EQUAL &&\n criteria.fieldType === PrimitiveType.BYTES &&\n criteria.fieldIndex === CheatCodes.ANY_ACTION_PARAM\n ) {\n return true;\n }\n if (criteria.fieldType === PrimitiveType.TUPLE) {\n throw new InvalidTupleDecodingError(\n 'Tuples should not be passed into validateFieldAgainstCriteria',\n );\n }\n const fieldType = criteria.fieldType;\n\n // Evaluate filter based on the final fieldType\n switch (criteria.filterType) {\n case FilterType.EQUAL:\n return match(fieldType)\n .with(PrimitiveType.ADDRESS, () =>\n isAddressEqual(criteria.filterData, fieldValue as Address),\n )\n .with(\n PrimitiveType.UINT,\n () => BigInt(fieldValue) === BigInt(criteria.filterData),\n )\n .with(\n PrimitiveType.STRING,\n () => fieldValue === fromHex(criteria.filterData, 'string'),\n )\n .otherwise(() => fieldValue === criteria.filterData);\n\n case FilterType.NOT_EQUAL:\n return match(fieldType)\n .with(\n PrimitiveType.ADDRESS,\n () => !isAddressEqual(criteria.filterData, fieldValue as Address),\n )\n .with(\n PrimitiveType.UINT,\n () => BigInt(fieldValue) !== BigInt(criteria.filterData),\n )\n .with(\n PrimitiveType.INT,\n () => BigInt(fieldValue) !== BigInt(criteria.filterData),\n )\n .with(\n PrimitiveType.STRING,\n () => fieldValue !== fromHex(criteria.filterData, 'string'),\n )\n .otherwise(() => fieldValue !== criteria.filterData);\n\n case FilterType.GREATER_THAN:\n if (\n fieldType === PrimitiveType.UINT ||\n fieldType === PrimitiveType.INT\n ) {\n return BigInt(fieldValue) > BigInt(criteria.filterData);\n }\n throw new InvalidNumericalCriteriaError({\n ...input,\n criteria,\n fieldValue,\n });\n\n case FilterType.GREATER_THAN_OR_EQUAL:\n if (\n fieldType === PrimitiveType.UINT ||\n fieldType === PrimitiveType.INT\n ) {\n return BigInt(fieldValue) >= BigInt(criteria.filterData);\n }\n throw new InvalidNumericalCriteriaError({\n ...input,\n criteria,\n fieldValue,\n });\n\n case FilterType.LESS_THAN:\n if (\n fieldType === PrimitiveType.UINT ||\n fieldType === PrimitiveType.INT\n ) {\n return BigInt(fieldValue) < BigInt(criteria.filterData);\n }\n throw new InvalidNumericalCriteriaError({\n ...input,\n criteria,\n fieldValue,\n });\n\n case FilterType.LESS_THAN_OR_EQUAL:\n if (\n fieldType === PrimitiveType.UINT ||\n fieldType === PrimitiveType.INT\n ) {\n return BigInt(fieldValue) <= BigInt(criteria.filterData);\n }\n throw new InvalidNumericalCriteriaError({\n ...input,\n criteria,\n fieldValue,\n });\n\n case FilterType.CONTAINS:\n if (\n fieldType === PrimitiveType.BYTES ||\n fieldType === PrimitiveType.STRING\n ) {\n let substring;\n if (fieldType === PrimitiveType.STRING) {\n substring = fromHex(criteria.filterData, 'string');\n } else {\n // truncate the `0x` prefix\n substring = criteria.filterData.slice(2);\n }\n return (fieldValue as string).includes(substring);\n }\n throw new FieldValueNotComparableError({\n ...input,\n criteria,\n fieldValue,\n });\n\n case FilterType.REGEX:\n if (typeof fieldValue !== 'string') {\n throw new FieldValueNotComparableError({\n ...input,\n criteria,\n fieldValue,\n });\n }\n if (fieldType === PrimitiveType.STRING) {\n const regexString = fromHex(criteria.filterData, 'string');\n return new RegExp(regexString).test(fieldValue);\n }\n // Otherwise unrecognized or not applicable\n\n default:\n throw new UnrecognizedFilterTypeError({\n ...input,\n criteria,\n fieldValue,\n });\n }\n }\n\n /**\n * @inheritdoc\n *\n * @public\n * @param {?EventActionPayload} [_payload]\n * @param {?DeployableOptions} [_options]\n * @returns {GenericDeployableParams}\n */\n public override buildParameters(\n _payload?: EventActionPayload,\n _options?: DeployableOptions,\n ): GenericDeployableParams {\n const [payload, options] = this.validateDeploymentConfig(\n _payload,\n _options,\n );\n let rawPayload: EventActionPayloadRaw;\n if (isEventActionPayloadSimple(payload)) {\n // filter out any falsy potential values\n let tmpSteps: ActionStep[] = payload.actionSteps.filter((step) => !!step);\n if (tmpSteps.length === 0) {\n throw new NoEventActionStepsProvidedError();\n }\n if (tmpSteps.length > 4) {\n throw new TooManyEventActionStepsProvidedError();\n }\n let steps: ActionStepTuple = Array.from({ length: 4 }, (_, i) => {\n // use either the provided step at the given index, or reuse the previous step\n // should aways exist\n return tmpSteps.at(i) || tmpSteps.at(-1);\n }) as ActionStepTuple;\n rawPayload = {\n actionClaimant: payload.actionClaimant,\n actionStepOne: steps[0],\n actionStepTwo: steps[1],\n actionStepThree: steps[2],\n actionStepFour: steps[3],\n };\n } else {\n rawPayload = payload;\n }\n return {\n abi: eventActionAbi,\n bytecode: bytecode as Hex,\n args: [prepareEventActionPayload(rawPayload)],\n ...this.optionallyAttachAccount(options.account),\n };\n }\n\n /**\n * Determines whether a string or bytes field is indexed in the event definition.\n * If the user tries to filter on an indexed string/bytes, we throw an error.\n *\n * @public\n * @param {ActionStep} step\n * @param {AbiEvent} event\n * @returns {boolean}\n */\n public isArraylikeIndexed(step: ActionStep, event: AbiEvent) {\n if (\n (step.actionParameter.fieldType === PrimitiveType.STRING ||\n step.actionParameter.fieldType === PrimitiveType.BYTES) &&\n event.inputs[step.actionParameter.fieldIndex]?.indexed\n ) {\n return true;\n }\n return false;\n }\n}\n\n/**\n * Checks if a particular ABI parameter is the \"tuple\" variant that can have `components`.\n *\n * @param {AbiParameter} param\n * @returns {boolean}\n */\nfunction isTupleAbiParameter(\n param: AbiParameter,\n): param is Extract<AbiParameter, { components: readonly AbiParameter[] }> {\n return param.type === 'tuple' || param.type.startsWith('tuple[');\n}\n\n/**\n * Recursively parses nested tuples by following an array of sub-indexes (unpacked from bitpacked `fieldIndex`).\n * Each entry in `indexes` is used to pick which sub-component in the current tuple's `components`.\n * If we encounter the \"terminator\" or run out of indexes, we stop.\n *\n * @param {unknown[]} rawArgs - The top-level arguments array.\n * @param {number[]} indexes - The array of indexes from `unpackFieldIndexes(...)`.\n * @param {readonly AbiParameter[]} abiInputs - The top-level ABI inputs for the entire arguments array.\n * @returns {{ value: string | bigint | Hex, type: Exclude<PrimitiveType, PrimitiveType.TUPLE> }}\n */\nfunction parseNestedTupleValue(\n rawArgs: unknown[],\n indexes: number[],\n abiInputs: readonly AbiParameter[],\n): {\n value: string | bigint | Hex;\n type: Exclude<PrimitiveType, PrimitiveType.TUPLE>;\n} {\n if (!indexes.length) {\n throw new InvalidTupleDecodingError(\n `No indexes found; cannot parse TUPLE field`,\n );\n }\n\n // The first index picks which top-level ABI param to look at\n const idx = indexes[0] ?? abiInputs.length + 1;\n // If idx is out of range or is a \"terminator,\" fail fast\n if (idx >= abiInputs.length) {\n throw new InvalidTupleDecodingError(undefined, idx);\n }\n\n const param = abiInputs[idx];\n const rawValue = rawArgs[idx];\n\n // If param isn't a tuple, we are at a leaf\n if (!isTupleAbiParameter(param!)) {\n const finalType = abiTypeToPrimitiveType(param!.type);\n return { value: rawValue as string | bigint | Hex, type: finalType };\n }\n\n // Otherwise param is a tuple => rawValue must be an array of subfields\n if (!Array.isArray(rawValue)) {\n throw new InvalidTupleDecodingError(\n `rawValue is not an array, but param.type is tuple`,\n );\n }\n\n // Move to the next sub-index\n const remaining = indexes.slice(1);\n if (!remaining.length) {\n // If there are no more indexes, we can't pick a sub-component\n // Typically you'd want at least one more index to say \"which subfield in the tuple we want\"\n throw new InvalidTupleDecodingError(undefined, -1);\n }\n\n // Check the next index for param.components\n const subIdx = remaining[0] ?? param.components.length + 1;\n if (subIdx >= param.components.length) {\n throw new InvalidTupleDecodingError(undefined, subIdx);\n }\n\n // Recurse deeper using param.components as the \"new top-level\" ABI param list\n return parseNestedTupleValue(rawValue, remaining, param.components);\n}\n\n/**\n * Maps an ABI type string (e.g. 'uint256', 'address', 'bytes', 'string', etc.) to a `PrimitiveType`.\n *\n * @param {string} abiType\n * @returns {Exclude<PrimitiveType, PrimitiveType.TUPLE>}\n */\nfunction abiTypeToPrimitiveType(\n abiType: string,\n): Exclude<PrimitiveType, PrimitiveType.TUPLE> {\n const lower = abiType.toLowerCase();\n\n if (lower.startsWith('uint')) {\n return PrimitiveType.UINT;\n }\n if (lower.startsWith('int')) {\n return PrimitiveType.INT;\n }\n if (lower === 'address') {\n return PrimitiveType.ADDRESS;\n }\n if (lower === 'bytes' || lower.startsWith('bytes')) {\n return PrimitiveType.BYTES;\n }\n if (lower === 'string') {\n return PrimitiveType.STRING;\n }\n\n // If it doesn't match any known scalar, throw. We expect parseNestedTupleValue() to handle nested tuple logic separately.\n throw new DecodedArgsError(`Unrecognized ABI type: ${abiType}`);\n}\n\nfunction _dedupeActionSteps(_steps: ActionStep[]): ActionStep[] {\n const steps: ActionStep[] = [];\n const signatures: Record<string, boolean> = {};\n for (let step of _steps) {\n const signature = JSON.stringify(step);\n if (signatures[signature]) continue;\n steps.push(step);\n signatures[signature] = true;\n }\n return steps;\n}\n\ntype RawActionStep = Overwrite<ActionStep, { chainid: bigint }>;\ntype RawActionClaimant = Overwrite<ActionClaimant, { chainid: bigint }>;\n\nfunction _toRawActionStep<T extends ActionStep | ActionClaimant>(obj: T) {\n return {\n ...obj,\n chainid: BigInt(obj.chainid),\n };\n}\n\nfunction _fromRawActionStep<T extends RawActionStep | RawActionClaimant>(\n obj: T,\n) {\n if (obj.chainid > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error('Chain ID exceeds max safe integer');\n }\n\n return {\n ...obj,\n chainid: Number(obj.chainid),\n };\n}\n\n/**\n * Typeguard to determine if a user is supplying a simple or raw EventActionPayload\n *\n * @param {*} opts\n * @returns {opts is EventActionPayloadSimple}\n */\nfunction _isEventActionPayloadSimple(\n opts: EventActionPayload,\n): opts is EventActionPayloadSimple {\n return Array.isArray((opts as EventActionPayloadSimple).actionSteps);\n}\n\n/**\n * Determines whether a signature is an event or function signature based on its format.\n * - 32-byte signatures (0x + 64 chars) that don't start with 28 zeros are event signatures\n * - 4-byte signatures (0x + 8 chars) or 32-byte signatures with 28 leading zeros are function signatures\n *\n * @param {Hex} signature - The signature to check\n * @returns {SignatureType} The detected signature type\n */\nexport function detectSignatureType(signature: Hex): SignatureType {\n const hexWithoutPrefix = signature.slice(2);\n\n // 4-byte function selectors (8 hex chars)\n if (hexWithoutPrefix.length === 8) {\n return SignatureType.FUNC;\n }\n\n // 32-byte selectors (64 hex chars)\n if (hexWithoutPrefix.length === 64) {\n // Check if it starts with 28 bytes (56 chars) of zeros\n const leadingPart = hexWithoutPrefix.slice(0, 56);\n if (leadingPart === '0'.repeat(56)) {\n return SignatureType.FUNC;\n }\n return SignatureType.EVENT;\n }\n\n throw new Error('Invalid signature format');\n}\n\n/**\n * Normalizes a hex value to ensure proper byte padding.\n * This prevents viem's automatic padding which can change the value.\n * For example:\n * - \"0x1\" -> \"0x01\"\n * - \"0xabc\" -> \"0x0abc\"\n * - \"0xabcd\" -> \"0xabcd\"\n *\n * @param {Hex} value - The hex value to normalize\n * @returns {Hex} The normalized hex string\n */\nfunction normalizeUintValue(value: Hex): Hex {\n return trim(pad(value));\n}\n\n/**\n * Helper function to prepare an action step for encoding\n *\n * @param {ActionStep} step - The action step to prepare\n * @returns {ActionStep} The prepared action step\n */\nfunction prepareActionStep(step: ActionStep) {\n return {\n ..._toRawActionStep(step),\n signatureType: step.signatureType ?? detectSignatureType(step.signature),\n signature: pad(step.signature),\n actionType: step.actionType || 0,\n actionParameter:\n step.actionParameter.fieldType === PrimitiveType.UINT\n ? {\n ...step.actionParameter,\n filterData: normalizeUintValue(step.actionParameter.filterData),\n }\n : step.actionParameter,\n };\n}\n\n/**\n * Function to properly encode an event action payload.\n *\n * @param {InitPayload} param0\n * @param {ActionStep} param0.actionStepOne - The first action step to initialize.\n * @param {ActionStep} param0.actionStepTwo - The second action step to initialize.\n * @param {ActionStep} param0.actionStepThree - The third action step to initialize.\n * @param {ActionStep} param0.actionStepFour - The fourth action step to initialize.\n * @returns {Hex}\n */\nexport function prepareEventActionPayload({\n actionClaimant,\n actionStepOne,\n actionStepTwo,\n actionStepThree,\n actionStepFour,\n}: EventActionPayloadRaw) {\n // note chainIds are technically uint256 but viem treats them (safely) as numbers,\n // so we encode them as uint32 here to avoid downcast issues\n return encodeAbiParameters(\n [\n {\n type: 'tuple',\n name: 'initPayload',\n components: [\n {\n type: 'tuple',\n name: 'actionClaimant',\n components: [\n { type: 'uint8', name: 'signatureType' },\n { type: 'bytes32', name: 'signature' },\n { type: 'uint8', name: 'fieldIndex' },\n { type: 'address', name: 'targetContract' },\n { type: 'uint256', name: 'chainid' },\n ],\n },\n {\n type: 'tuple',\n name: 'actionStepOne',\n components: [\n { type: 'bytes32', name: 'signature' },\n { type: 'uint8', name: 'signatureType' },\n { type: 'uint8', name: 'actionType' },\n { type: 'address', name: 'targetContract' },\n { type: 'uint256', name: 'chainid' },\n {\n type: 'tuple',\n name: 'actionParameter',\n components: [\n { type: 'uint8', name: 'filterType' },\n { type: 'uint8', name: 'fieldType' },\n { type: 'uint32', name: 'fieldIndex' },\n { type: 'bytes', name: 'filterData' },\n ],\n },\n ],\n },\n {\n type: 'tuple',\n name: 'actionStepTwo',\n components: [\n { type: 'bytes32', name: 'signature' },\n { type: 'uint8', name: 'signatureType' },\n { type: 'uint8', name: 'actionType' },\n { type: 'address', name: 'targetContract' },\n { type: 'uint256', name: 'chainid' },\n {\n type: 'tuple',\n name: 'actionParameter',\n components: [\n { type: 'uint8', name: 'filterType' },\n { type: 'uint8', name: 'fieldType' },\n { type: 'uint32', name: 'fieldIndex' },\n { type: 'bytes', name: 'filterData' },\n ],\n },\n ],\n },\n {\n type: 'tuple',\n name: 'actionStepThree',\n components: [\n { type: 'bytes32', name: 'signature' },\n { type: 'uint8', name: 'signatureType' },\n { type: 'uint8', name: 'actionType' },\n { type: 'address', name: 'targetContract' },\n { type: 'uint256', name: 'chainid' },\n {\n type: 'tuple',\n name: 'actionParameter',\n components: [\n { type: 'uint8', name: 'filterType' },\n { type: 'uint8', name: 'fieldType' },\n { type: 'uint32', name: 'fieldIndex' },\n { type: 'bytes', name: 'filterData' },\n ],\n },\n ],\n },\n {\n type: 'tuple',\n name: 'actionStepFour',\n components: [\n { type: 'bytes32', name: 'signature' },\n { type: 'uint8', name: 'signatureType' },\n { type: 'uint8', name: 'actionType' },\n { type: 'address', name: 'targetContract' },\n { type: 'uint256', name: 'chainid' },\n {\n type: 'tuple',\n name: 'actionParameter',\n components: [\n { type: 'uint8', name: 'filterType' },\n { type: 'uint8', name: 'fieldType' },\n { type: 'uint32', name: 'fieldIndex' },\n { type: 'bytes', name: 'filterData' },\n ],\n },\n ],\n },\n ],\n },\n ],\n [\n {\n actionClaimant: {\n ..._toRawActionStep(actionClaimant),\n signatureType:\n actionClaimant.signatureType ??\n detectSignatureType(actionClaimant.signature),\n signature: pad(actionClaimant.signature),\n },\n actionStepOne: prepareActionStep(actionStepOne),\n actionStepTwo: prepareActionStep(actionStepTwo),\n actionStepThree: prepareActionStep(actionStepThree),\n actionStepFour: prepareActionStep(actionStepFour),\n },\n ],\n );\n}\n\n/**\n * Creates a default Criteria object that allows validation to pass. This is used if you don't care about targeting specific parameters in the action step.\n *\n * This function returns a Criteria object with the following properties:\n * - filterType: Set to EQUAL for exact matching\n * - fieldType: Set to BYTES to handle any data type\n * - fieldIndex: Set to 255, which is typically used to indicate \"any\" or \"all\" in this context using CheatCodes enum\n * - filterData: Set to zeroHash (0x0000...0000)\n *\n * @returns {Criteria} A Criteria object that can be used to match any action parameter\n *\n * @example\n * const anyCriteria = anyActionParameter();\n * // Use this criteria in an ActionStep to match any parameter\n * const actionStep = {\n * // ... other properties ...\n * actionParameter: anyCriteria\n * };\n */\nexport function anyActionParameter(): Criteria {\n return {\n filterType: FilterType.EQUAL,\n fieldType: PrimitiveType.BYTES,\n fieldIndex: CheatCodes.ANY_ACTION_PARAM,\n filterData: zeroHash,\n };\n}\n\n/**\n * Creates an ActionClaimant object that represents the transaction sender as the claimant.\n * This function is useful when you want to set up an action where the transaction sender is always considered the valid claimant,\n * regardless of the event or function parameters.\n *\n * The returned ActionClaimant has the following properties:\n * - signatureType: Set to SignatureType.EVENT (though it doesn't matter for this case)\n * - signature: Set to zeroHash (0x0000...0000)\n * - fieldIndex: Set to 255, indicating \"any\" field using CheatCodes enum\n * - targetContract: Set to zeroAddress (0x0000...0000)\n * - chainid: The chain ID on which the transaction is sent, should match the chain ID for the action's {@link ActionStep}\n *\n * @param {number} chainId - The chain ID on which the transaction is sent, should match the chain ID for the action's {@link ActionStep}\n * @returns {ActionClaimant} An ActionClaimant object representing the msg.sender\n *\n * @example\n * const eventAction = new EventAction();\n * const payload: EventActionPayload = {\n * actionClaimant: transactionSenderClaimant(),\n * actionSteps: [\n * // ... define your action steps here\n * ]\n * };\n * await eventAction.deploy(payload);\n */\nexport function transactionSenderClaimant(chainId: number): ActionClaimant {\n return {\n signatureType: SignatureType.EVENT,\n signature: zeroHash,\n fieldIndex: CheatCodes.TX_SENDER_CLAIMANT,\n targetContract: zeroAddress,\n chainid: chainId,\n };\n}\n\n// Helper functions to bit-pack and decode fieldIndex values\nconst MAX_FIELD_INDEX = 0b111111; // Maximum value for 6 bits (63)\n\n/**\n * Packs up to five indexes into a single uint32 value.\n *\n * @param {number[]} indexes - Array of up to five indexes to pack.\n * @returns {number} - Packed uint32 value.\n * @throws {Error} - If more than five indexes are provided or an index exceeds the maximum value.\n */\nexport function packFieldIndexes(indexes: number[]): number {\n if (indexes.length > 5) {\n throw new InvalidTupleEncodingError('Can only pack up to 5 indexes.');\n }\n\n let packed = 0;\n indexes.forEach((index, i) => {\n if (index > MAX_FIELD_INDEX) {\n throw new InvalidTupleEncodingError(\n `Index ${index} exceeds the maximum allowed value (${MAX_FIELD_INDEX}).`,\n );\n }\n packed |= (index & MAX_FIELD_INDEX) << (i * 6); // Each index occupies 6 bits\n });\n if (indexes.length < 5) {\n packed |= MAX_FIELD_INDEX << (indexes.length * 6); // Terminator\n }\n\n return packed;\n}\n\n/**\n * Unpacks a uint32 fieldIndex value into an array of up to five indexes.\n *\n * @param {number} packed - Packed uint32 value.\n * @returns {number[]} - Array of unpacked indexes.\n */\nexport function unpackFieldIndexes(packed: number): number[] {\n const indexes: number[] = [];\n for (let i = 0; i < 5; i++) {\n const index = (packed >> (i * 6)) & MAX_FIELD_INDEX;\n if (index === MAX_FIELD_INDEX) break; // Terminator value\n indexes.push(index);\n }\n return indexes;\n}\n\n/**\n * Decodes an event log and reorders the arguments to match the original ABI order.\n * This is necessary because viem's decodeEventLog reorders indexed parameters to the front.\n *\n * @param event - The event ABI definition\n * @param log - The log to decode\n * @returns {EventLog} The decoded log with arguments in the original ABI order\n */\nexport function decodeAndReorderLogArgs(event: AbiEvent, log: Log) {\n const decodedLog = decodeEventLog({\n abi: [event],\n data: log.data,\n topics: log.topics,\n });\n\n const argsArray = Array.isArray(decodedLog.args)\n ? decodedLog.args\n : Object.values(decodedLog.args);\n\n if (!event.inputs.some((input) => input.indexed)) {\n return {\n ...log,\n ...decodedLog,\n } as EventLog;\n }\n\n const indexedIndices: number[] = [];\n const nonIndexedIndices: number[] = [];\n for (let i = 0; i < event.inputs.length; i++) {\n if (event.inputs[i]!.indexed) {\n indexedIndices.push(i);\n } else {\n nonIndexedIndices.push(i);\n }\n }\n\n const reorderedArgs = Array.from({ length: event.inputs.length });\n let currentIndex = 0;\n\n // Place the indexed arguments in their original positions\n for (let i = 0; i < indexedIndices.length; i++) {\n reorderedArgs[indexedIndices[i]!] = argsArray[currentIndex++];\n }\n\n // Place the non-indexed arguments in their original positions\n for (let i = 0; i < nonIndexedIndices.length; i++) {\n reorderedArgs[nonIndexedIndices[i]!] = argsArray[currentIndex++];\n }\n\n return {\n ...log,\n eventName: decodedLog.eventName,\n args: reorderedArgs,\n } as EventLog;\n}\n\n/**\n * IMPORTANT: For variable incentive criteria use only.\n * Do NOT use for action steps - use {@link packFieldIndexes} instead.\n *\n * Packs two field indices into a single uint8 value for criteria tuple access.\n * Both indices must be between 0-13 to fit in the packed format.\n *\n * Uses an offset of 32 to avoid collision with normal field indices (which are 0-31),\n * allowing the system to distinguish between direct field access and tuple access.\n *\n * @export\n * @param {[number, number]} param0 - A tuple of [firstIndex, secondIndex]\n * @returns {number} - Packed uint8 value with base offset of 32\n * @throws {InvalidTupleEncodingError} - If either index is outside the valid range (0-13)\n */\nexport function packCriteriaFieldIndexes([firstIndex, secondIndex]: [\n number,\n number,\n]): number {\n if (\n firstIndex < 0 ||\n firstIndex > 13 ||\n secondIndex < 0 ||\n secondIndex > 13\n ) {\n throw new InvalidTupleEncodingError(\n `Tuple indices must be between 0-13, got: [${firstIndex}, ${secondIndex}]`,\n );\n }\n return 32 + (firstIndex << 4) + secondIndex;\n}\n\n/**\n * Unpacks a uint8 packed index value into an array of indices.\n *\n * @export\n * @param {number} packed - Packed index value\n * @returns {[number, number]} - [firstIndex, secondIndex]\n */\nexport function unpackCriteriaFieldIndexes(packed: number): [number, number] {\n if (packed < 32 || packed > 253) {\n throw new InvalidTupleEncodingError(\n `Field index must be between 32-253, got: ${packed}`,\n );\n }\n\n const tupleValue = packed - 32;\n const firstIndex = (tupleValue >> 4) & 0xf;\n const secondIndex = tupleValue & 0xf;\n return [firstIndex, secondIndex];\n}\n\n/**\n * Determines if a fieldIndex represents a tuple index (value >= 32) or a normal field index.\n *\n * @export\n * @param {number} fieldIndex - The field index to check\n * @returns {boolean} - True if it's a tuple index, false if it's a normal field index\n */\nexport function isCriteriaFieldIndexTuple(fieldIndex: number): boolean {\n return fieldIndex >= 32;\n}\n\n/**\n * Extracts a scalar value from a tuple within event or function arguments.\n * This is used for incentive criteria when determining reward amounts.\n *\n * @export\n * @param {unknown[]} args - The decoded arguments from an event or function call\n * @param {number} fieldIndex - The tuple-encoded index\n * @returns {bigint} The extracted scalar value as a bigint\n * @throws {DecodedArgsError} If arguments are missing or cannot be converted to bigint\n */\nexport function getScalarValueFromTuple(\n args: unknown[],\n fieldIndex: number,\n): bigint {\n if (!isCriteriaFieldIndexTuple(fieldIndex)) {\n throw new DecodedArgsError(\n `Field index ${fieldIndex} is invalid. Expected index >= 32`,\n );\n }\n\n const [index0, index1] = unpackCriteriaFieldIndexes(fieldIndex);\n\n if (index0 === undefined || index1 === undefined) {\n throw new DecodedArgsError(\n `Failed to unpack field indexes from ${fieldIndex}`,\n );\n }\n\n if (!args || args.length <= index0) {\n throw new DecodedArgsError(`Decoded args missing item at index ${index0}`);\n }\n\n const tuple = args[index0];\n if (!tuple || !Array.isArray(tuple)) {\n throw new DecodedArgsError(\n `Expected array at index ${index0}, but got ${typeof tuple}`,\n );\n }\n if (tuple.length <= index1) {\n throw new DecodedArgsError(\n `index ${index1} is out of bounds. tuple length is ${tuple.length}`,\n );\n }\n\n const scalarValue = tuple[index1] as unknown;\n if (typeof scalarValue !== 'bigint') {\n throw new DecodedArgsError(\n `Expected bigint at tuple index ${index1}, but got ${typeof scalarValue}`,\n );\n }\n\n return scalarValue;\n}\n"],"names":["t","e","n","r","i","s","o","c","a","u","h","m","d","y","p","v","b","j","x","A","W","$","z","I","FilterType","PrimitiveType","SignatureType","ValueType","isEventActionPayloadSimple","opts","_EventAction","DeployableTarget","eventActionAbi","index","params","steps","readEventActionGetActionSteps","_dedupeActionSteps","_fromRawActionStep","result","readEventActionGetActionClaimant","data","request","simulateEventActionExecute","writeEventActionExecute","claimant","CheatCodes","transaction","getTransaction","log","signature","event","ValidationAbiMissingError","address","isAddressEqual","addressCandidate","receipt","getTransactionReceipt","decodedLogs","TRANSFER_SIGNATURE","toEventSelector","decodeAndReorderLogArgs","func","decodedData","decodeFunctionData","FunctionDataDecodeError","logOrFnData","maybeAddress","isAddress","actionSteps","actionStep","UnparseableAbiParamError","logs","eventAbi","criteria","DecodedArgsMalformedError","value","type","filteredLogs","abi","eventName","args","decodeEventLog","DecodedArgsError","allArgs","criteriaIndex","abiInputs","declaredType","zeroHash","FieldValueUndefinedError","abiParam","rawValue","finalType","abiTypeToPrimitiveType","indexes","unpackFieldIndexes","parseNestedTupleValue","fieldValue","input","InvalidTupleDecodingError","fieldType","match","fromHex","InvalidNumericalCriteriaError","substring","FieldValueNotComparableError","regexString","UnrecognizedFilterTypeError","_payload","_options","payload","options","rawPayload","tmpSteps","step","NoEventActionStepsProvidedError","TooManyEventActionStepsProvidedError","_","bytecode","prepareEventActionPayload","_a","EventActionBases","RegistryType","EventAction","isTupleAbiParameter","param","rawArgs","idx","remaining","subIdx","abiType","lower","_steps","signatures","_toRawActionStep","obj","detectSignatureType","hexWithoutPrefix","normalizeUintValue","trim","pad","prepareActionStep","actionClaimant","actionStepOne","actionStepTwo","actionStepThree","actionStepFour","encodeAbiParameters","anyActionParameter","transactionSenderClaimant","chainId","zeroAddress","MAX_FIELD_INDEX","packFieldIndexes","InvalidTupleEncodingError","packed","decodedLog","argsArray","indexedIndices","nonIndexedIndices","reorderedArgs","currentIndex","packCriteriaFieldIndexes","firstIndex","secondIndex","unpackCriteriaFieldIndexes","tupleValue","isCriteriaFieldIndexTuple","fieldIndex","getScalarValueFromTuple","index0","index1","tuple","scalarValue"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1145,4 +1145,50 @@ export declare function unpackFieldIndexes(packed: number): number[];
|
|
|
1145
1145
|
* @returns {EventLog} The decoded log with arguments in the original ABI order
|
|
1146
1146
|
*/
|
|
1147
1147
|
export declare function decodeAndReorderLogArgs(event: AbiEvent, log: Log): EventLog;
|
|
1148
|
+
/**
|
|
1149
|
+
* IMPORTANT: For variable incentive criteria use only.
|
|
1150
|
+
* Do NOT use for action steps - use {@link packFieldIndexes} instead.
|
|
1151
|
+
*
|
|
1152
|
+
* Packs two field indices into a single uint8 value for criteria tuple access.
|
|
1153
|
+
* Both indices must be between 0-13 to fit in the packed format.
|
|
1154
|
+
*
|
|
1155
|
+
* Uses an offset of 32 to avoid collision with normal field indices (which are 0-31),
|
|
1156
|
+
* allowing the system to distinguish between direct field access and tuple access.
|
|
1157
|
+
*
|
|
1158
|
+
* @export
|
|
1159
|
+
* @param {[number, number]} param0 - A tuple of [firstIndex, secondIndex]
|
|
1160
|
+
* @returns {number} - Packed uint8 value with base offset of 32
|
|
1161
|
+
* @throws {InvalidTupleEncodingError} - If either index is outside the valid range (0-13)
|
|
1162
|
+
*/
|
|
1163
|
+
export declare function packCriteriaFieldIndexes([firstIndex, secondIndex]: [
|
|
1164
|
+
number,
|
|
1165
|
+
number
|
|
1166
|
+
]): number;
|
|
1167
|
+
/**
|
|
1168
|
+
* Unpacks a uint8 packed index value into an array of indices.
|
|
1169
|
+
*
|
|
1170
|
+
* @export
|
|
1171
|
+
* @param {number} packed - Packed index value
|
|
1172
|
+
* @returns {[number, number]} - [firstIndex, secondIndex]
|
|
1173
|
+
*/
|
|
1174
|
+
export declare function unpackCriteriaFieldIndexes(packed: number): [number, number];
|
|
1175
|
+
/**
|
|
1176
|
+
* Determines if a fieldIndex represents a tuple index (value >= 32) or a normal field index.
|
|
1177
|
+
*
|
|
1178
|
+
* @export
|
|
1179
|
+
* @param {number} fieldIndex - The field index to check
|
|
1180
|
+
* @returns {boolean} - True if it's a tuple index, false if it's a normal field index
|
|
1181
|
+
*/
|
|
1182
|
+
export declare function isCriteriaFieldIndexTuple(fieldIndex: number): boolean;
|
|
1183
|
+
/**
|
|
1184
|
+
* Extracts a scalar value from a tuple within event or function arguments.
|
|
1185
|
+
* This is used for incentive criteria when determining reward amounts.
|
|
1186
|
+
*
|
|
1187
|
+
* @export
|
|
1188
|
+
* @param {unknown[]} args - The decoded arguments from an event or function call
|
|
1189
|
+
* @param {number} fieldIndex - The tuple-encoded index
|
|
1190
|
+
* @returns {bigint} The extracted scalar value as a bigint
|
|
1191
|
+
* @throws {DecodedArgsError} If arguments are missing or cannot be converted to bigint
|
|
1192
|
+
*/
|
|
1193
|
+
export declare function getScalarValueFromTuple(args: unknown[], fieldIndex: number): bigint;
|
|
1148
1194
|
//# sourceMappingURL=EventAction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventAction.d.ts","sourceRoot":"","sources":["../../src/Actions/EventAction.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EventAction.d.ts","sourceRoot":"","sources":["../../src/Actions/EventAction.ts"],"names":[],"mappings":"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"}
|