import { AuthorAddress, Base32String, ShareAddress,} from "../util/doc-types.ts";import { ValidationError } from "../util/errors.ts";import { UpdatableHash } from "./updatable_hash.ts";
export interface KeypairBytes { pubkey: Uint8Array; secret: Uint8Array;}
export interface AuthorKeypair { address: AuthorAddress; secret: string;}
export type ShareKeypair = { shareAddress: ShareAddress; secret: string;};
export interface ICrypto { sha256base32( input: string | Uint8Array, ): Promise<Base32String>; updatableSha256(): UpdatableHash<any>; generateAuthorKeypair( name: string, ): Promise<AuthorKeypair | ValidationError>; generateShareKeypair( name: string, ): Promise<ShareKeypair | ValidationError>; sign( keypair: AuthorKeypair | ShareKeypair, msg: string | Uint8Array, ): Promise<Base32String | ValidationError>; verify( address: AuthorAddress | ShareAddress, sig: Base32String, msg: string | Uint8Array, ): Promise<boolean>; checkKeypairIsValid( keypair: AuthorKeypair | ShareKeypair, ): Promise<true | ValidationError>;}
export interface ICryptoDriver { sha256( input: string | Uint8Array, ): Promise<Uint8Array>; updatableSha256(): UpdatableHash<any>; generateKeypairBytes(): Promise<KeypairBytes>; sign( keypairBytes: KeypairBytes, msg: string | Uint8Array, ): Promise<Uint8Array>; verify( publicKey: Uint8Array, sig: Uint8Array, msg: string | Uint8Array, ): Promise<boolean>;}