diff --git a/barretenberg/cpp/src/barretenberg/proof_system/execution_trace/execution_trace.cpp b/barretenberg/cpp/src/barretenberg/proof_system/execution_trace/execution_trace.cpp index a32119bf478..52f713286c1 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/execution_trace/execution_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/execution_trace/execution_trace.cpp @@ -164,4 +164,4 @@ template class ExecutionTrace_; template class ExecutionTrace_; template class ExecutionTrace_; -} // namespace bb \ No newline at end of file +} // namespace bb diff --git a/barretenberg/cpp/src/barretenberg/proof_system/execution_trace/execution_trace.hpp b/barretenberg/cpp/src/barretenberg/proof_system/execution_trace/execution_trace.hpp index 55f45e5158b..f4d7cf5a655 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/execution_trace/execution_trace.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/execution_trace/execution_trace.hpp @@ -103,4 +103,4 @@ template class ExecutionTrace_ { requires IsGoblinFlavor; }; -} // namespace bb \ No newline at end of file +} // namespace bb diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp index b111521e6bf..3cf94c520b5 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/poseidon2_permutation.cpp @@ -297,4 +297,4 @@ void Poseidon2Permutation::matrix_multiplication_external( template class Poseidon2Permutation; template class Poseidon2Permutation; -} // namespace bb::stdlib \ No newline at end of file +} // namespace bb::stdlib diff --git a/docs/docs/developers/contracts/writing_contracts/events/emit_event.md b/docs/docs/developers/contracts/writing_contracts/events/emit_event.md index 0c4204b3d67..ff7354e6a6f 100644 --- a/docs/docs/developers/contracts/writing_contracts/events/emit_event.md +++ b/docs/docs/developers/contracts/writing_contracts/events/emit_event.md @@ -96,15 +96,9 @@ They can be emitted by both public and private functions. - Unencrypted events are currently **NOT** linked to the contract emitting them, so it is practically a [`debug_log`](../oracles/main.md#a-few-useful-inbuilt-oracles). ::: -### Import library - -To emit unencrypted logs first import the `emit_unencrypted_log` utility function inside your contract: - -#include_code unencrypted_import /noir-projects/noir-contracts/contracts/test_contract/src/main.nr rust - ### Call emit_unencrypted_log -After importing, you can call the function: +To emit unencrypted log you can call: #include_code emit_unencrypted /noir-projects/noir-contracts/contracts/test_contract/src/main.nr rust diff --git a/docs/docs/developers/tutorials/writing_private_voting_contract.md b/docs/docs/developers/tutorials/writing_private_voting_contract.md index cf69867fe26..fc0a48e961a 100644 --- a/docs/docs/developers/tutorials/writing_private_voting_contract.md +++ b/docs/docs/developers/tutorials/writing_private_voting_contract.md @@ -64,10 +64,6 @@ contract Voting { This defines a contract called `Voter`. Everything will sit inside this block. -Inside this, paste these imports: - -#include_code imports noir-projects/noir-contracts/contracts/easy_private_voting_contract/src/main.nr rust - We are using various utils within the Aztec library: - `context` - exposes things such as the contract address, msg_sender, etc diff --git a/noir-projects/aztec-nr/aztec/src/lib.nr b/noir-projects/aztec-nr/aztec/src/lib.nr index 2d6eeb862c9..82e1343e74a 100644 --- a/noir-projects/aztec-nr/aztec/src/lib.nr +++ b/noir-projects/aztec-nr/aztec/src/lib.nr @@ -10,5 +10,6 @@ mod log; mod messaging; mod note; mod oracle; +mod prelude; mod state_vars; use dep::protocol_types; diff --git a/noir-projects/aztec-nr/aztec/src/prelude.nr b/noir-projects/aztec-nr/aztec/src/prelude.nr new file mode 100644 index 00000000000..9d65d3f1dc6 --- /dev/null +++ b/noir-projects/aztec-nr/aztec/src/prelude.nr @@ -0,0 +1,14 @@ +use dep::protocol_types::{address::{AztecAddress, EthAddress}, abis::function_selector::FunctionSelector}; +use crate::{ + state_vars::{ + map::Map, private_immutable::PrivateImmutable, private_mutable::PrivateMutable, + public_immutable::PublicImmutable, public_mutable::PublicMutable, private_set::PrivateSet, + shared_immutable::SharedImmutable +}, + log::{emit_unencrypted_log, emit_encrypted_log}, context::PrivateContext, + note::{ + note_header::NoteHeader, note_interface::NoteInterface, note_getter_options::NoteGetterOptions, + note_viewer_options::NoteViewerOptions, + utils::compute_note_hash_and_nullifier as utils_compute_note_hash_and_nullifier +} +}; diff --git a/noir-projects/noir-contracts/contracts/app_subscription_contract/src/dapp_payload.nr b/noir-projects/noir-contracts/contracts/app_subscription_contract/src/dapp_payload.nr index 941f86472f0..265b5f62e83 100644 --- a/noir-projects/noir-contracts/contracts/app_subscription_contract/src/dapp_payload.nr +++ b/noir-projects/noir-contracts/contracts/app_subscription_contract/src/dapp_payload.nr @@ -1,8 +1,4 @@ -use dep::aztec::context::PrivateContext; -use dep::aztec::protocol_types::{ - constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}, - address::AztecAddress -}; +use dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}}; use dep::authwit::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES}; diff --git a/noir-projects/noir-contracts/contracts/app_subscription_contract/src/main.nr b/noir-projects/noir-contracts/contracts/app_subscription_contract/src/main.nr index 740dab33bc5..8ff5dfabec5 100644 --- a/noir-projects/noir-contracts/contracts/app_subscription_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/app_subscription_contract/src/main.nr @@ -3,16 +3,9 @@ mod dapp_payload; contract AppSubscription { use dep::std; - use dep::std::option::Option; use crate::dapp_payload::DAppPayload; - use dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector}; - - use dep::aztec::{ - context::{PrivateContext, Context}, note::{note_header::NoteHeader, utils as note_utils}, - oracle::get_public_key::get_public_key, - state_vars::{Map, PrivateMutable, PublicMutable, SharedImmutable} - }; + use dep::aztec::{context::Context, note::utils as note_utils, oracle::get_public_key::get_public_key}; use dep::authwit::{account::AccountActions, auth_witness::get_auth_witness, auth::assert_current_call_valid_authwit}; use crate::subscription_note::{SubscriptionNote, SUBSCRIPTION_NOTE_LEN}; diff --git a/noir-projects/noir-contracts/contracts/app_subscription_contract/src/subscription_note.nr b/noir-projects/noir-contracts/contracts/app_subscription_contract/src/subscription_note.nr index 8bb87a798ac..6af6e80491e 100644 --- a/noir-projects/noir-contracts/contracts/app_subscription_contract/src/subscription_note.nr +++ b/noir-projects/noir-contracts/contracts/app_subscription_contract/src/subscription_note.nr @@ -1,8 +1,6 @@ use dep::aztec::{ - note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption}, - hash::pedersen_hash, - oracle::{nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key}, - log::emit_encrypted_log, context::PrivateContext, protocol_types::{address::AztecAddress} + note::utils::compute_note_hash_for_consumption, hash::pedersen_hash, + oracle::{nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key} }; global SUBSCRIPTION_NOTE_LEN: Field = 3; diff --git a/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr index 42f9826b7ed..91158ad0fab 100644 --- a/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr @@ -1,7 +1,4 @@ contract AvmTest { - // Libs - use dep::aztec::protocol_types::address::{AztecAddress, EthAddress}; - // avm lib use dep::aztec::avm::hash::{keccak256, poseidon, sha256}; diff --git a/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr b/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr index 4044cdd6920..f7678be5b50 100644 --- a/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr @@ -7,12 +7,7 @@ contract Benchmarking { use dep::value_note::{utils::{increment, decrement}, value_note::ValueNote}; - use dep::aztec::{ - protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress}, - context::{Context}, - note::{utils as note_utils, note_getter_options::NoteGetterOptions, note_header::NoteHeader}, - log::emit_unencrypted_log, state_vars::{Map, PublicMutable, PrivateSet} - }; + use dep::aztec::{context::Context, note::utils as note_utils}; struct Storage { notes: Map>, diff --git a/noir-projects/noir-contracts/contracts/card_game_contract/src/cards.nr b/noir-projects/noir-contracts/contracts/card_game_contract/src/cards.nr index 59208aa986e..5fb4911f5eb 100644 --- a/noir-projects/noir-contracts/contracts/card_game_contract/src/cards.nr +++ b/noir-projects/noir-contracts/contracts/card_game_contract/src/cards.nr @@ -1,11 +1,6 @@ use dep::aztec::{ - protocol_types::{address::AztecAddress, constants::{MAX_NOTES_PER_PAGE, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL}}, - context::{PrivateContext, PublicContext, Context}, - note::{ - note_getter_options::NoteGetterOptions, note_viewer_options::NoteViewerOptions, - note_getter::view_notes -}, - state_vars::PrivateSet + protocol_types::constants::{MAX_NOTES_PER_PAGE, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL}, + context::Context, note::note_getter::view_notes }; use dep::std; use dep::std::{option::Option}; diff --git a/noir-projects/noir-contracts/contracts/card_game_contract/src/game.nr b/noir-projects/noir-contracts/contracts/card_game_contract/src/game.nr index 1a1415284db..5fd3b4ea37b 100644 --- a/noir-projects/noir-contracts/contracts/card_game_contract/src/game.nr +++ b/noir-projects/noir-contracts/contracts/card_game_contract/src/game.nr @@ -1,4 +1,4 @@ -use dep::aztec::protocol_types::{address::AztecAddress, traits::{Serialize, Deserialize}}; +use dep::aztec::protocol_types::traits::{Serialize, Deserialize}; use crate::cards::Card; global NUMBER_OF_PLAYERS = 2; diff --git a/noir-projects/noir-contracts/contracts/card_game_contract/src/main.nr b/noir-projects/noir-contracts/contracts/card_game_contract/src/main.nr index 930215d7802..83e548adc6f 100644 --- a/noir-projects/noir-contracts/contracts/card_game_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/card_game_contract/src/main.nr @@ -2,13 +2,13 @@ mod cards; mod game; contract CardGame { - use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, constants::MAX_NOTES_PER_PAGE}; - use dep::aztec::{context::Context, hash::pedersen_hash, state_vars::{Map, PublicMutable}}; + use dep::aztec::protocol_types::constants::MAX_NOTES_PER_PAGE; + use dep::aztec::{context::Context, hash::pedersen_hash}; use dep::std::option::Option; use dep::value_note::{balance_utils, value_note::{ValueNote, VALUE_NOTE_LEN}}; - use dep::aztec::note::{note_header::NoteHeader, utils as note_utils}; + use dep::aztec::note::utils as note_utils; use crate::cards::{PACK_CARDS, Deck, Card, get_pack_cards, compute_deck_strength}; use crate::game::{NUMBER_OF_PLAYERS, NUMBER_OF_CARDS_DECK, PLAYABLE_CARDS, PlayerEntry, Game, GAME_SERIALIZED_LEN}; diff --git a/noir-projects/noir-contracts/contracts/child_contract/src/main.nr b/noir-projects/noir-contracts/contracts/child_contract/src/main.nr index 315c4c7ec34..d161c830a82 100644 --- a/noir-projects/noir-contracts/contracts/child_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/child_contract/src/main.nr @@ -2,12 +2,7 @@ contract Child { use dep::std::option::Option; - use dep::aztec::{ - context::{PrivateContext, PublicContext, Context}, log::emit_unencrypted_log, - state_vars::{PublicMutable, PrivateSet}, - protocol_types::{abis::{function_selector::FunctionSelector, call_context::CallContext}, address::AztecAddress}, - note::{note_getter_options::NoteGetterOptions, note_header::NoteHeader, utils as note_utils} - }; + use dep::aztec::protocol_types::abis::call_context::CallContext; use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN}; struct Storage { diff --git a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/private_function_broadcasted.nr b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/private_function_broadcasted.nr index 99092cf70e3..0a102e548cf 100644 --- a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/private_function_broadcasted.nr +++ b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/private_function_broadcasted.nr @@ -1,6 +1,6 @@ use dep::aztec::protocol_types; use dep::aztec::protocol_types::{ - contract_class_id::ContractClassId, abis::function_selector::FunctionSelector, + contract_class_id::ContractClassId, constants::{ FUNCTION_TREE_HEIGHT, ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS, diff --git a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/unconstrained_function_broadcasted.nr b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/unconstrained_function_broadcasted.nr index aeaeaeaf627..3338fcd1d0f 100644 --- a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/unconstrained_function_broadcasted.nr +++ b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/unconstrained_function_broadcasted.nr @@ -1,6 +1,6 @@ use dep::aztec::protocol_types; use dep::aztec::protocol_types::{ - contract_class_id::ContractClassId, abis::function_selector::FunctionSelector, + contract_class_id::ContractClassId, constants::{ ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS, REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE diff --git a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr index 760b4e5ff64..f9cbb2d9bd1 100644 --- a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr @@ -2,9 +2,8 @@ mod events; mod capsule; contract ContractClassRegisterer { - use dep::std::option::Option; use dep::aztec::protocol_types::{ - address::{AztecAddress, EthAddress}, contract_class_id::ContractClassId, + contract_class_id::ContractClassId, constants::{ ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, FUNCTION_TREE_HEIGHT, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE @@ -12,7 +11,7 @@ contract ContractClassRegisterer { traits::{Serialize} }; - use dep::aztec::log::{emit_unencrypted_log, emit_unencrypted_log_from_private}; + use dep::aztec::log::emit_unencrypted_log_from_private; use crate::events::{ class_registered::ContractClassRegistered, diff --git a/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/events/instance_deployed.nr b/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/events/instance_deployed.nr index 1a01b992246..98f53428545 100644 --- a/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/events/instance_deployed.nr +++ b/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/events/instance_deployed.nr @@ -1,6 +1,5 @@ use dep::aztec::protocol_types::{ - contract_class_id::ContractClassId, - address::{AztecAddress, EthAddress, PublicKeysHash, PartialAddress}, + contract_class_id::ContractClassId, address::{PublicKeysHash, PartialAddress}, constants::{DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE}, traits::{Serialize} }; diff --git a/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/interface/ContractInstanceDeployer.nr b/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/interface/ContractInstanceDeployer.nr index 810cdccc248..6a2e26a7cae 100644 --- a/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/interface/ContractInstanceDeployer.nr +++ b/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/interface/ContractInstanceDeployer.nr @@ -1,8 +1,6 @@ /* Autogenerated file, do not edit! */ -use dep::std; -use dep::aztec::context::{PrivateContext, PublicContext}; -use dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector, constants::RETURN_VALUES_LENGTH}; +use dep::aztec::protocol_types::constants::RETURN_VALUES_LENGTH; struct ContractClassIdDeployStruct { inner: Field, diff --git a/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr b/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr index aceccc3ab11..c32f9c70d11 100644 --- a/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr @@ -1,14 +1,12 @@ mod events; contract ContractInstanceDeployer { - use dep::std::option::Option; use dep::aztec::protocol_types::{ - address::{AztecAddress, EthAddress, PublicKeysHash, PartialAddress}, - contract_class_id::ContractClassId, + address::{PublicKeysHash, PartialAddress}, contract_class_id::ContractClassId, constants::{DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE}, traits::{Serialize} }; - use dep::aztec::log::{emit_unencrypted_log, emit_unencrypted_log_from_private}; + use dep::aztec::log::emit_unencrypted_log_from_private; use crate::events::{instance_deployed::ContractInstanceDeployed}; diff --git a/noir-projects/noir-contracts/contracts/counter_contract/src/main.nr b/noir-projects/noir-contracts/contracts/counter_contract/src/main.nr index 7782c5c3bf8..00f154ff74c 100644 --- a/noir-projects/noir-contracts/contracts/counter_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/counter_contract/src/main.nr @@ -1,11 +1,7 @@ contract Counter { // docs:start:imports - use dep::aztec::protocol_types::address::AztecAddress; - use dep::aztec::{ - context::{PrivateContext, Context}, note::{note_header::NoteHeader, utils as note_utils}, - state_vars::Map - }; - use dep::value_note::{balance_utils, value_note::{ValueNote, VALUE_NOTE_LEN}}; + use dep::value_note::balance_utils; + use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN}; use dep::easy_private_state::EasyPrivateUint; // docs:end:imports diff --git a/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr b/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr index 928760f048f..ec78ff7353a 100644 --- a/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr @@ -3,13 +3,8 @@ contract DelegatedOn { use dep::std::option::Option; use dep::aztec::{ - context::{PrivateContext, PublicContext, Context}, log::emit_unencrypted_log, - state_vars::{PublicMutable, PrivateSet}, - protocol_types::{abis::{function_selector::FunctionSelector, call_context::CallContext}, address::AztecAddress}, - note::{ - note_getter_options::NoteGetterOptions, note_viewer_options::NoteViewerOptions, - utils as note_utils, note_header::NoteHeader - } + context::{PublicContext, Context}, protocol_types::abis::call_context::CallContext, + note::utils as note_utils }; use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN}; diff --git a/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr b/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr index d93629e4fea..c20fd9edda6 100644 --- a/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr @@ -2,11 +2,7 @@ contract Delegator { use dep::std::option::Option; - use dep::aztec::{ - log::emit_unencrypted_log, state_vars::{PublicMutable, PrivateSet}, - protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress}, - note::{note_viewer_options::NoteViewerOptions, utils as note_utils, note_header::NoteHeader} - }; + use dep::aztec::note::utils as note_utils; use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN}; struct Storage { diff --git a/noir-projects/noir-contracts/contracts/docs_example_contract/src/main.nr b/noir-projects/noir-contracts/contracts/docs_example_contract/src/main.nr index de6e6b629db..a583fb32cd8 100644 --- a/noir-projects/noir-contracts/contracts/docs_example_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/docs_example_contract/src/main.nr @@ -13,18 +13,10 @@ mod types; contract DocsExample { // how to import dependencies defined in your workspace - use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress}; - use dep::aztec::{ - note::{ - note_header::NoteHeader, note_getter_options::{NoteGetterOptions, Comparator}, - note_viewer_options::{NoteViewerOptions}, utils as note_utils - }, - context::{PrivateContext, PublicContext, Context}, - state_vars::{Map, PublicMutable, PublicImmutable, PrivateMutable, PrivateImmutable, PrivateSet, SharedImmutable} - }; + use dep::aztec::context::Context; // how to import methods from other files/folders within your workspace use crate::options::create_account_card_getter_options; - use crate::types::{card_note::{CardNote, CARD_NOTE_LEN}, leader::Leader}; + use crate::types::{card_note::CardNote, leader::Leader}; struct Storage { // Shows how to create a custom struct in PublicMutable diff --git a/noir-projects/noir-contracts/contracts/docs_example_contract/src/options.nr b/noir-projects/noir-contracts/contracts/docs_example_contract/src/options.nr index 362828f7ce7..19ec00ed792 100644 --- a/noir-projects/noir-contracts/contracts/docs_example_contract/src/options.nr +++ b/noir-projects/noir-contracts/contracts/docs_example_contract/src/options.nr @@ -1,6 +1,6 @@ use crate::types::card_note::{CardNote, CARD_NOTE_LEN}; -use dep::aztec::protocol_types::{address::AztecAddress, constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL}; -use dep::aztec::note::note_getter_options::{NoteGetterOptions, Sort, SortOrder}; +use dep::aztec::protocol_types::constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL; +use dep::aztec::note::note_getter_options::{Sort, SortOrder}; use dep::std::option::Option; // Shows how to use NoteGetterOptions and query for notes. diff --git a/noir-projects/noir-contracts/contracts/docs_example_contract/src/types/card_note.nr b/noir-projects/noir-contracts/contracts/docs_example_contract/src/types/card_note.nr index 356e6421c21..2fbc87fd6da 100644 --- a/noir-projects/noir-contracts/contracts/docs_example_contract/src/types/card_note.nr +++ b/noir-projects/noir-contracts/contracts/docs_example_contract/src/types/card_note.nr @@ -1,8 +1,8 @@ use dep::aztec::{ - note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption}, + note::utils::compute_note_hash_for_consumption, oracle::{nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key}, - log::emit_encrypted_log, hash::pedersen_hash, context::PrivateContext, - protocol_types::{address::AztecAddress, traits::Empty} + hash::pedersen_hash, + protocol_types::traits::Empty, }; // Shows how to create a custom note diff --git a/noir-projects/noir-contracts/contracts/docs_example_contract/src/types/leader.nr b/noir-projects/noir-contracts/contracts/docs_example_contract/src/types/leader.nr index 85f1b08199d..a75529a0503 100644 --- a/noir-projects/noir-contracts/contracts/docs_example_contract/src/types/leader.nr +++ b/noir-projects/noir-contracts/contracts/docs_example_contract/src/types/leader.nr @@ -1,4 +1,4 @@ -use dep::aztec::protocol_types::{address::AztecAddress, traits::{Serialize, Deserialize}}; +use dep::aztec::protocol_types::traits::{Serialize, Deserialize}; // Shows how to create a custom struct in Public struct Leader { diff --git a/noir-projects/noir-contracts/contracts/easy_private_token_contract/src/main.nr b/noir-projects/noir-contracts/contracts/easy_private_token_contract/src/main.nr index 0acb8c4e028..43f114459d1 100644 --- a/noir-projects/noir-contracts/contracts/easy_private_token_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/easy_private_token_contract/src/main.nr @@ -1,8 +1,7 @@ // docs:start:easy_private_token_contract contract EasyPrivateToken { - use dep::aztec::protocol_types::address::AztecAddress; - use dep::aztec::{note::{note_header::NoteHeader, utils as note_utils}, state_vars::Map}; - use dep::value_note::{balance_utils, value_note::ValueNote}; + use dep::value_note::balance_utils; + use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN}; use dep::easy_private_state::EasyPrivateUint; struct Storage { diff --git a/noir-projects/noir-contracts/contracts/easy_private_voting_contract/src/main.nr b/noir-projects/noir-contracts/contracts/easy_private_voting_contract/src/main.nr index 5a25136195d..0c23b643447 100644 --- a/noir-projects/noir-contracts/contracts/easy_private_voting_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/easy_private_voting_contract/src/main.nr @@ -1,10 +1,4 @@ contract EasyPrivateVoting { - // docs:start:imports - use dep::aztec::{ - protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress}, - context::{PrivateContext, Context}, state_vars::{Map, PublicMutable} - }; - // docs:end:imports // docs:start:storage_struct struct Storage { admin: PublicMutable, // admin can end vote diff --git a/noir-projects/noir-contracts/contracts/ecdsa_account_contract/src/ecdsa_public_key_note.nr b/noir-projects/noir-contracts/contracts/ecdsa_account_contract/src/ecdsa_public_key_note.nr index 1ac71be5690..bf17764b156 100644 --- a/noir-projects/noir-contracts/contracts/ecdsa_account_contract/src/ecdsa_public_key_note.nr +++ b/noir-projects/noir-contracts/contracts/ecdsa_account_contract/src/ecdsa_public_key_note.nr @@ -1,8 +1,7 @@ -use dep::aztec::protocol_types::address::AztecAddress; use dep::aztec::{ - note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption}, + note::utils::compute_note_hash_for_consumption, oracle::{nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key}, - log::emit_encrypted_log, hash::pedersen_hash, context::PrivateContext + hash::pedersen_hash, }; global ECDSA_PUBLIC_KEY_NOTE_LEN: Field = 5; diff --git a/noir-projects/noir-contracts/contracts/ecdsa_account_contract/src/main.nr b/noir-projects/noir-contracts/contracts/ecdsa_account_contract/src/main.nr index 3ab9a2edfcd..7a0e968fe72 100644 --- a/noir-projects/noir-contracts/contracts/ecdsa_account_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/ecdsa_account_contract/src/main.nr @@ -3,14 +3,8 @@ mod ecdsa_public_key_note; // Account contract that uses ECDSA signatures for authentication on the same curve as Ethereum. // The signing key is stored in an immutable private note and should be different from the signing key. contract EcdsaAccount { - use dep::aztec::protocol_types::{abis::{call_context::CallContext, function_selector::FunctionSelector}, address::AztecAddress}; use dep::std; - use dep::std::option::Option; - use dep::aztec::{ - context::{PrivateContext, PublicContext, Context}, - note::{note_header::NoteHeader, utils as note_utils}, oracle::get_public_key::get_public_key, - state_vars::PrivateImmutable - }; + use dep::aztec::context::Context; use dep::authwit::{ entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions, auth_witness::get_auth_witness diff --git a/noir-projects/noir-contracts/contracts/escrow_contract/src/main.nr b/noir-projects/noir-contracts/contracts/escrow_contract/src/main.nr index db9c51eab85..1e891ca1d6e 100644 --- a/noir-projects/noir-contracts/contracts/escrow_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/escrow_contract/src/main.nr @@ -1,15 +1,7 @@ // Sample escrow contract that stores a balance of a private token on behalf of an owner. contract Escrow { use dep::std::option::Option; - - use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress}; - - use dep::aztec::{ - context::{PrivateContext, PublicContext, Context}, - note::{note_getter_options::NoteGetterOptions, note_header::NoteHeader, utils as note_utils}, - oracle::get_public_key::get_public_key, state_vars::PrivateSet - }; - + use dep::aztec::oracle::get_public_key::get_public_key; use dep::address_note::address_note::{AddressNote, ADDRESS_NOTE_LEN}; struct Storage { diff --git a/noir-projects/noir-contracts/contracts/fpc_contract/src/main.nr b/noir-projects/noir-contracts/contracts/fpc_contract/src/main.nr index 5bc8535adc4..6f5105ff7d6 100644 --- a/noir-projects/noir-contracts/contracts/fpc_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/fpc_contract/src/main.nr @@ -1,9 +1,6 @@ mod interfaces; contract FPC { - use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress}; - use dep::aztec::state_vars::SharedImmutable; - use crate::interfaces::Token; struct Storage { diff --git a/noir-projects/noir-contracts/contracts/gas_token_contract/src/lib.nr b/noir-projects/noir-contracts/contracts/gas_token_contract/src/lib.nr index 9d7dbf3b74e..27212f89696 100644 --- a/noir-projects/noir-contracts/contracts/gas_token_contract/src/lib.nr +++ b/noir-projects/noir-contracts/contracts/gas_token_contract/src/lib.nr @@ -1,5 +1,5 @@ use dep::aztec::context::PublicContext; -use dep::aztec::protocol_types::{address::{AztecAddress, EthAddress}, hash::sha256_to_field}; +use dep::aztec::protocol_types::hash::sha256_to_field; pub fn calculate_fee(_context: PublicContext) -> U128 { U128::from_integer(1) diff --git a/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr b/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr index 83fd519e47b..29432898080 100644 --- a/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr @@ -1,9 +1,7 @@ mod lib; contract GasToken { - use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::{AztecAddress, EthAddress}}; - use dep::aztec::{hash::{compute_secret_hash}, state_vars::{PublicMutable, Map}}; - + use dep::aztec::hash::compute_secret_hash; use crate::lib::{calculate_fee, get_bridge_gas_msg_hash}; struct Storage { diff --git a/noir-projects/noir-contracts/contracts/import_test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/import_test_contract/src/main.nr index e575b117ae9..2bde6829662 100644 --- a/noir-projects/noir-contracts/contracts/import_test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/import_test_contract/src/main.nr @@ -3,7 +3,6 @@ mod test_contract_interface; // Contract that uses the autogenerated interface of the Test contract for calling its functions. // Used for testing calling into other contracts via autogenerated interfaces. contract ImportTest { - use dep::aztec::protocol_types::address::AztecAddress; use crate::test_contract_interface::{ TestPrivateContextInterface, TestPublicContextInterface, AStructTestCodeGenStruct, ADeepStructTestCodeGenStruct, ANoteADeepStructTestCodeGenStruct, diff --git a/noir-projects/noir-contracts/contracts/inclusion_proofs_contract/src/main.nr b/noir-projects/noir-contracts/contracts/inclusion_proofs_contract/src/main.nr index 2ca5b2111e6..b388f5f45f1 100644 --- a/noir-projects/noir-contracts/contracts/inclusion_proofs_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/inclusion_proofs_contract/src/main.nr @@ -1,18 +1,10 @@ // A demonstration of inclusion and non-inclusion proofs. contract InclusionProofs { - use dep::aztec::protocol_types::{ - abis::function_selector::FunctionSelector, address::{AztecAddress, EthAddress}, - grumpkin_point::GrumpkinPoint, contract_class_id::ContractClassId - }; - use dep::aztec::{ - state_vars::{Map, PrivateSet, PublicMutable}, context::Context, - note::{ - note_getter_options::NoteGetterOptions, note_getter_options::NoteStatus, - note_header::NoteHeader, utils as note_utils - } - }; // docs:start:imports - use dep::aztec::history::{ + use dep::aztec::{ + protocol_types::{grumpkin_point::GrumpkinPoint, contract_class_id::ContractClassId}, + note::note_getter_options::NoteStatus, + history::{ contract_inclusion::{prove_contract_inclusion, prove_contract_inclusion_at}, note_inclusion::{prove_note_inclusion, prove_note_inclusion_at}, note_validity::{prove_note_validity, prove_note_validity_at}, @@ -22,6 +14,7 @@ contract InclusionProofs { }, nullifier_non_inclusion::{prove_note_not_nullified, prove_note_not_nullified_at}, public_value_inclusion::{prove_public_value_inclusion, prove_public_value_inclusion_at} + } }; // docs:end:imports // docs:start:value_note_imports diff --git a/noir-projects/noir-contracts/contracts/lending_contract/src/asset.nr b/noir-projects/noir-contracts/contracts/lending_contract/src/asset.nr index 88f95f6e848..74dabde0ca7 100644 --- a/noir-projects/noir-contracts/contracts/lending_contract/src/asset.nr +++ b/noir-projects/noir-contracts/contracts/lending_contract/src/asset.nr @@ -1,4 +1,4 @@ -use dep::aztec::protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}}; +use dep::aztec::protocol_types::traits::{Deserialize, Serialize}; // Struct to be used to represent "totals". Generally, there should be one per asset. // It stores the global values that are shared among all users, such as an accumulator diff --git a/noir-projects/noir-contracts/contracts/lending_contract/src/interfaces.nr b/noir-projects/noir-contracts/contracts/lending_contract/src/interfaces.nr index 631f5eed5ca..97fac91f5ca 100644 --- a/noir-projects/noir-contracts/contracts/lending_contract/src/interfaces.nr +++ b/noir-projects/noir-contracts/contracts/lending_contract/src/interfaces.nr @@ -1,7 +1,7 @@ -use dep::aztec::context::{PrivateContext, PublicContext}; +use dep::aztec::context::PublicContext; use crate::asset::Asset; -use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, constants::RETURN_VALUES_LENGTH}; +use dep::aztec::protocol_types::constants::RETURN_VALUES_LENGTH; struct PriceFeed { address: AztecAddress, diff --git a/noir-projects/noir-contracts/contracts/lending_contract/src/main.nr b/noir-projects/noir-contracts/contracts/lending_contract/src/main.nr index 7a6e6d1376c..776132933c8 100644 --- a/noir-projects/noir-contracts/contracts/lending_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/lending_contract/src/main.nr @@ -11,9 +11,7 @@ mod interfaces; // - A way to repay all debt at once // - Liquidations contract Lending { - use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress}; - use dep::std::option::Option; - use dep::aztec::{context::{PrivateContext, PublicContext, Context}, state_vars::{Map, PublicMutable}}; + use dep::aztec::context::{PublicContext, Context}; use crate::asset::Asset; use crate::interest_math::compute_multiplier; use crate::helpers::{covered_by_collateral, DebtReturn, debt_updates, debt_value, compute_identifier}; diff --git a/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr b/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr index b89dcb83d39..977020f6048 100644 --- a/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr @@ -1,7 +1,5 @@ // A contract used along with `Child` contract to test nested calls. contract Parent { - use dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector}; - #[aztec(private)] fn constructor() {} diff --git a/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr b/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr index 4115f9c34c7..83e7269115a 100644 --- a/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr @@ -4,14 +4,8 @@ // be read/nullified before their creation etc. contract PendingNoteHashes { // Libs - use dep::std::option::Option; use dep::value_note::{balance_utils, filter::filter_notes_min_sum, value_note::{VALUE_NOTE_LEN, ValueNote}}; - use dep::aztec::{ - context::{PrivateContext, PublicContext, Context}, log::emit_encrypted_log, - note::{note_getter::NoteGetterOptions, note_header::NoteHeader, utils as note_utils}, - state_vars::{Map, PrivateSet} - }; - use dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector}; + use dep::aztec::context::{PublicContext, Context}; struct Storage { balances: Map>, diff --git a/noir-projects/noir-contracts/contracts/price_feed_contract/src/main.nr b/noir-projects/noir-contracts/contracts/price_feed_contract/src/main.nr index afd14a72400..04ecb565a61 100644 --- a/noir-projects/noir-contracts/contracts/price_feed_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/price_feed_contract/src/main.nr @@ -1,9 +1,6 @@ mod asset; contract PriceFeed { - use dep::std::option::Option; - use dep::aztec::{context::{PrivateContext, PublicContext, Context}, state_vars::{Map, PublicMutable}}; - use dep::aztec::protocol_types::address::AztecAddress; use crate::asset::Asset; // Storage structure, containing all storage, and specifying what slots they use. diff --git a/noir-projects/noir-contracts/contracts/reader_contract/src/main.nr b/noir-projects/noir-contracts/contracts/reader_contract/src/main.nr index cfe709c3ee8..632d993226b 100644 --- a/noir-projects/noir-contracts/contracts/reader_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/reader_contract/src/main.nr @@ -1,6 +1,4 @@ contract Reader { - use dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector}; - use dep::compressed_string::FieldCompressedString; #[aztec(private)] diff --git a/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr b/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr index 5717762a7c1..e0a0035569b 100644 --- a/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr @@ -4,20 +4,14 @@ mod public_key_note; // The signing key is stored in an immutable private note and should be different from the encryption/nullifying key. contract SchnorrAccount { use dep::std; - use dep::std::option::Option; - use dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector}; - - use dep::aztec::{ - context::{PrivateContext, Context}, note::{note_header::NoteHeader, utils as note_utils}, - oracle::get_public_key::get_public_key, state_vars::PrivateImmutable - }; + use dep::aztec::context::Context; use dep::authwit::{ entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions, auth_witness::get_auth_witness }; - use crate::public_key_note::{PublicKeyNote, PUBLIC_KEY_NOTE_LEN}; + use crate::public_key_note::PublicKeyNote; struct Storage { // docs:start:storage diff --git a/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr b/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr index d552a44f4a0..b01cab8ae57 100644 --- a/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr +++ b/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr @@ -1,8 +1,7 @@ use dep::aztec::{ - note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption}, + note::utils::compute_note_hash_for_consumption, hash::pedersen_hash, oracle::{nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key}, - log::emit_encrypted_log, context::PrivateContext, protocol_types::{address::AztecAddress} }; global PUBLIC_KEY_NOTE_LEN: Field = 3; diff --git a/noir-projects/noir-contracts/contracts/schnorr_hardcoded_account_contract/src/main.nr b/noir-projects/noir-contracts/contracts/schnorr_hardcoded_account_contract/src/main.nr index dc1d8912af6..ab2951f5f8d 100644 --- a/noir-projects/noir-contracts/contracts/schnorr_hardcoded_account_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/schnorr_hardcoded_account_contract/src/main.nr @@ -2,10 +2,6 @@ // Account contract that uses Schnorr signatures for authentication using a hardcoded public key. contract SchnorrHardcodedAccount { use dep::std; - use dep::aztec::{ - context::PrivateContext, - protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector} - }; use dep::authwit::{ entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions, diff --git a/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr b/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr index cdaf950180f..835951aba53 100644 --- a/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr @@ -2,11 +2,6 @@ mod util; mod auth_oracle; contract SchnorrSingleKeyAccount { - use dep::aztec::{ - context::{PrivateContext}, - protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector} - }; - use dep::authwit::{entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions}; use crate::{util::recover_address, auth_oracle::get_auth_witness}; diff --git a/noir-projects/noir-contracts/contracts/slow_tree_contract/src/main.nr b/noir-projects/noir-contracts/contracts/slow_tree_contract/src/main.nr index 5161f7b04db..68e4cbb92e6 100644 --- a/noir-projects/noir-contracts/contracts/slow_tree_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/slow_tree_contract/src/main.nr @@ -7,15 +7,7 @@ mod types; // This is made as a separate contract for one thing mainly. Making it simpler to use. // TODO(#4760): Rename slow updates to shared mutable and ideally move the impl to state-vars in aztec-nr. contract SlowTree { - use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress}; - use dep::std::option::Option; - use dep::value_note::{balance_utils, utils::{increment, decrement}, value_note::ValueNote}; - use dep::aztec::{ - context::{PrivateContext, PublicContext, Context}, - note::{note_header::NoteHeader, utils as note_utils}, - state_vars::{Map, PublicMutable, PrivateSet}, - protocol_types::type_serialization::FIELD_SERIALIZED_LEN - }; + use dep::value_note::value_note::{ValueNote, VALUE_NOTE_LEN}; use dep::slow_updates_tree::{SlowMap, Leaf, SlowUpdateProof, compute_merkle_root, deserialize_slow_update_proof}; // docs:start:import_pop_capsule diff --git a/noir-projects/noir-contracts/contracts/stateful_test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/stateful_test_contract/src/main.nr index 587f7713fd8..7236386f2d9 100644 --- a/noir-projects/noir-contracts/contracts/stateful_test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/stateful_test_contract/src/main.nr @@ -1,15 +1,9 @@ // A contract used for testing a random hodgepodge of small features from simulator and end-to-end tests. contract StatefulTest { - use dep::std::option::Option; - use dep::value_note::{balance_utils, utils::{increment, decrement}, value_note::{VALUE_NOTE_LEN, ValueNote}}; + use dep::value_note::{balance_utils, utils::{increment, decrement}, value_note::ValueNote}; use dep::aztec::{ deploy::{deploy_contract as aztec_deploy_contract}, - context::{PrivateContext, PublicContext, Context}, - note::{note_header::NoteHeader, utils as note_utils}, - state_vars::{Map, PublicMutable, PrivateSet}, - oracle::get_contract_instance::get_contract_instance, - initializer::{mark_as_initialized, assert_is_initialized}, - protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector}, + initializer::{mark_as_initialized, assert_is_initialized} }; struct Storage { diff --git a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr index 771a301cbe7..cab86cc70fd 100644 --- a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr @@ -3,25 +3,19 @@ contract Test { use dep::std::option::Option; use dep::aztec::protocol_types::{ abis::private_circuit_public_inputs::PrivateCircuitPublicInputs, - address::{AztecAddress, EthAddress}, constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTES_PER_PAGE}, hash::hash_args }; - // docs:start:unencrypted_import - use dep::aztec::log::emit_unencrypted_log; - // docs:end:unencrypted_import use dep::aztec::{ - context::{Context, inputs::private_context_inputs::PrivateContextInputs}, + context::{Context, inputs::private_context_inputs::PrivateContextInputs}, hash::{pedersen_hash, compute_secret_hash}, - context::PrivateContext, note::{ - note_header::NoteHeader, utils as note_utils, lifecycle::{create_note, destroy_note}, - note_getter::{get_notes, view_notes}, note_getter_options::{NoteGetterOptions, NoteStatus}, - note_viewer_options::NoteViewerOptions + utils as note_utils, lifecycle::{create_note, destroy_note}, + note_getter::{get_notes, view_notes}, note_getter_options::NoteStatus }, deploy::{deploy_contract as aztec_deploy_contract}, oracle::{get_public_key::get_public_key as get_public_key_oracle, context::get_portal_address, rand::rand}, - state_vars::{PrivateImmutable, PrivateSet}, log::emit_unencrypted_log_from_private + log::emit_unencrypted_log_from_private }; use dep::token_portal_content_hash_lib::{get_mint_private_content_hash, get_mint_public_content_hash}; use dep::field_note::field_note::FieldNote; diff --git a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/interfaces.nr b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/interfaces.nr index 3f4bf9983be..9f24b3aaf7e 100644 --- a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/interfaces.nr +++ b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/interfaces.nr @@ -1,6 +1,4 @@ -use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress}; - -use dep::aztec::context::{PrivateContext, PublicContext, Context}; +use dep::aztec::context::{PublicContext, Context}; struct SlowMap { address: AztecAddress, diff --git a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr index 34928ebc3d9..391fedc64ed 100644 --- a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr @@ -16,11 +16,7 @@ contract TokenBlacklist { // Libs use dep::std::option::Option; - use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress}; - use dep::aztec::{ - note::{note_getter_options::NoteGetterOptions, note_header::NoteHeader, utils as note_utils}, - hash::{compute_secret_hash}, state_vars::{Map, PublicMutable, PrivateSet, SharedImmutable} - }; + use dep::aztec::hash::compute_secret_hash; use dep::field_note::field_note::FieldNote; diff --git a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr index 95653508f0d..00c11212496 100644 --- a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr +++ b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr @@ -1,12 +1,7 @@ use dep::std::option::Option; use dep::aztec::{ - context::Context, - protocol_types::{address::AztecAddress, constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL}, - state_vars::{PrivateSet, Map}, - note::{ - note_getter::view_notes, note_getter_options::{NoteGetterOptions, SortOrder}, - note_viewer_options::NoteViewerOptions, note_header::NoteHeader, note_interface::NoteInterface -} + context::Context, protocol_types::constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, + state_vars::{PrivateSet, Map}, note::{note_getter::view_notes} }; use crate::types::token_note::{TokenNote, OwnedNote}; diff --git a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/token_note.nr b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/token_note.nr index c9233038f30..ffb4f71fab7 100644 --- a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/token_note.nr +++ b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/token_note.nr @@ -1,10 +1,5 @@ -use dep::aztec::{ - protocol_types::address::AztecAddress, - note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption}, - context::PrivateContext, log::emit_encrypted_log, hash::pedersen_hash -}; +use dep::aztec::{note::utils::compute_note_hash_for_consumption, hash::pedersen_hash}; use dep::aztec::oracle::{rand::rand, nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key}; -use dep::std::option::Option; trait OwnedNote { fn new(amount: U128, owner: AztecAddress) -> Self; diff --git a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/transparent_note.nr b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/transparent_note.nr index a444d27df26..4bacb567420 100644 --- a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/transparent_note.nr +++ b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/transparent_note.nr @@ -1,7 +1,7 @@ // docs:start:token_types_all use dep::aztec::{ - note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption}, - hash::{compute_secret_hash, pedersen_hash}, context::PrivateContext + note::utils::compute_note_hash_for_consumption, + hash::{compute_secret_hash, pedersen_hash}, }; global TRANSPARENT_NOTE_LEN: Field = 2; diff --git a/noir-projects/noir-contracts/contracts/token_bridge_contract/src/main.nr b/noir-projects/noir-contracts/contracts/token_bridge_contract/src/main.nr index 352d86e1980..d6d63aa90ff 100644 --- a/noir-projects/noir-contracts/contracts/token_bridge_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/token_bridge_contract/src/main.nr @@ -7,9 +7,7 @@ mod token_interface; // Bridge has to be set as a minter on the token before it can be used contract TokenBridge { - use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::{AztecAddress, EthAddress}}; - - use dep::aztec::{context::{Context}, hash::{compute_secret_hash}, state_vars::{PublicMutable}}; + use dep::aztec::{context::{Context}, hash::{compute_secret_hash}}; use dep::token_portal_content_hash_lib::{get_mint_public_content_hash, get_mint_private_content_hash, get_withdraw_content_hash}; diff --git a/noir-projects/noir-contracts/contracts/token_bridge_contract/src/token_interface.nr b/noir-projects/noir-contracts/contracts/token_bridge_contract/src/token_interface.nr index 4f0ef61e978..5387571e005 100644 --- a/noir-projects/noir-contracts/contracts/token_bridge_contract/src/token_interface.nr +++ b/noir-projects/noir-contracts/contracts/token_bridge_contract/src/token_interface.nr @@ -1,6 +1,5 @@ // docs:start:token_bridge_token_interface -use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::{AztecAddress, EthAddress}}; -use dep::aztec::{context::{PrivateContext, PublicContext, Context}}; +use dep::aztec::{context::{PublicContext, Context}}; struct Token { address: AztecAddress, diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/main.nr b/noir-projects/noir-contracts/contracts/token_contract/src/main.nr index b1a37a66a77..3746c3c03da 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/main.nr @@ -12,14 +12,8 @@ mod types; contract Token { // Libs use dep::std::option::Option; - use dep::compressed_string::FieldCompressedString; - - use dep::aztec::{ - note::{note_getter_options::NoteGetterOptions, note_header::NoteHeader, utils as note_utils}, - hash::{compute_secret_hash}, state_vars::{Map, PublicMutable, SharedImmutable, PrivateSet}, - protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress} - }; + use dep::aztec::hash::compute_secret_hash; // docs:start:import_authwit use dep::authwit::{auth::{assert_current_call_valid_authwit, assert_current_call_valid_authwit_public}}; diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/types/balances_map.nr b/noir-projects/noir-contracts/contracts/token_contract/src/types/balances_map.nr index 740d328413f..246e4e560fc 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/types/balances_map.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/types/balances_map.nr @@ -1,13 +1,5 @@ use dep::std::option::Option; -use dep::aztec::{ - context::{PrivateContext, PublicContext, Context}, hash::pedersen_hash, - protocol_types::{address::AztecAddress, constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL}, - state_vars::{PrivateSet, Map}, - note::{ - note_getter::view_notes, note_getter_options::{NoteGetterOptions, SortOrder}, - note_viewer_options::NoteViewerOptions, note_header::NoteHeader, note_interface::NoteInterface -} -}; +use dep::aztec::{context::Context, protocol_types::constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL}; use crate::types::token_note::{TokenNote, OwnedNote}; struct BalancesMap { @@ -26,7 +18,10 @@ impl BalancesMap { } } - unconstrained pub fn balance_of(self: Self, owner: AztecAddress) -> U128 where T: NoteInterface + OwnedNote { + unconstrained pub fn balance_of( + self: Self, + owner: AztecAddress + ) -> U128 where T: NoteInterface + OwnedNote { self.balance_of_with_offset(owner, 0) } diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/types/token_note.nr b/noir-projects/noir-contracts/contracts/token_contract/src/types/token_note.nr index c9233038f30..79bfc7469e3 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/types/token_note.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/types/token_note.nr @@ -1,10 +1,7 @@ use dep::aztec::{ - protocol_types::address::AztecAddress, - note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption}, - context::PrivateContext, log::emit_encrypted_log, hash::pedersen_hash + oracle::{rand::rand, nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key}, + note::utils::compute_note_hash_for_consumption, hash::pedersen_hash }; -use dep::aztec::oracle::{rand::rand, nullifier_key::get_nullifier_secret_key, get_public_key::get_public_key}; -use dep::std::option::Option; trait OwnedNote { fn new(amount: U128, owner: AztecAddress) -> Self; diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/types/transparent_note.nr b/noir-projects/noir-contracts/contracts/token_contract/src/types/transparent_note.nr index a444d27df26..4bacb567420 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/types/transparent_note.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/types/transparent_note.nr @@ -1,7 +1,7 @@ // docs:start:token_types_all use dep::aztec::{ - note::{note_header::NoteHeader, note_interface::NoteInterface, utils::compute_note_hash_for_consumption}, - hash::{compute_secret_hash, pedersen_hash}, context::PrivateContext + note::utils::compute_note_hash_for_consumption, + hash::{compute_secret_hash, pedersen_hash}, }; global TRANSPARENT_NOTE_LEN: Field = 2; diff --git a/noir-projects/noir-contracts/contracts/token_portal_content_hash_lib/src/lib.nr b/noir-projects/noir-contracts/contracts/token_portal_content_hash_lib/src/lib.nr index 2106b0a585d..ac66f75f13b 100644 --- a/noir-projects/noir-contracts/contracts/token_portal_content_hash_lib/src/lib.nr +++ b/noir-projects/noir-contracts/contracts/token_portal_content_hash_lib/src/lib.nr @@ -1,9 +1,5 @@ // docs:start:mint_public_content_hash_nr use dep::aztec::protocol_types::{ - address::{ - AztecAddress, - EthAddress, - }, hash::sha256_to_field, }; diff --git a/noir-projects/noir-contracts/contracts/uniswap_contract/src/interfaces.nr b/noir-projects/noir-contracts/contracts/uniswap_contract/src/interfaces.nr index f70a2f93c38..0c65040d48c 100644 --- a/noir-projects/noir-contracts/contracts/uniswap_contract/src/interfaces.nr +++ b/noir-projects/noir-contracts/contracts/uniswap_contract/src/interfaces.nr @@ -1,6 +1,5 @@ // docs:start:interfaces -use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::{AztecAddress, EthAddress}}; -use dep::aztec::{context::{PrivateContext, PublicContext}}; +use dep::aztec::context::PublicContext; struct Token { address: AztecAddress, diff --git a/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr b/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr index 1188a027c8e..ff9d4c5bb64 100644 --- a/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr @@ -6,8 +6,7 @@ mod util; // Has two separate flows for private and public respectively // Uses the token bridge contract, which tells which input token we need to talk to and handles the exit funds to L1 contract Uniswap { - use dep::aztec::protocol_types::{abis::function_selector::FunctionSelector, address::{AztecAddress, EthAddress}}; - use dep::aztec::{oracle::{context::get_portal_address}, state_vars::{Map, PublicMutable}}; + use dep::aztec::oracle::context::get_portal_address; use dep::authwit::auth::{ IS_VALID_SELECTOR, assert_current_call_valid_authwit_public, compute_call_authwit_hash, diff --git a/noir-projects/noir-contracts/contracts/uniswap_contract/src/util.nr b/noir-projects/noir-contracts/contracts/uniswap_contract/src/util.nr index 6be6bab884e..42ef5893124 100644 --- a/noir-projects/noir-contracts/contracts/uniswap_contract/src/util.nr +++ b/noir-projects/noir-contracts/contracts/uniswap_contract/src/util.nr @@ -1,5 +1,5 @@ // docs:start:uniswap_public_content_hash -use dep::aztec::protocol_types::{address::{AztecAddress, EthAddress}, hash::sha256_to_field}; +use dep::aztec::protocol_types::hash::sha256_to_field; // This method computes the L2 to L1 message content hash for the public // refer `l1-contracts/test/portals/UniswapPortal.sol` on how L2 to L1 message is expected diff --git a/noir/noir-repo/aztec_macros/src/lib.rs b/noir/noir-repo/aztec_macros/src/lib.rs index 6191108de86..48fec18b5e3 100644 --- a/noir/noir-repo/aztec_macros/src/lib.rs +++ b/noir/noir-repo/aztec_macros/src/lib.rs @@ -11,11 +11,10 @@ use noirc_frontend::macros_api::FieldElement; use noirc_frontend::macros_api::{ BlockExpression, CallExpression, CastExpression, Distinctness, Expression, ExpressionKind, ForLoopStatement, ForRange, FunctionDefinition, FunctionReturnType, FunctionVisibility, - HirContext, HirExpression, HirLiteral, HirStatement, Ident, ImportStatement, IndexExpression, - LetStatement, Literal, MemberAccessExpression, MethodCallExpression, NoirFunction, NoirStruct, - Param, Path, PathKind, Pattern, PrefixExpression, SecondaryAttribute, Signedness, Span, - Statement, StatementKind, StructType, Type, TypeImpl, UnaryOp, UnresolvedType, - UnresolvedTypeData, Visibility, + HirContext, HirExpression, HirLiteral, HirStatement, Ident, IndexExpression, LetStatement, + Literal, MemberAccessExpression, MethodCallExpression, NoirFunction, NoirStruct, Param, Path, + Pattern, PrefixExpression, SecondaryAttribute, Signedness, Span, Statement, StatementKind, + StructType, Type, TypeImpl, UnaryOp, UnresolvedType, UnresolvedTypeData, Visibility, }; use noirc_frontend::macros_api::{CrateId, FileId}; use noirc_frontend::macros_api::{MacroError, MacroProcessor}; @@ -34,6 +33,17 @@ impl MacroProcessor for AztecMacro { transform(ast, crate_id, context) } + fn fetch_crate_prelude( + &self, + crate_id: &CrateId, + context: &HirContext, + ) -> Result, (MacroError, FileId)> { + if has_aztec_dependency(crate_id, context) { + return Ok(Some("aztec::prelude")); + } + Ok(None) + } + fn process_unresolved_traits_impls( &self, crate_id: &CrateId, @@ -238,19 +248,6 @@ macro_rules! chained_path { } } -macro_rules! chained_dep { - ( $base:expr $(, $tail:expr)* ) => { - { - let mut base_path = ident_path($base); - base_path.kind = PathKind::Dep; - $( - base_path.segments.push(ident($tail)); - )* - base_path - } - } -} - fn cast(lhs: Expression, ty: UnresolvedTypeData) -> Expression { expression(ExpressionKind::Cast(Box::new(CastExpression { lhs, r#type: make_type(ty) }))) } @@ -273,10 +270,6 @@ fn index_array_variable(array: Expression, index: &str) -> Expression { }))) } -fn import(path: Path) -> ImportStatement { - ImportStatement { path, alias: None } -} - // // Create AST Nodes for Aztec // @@ -317,19 +310,30 @@ fn transform_hir( /// Includes an import to the aztec library if it has not been included yet fn include_relevant_imports(ast: &mut SortedModule) { - // Create the aztec import path using the assumed chained_dep! macro - let aztec_import_path = import(chained_dep!("aztec")); + let (imports_ast, errors) = parse_program(aztec_import_path_source()); + if !errors.is_empty() { + dbg!(errors.clone()); + } + assert_eq!(errors.len(), 0, "Failed to parse Noir macro code. This is either a bug in the compiler or the Noir macro code"); - // Check if the aztec import already exists - let is_aztec_imported = - ast.imports.iter().any(|existing_import| existing_import.path == aztec_import_path.path); + let imports_ast = imports_ast.into_sorted(); - // If aztec is not imported, add the import at the beginning - if !is_aztec_imported { - ast.imports.insert(0, aztec_import_path); + for aztec_import in imports_ast.imports { + // Check if the aztec import already exists + let is_aztec_imported = + ast.imports.iter().any(|existing_import| existing_import.path == aztec_import.path); + + // If aztec is not imported, add the import at the beginning + if !is_aztec_imported { + ast.imports.insert(0, aztec_import); + } } } +fn aztec_import_path_source() -> &'static str { + "use dep::aztec;" +} + /// Creates an error alerting the user that they have not downloaded the Aztec-noir library fn check_for_aztec_dependency( crate_id: &CrateId, @@ -1884,10 +1888,10 @@ fn generate_compute_note_hash_and_nullifier_source(note_types: &Vec) -> } else { // For contracts that include notes we do a simple if-else chain comparing note_type_id with the different // get_note_type_id of each of the note types. - + // `utils_compute_note_hash_and_nullifier` is auto imported as part of the prelude let if_statements: Vec = note_types.iter().map(|note_type| format!( "if (note_type_id == {0}::get_note_type_id()) {{ - note_utils::compute_note_hash_and_nullifier({0}::deserialize_content, note_header, serialized_note) + utils_compute_note_hash_and_nullifier({0}::deserialize_content, note_header, serialized_note) }}" , note_type)).collect(); diff --git a/noir/noir-repo/compiler/noirc_frontend/src/hir/def_collector/dc_crate.rs b/noir/noir-repo/compiler/noirc_frontend/src/hir/def_collector/dc_crate.rs index 7f36af5b30e..731b78e33e5 100644 --- a/noir/noir-repo/compiler/noirc_frontend/src/hir/def_collector/dc_crate.rs +++ b/noir/noir-repo/compiler/noirc_frontend/src/hir/def_collector/dc_crate.rs @@ -252,7 +252,8 @@ impl DefCollector { context, )); - let submodules = vecmap(def_collector.def_map.modules().iter(), |(index, _)| index); + let submodules = + vecmap(def_collector.def_map.modules().iter(), |(index, _)| LocalModuleId(index)); // Add the current crate to the collection of DefMaps context.def_maps.insert(crate_id, def_collector.def_map); @@ -270,14 +271,43 @@ impl DefCollector { }); } - inject_prelude(crate_id, context, crate_root, &mut def_collector.collected_imports); - for submodule in submodules { + let mut preludes = Vec::new(); + preludes.push("std::prelude"); + + for macro_processor in ¯o_processors { + // Aside from the stdlib prelude, check whether the crate we are processing has dependencies + // which supply their own prelude and add it to the list of preludes to be injected. + match macro_processor.fetch_crate_prelude(&crate_id, context) { + Ok(Some(prelude)) => { + preludes.push(prelude); + } + Ok(None) => { + // Do nothing + } + Err((error, file_id)) => { + let def_error = DefCollectorErrorKind::MacroError(error); + errors.push((def_error.into(), file_id)); + } + } + } + + for prelude in preludes { inject_prelude( crate_id, context, - LocalModuleId(submodule), + crate_root, + prelude, &mut def_collector.collected_imports, ); + for submodule in submodules.iter() { + inject_prelude( + crate_id, + context, + *submodule, + prelude, + &mut def_collector.collected_imports, + ); + } } // Resolve unresolved imports collected from the crate, one by one. @@ -399,9 +429,10 @@ fn inject_prelude( crate_id: CrateId, context: &Context, crate_root: LocalModuleId, + prelude_path: &str, collected_imports: &mut Vec, ) { - let segments: Vec<_> = "std::prelude" + let segments: Vec<_> = prelude_path .split("::") .map(|segment| crate::Ident::new(segment.into(), Span::default())) .collect(); @@ -415,11 +446,13 @@ fn inject_prelude( ModuleId { krate: crate_id, local_id: crate_root }, path, ) { - let module_id = module_def.as_module().expect("std::prelude should be a module"); + let module_id = module_def + .as_module() + .unwrap_or_else(|| panic!("{prelude_path} should be a module")); let prelude = context.module(module_id).scope().names(); for path in prelude { - let mut segments = segments.clone(); + let mut segments: Vec = segments.clone(); segments.push(Ident::new(path.to_string(), Span::default())); collected_imports.insert( diff --git a/noir/noir-repo/compiler/noirc_frontend/src/lib.rs b/noir/noir-repo/compiler/noirc_frontend/src/lib.rs index be007929fc4..5a1988e4ef6 100644 --- a/noir/noir-repo/compiler/noirc_frontend/src/lib.rs +++ b/noir/noir-repo/compiler/noirc_frontend/src/lib.rs @@ -53,7 +53,9 @@ pub mod macros_api { pub use crate::parser::{parse_program, SortedModule}; pub use crate::token::SecondaryAttribute; - pub use crate::hir::def_map::ModuleDefId; + pub use crate::hir::def_collector::dc_crate::DefCollector as HirDefCollector; + pub use crate::hir::def_map::{ModuleDefId, ModuleId}; + pub use crate::hir::resolution::path_resolver; pub use crate::{ hir::Context as HirContext, BlockExpression, CallExpression, CastExpression, Distinctness, Expression, ExpressionKind, FunctionReturnType, Ident, IndexExpression, LetStatement, @@ -75,6 +77,13 @@ pub mod macros_api { crate_id: &CrateId, context: &HirContext, ) -> Result; + /// Function to manipulate the crate definition before type checking has been completed. + /// This is needed to process module declarations as the original AST will not yet have them. + fn fetch_crate_prelude( + &self, + crate_id: &CrateId, + context: &HirContext, + ) -> Result, (MacroError, FileId)>; // TODO(#4653): generalize this function fn process_unresolved_traits_impls( diff --git a/noir/noir-repo/noirc_macros/src/lib.rs b/noir/noir-repo/noirc_macros/src/lib.rs index 9a916843200..cc8c025d24b 100644 --- a/noir/noir-repo/noirc_macros/src/lib.rs +++ b/noir/noir-repo/noirc_macros/src/lib.rs @@ -18,6 +18,14 @@ impl MacroProcessor for AssertMessageMacro { transform(ast, crate_id) } + fn fetch_crate_prelude( + &self, + _crate_id: &CrateId, + _context: &HirContext, + ) -> Result, (MacroError, FileId)> { + Ok(None) + } + fn process_unresolved_traits_impls( &self, _crate_id: &CrateId,