diff --git a/packages/@magic-ext/solana/src/constants.ts b/packages/@magic-ext/solana/src/constants.ts index 551895385..16ab140bb 100644 --- a/packages/@magic-ext/solana/src/constants.ts +++ b/packages/@magic-ext/solana/src/constants.ts @@ -1,4 +1,5 @@ export const SOLANA_PAYLOAD_METHODS = { SIGN_TRANSACTION: 'sol_signTransaction', SIGN_MESSAGE: 'sol_signMessage', + PARTIAL_SIGN_TRANSACTION: 'sol_partialSignTransaction', } as const; diff --git a/packages/@magic-ext/solana/src/index.ts b/packages/@magic-ext/solana/src/index.ts index b805993ec..7d9c44961 100644 --- a/packages/@magic-ext/solana/src/index.ts +++ b/packages/@magic-ext/solana/src/index.ts @@ -40,4 +40,20 @@ export class SolanaExtension extends Extension.Internal<'solana', any> { }, }); }; + + public partialSignTransaction = ( + transaction: Transaction | VersionedTransaction, + serializeConfig?: SerializeConfig, + ) => { + return this.request<{ rawTransaction: string }>({ + id: 42, + jsonrpc: '2.0', + method: SOLANA_PAYLOAD_METHODS.PARTIAL_SIGN_TRANSACTION, + params: { + type: transaction instanceof Transaction ? 'legacy' : 0, + serialized: transaction.serialize(serializeConfig), + serializeConfig, + }, + }); + }; }