UNPKG

ox

Version:

Ethereum Standard Library

63 lines (53 loc) 1.62 kB
import { expectTypeOf, test } from 'vp/test' import * as KeyAuthorization from './KeyAuthorization.js' import * as SignatureEnvelope from './SignatureEnvelope.js' const authorization = { address: '0x1111111111111111111111111111111111111111', chainId: 1n, type: 'secp256k1', } as const satisfies KeyAuthorization.Input const signature = { signature: { r: '0x01', s: '0x02', yParity: 0, }, type: 'secp256k1', } as const satisfies SignatureEnvelope.Secp256k1 const multisig = { account: '0x2222222222222222222222222222222222222222', signatures: [signature], type: 'multisig', } as const satisfies SignatureEnvelope.Multisig test('accepts primitive signatures', () => { const signed = KeyAuthorization.from(authorization, { signature }) expectTypeOf(signed.signature).toMatchTypeOf< KeyAuthorization.Signed['signature'] >() }) test('rejects multisig signatures', () => { KeyAuthorization.from(authorization, { // @ts-expect-error Key authorizations accept only primitive signatures. signature: multisig, }) const multisigRpc = { account: multisig.account, signatures: [ { r: '0x01', s: '0x02', type: 'secp256k1', yParity: '0x0', }, ], } as const satisfies SignatureEnvelope.MultisigRpc const rpc: KeyAuthorization.Rpc = { chainId: '0x1', expiry: null, keyId: authorization.address, keyType: authorization.type, // @ts-expect-error Key authorizations accept only primitive RPC signatures. signature: multisigRpc, } expectTypeOf(rpc).toEqualTypeOf<KeyAuthorization.Rpc>() })