lens-modules 3.1.5 → 3.1.6

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.
@@ -77,7 +77,7 @@ interface INamespace is IMetadataBased {
77
77
 
78
78
  function setExtraData(KeyValue[] calldata extraDataToSet) external;
79
79
 
80
- function changeNamespaceRules(RuleChange[] calldata ruleChanges) external;
80
+ function changeNamespaceRules(RuleChange[] calldata ruleChanges) external payable;
81
81
 
82
82
  function createUsername(
83
83
  address account,
@@ -10,7 +10,6 @@ import {RuleBasedGroup} from "lens-modules/contracts/core/primitives/group/RuleB
10
10
  import {AccessControlled} from "lens-modules/contracts/core/access/AccessControlled.sol";
11
11
  import {ExtraDataBased} from "lens-modules/contracts/core/base/ExtraDataBased.sol";
12
12
  import {Events} from "lens-modules/contracts/core/types/Events.sol";
13
- import {IGroupRule} from "lens-modules/contracts/core/interfaces/IGroupRule.sol";
14
13
  import {SourceStampBased} from "lens-modules/contracts/core/base/SourceStampBased.sol";
15
14
  import {MetadataBased} from "lens-modules/contracts/core/base/MetadataBased.sol";
16
15
  import {Initializable} from "lens-modules/contracts/core/upgradeability/Initializable.sol";
@@ -124,7 +123,7 @@ contract Group is
124
123
  address account,
125
124
  KeyValue[] calldata customParams,
126
125
  RuleProcessingParams[] calldata ruleProcessingParams
127
- ) external override {
126
+ ) external payable override usingNativePaymentHelper {
128
127
  _addMember(account, customParams, ruleProcessingParams, _processSourceStamp(customParams));
129
128
  }
130
129
 
@@ -132,7 +131,7 @@ contract Group is
132
131
  address account,
133
132
  KeyValue[] calldata customParams,
134
133
  RuleProcessingParams[] calldata ruleProcessingParams
135
- ) external override {
134
+ ) external payable override usingNativePaymentHelper {
136
135
  _removeMember(account, customParams, ruleProcessingParams, _processSourceStamp(customParams));
137
136
  }
138
137
 
@@ -140,7 +139,7 @@ contract Group is
140
139
  address account,
141
140
  KeyValue[] calldata customParams,
142
141
  RuleProcessingParams[] calldata ruleProcessingParams
143
- ) external override {
142
+ ) external payable override usingNativePaymentHelper {
144
143
  require(msg.sender == account, Errors.InvalidMsgSender());
145
144
  uint256 membershipId = Core._grantMembership(account);
146
145
  _processMemberJoining(msg.sender, account, customParams, ruleProcessingParams);
@@ -152,7 +151,7 @@ contract Group is
152
151
  address account,
153
152
  KeyValue[] calldata customParams,
154
153
  RuleProcessingParams[] calldata ruleProcessingParams
155
- ) external override {
154
+ ) external payable override usingNativePaymentHelper {
156
155
  require(msg.sender == account, Errors.InvalidMsgSender());
157
156
  uint256 membershipId = Core._revokeMembership(account);
158
157
  _processMemberLeaving(msg.sender, account, customParams, ruleProcessingParams);
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,"default"),secondTarget&&__copyProps(secondTarget,mod,"default"));var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var src_exports={};module.exports=__toCommonJS(src_exports);__reExport(src_exports,require("./deployments"),module.exports);__reExport(src_exports,require("./abis"),module.exports);0&&(module.exports={...require("./deployments"),...require("./abis")});
1
+ "use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,"default"),secondTarget&&__copyProps(secondTarget,mod,"default"));var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var src_exports={};module.exports=__toCommonJS(src_exports);__reExport(src_exports,require("./deployments"),module.exports);__reExport(src_exports,require("./abis"),module.exports);__reExport(src_exports,require("./utils"),module.exports);0&&(module.exports={...require("./deployments"),...require("./abis"),...require("./utils")});
package/dist/index.d.cts CHANGED
@@ -1,2 +1,4 @@
1
1
  export { lensDeployments } from './deployments.cjs';
2
2
  export { accessControlFactoryAbi, accessControlledAbi, accountAbi, accountBlockingRuleAbi, accountFactoryAbi, actionHubAbi, additionRemovalPidGroupRuleAbi, appAbi, appFactoryAbi, banMemberGroupRuleAbi, baseAccountActionAbi, basePostActionAbi, baseSourceAbi, entityExtraDataBasedAbi, erc1155HolderAbi, erc1155ReceiverAbi, erc165Abi, erc1967ProxyAbi, erc1967UpgradeAbi, erc721HolderAbi, errorsAbi, eventEmitterAbi, eventEmitterEarlyAbi, eventsAbi, extraDataBasedAbi, extraStorageBasedAbi, feedAbi, feedFactoryAbi, followersOnlyPostRuleAbi, graphAbi, graphFactoryAbi, groupAbi, groupFactoryAbi, groupGatedFeedRuleAbi, groupGatedGraphRuleAbi, iAccessControlAbi, iAccessControlledAbi, iAccountAbi, iAccountActionAbi, iAccountGroupAdditionSettingsAbi, iAppAbi, iFeedAbi, iFeedRuleAbi, iFollowRuleAbi, iGraphAbi, iGraphRuleAbi, iGroupAbi, iGroupRuleAbi, iLensFeesAbi, iLensNativePaymentHelperAbi, iLockAbi, iMetadataBasedAbi, iMulticall3Abi, iNamespaceAbi, iNamespaceRuleAbi, iOwnableAbi, iPostActionAbi, iPostRuleAbi, iRequestBasedGroupRuleAbi, iRoleBasedAccessControlAbi, iSimpleCollectActionAbi, iSourceAbi, iTokenAbi, iTokenUriProviderAbi, iTransparentUpgradeableProxyAbi, iVersionedBeaconAbi, ierc1155Abi, ierc1155ReceiverAbi, ierc165Abi, ierc1822ProxiableAbi, ierc1967Abi, ierc20Abi, ierc20PermitAbi, ierc4906EventsAbi, ierc721Abi, ierc721EnumerableAbi, ierc721MetadataAbi, ierc721NamespaceAbi, ierc721ReceiverAbi, ierc721ReceiverUpgradeableAbi, ierc721TokenReceiverAbi, ierc7572Abi, lensCollectedPostAbi, lensCreate2Abi, lensErc721Abi, lensFactoryAbi, lensFeesAbi, lensNativePaymentHelperAbi, lensRulePaymentHandlerAbi, lensUsernameTokenUriProviderAbi, libStringAbi, lockAbi, membershipApprovalGroupRuleAbi, metadataBasedAbi, namespaceAbi, namespaceFactoryAbi, ownableAbi, ownableMetadataBasedAccountActionAbi, ownableMetadataBasedPostActionAbi, ownableMetadataBasedRuleAbi, ownerAdminOnlyAccessControlAbi, payableUsingNativePaymentHelperAbi, permissionlessAccessControlAbi, primitiveFactoryAbi, proxyAbi, proxyAdminAbi, queryAbi, roleBasedAccessControlAbi, ruleBasedFeedAbi, ruleBasedGraphAbi, ruleBasedGroupAbi, ruleBasedNamespaceAbi, setTokenDistributorSignerAbi, simpleCollectActionAbi, simplePaymentFeedRuleAbi, simplePaymentFollowRuleAbi, simplePaymentGroupRuleAbi, simplePaymentRuleAbi, sourceStampBasedAbi, tippingAccountActionAbi, tippingPostActionAbi, tokenDistributorAbi, tokenGatedFeedRuleAbi, tokenGatedFollowRuleAbi, tokenGatedGraphRuleAbi, tokenGatedGroupRuleAbi, tokenGatedNamespaceRuleAbi, tokenGatedRuleAbi, transparentUpgradeableProxyAbi, trustBasedRuleAbi, usernameLengthNamespaceRuleAbi, usernamePricePerLengthNamespaceRuleAbi, usernameReservedNamespaceRuleAbi, usernameSimpleCharsetNamespaceRuleAbi } from './abis.cjs';
3
+ export { decodeDelegatedTransaction } from './utils.cjs';
4
+ import 'viem';
package/dist/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  export { lensDeployments } from './deployments.js';
2
2
  export { accessControlFactoryAbi, accessControlledAbi, accountAbi, accountBlockingRuleAbi, accountFactoryAbi, actionHubAbi, additionRemovalPidGroupRuleAbi, appAbi, appFactoryAbi, banMemberGroupRuleAbi, baseAccountActionAbi, basePostActionAbi, baseSourceAbi, entityExtraDataBasedAbi, erc1155HolderAbi, erc1155ReceiverAbi, erc165Abi, erc1967ProxyAbi, erc1967UpgradeAbi, erc721HolderAbi, errorsAbi, eventEmitterAbi, eventEmitterEarlyAbi, eventsAbi, extraDataBasedAbi, extraStorageBasedAbi, feedAbi, feedFactoryAbi, followersOnlyPostRuleAbi, graphAbi, graphFactoryAbi, groupAbi, groupFactoryAbi, groupGatedFeedRuleAbi, groupGatedGraphRuleAbi, iAccessControlAbi, iAccessControlledAbi, iAccountAbi, iAccountActionAbi, iAccountGroupAdditionSettingsAbi, iAppAbi, iFeedAbi, iFeedRuleAbi, iFollowRuleAbi, iGraphAbi, iGraphRuleAbi, iGroupAbi, iGroupRuleAbi, iLensFeesAbi, iLensNativePaymentHelperAbi, iLockAbi, iMetadataBasedAbi, iMulticall3Abi, iNamespaceAbi, iNamespaceRuleAbi, iOwnableAbi, iPostActionAbi, iPostRuleAbi, iRequestBasedGroupRuleAbi, iRoleBasedAccessControlAbi, iSimpleCollectActionAbi, iSourceAbi, iTokenAbi, iTokenUriProviderAbi, iTransparentUpgradeableProxyAbi, iVersionedBeaconAbi, ierc1155Abi, ierc1155ReceiverAbi, ierc165Abi, ierc1822ProxiableAbi, ierc1967Abi, ierc20Abi, ierc20PermitAbi, ierc4906EventsAbi, ierc721Abi, ierc721EnumerableAbi, ierc721MetadataAbi, ierc721NamespaceAbi, ierc721ReceiverAbi, ierc721ReceiverUpgradeableAbi, ierc721TokenReceiverAbi, ierc7572Abi, lensCollectedPostAbi, lensCreate2Abi, lensErc721Abi, lensFactoryAbi, lensFeesAbi, lensNativePaymentHelperAbi, lensRulePaymentHandlerAbi, lensUsernameTokenUriProviderAbi, libStringAbi, lockAbi, membershipApprovalGroupRuleAbi, metadataBasedAbi, namespaceAbi, namespaceFactoryAbi, ownableAbi, ownableMetadataBasedAccountActionAbi, ownableMetadataBasedPostActionAbi, ownableMetadataBasedRuleAbi, ownerAdminOnlyAccessControlAbi, payableUsingNativePaymentHelperAbi, permissionlessAccessControlAbi, primitiveFactoryAbi, proxyAbi, proxyAdminAbi, queryAbi, roleBasedAccessControlAbi, ruleBasedFeedAbi, ruleBasedGraphAbi, ruleBasedGroupAbi, ruleBasedNamespaceAbi, setTokenDistributorSignerAbi, simpleCollectActionAbi, simplePaymentFeedRuleAbi, simplePaymentFollowRuleAbi, simplePaymentGroupRuleAbi, simplePaymentRuleAbi, sourceStampBasedAbi, tippingAccountActionAbi, tippingPostActionAbi, tokenDistributorAbi, tokenGatedFeedRuleAbi, tokenGatedFollowRuleAbi, tokenGatedGraphRuleAbi, tokenGatedGroupRuleAbi, tokenGatedNamespaceRuleAbi, tokenGatedRuleAbi, transparentUpgradeableProxyAbi, trustBasedRuleAbi, usernameLengthNamespaceRuleAbi, usernamePricePerLengthNamespaceRuleAbi, usernameReservedNamespaceRuleAbi, usernameSimpleCharsetNamespaceRuleAbi } from './abis.js';
3
+ export { decodeDelegatedTransaction } from './utils.js';
4
+ import 'viem';
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export*from"./deployments";export*from"./abis";
1
+ export*from"./deployments";export*from"./abis";export*from"./utils";
package/dist/utils.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var utils_exports={};__export(utils_exports,{decodeDelegatedTransaction:()=>decodeDelegatedTransaction});module.exports=__toCommonJS(utils_exports);var import_viem=require("viem");var import_abis=require("./abis");const functionMap=new Map;function addFunctionsToMap(abi,contractName){abi.forEach(item=>{if(item.type==="function"&&item.name){functionMap.set(item.name,{abi:[item],contractName,functionName:item.name})}})}addFunctionsToMap([...import_abis.accountAbi],"Account");addFunctionsToMap([...import_abis.feedAbi],"Feed");addFunctionsToMap([...import_abis.graphAbi],"Graph");addFunctionsToMap([...import_abis.groupAbi],"Group");addFunctionsToMap([...import_abis.namespaceAbi],"Namespace");addFunctionsToMap([...import_abis.appAbi],"App");function decodeDelegatedTransaction(calldata){try{try{const executeTransactionAbi=(0,import_viem.parseAbi)(["function executeTransaction(address target, uint256 value, bytes data) returns (bytes)"]);const decoded=(0,import_viem.decodeFunctionData)({abi:executeTransactionAbi,data:calldata});if(decoded.functionName==="executeTransaction"){const result={type:"executeTransaction",target:decoded.args[0],value:decoded.args[1].toString(),data:decoded.args[2],decodedActions:[]};const innerAction=decodeInnerAction(decoded.args[0],decoded.args[2]);if(innerAction){result.decodedActions.push(innerAction)}return result}}catch{}try{const executeTransactionsAbi=(0,import_viem.parseAbi)(["function executeTransactions((address target, uint256 value, bytes data)[] transactions) returns (bytes[])"]);const decoded=(0,import_viem.decodeFunctionData)({abi:executeTransactionsAbi,data:calldata});if(decoded.functionName==="executeTransactions"){const result={type:"executeTransactions",transactions:decoded.args[0].map(tx=>({target:tx.target,value:tx.value.toString(),data:tx.data})),decodedActions:[]};decoded.args[0].forEach((tx,index)=>{const innerAction=decodeInnerAction(tx.target,tx.data);if(innerAction){result.decodedActions.push({transactionIndex:index,...innerAction})}});return result}}catch{}return{error:"Could not decode as executeTransaction or executeTransactions",calldata,decodedActions:[]}}catch(error){return{error:`Decoding failed: ${error.message}`,calldata,decodedActions:[]}}}function decodeInnerAction(target,data){try{if(!data||data==="0x"){return{target,action:"raw_transaction",data:data||"0x"}}const selector=data.slice(0,10);const commonFunctions=["createPost","follow","unfollow","addToGroup","removeFromGroup","createGraph","createGroup","createFeed","createApp","mintUsername","tip","collect"];for(const funcName of commonFunctions){if(functionMap.has(funcName)){try{const{abi,contractName}=functionMap.get(funcName);const decoded=(0,import_viem.decodeFunctionData)({abi,data});if(decoded.functionName===funcName){return{target,contractType:contractName,action:funcName,parameters:formatParameters([...decoded.args],abi[0].inputs||[]),rawData:data}}}catch{}}}const abiSets=[{abi:import_abis.feedAbi,name:"Feed"},{abi:import_abis.graphAbi,name:"Graph"},{abi:import_abis.groupAbi,name:"Group"},{abi:import_abis.namespaceAbi,name:"Namespace"},{abi:import_abis.appAbi,name:"App"},{abi:import_abis.accountAbi,name:"Account"}];for(const{abi,name}of abiSets){if(!abi||!abi.length)continue;try{const decoded=(0,import_viem.decodeFunctionData)({abi,data});return{target,contractType:name,action:decoded.functionName,parameters:formatParameters([...decoded.args],abi.filter(item=>item.type==="function").find(item=>item.name===decoded.functionName)?.inputs||[]),rawData:data}}catch{}}return{target,action:"unknown_function",selector,data,error:"Could not decode function call"}}catch(error){return{target,action:"decode_error",error:error.message,data}}}function formatParameters(args,inputs){if(!args||!inputs)return{};const formatted={};inputs.forEach((input,index)=>{if(index>=args.length)return;const value=args[index];try{if(input.type==="address"){formatted[input.name]=value}else if(input.type.includes("uint")||input.type.includes("int")){formatted[input.name]=typeof value==="bigint"?value.toString():String(value)}else if(input.type==="bool"){formatted[input.name]=Boolean(value)}else if(input.type==="string"){formatted[input.name]=String(value)}else if(input.type==="bytes"||input.type.startsWith("bytes")){formatted[input.name]=value}else if(input.type==="tuple"){formatted[input.name]=formatTupleParameters(value,input.components||[])}else if(input.type==="tuple[]"){formatted[input.name]=Array.isArray(value)?value.map(v=>formatTupleParameters(v,input.components||[])):[]}else if(input.type.includes("[]")){formatted[input.name]=Array.isArray(value)?value.map(v=>typeof v==="bigint"?v.toString():v):value}else{formatted[input.name]=value}}catch(error){formatted[input.name]=`<formatting error: ${error.message}>`}});return formatted}function formatTupleParameters(tupleValue,components){if(!tupleValue||!components)return{};const formatted={};components.forEach((component,index)=>{const value=tupleValue[component.name]!==void 0?tupleValue[component.name]:tupleValue[index];try{if(component.type==="address"){formatted[component.name]=value}else if(component.type.includes("uint")||component.type.includes("int")){formatted[component.name]=typeof value==="bigint"?value.toString():String(value)}else if(component.type==="bool"){formatted[component.name]=Boolean(value)}else if(component.type==="string"){formatted[component.name]=String(value)}else if(component.type==="bytes"||component.type.startsWith("bytes")){formatted[component.name]=value}else if(component.type==="tuple"){formatted[component.name]=formatTupleParameters(value,component.components||[])}else if(component.type==="tuple[]"){formatted[component.name]=Array.isArray(value)?value.map(v=>formatTupleParameters(v,component.components||[])):[]}else if(component.type.includes("[]")){formatted[component.name]=Array.isArray(value)?value.map(v=>typeof v==="bigint"?v.toString():v):value}else{formatted[component.name]=value}}catch(error){formatted[component.name]=`<formatting error: ${error.message}>`}});return formatted}0&&(module.exports={decodeDelegatedTransaction});
@@ -0,0 +1,31 @@
1
+ import { Hex } from 'viem';
2
+
3
+ interface DecodedAction {
4
+ target: string;
5
+ contractType?: string;
6
+ action: string;
7
+ data?: Hex;
8
+ parameters?: Record<string, any>;
9
+ rawData?: string;
10
+ selector?: string;
11
+ error?: string;
12
+ transactionIndex?: number;
13
+ }
14
+ interface DecodedTransaction {
15
+ type?: string;
16
+ target?: string;
17
+ value?: string;
18
+ data?: string;
19
+ transactions?: Transaction[];
20
+ decodedActions: DecodedAction[];
21
+ error?: string;
22
+ calldata?: string;
23
+ }
24
+ interface Transaction {
25
+ target: string;
26
+ value: string;
27
+ data: string;
28
+ }
29
+ declare function decodeDelegatedTransaction(calldata: Hex): DecodedTransaction;
30
+
31
+ export { decodeDelegatedTransaction };
@@ -0,0 +1,31 @@
1
+ import { Hex } from 'viem';
2
+
3
+ interface DecodedAction {
4
+ target: string;
5
+ contractType?: string;
6
+ action: string;
7
+ data?: Hex;
8
+ parameters?: Record<string, any>;
9
+ rawData?: string;
10
+ selector?: string;
11
+ error?: string;
12
+ transactionIndex?: number;
13
+ }
14
+ interface DecodedTransaction {
15
+ type?: string;
16
+ target?: string;
17
+ value?: string;
18
+ data?: string;
19
+ transactions?: Transaction[];
20
+ decodedActions: DecodedAction[];
21
+ error?: string;
22
+ calldata?: string;
23
+ }
24
+ interface Transaction {
25
+ target: string;
26
+ value: string;
27
+ data: string;
28
+ }
29
+ declare function decodeDelegatedTransaction(calldata: Hex): DecodedTransaction;
30
+
31
+ export { decodeDelegatedTransaction };
package/dist/utils.js ADDED
@@ -0,0 +1 @@
1
+ import{decodeFunctionData,parseAbi}from"viem";import{accountAbi,feedAbi,graphAbi,groupAbi,namespaceAbi,appAbi}from"./abis";const functionMap=new Map;function addFunctionsToMap(abi,contractName){abi.forEach(item=>{if(item.type==="function"&&item.name){functionMap.set(item.name,{abi:[item],contractName,functionName:item.name})}})}addFunctionsToMap([...accountAbi],"Account");addFunctionsToMap([...feedAbi],"Feed");addFunctionsToMap([...graphAbi],"Graph");addFunctionsToMap([...groupAbi],"Group");addFunctionsToMap([...namespaceAbi],"Namespace");addFunctionsToMap([...appAbi],"App");function decodeDelegatedTransaction(calldata){try{try{const executeTransactionAbi=parseAbi(["function executeTransaction(address target, uint256 value, bytes data) returns (bytes)"]);const decoded=decodeFunctionData({abi:executeTransactionAbi,data:calldata});if(decoded.functionName==="executeTransaction"){const result={type:"executeTransaction",target:decoded.args[0],value:decoded.args[1].toString(),data:decoded.args[2],decodedActions:[]};const innerAction=decodeInnerAction(decoded.args[0],decoded.args[2]);if(innerAction){result.decodedActions.push(innerAction)}return result}}catch{}try{const executeTransactionsAbi=parseAbi(["function executeTransactions((address target, uint256 value, bytes data)[] transactions) returns (bytes[])"]);const decoded=decodeFunctionData({abi:executeTransactionsAbi,data:calldata});if(decoded.functionName==="executeTransactions"){const result={type:"executeTransactions",transactions:decoded.args[0].map(tx=>({target:tx.target,value:tx.value.toString(),data:tx.data})),decodedActions:[]};decoded.args[0].forEach((tx,index)=>{const innerAction=decodeInnerAction(tx.target,tx.data);if(innerAction){result.decodedActions.push({transactionIndex:index,...innerAction})}});return result}}catch{}return{error:"Could not decode as executeTransaction or executeTransactions",calldata,decodedActions:[]}}catch(error){return{error:`Decoding failed: ${error.message}`,calldata,decodedActions:[]}}}function decodeInnerAction(target,data){try{if(!data||data==="0x"){return{target,action:"raw_transaction",data:data||"0x"}}const selector=data.slice(0,10);const commonFunctions=["createPost","follow","unfollow","addToGroup","removeFromGroup","createGraph","createGroup","createFeed","createApp","mintUsername","tip","collect"];for(const funcName of commonFunctions){if(functionMap.has(funcName)){try{const{abi,contractName}=functionMap.get(funcName);const decoded=decodeFunctionData({abi,data});if(decoded.functionName===funcName){return{target,contractType:contractName,action:funcName,parameters:formatParameters([...decoded.args],abi[0].inputs||[]),rawData:data}}}catch{}}}const abiSets=[{abi:feedAbi,name:"Feed"},{abi:graphAbi,name:"Graph"},{abi:groupAbi,name:"Group"},{abi:namespaceAbi,name:"Namespace"},{abi:appAbi,name:"App"},{abi:accountAbi,name:"Account"}];for(const{abi,name}of abiSets){if(!abi||!abi.length)continue;try{const decoded=decodeFunctionData({abi,data});return{target,contractType:name,action:decoded.functionName,parameters:formatParameters([...decoded.args],abi.filter(item=>item.type==="function").find(item=>item.name===decoded.functionName)?.inputs||[]),rawData:data}}catch{}}return{target,action:"unknown_function",selector,data,error:"Could not decode function call"}}catch(error){return{target,action:"decode_error",error:error.message,data}}}function formatParameters(args,inputs){if(!args||!inputs)return{};const formatted={};inputs.forEach((input,index)=>{if(index>=args.length)return;const value=args[index];try{if(input.type==="address"){formatted[input.name]=value}else if(input.type.includes("uint")||input.type.includes("int")){formatted[input.name]=typeof value==="bigint"?value.toString():String(value)}else if(input.type==="bool"){formatted[input.name]=Boolean(value)}else if(input.type==="string"){formatted[input.name]=String(value)}else if(input.type==="bytes"||input.type.startsWith("bytes")){formatted[input.name]=value}else if(input.type==="tuple"){formatted[input.name]=formatTupleParameters(value,input.components||[])}else if(input.type==="tuple[]"){formatted[input.name]=Array.isArray(value)?value.map(v=>formatTupleParameters(v,input.components||[])):[]}else if(input.type.includes("[]")){formatted[input.name]=Array.isArray(value)?value.map(v=>typeof v==="bigint"?v.toString():v):value}else{formatted[input.name]=value}}catch(error){formatted[input.name]=`<formatting error: ${error.message}>`}});return formatted}function formatTupleParameters(tupleValue,components){if(!tupleValue||!components)return{};const formatted={};components.forEach((component,index)=>{const value=tupleValue[component.name]!==void 0?tupleValue[component.name]:tupleValue[index];try{if(component.type==="address"){formatted[component.name]=value}else if(component.type.includes("uint")||component.type.includes("int")){formatted[component.name]=typeof value==="bigint"?value.toString():String(value)}else if(component.type==="bool"){formatted[component.name]=Boolean(value)}else if(component.type==="string"){formatted[component.name]=String(value)}else if(component.type==="bytes"||component.type.startsWith("bytes")){formatted[component.name]=value}else if(component.type==="tuple"){formatted[component.name]=formatTupleParameters(value,component.components||[])}else if(component.type==="tuple[]"){formatted[component.name]=Array.isArray(value)?value.map(v=>formatTupleParameters(v,component.components||[])):[]}else if(component.type.includes("[]")){formatted[component.name]=Array.isArray(value)?value.map(v=>typeof v==="bigint"?v.toString():v):value}else{formatted[component.name]=value}}catch(error){formatted[component.name]=`<formatting error: ${error.message}>`}});return formatted}export{decodeDelegatedTransaction};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lens-modules",
3
- "version": "3.1.5",
3
+ "version": "3.1.6",
4
4
  "description": "Contracts, ABIs, and utilities for Lens Protocol.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -38,6 +38,14 @@
38
38
  ]
39
39
  }
40
40
  },
41
+ "scripts": {
42
+ "build": "tsup",
43
+ "prepublish": "npm run build",
44
+ "prettier": "prettier --write .",
45
+ "generate-abis": "npx wagmi generate",
46
+ "generate-deployments": "node ./scripts/generate-deployments.js",
47
+ "generate": "npm run generate-abis && npm run generate-deployments && npm run prettier"
48
+ },
41
49
  "repository": {
42
50
  "type": "git",
43
51
  "url": "https://github.com/iPaulPro/lens-modules.git"
@@ -66,13 +74,5 @@
66
74
  "tsup": "8.5.0",
67
75
  "typescript": "^5.4.2",
68
76
  "viem": "^2.30.0"
69
- },
70
- "scripts": {
71
- "build": "tsup",
72
- "prepublish": "npm run build",
73
- "prettier": "prettier --write .",
74
- "generate-abis": "npx wagmi generate",
75
- "generate-deployments": "node ./scripts/generate-deployments.js",
76
- "generate": "npm run generate-abis && npm run generate-deployments && npm run prettier"
77
77
  }
78
- }
78
+ }