import { CantonError } from "../../core/errors/canton-error.js"; import { DamlLfPackageLoader } from "../../daml-lf/daml-lf-package-loader.js"; import { type GetPackageResponse, type ListPackagesResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/package_service.js"; export interface GrpcPackageService { listPackagesAsync(request: {}): Promise; getPackageAsync(request: { packageId: string; }): Promise; } export interface GrpcPackageChoiceMetadata { readonly choice: string; readonly consuming: boolean; readonly aliases: readonly string[]; readonly choiceFqn: string; } export interface GrpcPackageTemplateMetadata { readonly moduleName: string; readonly entityName: string; readonly payloadType: "template" | "interface"; readonly aliases: readonly string[]; readonly templateFqn: string; readonly choices: readonly GrpcPackageChoiceMetadata[]; } export interface GrpcPackageMetadata { readonly id: string; readonly name: string; readonly version: string; readonly templates: readonly GrpcPackageTemplateMetadata[]; } /** An explicit package-service/LF decoding failure; callers never receive partial package rows. */ export declare class GrpcPackageRelationError extends CantonError { readonly packageId: string; constructor(packageId: string, message: string); } /** Loads LF package metadata. Each call owns its promise map, so no package data enters QueryCacheStore. */ export declare class GrpcPackageRelationReader { private readonly packageService; private readonly packageLoader; /** Package IDs are content-addressed SHA-256 digests (verified below), so a resolved entry is cached forever. */ private readonly resolved; constructor(packageService: GrpcPackageService, packageLoader?: DamlLfPackageLoader); readAllAsync(): Promise; readPackagesAsync(packageIds: readonly string[]): Promise; private readPackageAsync; }