Skip to main content
import * as PublicKey from 'voltaire-effect/primitives/PublicKey'
import { Effect } from 'effect'
import * as S from 'effect/Schema'

// From hex (64-byte uncompressed)
const pk = S.decodeSync(PublicKey.PublicKeySchema)('0x04...')

// From bytes (auto-decompresses 33-byte compressed)
const pk2 = S.decodeSync(PublicKey.PublicKeyFromBytesSchema)(keyBytes)

// To compressed (33 bytes)
const compressed = S.decodeSync(PublicKey.CompressedPublicKeySchema)(pk)

Effect API

// From hex
const pk = Effect.runSync(PublicKey.from('0x04...'))

// From private key
const pk = Effect.runSync(PublicKey.fromPrivateKey('0x0123...'))

// Compress/decompress
const compressed = Effect.runSync(PublicKey.compress(pk))    // 33 bytes
const uncompressed = Effect.runSync(PublicKey.decompress(compressed)) // 64 bytes

Errors

const result = await Effect.runPromiseExit(PublicKey.from('0xinvalid'))
// InvalidFormatError | InvalidLengthError