Skip to content

Commit

Permalink
feat: correctly set validation entity in nonce and separate encode ac…
Browse files Browse the repository at this point in the history
…tions
  • Loading branch information
adamegyed committed Jan 27, 2025
1 parent 0c873ad commit c0d52b7
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ export async function createMAv2BaseFunctions(

const fullNonceKey: bigint =
(nonceKey << 40n) +
BigInt(entityId << 8) +
(BigInt(entityId) << 8n) +
(isGlobalValidation ? 1n : 0n);

return entryPointContract.read.getNonce([
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,16 @@ export type InstallValidationActions<
installValidation: (
args: InstallValidationParams<TSigner>
) => Promise<SendUserOperationResult>;
encodeInstallValidation: (
// TODO: omit the user op sending related parameters from this type
args: InstallValidationParams<TSigner>
) => Promise<Hex>;
uninstallValidation: (
args: UninstallValidationParams<TSigner>
) => Promise<SendUserOperationResult>;
encodeUninstallValidation: (
args: UninstallValidationParams<TSigner>
) => Promise<Hex>;
};

/**
Expand Down Expand Up @@ -114,15 +121,14 @@ export const installValidationActions: <
TSigner extends SmartAccountSigner = SmartAccountSigner
>(
client: SMAV2AccountClient<TSigner>
) => InstallValidationActions<TSigner> = (client) => ({
installValidation: async ({
) => InstallValidationActions<TSigner> = (client) => {
const encodeInstallValidation = async ({
validationConfig,
selectors,
installData,
hooks,
account = client.account,
overrides,
}) => {
}: InstallValidationParams) => {
if (!account) {
throw new AccountNotFoundError();
}
Expand Down Expand Up @@ -160,21 +166,16 @@ export const installValidationActions: <
})
);

return client.sendUserOperation({
uo: callData,
account,
overrides,
});
},
return callData;
};

uninstallValidation: async ({
const encodeUninstallValidation = async ({
moduleAddress,
entityId,
uninstallData,
hookUninstallDatas,
account = client.account,
overrides,
}) => {
}: UninstallValidationParams) => {
if (!account) {
throw new AccountNotFoundError();
}
Expand Down Expand Up @@ -204,10 +205,56 @@ export const installValidationActions: <
})
);

return client.sendUserOperation({
uo: callData,
account,
return callData;
};

return {
encodeInstallValidation,
encodeUninstallValidation,
installValidation: async ({
validationConfig,
selectors,
installData,
hooks,
account = client.account,
overrides,
});
},
});
}) => {
const callData = await encodeInstallValidation({
validationConfig,
selectors,
installData,
hooks,
account,
});

return client.sendUserOperation({
uo: callData,
account,
overrides,
});
},

uninstallValidation: async ({
moduleAddress,
entityId,
uninstallData,
hookUninstallDatas,
account = client.account,
overrides,
}) => {
const callData = await encodeUninstallValidation({
moduleAddress,
entityId,
uninstallData,
hookUninstallDatas,
account,
});

return client.sendUserOperation({
uo: callData,
account,
overrides,
});
},
};
};

0 comments on commit c0d52b7

Please sign in to comment.