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.
- package/contracts/core/interfaces/INamespace.sol +1 -1
- package/contracts/core/primitives/group/Group.sol +4 -5
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/utils.cjs +1 -0
- package/dist/utils.d.cts +31 -0
- package/dist/utils.d.ts +31 -0
- package/dist/utils.js +1 -0
- package/package.json +10 -10
|
@@ -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});
|
package/dist/utils.d.cts
ADDED
|
@@ -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.d.ts
ADDED
|
@@ -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.
|
|
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
|
+
}
|