import { Fr } from '@aztec/foundation/curves/bn254'; import { GrumpkinScalar, Point } from '@aztec/foundation/curves/grumpkin'; import { EthAddress } from '@aztec/foundation/eth-address'; import { type Serializable, type Tuple } from '@aztec/foundation/serialize'; import type { MembershipWitness } from '@aztec/foundation/trees'; import { FunctionSelector } from '@aztec/stdlib/abi'; import type { PublicDataWrite } from '@aztec/stdlib/avm'; import { AztecAddress } from '@aztec/stdlib/aztec-address'; import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas'; import { ClaimedLengthArray, CountedLogHash, PrivateToPublicAccumulatedData, PrivateToPublicKernelCircuitPublicInputs, PrivateToRollupAccumulatedData, PrivateToRollupKernelCircuitPublicInputs, PublicCallRequest, PublicCallRequestArrayLengths, ScopedCountedLogHash, ScopedLogHash } from '@aztec/stdlib/kernel'; import { PrivateLog } from '@aztec/stdlib/logs'; import { CountedL2ToL1Message, ScopedCountedL2ToL1Message, ScopedL2ToL1Message } from '@aztec/stdlib/messaging'; import { AppendOnlyTreeSnapshot, type NullifierLeafPreimage, type PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees'; import { BlockHeader, GlobalVariables, PartialStateReference, PrivateTxConstantData, ProtocolContracts, StateReference, TxConstantData, TxContext } from '@aztec/stdlib/tx'; import type { UInt64 } from '@aztec/stdlib/types'; import type { VerificationKeyAsFields, VkData } from '@aztec/stdlib/vks'; import type { AppendOnlyTreeSnapshot as AppendOnlyTreeSnapshotNoir, BlockHeader as BlockHeaderNoir, ClaimedLengthArray as ClaimedLengthArrayNoir, Counted, FixedLengthArray, FunctionSelector as FunctionSelectorNoir, GasFees as GasFeesNoir, Gas as GasNoir, GasSettings as GasSettingsNoir, GlobalVariables as GlobalVariablesNoir, EmbeddedCurveScalar as GrumpkinScalarNoir, L2ToL1Message as L2ToL1MessageNoir, LogHash as LogHashNoir, MembershipWitness as MembershipWitnessNoir, AztecAddress as NoirAztecAddress, EthAddress as NoirEthAddress, Field as NoirField, EmbeddedCurvePoint as NoirPoint, NullifierLeafPreimage as NullifierLeafPreimageNoir, PartialStateReference as PartialStateReferenceNoir, Log as PrivateLogNoir, PrivateToPublicAccumulatedData as PrivateToPublicAccumulatedDataNoir, PrivateToPublicKernelCircuitPublicInputs as PrivateToPublicKernelCircuitPublicInputsNoir, PrivateToRollupAccumulatedData as PrivateToRollupAccumulatedDataNoir, PrivateToRollupKernelCircuitPublicInputs as PrivateToRollupKernelCircuitPublicInputsNoir, PrivateTxConstantData as PrivateTxConstantDataNoir, ProtocolContracts as ProtocolContractsNoir, PublicCallRequestArrayLengths as PublicCallRequestArrayLengthsNoir, PublicCallRequest as PublicCallRequestNoir, PublicDataTreeLeafPreimage as PublicDataTreeLeafPreimageNoir, PublicDataWrite as PublicDataWriteNoir, Scoped, StateReference as StateReferenceNoir, TxConstantData as TxConstantDataNoir, TxContext as TxContextNoir, u64 as U64Noir, VerificationKey as VerificationKeyNoir, VkData as VkDataNoir } from '../types/index.js'; /** * Maps a field to a noir field. * @param field - The field. * @returns The noir field. */ export declare function mapFieldToNoir(field: Fr): NoirField; /** * Maps a noir field to a fr. * @param field - The noir field. * @returns The fr. */ export declare function mapFieldFromNoir(field: NoirField): Fr; /** * Maps a bigint to a noir field. * @param bigInt - The bigint. * @returns The noir field. */ export declare function mapBigIntToNoir(bigInt: bigint): NoirField; /** * Maps a noir field to a bigint. * @param field - The noir field. * @returns The bigint. */ export declare function mapBigIntFromNoir(field: NoirField): bigint; /** Maps a field to a noir wrapped field type (ie any type implemented as struct with an inner Field). */ export declare function mapWrappedFieldToNoir(field: Fr): { inner: NoirField; }; /** Maps a noir wrapped field type (ie any type implemented as struct with an inner Field) to a typescript field. */ export declare function mapWrappedFieldFromNoir(wrappedField: { inner: NoirField; }): Fr; export declare function mapU64ToNoir(u64: UInt64): U64Noir; export declare function mapU64FromNoir(u64: U64Noir): UInt64; /** * Maps a number coming from noir. * @param number - The field representing the number. * @returns The number */ export declare function mapNumberFromNoir(number: NoirField): number; export declare function mapNumberToNoir(number: number): NoirField; /** * Maps a point to a noir point. * @param point - The point. * @returns The noir point. */ export declare function mapPointToNoir(point: Point): NoirPoint; /** * Maps a noir point to a point. * @param point - The noir point. * @returns The point. */ export declare function mapPointFromNoir(point: NoirPoint): Point; /** * Maps a GrumpkinScalar to a noir GrumpkinScalar. * @param privateKey - The GrumpkinScalar. * @returns The noir GrumpkinScalar. */ export declare function mapGrumpkinScalarToNoir(privateKey: GrumpkinScalar): GrumpkinScalarNoir; /** * Maps a noir GrumpkinScalar to a GrumpkinScalar. * @param privateKey - The noir GrumpkinScalar. * @returns The GrumpkinScalar. */ export declare function mapGrumpkinScalarFromNoir(privateKey: GrumpkinScalarNoir): GrumpkinScalar; /** * Maps an aztec address to a noir aztec address. * @param address - The address. * @returns The noir aztec address. */ export declare function mapAztecAddressToNoir(address: AztecAddress): NoirAztecAddress; /** * Maps a noir aztec address to an aztec address. * @param address - The noir aztec address. * @returns The aztec address. */ export declare function mapAztecAddressFromNoir(address: NoirAztecAddress): AztecAddress; /** * Maps an eth address to a noir eth address. * @param address - The address. * @returns The noir eth address. */ export declare function mapEthAddressToNoir(address: EthAddress): NoirEthAddress; /** * Maps a noir eth address to an eth address. * @param address - The noir eth address. * @returns The eth address. */ export declare function mapEthAddressFromNoir(address: NoirEthAddress): EthAddress; export declare function mapGasFromNoir(gasUsed: GasNoir): Gas; export declare function mapGasToNoir(gasUsed: Gas): GasNoir; export declare function mapGasSettingsFromNoir(gasSettings: GasSettingsNoir): GasSettings; export declare function mapGasSettingsToNoir(gasSettings: GasSettings): GasSettingsNoir; export declare function mapGasFeesToNoir(gasFees: GasFees): GasFeesNoir; export declare function mapGasFeesFromNoir(gasFees: GasFeesNoir): GasFees; export declare function mapPrivateLogToNoir(log: PrivateLog): PrivateLogNoir; export declare function mapPrivateLogFromNoir(log: PrivateLogNoir): PrivateLog; /** * Maps an array from noir types to a tuple of parsed types. * @param noirArray - The noir array. * @param length - The length of the tuple. * @param mapper - The mapper function applied to each element. * @returns The tuple. */ export declare function mapTupleFromNoir(noirArray: T[], length: N, mapper: (item: T) => M): Tuple; export declare function mapTupleToNoir(tuple: Tuple, mapper: (item: T) => M): FixedLengthArray; export declare function mapFieldArrayToNoir(array: Fr[], length?: N): FixedLengthArray; export declare function mapClaimedLengthArrayFromNoir(claimedLengthArray: ClaimedLengthArrayNoir, mapper: (item: S) => T): ClaimedLengthArray; export declare function mapClaimedLengthArrayToNoir(claimedLengthArray: ClaimedLengthArray, mapper: (item: T) => S): ClaimedLengthArrayNoir; /** * Maps a AOT snapshot to noir. * @param snapshot - The stdlib AOT snapshot. * @returns The noir AOT snapshot. */ export declare function mapAppendOnlyTreeSnapshotFromNoir(snapshot: AppendOnlyTreeSnapshotNoir): AppendOnlyTreeSnapshot; /** * Maps a AOT snapshot from noir to the stdlib type. * @param snapshot - The noir AOT snapshot. * @returns The stdlib AOT snapshot. */ export declare function mapAppendOnlyTreeSnapshotToNoir(snapshot: AppendOnlyTreeSnapshot): AppendOnlyTreeSnapshotNoir; /** * Maps a block header to Noir * @param header - The block header. * @returns BlockHeader. */ export declare function mapBlockHeaderToNoir(header: BlockHeader): BlockHeaderNoir; /** * Maps a block header from Noir. * @param header - The block header. * @returns BlockHeader. */ export declare function mapBlockHeaderFromNoir(header: BlockHeaderNoir): BlockHeader; export declare function mapCountedL2ToL1MessageToNoir(message: CountedL2ToL1Message): Counted; export declare function mapScopedL2ToL1MessageToNoir(message: ScopedL2ToL1Message): Scoped; export declare function mapScopedL2ToL1MessageFromNoir(message: Scoped): ScopedL2ToL1Message; export declare function mapScopedCountedL2ToL1MessageToNoir(message: ScopedCountedL2ToL1Message): Scoped>; export declare function mapScopedCountedL2ToL1MessageFromNoir(message: Scoped>): ScopedCountedL2ToL1Message; /** * Maps a function selector to a noir function selector. * @param functionSelector - The function selector. * @returns The noir function selector. */ export declare function mapFunctionSelectorToNoir(functionSelector: FunctionSelector): FunctionSelectorNoir; /** * Maps a noir function selector to a function selector. * @param functionSelector - The noir function selector. * @returns The function selector. */ export declare function mapFunctionSelectorFromNoir(functionSelector: FunctionSelectorNoir): FunctionSelector; export declare function mapPublicCallRequestFromNoir(request: PublicCallRequestNoir): PublicCallRequest; export declare function mapPublicCallRequestToNoir(request: PublicCallRequest): PublicCallRequestNoir; export declare function mapPublicCallRequestArrayLengthsToNoir(lengths: PublicCallRequestArrayLengths): PublicCallRequestArrayLengthsNoir; export declare function mapVerificationKeyToNoir(key: VerificationKeyAsFields, length: N): VerificationKeyNoir; export declare function mapVkDataToNoir(vkData: VkData, length: N): VkDataNoir; /** * Maps global variables to the noir type. * @param globalVariables - The global variables. * @returns The noir global variables. */ export declare function mapGlobalVariablesToNoir(globalVariables: GlobalVariables): GlobalVariablesNoir; /** * Maps global variables from the noir type. * @param globalVariables - The noir global variables. * @returns The global variables. */ export declare function mapGlobalVariablesFromNoir(globalVariables: GlobalVariablesNoir): GlobalVariables; /** * Maps state reference to Noir. * @param stateReference - The state reference. * @returns Noir representation of state reference. */ export declare function mapStateReferenceToNoir(stateReference: StateReference): StateReferenceNoir; /** * Maps state reference from Noir. * @param stateReference - The state reference. * @returns State reference */ export declare function mapStateReferenceFromNoir(stateReference: StateReferenceNoir): StateReference; /** * Maps a partial state reference to a noir partial state reference. * @param partialStateReference - The partial state reference. * @returns The noir partial state reference. */ export declare function mapPartialStateReferenceToNoir(partialStateReference: PartialStateReference): PartialStateReferenceNoir; /** * Maps partial state reference from Noir. * @param partialStateReference - The state reference. * @returns Partial state reference */ export declare function mapPartialStateReferenceFromNoir(partialStateReference: PartialStateReferenceNoir): PartialStateReference; /** * Maps a nullifier leaf preimage to noir * @param nullifierLeafPreimage - The nullifier leaf preimage. * @returns The noir nullifier leaf preimage. */ export declare function mapNullifierLeafPreimageToNoir(nullifierLeafPreimage: NullifierLeafPreimage): NullifierLeafPreimageNoir; /** * Maps a leaf preimage of the public data tree to noir. */ export declare function mapPublicDataTreePreimageToNoir(preimage: PublicDataTreeLeafPreimage): PublicDataTreeLeafPreimageNoir; export declare function mapMembershipWitnessToNoir(witness: MembershipWitness): MembershipWitnessNoir; export declare function mapCountedLogHashToNoir(logHash: CountedLogHash): Counted; export declare function mapCountedLogHashFromNoir(countedLogHash: Counted): CountedLogHash; /** * Maps a ts ScopedLogHash to a noir ScopedLogHash. * @param logHash - The ts LogHash. * @returns The noir log hash. */ export declare function mapScopedLogHashToNoir(scopedLogHash: ScopedLogHash): Scoped; export declare function mapScopedCountedLogHashToNoir(logHash: ScopedCountedLogHash): Scoped>; export declare function mapScopedCountedLogHashFromNoir(scopedCountedLogHash: Scoped>): ScopedCountedLogHash; /** * Maps a noir ScopedLogHash to a ts ScopedLogHash. * @param logHash - The noir LogHash. * @returns The TS log hash. */ export declare function mapScopedLogHashFromNoir(scopedLogHash: Scoped): ScopedLogHash; export declare function mapPublicDataWriteToNoir(write: PublicDataWrite): PublicDataWriteNoir; /** * Maps private to rollup accumulated data to noir to the parsed type. * @param privateToRollupAccumulatedData - The ts private to rollup accumulated data. * @returns The noir private to rollup accumulated data. */ export declare function mapPrivateToRollupAccumulatedDataToNoir(privateToRollupAccumulatedData: PrivateToRollupAccumulatedData): PrivateToRollupAccumulatedDataNoir; /** * Maps private to rollup accumulated data from noir to the parsed type. * @param PrivateToRollupAccumulatedData - The noir private to rollup accumulated data. * @returns The parsed private to rollup accumulated data. */ export declare function mapPrivateToRollupAccumulatedDataFromNoir(privateToRollupAccumulatedData: PrivateToRollupAccumulatedDataNoir): PrivateToRollupAccumulatedData; export declare function mapPrivateToPublicAccumulatedDataFromNoir(data: PrivateToPublicAccumulatedDataNoir): PrivateToPublicAccumulatedData; /** * Maps a tx context to a noir tx context. * @param txContext - The tx context. * @returns The noir tx context. */ export declare function mapTxContextToNoir(txContext: TxContext): TxContextNoir; /** * Maps a noir tx context to a tx context. * @param txContext - The noir tx context. * @returns The tx context. */ export declare function mapTxContextFromNoir(txContext: TxContextNoir): TxContext; export declare function mapProtocolContractsToNoir(protocolContracts: ProtocolContracts): ProtocolContractsNoir; export declare function mapProtocolContractsFromNoir(protocolContracts: ProtocolContractsNoir): ProtocolContracts; export declare function mapPrivateTxConstantDataToNoir(data: PrivateTxConstantData): PrivateTxConstantDataNoir; export declare function mapPrivateTxConstantDataFromNoir(data: PrivateTxConstantDataNoir): PrivateTxConstantData; export declare function mapTxConstantDataFromNoir(data: TxConstantDataNoir): TxConstantData; export declare function mapTxConstantDataToNoir(data: TxConstantData): TxConstantDataNoir; export declare function mapPrivateToRollupKernelCircuitPublicInputsToNoir(inputs: PrivateToRollupKernelCircuitPublicInputs): PrivateToRollupKernelCircuitPublicInputsNoir; export declare function mapPrivateToPublicKernelCircuitPublicInputsToNoir(inputs: PrivateToPublicKernelCircuitPublicInputs): PrivateToPublicKernelCircuitPublicInputsNoir; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udmVyc2lvbi9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBRSxLQUFLLEtBQUssRUFBMEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRyxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZCw4QkFBOEIsRUFDOUIsd0NBQXdDLEVBQ3hDLDhCQUE4QixFQUM5Qix3Q0FBd0MsRUFDeEMsaUJBQWlCLEVBQ2pCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsYUFBYSxFQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFDTCxvQkFBb0IsRUFFcEIsMEJBQTBCLEVBQzFCLG1CQUFtQixFQUNwQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsS0FBSyxxQkFBcUIsRUFDMUIsS0FBSywwQkFBMEIs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