import { LatticeAbi } from "../../utils/abi.js";
import { BuiltinContract, type writeTraceabilityRequest } from "./types.js";
interface Traceability {
    /**
     * Create a business
     * @returns The address of the business
     */
    createBusiness(): string;
    /**
     * Add a protocol to the business
     * @param protocolSuite The protocol suite
     * @param bytes The bytes of the protocol
     * @returns The address of the business
     */
    createProtocol(protocolSuite: number, bytes: Buffer): Promise<string>;
    /**
     * Read a protocol
     * @param protocolUri The protocol uri
     * @returns The bytes of the protocol
     */
    readProtocol(protocolUri: number): Promise<string>;
    /**
     * Update a protocol
     * @param protocolUri The protocol uri
     * @param bytes The bytes of the protocol
     * @returns The address of the business
     */
    updateProtocol(protocolUri: number, bytes: Buffer): Promise<string>;
    /**
     * Write a traceability
     * @param request The request
     * @returns The address of the business
     */
    writeTraceability(request: writeTraceabilityRequest): Promise<string>;
    writeTraceabilityBatch(requests: writeTraceabilityRequest[]): Promise<string>;
    /**
     * Read a traceability
     * @param dataId The data id
     * @param businessContractAddress The business contract address
     * @returns The traceability
     */
    readTraceability(dataId: string, businessContractAddress: string): Promise<string>;
}
declare class TraceabilityContract implements Traceability {
    private readonly iface;
    private readonly builtinContract;
    /**
     * The address for creating business
     */
    static readonly ADDRESS_FOR_CREATE_BUSINESS = "zltc_QLbz7JHiBTspS9WTWJUrbNsB5wbENMweQ";
    constructor();
    getIface(): LatticeAbi;
    getBuiltinContract(): BuiltinContract;
    createBusiness(): string;
    createProtocol(protocolSuite: number, bytes: Buffer): Promise<string>;
    readProtocol(protocolUri: number): Promise<string>;
    updateProtocol(protocolUri: number, bytes: Buffer): Promise<string>;
    writeTraceability(request: writeTraceabilityRequest): Promise<string>;
    writeTraceabilityBatch(requests: writeTraceabilityRequest[]): Promise<string>;
    readTraceability(dataId: string, businessContractAddress: string): Promise<string>;
}
export { TraceabilityContract };
//# sourceMappingURL=traceability.d.ts.map