You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Input type: Python receives dict[str, Any]; TypeScript receives the typed TypedData interface from signers.ts:16.
Impact
Custom signer implementations cannot be shared between SDKs without a wrapper. The Python EthAccountSigner concrete class (signers.py:38) would not satisfy the TypeScript Signer interface, and a TypeScript signer object would not satisfy the Python Signer Protocol — they target different structural shapes.
Summary
The signer abstraction has incompatible invocation protocols in the two SDKs.
sdks/python/pmxt/signers.pySignerProtocol defines__call__(self, typed_data: dict[str, Any]) -> str— signers are called as functionssdks/typescript/pmxt/signers.tsSignerinterface requiressignTypedData(typedData: TypedData): Promise<string>— signers expose a named methodReproduction
Detailed differences
signer(typed_data)(dunder__call__); TypeScript callssigner.signTypedData(typedData).Signer.__call__returnsstr(synchronous); TypeScriptSigner.signTypedDatareturnsPromise<string>(async).addressproperty: PythonSignerProtocol has noaddressfield (tracked separately in SDK drift:Signerprotocol in Python has noaddressproperty; TypeScriptSignerinterface requires it #1004); TypeScriptSignerrequiresreadonly address: string.dict[str, Any]; TypeScript receives the typedTypedDatainterface fromsigners.ts:16.Impact
Custom signer implementations cannot be shared between SDKs without a wrapper. The Python
EthAccountSignerconcrete class (signers.py:38) would not satisfy the TypeScriptSignerinterface, and a TypeScript signer object would not satisfy the PythonSignerProtocol — they target different structural shapes.