import type { EncryptionPrivateKey } from '../../domain/keypair.js' import type { Result } from '../../framework/types/result.js' import { BaseError } from '../../framework/error/mod.js' import { makeError, makeSuccess } from '../../framework/types/result.js' import { decrypt as decryptContents } from './internal/decrypt.js' export class DecryptError extends BaseError { public readonly _tag = 'DecryptError' constructor(public readonly cause: unknown) { super(`failed decrypt contents: ${cause}`) } } export interface DecryptDto { privateJwk: EncryptionPrivateKey encryptedContents: string } export function buildDecrypt() { return async function encrypt( dto: DecryptDto, ): Promise> { try { const decrypted = await decryptContents( dto.privateJwk, dto.encryptedContents, ) return makeSuccess(decrypted) } catch (cause: unknown) { return makeError(new DecryptError(cause)) } } }