1- import type { TypedData } from "abitype" ;
2- import { type TypedDataDefinition , hashTypedData } from "viem" ;
31import type { Hex } from "../encoding/hex.js" ;
4- import { parseTypedData } from "./helpers/parseTypedData.js" ;
5- import { sign } from "./sign.js" ;
6- import { signatureToHex } from "./signature-to-hex.js" ;
2+ import * as ox__TypedData from "ox/TypedData" ;
3+ import * as ox__Secp256k1 from "ox/Secp256k1" ;
4+ import * as ox__Hex from "ox/Hex" ;
5+ import * as ox__Signature from "ox/Signature" ;
76
87export type SignTypedDataOptions <
9- typedData extends TypedData | Record < string , unknown > = TypedData ,
8+ typedData extends
9+ | ox__TypedData . TypedData
10+ | Record < string , unknown > = ox__TypedData . TypedData ,
1011 primaryType extends keyof typedData | "EIP712Domain" = keyof typedData ,
11- > = TypedDataDefinition < typedData , primaryType > & {
12+ > = ox__TypedData . Definition < typedData , primaryType > & {
1213 privateKey : Hex ;
1314} ;
1415
@@ -28,17 +29,18 @@ export type SignTypedDataOptions<
2829 * @utils
2930 */
3031export function signTypedData <
31- const typedData extends TypedData | Record < string , unknown > ,
32+ const typedData extends ox__TypedData . TypedData | Record < string , unknown > ,
3233 primaryType extends keyof typedData | "EIP712Domain" ,
3334> ( options : SignTypedDataOptions < typedData , primaryType > ) : Hex {
3435 const { privateKey, ...typedData } =
3536 options as unknown as SignTypedDataOptions ;
3637
37- const parsedTypeData = parseTypedData ( typedData ) ;
38+ const payload = ox__TypedData . getSignPayload ( typedData ) ;
3839
39- const signature = sign ( {
40- hash : hashTypedData ( parsedTypeData ) , // TODO: Implement native hashTypedData
41- privateKey,
40+ const signature = ox__Secp256k1 . sign ( {
41+ payload ,
42+ privateKey : ox__Hex . fromString ( privateKey ) ,
4243 } ) ;
43- return signatureToHex ( signature ) ;
44+
45+ return ox__Signature . toHex ( signature ) ;
4446}
0 commit comments