import type { FUNCTION_TREE_HEIGHT } from '@aztec/constants'; import { Fr } from '@aztec/foundation/curves/bn254'; import { BufferReader } from '@aztec/foundation/serialize'; import type { MembershipWitness } from '@aztec/foundation/trees'; import type { AztecAsyncKVStore } from '@aztec/kv-store'; import { type ContractArtifact, type FunctionAbi, type FunctionArtifactWithContractName, FunctionCall, type FunctionDebugMetadata, FunctionSelector } from '@aztec/stdlib/abi'; import { AztecAddress } from '@aztec/stdlib/aztec-address'; import { type ContractClassIdPreimage, type ContractClassWithId, type ContractInstanceWithAddress } from '@aztec/stdlib/contract'; /** * All contract class data except the large packedBytecode. * The expensive data from the ContractClass is precomputed and stored in this format to avoid redundant hashing. * Since we have to store the artifacts anyway, the final ContractClass is reconstructed by combining this data * with the packedBytecode obtained from the former. That way we can have quick class lookups without wasted storage. */ export declare class SerializableContractClassData { readonly version: 1; readonly id: Fr; readonly artifactHash: Fr; readonly privateFunctionsRoot: Fr; readonly publicBytecodeCommitment: Fr; readonly privateFunctions: { selector: FunctionSelector; vkHash: Fr; }[]; constructor(data: ContractClassIdPreimage & { id: Fr; privateFunctions: { selector: FunctionSelector; vkHash: Fr; }[]; }); toBuffer(): Buffer; static fromBuffer(bufferOrReader: Buffer | BufferReader): SerializableContractClassData; } /** * ContractStore serves as a data manager and retriever for Aztec.nr contracts. * It provides methods to obtain contract addresses, function ABI, bytecode, and membership witnesses * from a given contract address and function selector. The class maintains a cache of ContractTree instances * to efficiently serve the requested data. It interacts with the ContractDatabase and AztecNode to fetch * the required information and facilitate cryptographic proof generation. */ export declare class ContractStore { #private; constructor(store: AztecAsyncKVStore); /** * Registers a new contract artifact and its corresponding class data. * IMPORTANT: This method does not verify that the provided artifact matches the class data or that the class id matches the artifact. * It is the caller's responsibility to ensure the consistency and correctness of the provided data. * This is done to avoid redundant, expensive contract class computations */ addContractArtifact(contract: ContractArtifact, contractClassWithIdAndPreimage?: ContractClassWithId & ContractClassIdPreimage): Promise; addContractInstance(contract: ContractInstanceWithAddress): Promise; getContractsAddresses(): Promise; /** Returns a contract instance for a given address. */ getContractInstance(contractAddress: AztecAddress): Promise; /** Returns the raw contract artifact for a given class id. */ getContractArtifact(contractClassId: Fr): Promise; /** Returns a contract class for a given class id. */ getContractClassWithPreimage(contractClassId: Fr): Promise<(ContractClassWithId & ContractClassIdPreimage) | undefined>; getContract(address: AztecAddress): Promise<(ContractInstanceWithAddress & ContractArtifact) | undefined>; /** * Retrieves the artifact of a specified function within a given contract. * * @param contractAddress - The AztecAddress representing the contract containing the function. * @param selector - The function selector. * @returns The corresponding function's artifact as an object. */ getFunctionArtifact(contractAddress: AztecAddress, selector: FunctionSelector): Promise; getFunctionArtifactWithDebugMetadata(contractAddress: AztecAddress, selector: FunctionSelector): Promise; getPublicFunctionArtifact(contractAddress: AztecAddress): Promise; getFunctionAbi(contractAddress: AztecAddress, selector: FunctionSelector): Promise; /** * Retrieves the debug metadata of a specified function within a given contract. * * @param contractAddress - The AztecAddress representing the contract containing the function. * @param selector - The function selector. * @returns The corresponding function's debug metadata, or undefined. */ getFunctionDebugMetadata(contractAddress: AztecAddress, selector: FunctionSelector): Promise; getPublicFunctionDebugMetadata(contractAddress: AztecAddress): Promise; /** * Retrieve the function membership witness for the given contract class and function selector. * * @param contractClassId - The id of the class. * @param selector - The function selector. * @returns A promise that resolves with the MembershipWitness instance for the specified contract's function. */ getFunctionMembershipWitness(contractClassId: Fr, selector: FunctionSelector): Promise | undefined>; getDebugContractName(contractAddress: AztecAddress): Promise; getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise; getFunctionCall(functionName: string, args: any[], to: AztecAddress): Promise; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3Rfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2NvbnRyYWN0X3N0b3JlL2NvbnRyYWN0X3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQWlDLE1BQU0sNkJBQTZCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxXQUFXLEVBRWhCLEtBQUssZ0NBQWdDLEVBQ3JDLFlBQVksRUFDWixLQUFLLHFCQUFxQixFQUMxQixnQkFBZ0IsRUFNakIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUNMLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUssMkJBQTJCLEVBR2pDLE1BQU0sd0JBQXdCLENBQUM7QUFNaEM7Ozs7O0dBS0c7QUFDSCxxQkFBYSw2QkFBNkI7SUFDeEMsU0FBZ0IsT0FBTyxJQUFXO0lBQ2xDLFNBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkIsU0FBZ0IsWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUNqQyxTQUFnQixvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFDekMsU0FBZ0Isd0JBQXdCLEVBQUUsRUFBRSxDQUFDO0lBQzdDLFNBQWdCLGdCQUFnQixFQUFFO1FBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDO1FBQUMsTUFBTSxFQUFFLEVBQUUs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