diff --git a/packages/keyring-controller/CHANGELOG.md b/packages/keyring-controller/CHANGELOG.md index 52ca3f75e4..4356dbe4b3 100644 --- a/packages/keyring-controller/CHANGELOG.md +++ b/packages/keyring-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Expose `KeyringController:signTransaction` method through `KeyringController` messenger ([#8408](https://github.com/MetaMask/core/pull/8408)) + ### Changed - Bump `@metamask/messenger` from `^1.0.0` to `^1.1.1` ([#8364](https://github.com/MetaMask/core/pull/8364), [#8373](https://github.com/MetaMask/core/pull/8373)) diff --git a/packages/keyring-controller/src/KeyringController-method-action-types.ts b/packages/keyring-controller/src/KeyringController-method-action-types.ts index 4a25c520bc..e169b7d361 100644 --- a/packages/keyring-controller/src/KeyringController-method-action-types.ts +++ b/packages/keyring-controller/src/KeyringController-method-action-types.ts @@ -194,6 +194,19 @@ export type KeyringControllerSignTypedMessageAction = { handler: KeyringController['signTypedMessage']; }; +/** + * Signs a transaction by calling down into a specific keyring. + * + * @param transaction - Transaction object to sign. Must be a `ethereumjs-tx` transaction instance. + * @param from - Address to sign from, should be in keychain. + * @param opts - An optional options object. + * @returns Promise resolving to a signed transaction string. + */ +export type KeyringControllerSignTransactionAction = { + type: `KeyringController:signTransaction`; + handler: KeyringController['signTransaction']; +}; + /** * Convert a base transaction to a base UserOperation. * @@ -316,6 +329,7 @@ export type KeyringControllerMethodActions = | KeyringControllerSignEip7702AuthorizationAction | KeyringControllerSignPersonalMessageAction | KeyringControllerSignTypedMessageAction + | KeyringControllerSignTransactionAction | KeyringControllerPrepareUserOperationAction | KeyringControllerPatchUserOperationAction | KeyringControllerSignUserOperationAction diff --git a/packages/keyring-controller/src/KeyringController.ts b/packages/keyring-controller/src/KeyringController.ts index 6c12c6e948..9e2dc7212d 100644 --- a/packages/keyring-controller/src/KeyringController.ts +++ b/packages/keyring-controller/src/KeyringController.ts @@ -51,6 +51,7 @@ const MESSENGER_EXPOSED_METHODS = [ 'signMessage', 'signEip7702Authorization', 'signPersonalMessage', + 'signTransaction', 'signTypedMessage', 'decryptMessage', 'getEncryptionPublicKey', diff --git a/packages/keyring-controller/src/index.ts b/packages/keyring-controller/src/index.ts index 320131ba58..d52a7bc9e2 100644 --- a/packages/keyring-controller/src/index.ts +++ b/packages/keyring-controller/src/index.ts @@ -14,6 +14,7 @@ export type { KeyringControllerSignMessageAction, KeyringControllerSignEip7702AuthorizationAction, KeyringControllerSignPersonalMessageAction, + KeyringControllerSignTransactionAction, KeyringControllerSignTypedMessageAction, KeyringControllerPrepareUserOperationAction, KeyringControllerPatchUserOperationAction,