// Generated by Lisette bindgen
// Source: hash/crc64 (Go stdlib)
// Go: 1.25.10
// Lisette: 0.2.1

import "go:hash"

/// Checksum returns the CRC-64 checksum of data
/// using the polynomial represented by the [Table].
pub fn Checksum(data: Slice<byte>, tab: Ref<Table>) -> uint64

/// MakeTable returns a [Table] constructed from the specified polynomial.
/// The contents of this [Table] must not be modified.
pub fn MakeTable(poly: uint64) -> Ref<Table>

/// New creates a new hash.Hash64 computing the CRC-64 checksum using the
/// polynomial represented by the [Table]. Its Sum method will lay the
/// value out in big-endian byte order. The returned Hash64 also
/// implements [encoding.BinaryMarshaler] and [encoding.BinaryUnmarshaler] to
/// marshal and unmarshal the internal state of the hash.
pub fn New(tab: Ref<Table>) -> hash.Hash64

/// Update returns the result of adding the bytes in p to the crc.
pub fn Update(crc: uint64, tab: Ref<Table>, p: Slice<byte>) -> uint64

/// Table is a 256-word table representing the polynomial for efficient processing.
pub struct Table(Slice<uint64>)

/// Predefined polynomials.
pub const ECMA = 0xC96C5795D7870F42

/// Predefined polynomials.
pub const ISO = 0xD800000000000000

/// The size of a CRC-64 checksum in bytes.
pub const Size = 8
