Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MeProtocol Milestone 2 Delivery #1182

Merged
merged 7 commits into from
Jul 12, 2024
Merged

MeProtocol Milestone 2 Delivery #1182

merged 7 commits into from
Jul 12, 2024

Conversation

AgentPoles
Copy link
Contributor

Milestone Delivery Checklist

  • The milestone-delivery-template.md has been copied and updated.
  • This pull request is being made by the same account as the accepted application.
  • I have disclosed any and all sources of reused code in the submitted repositories and have done my due diligence to meet its license requirements.
  • In case of acceptance, invoices must be submitted and payments will be transferred to the Polkadot AssetHub and/or fiat account provided in the application.
  • The delivery is according to the Guidelines for Milestone Deliverables.

Link to the application pull request: w3f/Grants-Program#1340
Link to Milestone-1-Delivery pull request: #1065

Copy link
Member

@semuelle semuelle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, the code isn't compiling. cargo test (1.78.0) results in the following output (notice also the many warnings):

> cargo test
   Compiling global v0.1.0 (/me-protocol/rusty-protocol-v0.1/contracts)
error[E0554]: `#![feature]` may not be used on the stable release channel
 --> contracts/global.rs:2:1
  |
2 | #![feature(min_specialization)]
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `psp22::PSP22Impl`
 --> contracts/controllers/deployables/reward.rs:5:8
  |
5 |     }, psp22::PSP22Impl},
  |        ^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused imports: `psp22::*`, `psp34::extensions::enumerable`
 --> contracts/controllers/deployables/a_pool.rs:2:46
  |
2 |     contracts::{traits::{ access_control::*, psp22::*, psp34::*, pausable::* }, psp34::extensions::enumerable},
  |                                              ^^^^^^^^                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `psp22::*`
 --> contracts/controllers/deployables/treasury.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::* },
  |                                             ^^^^^^^^

warning: unused import: `prelude::vec::Vec`
 --> contracts/controllers/deployables/treasury.rs:7:12
  |
7 | use ink::{ prelude::vec::Vec };
  |            ^^^^^^^^^^^^^^^^^

warning: unused import: `data::a_pool::*`
 --> contracts/controllers/deployables/treasury.rs:9:58
  |
9 | use crate::providers::{ common::{ errors::*, types::* }, data::a_pool::* };
  |                                                          ^^^^^^^^^^^^^^^

warning: unused import: `psp22::*`
 --> contracts/controllers/deployables/bounty.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::* },
  |                                             ^^^^^^^^

warning: unused import: `prelude::vec::Vec`
 --> contracts/controllers/deployables/bounty.rs:6:12
  |
6 | use ink::{ prelude::vec::Vec };
  |            ^^^^^^^^^^^^^^^^^

warning: unused import: `data::a_pool::*`
 --> contracts/controllers/deployables/bounty.rs:8:44
  |
8 | use crate::providers::{ common::errors::*, data::a_pool::* };
  |                                            ^^^^^^^^^^^^^^^

warning: unused import: `psp22::*`
 --> contracts/controllers/deployables/payment.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::* },
  |                                             ^^^^^^^^

warning: unused import: `openbrush::traits::String`
 --> contracts/controllers/deployables/payment.rs:5:5
  |
5 | use openbrush::traits::String;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `prelude::vec::Vec`
 --> contracts/controllers/deployables/payment.rs:7:12
  |
7 | use ink::{ prelude::vec::Vec };
  |            ^^^^^^^^^^^^^^^^^

warning: unused imports: `data::a_pool::*`, `types::*`
 --> contracts/controllers/deployables/payment.rs:9:46
  |
9 | use crate::providers::{ common::{ errors::*, types::* }, data::a_pool::* };
  |                                              ^^^^^^^^    ^^^^^^^^^^^^^^^

warning: unused imports: `Balance`, `psp22::*`
 --> contracts/controllers/deployables/pool_initiator.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::* },
  |                                             ^^^^^^^^
3 |     traits::{ AccountId, Balance },
  |                          ^^^^^^^

warning: unused import: `openbrush::traits::String`
 --> contracts/controllers/deployables/pool_initiator.rs:5:5
  |
5 | use openbrush::traits::String;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `errors::*`
  --> contracts/controllers/deployables/pool_initiator.rs:10:35
   |
10 | use crate::providers::{ common::{ errors::*, types::* }, data::a_pool::* };
   |                                   ^^^^^^^^^

warning: unused import: `psp22::*`
 --> contracts/controllers/deployables/reward_initiator.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::* },
  |                                             ^^^^^^^^

warning: unused import: `data::a_pool::*`
  --> contracts/controllers/deployables/reward_initiator.rs:10:58
   |
10 | use crate::providers::{ common::{ errors::*, types::* }, data::a_pool::* };
   |                                                          ^^^^^^^^^^^^^^^

warning: unused imports: `pausable::*`, `psp22::*`
 --> contracts/controllers/services/brands.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::*, psp34::*, pausable::* },
  |                                             ^^^^^^^^            ^^^^^^^^^^^

warning: unused import: `prelude::vec::Vec`
 --> contracts/controllers/services/brands.rs:8:12
  |
8 | use ink::{ prelude::vec::Vec };
  |            ^^^^^^^^^^^^^^^^^

warning: unused imports: `String`, `access_control::*`, `pausable::*`, `psp22::*`, `psp34::*`
 --> contracts/controllers/services/customers.rs:2:26
  |
2 |     contracts::traits::{ access_control::*, psp22::*, psp34::*, pausable::* },
  |                          ^^^^^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^
3 |     traits::{ AccountId, Balance, String },
  |                                   ^^^^^^

warning: unused imports: `a_pool::*`, `a_reward::*`, `brand::*`
 --> contracts/controllers/services/customers.rs:6:52
  |
6 | use crate::providers::{ common::errors::*, data::{ a_reward::*, brand::*, a_pool::* } };
  |                                                    ^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^

warning: unused imports: `Balance`, `pausable::*`, `psp22::*`, `psp34::*`
 --> contracts/controllers/services/admin.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::*, psp34::*, pausable::* },
  |                                             ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^
3 |     traits::{ AccountId, Balance, String },
  |                          ^^^^^^^

warning: unused imports: `a_pool::*`, `a_reward::*`, `brand::*`, `treasury::*`
 --> contracts/controllers/services/admin.rs:6:64
  |
6 | ...rrors::*, types::*}, data::{ a_reward::*, brand::*, a_pool::*, protocol::*, treasury::* } };
  |                                 ^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^               ^^^^^^^^^^^

warning: type `BRAND_ID_TYPE` should have an upper camel case name
 --> contracts/providers/common/types.rs:1:10
  |
1 | pub type BRAND_ID_TYPE = [u8; 10];
  |          ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `BrandIdType`
  |
  = note: `#[warn(non_camel_case_types)]` on by default

warning: unused import: `storage::traits::StorageLayout`
 --> contracts/providers/common/context.rs:3:12
  |
3 | use ink::{ storage::traits::StorageLayout };
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/common/context.rs:4:5
  |
4 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `Decode`
 --> contracts/providers/common/roleguard.rs:6:13
  |
6 | use scale::{Decode, Encode};
  |             ^^^^^^

warning: unused imports: `env::hash::Keccak256`, `storage::Mapping`
 --> contracts/providers/common/roleguard.rs:7:11
  |
7 | use ink::{env::hash::Keccak256, prelude::{collections::BTreeMap, vec::Vec}, storage::Mapping};
  |           ^^^^^^^^^^^^^^^^^^^^                                              ^^^^^^^^^^^^^^^^

warning: unused import: `crate::controllers::services::admin`
  --> contracts/providers/common/roleguard.rs:10:5
   |
10 | use crate::controllers::services::admin;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/data/a_pool.rs:4:5
  |
4 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `AccountId`
 --> contracts/providers/data/a_position.rs:2:46
  |
2 | use openbrush::{ storage::Mapping, traits::{ AccountId, Balance}, contracts::traits::psp34::Id };
  |                                              ^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/data/a_position.rs:4:5
  |
4 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `core::clone`
 --> contracts/providers/data/a_reward.rs:1:5
  |
1 | use core::clone;
  |     ^^^^^^^^^^^

warning: unused import: `Balance`
 --> contracts/providers/data/a_reward.rs:3:37
  |
3 | use openbrush::traits::{ AccountId, Balance, String, Storage };
  |                                     ^^^^^^^

warning: unused import: `database::*`
 --> contracts/providers/data/a_reward.rs:5:33
  |
5 | use crate::providers::common::{ database::*, types::BRAND_ID_TYPE, errors::ProtocolError };
  |                                 ^^^^^^^^^^^

warning: unused import: `Balance`
 --> contracts/providers/data/brand.rs:1:37
  |
1 | use openbrush::traits::{ AccountId, Balance, Storage, String };
  |                                     ^^^^^^^

warning: unused imports: `database::*`, `errors::ProtocolError`
 --> contracts/providers/data/brand.rs:3:33
  |
3 | use crate::providers::common::{ database::*, errors::ProtocolError, types::* };
  |                                 ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `core::clone`
 --> contracts/providers/data/protocol.rs:1:5
  |
1 | use core::clone;
  |     ^^^^^^^^^^^

warning: unused import: `String`
 --> contracts/providers/data/protocol.rs:3:48
  |
3 | use openbrush::{ traits::{ AccountId, Balance, String, Storage } };
  |                                                ^^^^^^

warning: unused import: `Mapping`
 --> contracts/providers/data/protocol.rs:4:46
  |
4 | use ink::{ storage::{ traits::StorageLayout, Mapping } };
  |                                              ^^^^^^^

warning: unused import: `database::*`
 --> contracts/providers/data/protocol.rs:5:33
  |
5 | use crate::providers::common::{ database::*, types::* };
  |                                 ^^^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/data/bounty.rs:3:5
  |
3 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `database::*`
 --> contracts/providers/data/treasury.rs:3:33
  |
3 | use crate::providers::common::{ database::*, types::* };
  |                                 ^^^^^^^^^^^

warning: unused import: `traits::StorageLayout`
 --> contracts/providers/data/payment.rs:2:32
  |
2 | use ink::{ storage::{ Mapping, traits::StorageLayout } };
  |                                ^^^^^^^^^^^^^^^^^^^^^

warning: unused imports: `database::*`, `types::*`
 --> contracts/providers/data/payment.rs:3:33
  |
3 | use crate::providers::common::{ database::*, types::* };
  |                                 ^^^^^^^^^^^  ^^^^^^^^

warning: unused import: `Balance`
 --> contracts/providers/data/pool_initiator.rs:1:37
  |
1 | use openbrush::traits::{ AccountId, Balance };
  |                                     ^^^^^^^

warning: unused import: `traits::StorageLayout`
 --> contracts/providers/data/pool_initiator.rs:3:32
  |
3 | use ink::{ storage::{ Mapping, traits::StorageLayout } };
  |                                ^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/data/pool_initiator.rs:4:5
  |
4 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `Balance`
 --> contracts/providers/data/reward_initiator.rs:1:37
  |
1 | use openbrush::traits::{ AccountId, Balance };
  |                                     ^^^^^^^

warning: unused import: `traits::StorageLayout`
 --> contracts/providers/data/reward_initiator.rs:3:32
  |
3 | use ink::{ storage::{ Mapping, traits::StorageLayout } ,  prelude::vec::Vec,};
  |                                ^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/data/reward_initiator.rs:4:5
  |
4 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `openbrush::traits::String`
 --> contracts/providers/data/reward_initiator.rs:7:5
  |
7 | use openbrush::traits::String;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: ambiguous glob re-exports
  --> contracts/providers/deployables/a_pool.rs:2:9
   |
2  |   pub use crate::{
   |  _________^
3  | |     providers::{
4  | |         data::{ a_pool::*, a_position::* },
5  | |         common::context::*,
6  | |         deployables::a_pool,
7  | |         common::{ roles::*, errors::ProtocolError, eunice::*, validator::* },
   | |                                                               ------------ but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
8  | |     },
9  | |     controllers::deployables::a_pool::*,
10 | | };
   | |_^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here
   |
   = note: `#[warn(ambiguous_glob_reexports)]` on by default

warning: unused imports: `common::constants::PRECISION`, `protocol::update_editable_protocol_config`
 --> contracts/providers/deployables/bounty.rs:1:25
  |
1 | ...ders::{ common::constants::PRECISION, data::{bounty::BountyRecord, protocol::update_editable_protocol_config} };
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: private item shadows public glob re-export
 --> contracts/providers/deployables/bounty.rs:1:62
  |
1 | use crate::providers::{ common::constants::PRECISION, data::{bounty::BountyRecord, protocol::update_editable_protocol_co...
  |                                                              ^^^^^^^^^^^^^^^^^^^^
  |
note: the name `BountyRecord` in the type namespace is supposed to be publicly re-exported here
 --> contracts/providers/deployables/bounty.rs:4:9
  |
4 |         data::bounty::*,
  |         ^^^^^^^^^^^^^^^
note: but the private item here shadows it
 --> contracts/providers/deployables/bounty.rs:1:62
  |
1 | use crate::providers::{ common::constants::PRECISION, data::{bounty::BountyRecord, protocol::update_editable_protocol_co...
  |                                                              ^^^^^^^^^^^^^^^^^^^^
  = note: `#[warn(hidden_glob_reexports)]` on by default

warning: ambiguous glob re-exports
 --> contracts/providers/deployables/bounty.rs:2:9
  |
2 |   pub use crate::{
  |  _________^
3 | |     providers::{
4 | |         data::bounty::*,
5 | |         common::{ roles::*, errors::ProtocolError, eunice::*, validator::* },
  | |                                                               ------------ but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
6 | |     },
7 | |     controllers::deployables::bounty::*,
8 | | };
  | |_^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here

warning: unused import: `env::call::ConstructorReturnType`
  --> contracts/providers/deployables/bounty.rs:10:54
   |
10 | use ink::{ prelude::vec::Vec, primitives::AccountId, env::call::ConstructorReturnType };
   |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `modifier_definition`
  --> contracts/providers/deployables/bounty.rs:12:5
   |
12 |     modifier_definition,
   |     ^^^^^^^^^^^^^^^^^^^

warning: unused imports: `constants::PRECISION`, `data::treasury::*`
 --> contracts/providers/deployables/treasury.rs:1:35
  |
1 | use crate::providers::{ common::{ constants::PRECISION, types::* }, data::treasury::* };
  |                                   ^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^^

warning: ambiguous glob re-exports
 --> contracts/providers/deployables/treasury.rs:2:9
  |
2 |   pub use crate::{
  |  _________^
3 | |     providers::{
4 | |         data::{ treasury::* },
5 | |         common::{ roles::*, errors::ProtocolError, eunice::*, validator::* },
  | |                                                               ------------ but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
6 | |     },
7 | |     controllers::deployables::treasury::*,
8 | | };
  | |_^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here

warning: unused import: `modifier_definition`
  --> contracts/providers/deployables/treasury.rs:13:5
   |
13 |     modifier_definition,
   |     ^^^^^^^^^^^^^^^^^^^

warning: unused imports: `constants::PRECISION`, `data::payment::*`, `types::*`
 --> contracts/providers/services/payment.rs:1:35
  |
1 | use crate::providers::{ common::{ constants::PRECISION, types::* }, data::payment::* };
  |                                   ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^    ^^^^^^^^^^^^^^^^

warning: ambiguous glob re-exports
 --> contracts/providers/services/payment.rs:2:9
  |
2 |   pub use crate::{
  |  _________^
3 | |     providers::{
4 | |         data::{ payment::* },
5 | |         common::{ roles::*, errors::ProtocolError, eunice::*, validator::* },
  | |                                                               ------------ but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
6 | |     },
7 | |     controllers::deployables::payment::*,
8 | | };
  | |_^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here

warning: unused import: `openbrush::traits::String`
 --> contracts/providers/services/payment.rs:9:5
  |
9 | use openbrush::traits::String;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `modifier_definition`
  --> contracts/providers/services/payment.rs:13:5
   |
13 |     modifier_definition,
   |     ^^^^^^^^^^^^^^^^^^^

warning: ambiguous glob re-exports
  --> contracts/providers/services/admin.rs:4:9
   |
4  |   pub use crate::
   |  _________^
5  | |     providers::{
6  | |         data::{ brand::*, a_reward::*, protocol::* },
7  | |         common::
...  |
10 | |         services::brands::*,
   | |         ------------------- but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
11 | |     }
   | |_____^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here

warning: unused imports: `CryptoHash`, `HashOutput`, `Keccak256`, `prelude::vec::Vec`
  --> contracts/providers/services/admin.rs:15:5
   |
15 |     prelude::vec::Vec,
   |     ^^^^^^^^^^^^^^^^^
16 |     primitives::AccountId,
17 |     env::hash::{ Keccak256, CryptoHash, HashOutput },
   |                  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^

warning: unused imports: `Balance`, `modifier_definition`, `psp22::*`, `psp22::extensions::metadata::*`, `psp34::Id`, `reentrancy_guard::*`
  --> contracts/providers/services/admin.rs:21:5
   |
21 |     modifier_definition,
   |     ^^^^^^^^^^^^^^^^^^^
...
24 |         traits::{ psp22::*, psp22::extensions::metadata::* },
   |                   ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
25 |         reentrancy_guard::*,
   |         ^^^^^^^^^^^^^^^^^^^
26 |         psp34::Id,
   |         ^^^^^^^^^
...
29 |     traits::{ Balance, Storage, String },
   |               ^^^^^^^

warning: unused import: `scale::KeyedVec`
  --> contracts/providers/services/admin.rs:31:5
   |
31 | use scale::KeyedVec;
   |     ^^^^^^^^^^^^^^^

warning: unused imports: `providers::data::brand`, `reward`, `treasury`
 --> contracts/providers/services/brands.rs:2:40
  |
2 | use crate::{controllers::deployables::{reward, treasury}, providers::data::brand};
  |                                        ^^^^^^  ^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^^

warning: unused imports: `CryptoHash`, `HashOutput`, `Keccak256`
  --> contracts/providers/services/brands.rs:24:18
   |
24 |     env::hash::{ Keccak256, CryptoHash, HashOutput },
   |                  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^

warning: unused imports: `modifier_definition`, `modifiers`, `psp22::PSP22TransferImpl`, `reentrancy_guard::*`
  --> contracts/providers/services/brands.rs:29:28
   |
29 |         access_control::*, psp22::PSP22TransferImpl, psp34::Id, reentrancy_guard::*, traits::psp22::{extensions::metada...
   |                            ^^^^^^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^^^^^^^^
30 |     }, modifier_definition, modifiers, traits::{ Balance, Storage, String }
   |        ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^

warning: unused import: `scale::KeyedVec`
  --> contracts/providers/services/brands.rs:32:5
   |
32 | use scale::KeyedVec;
   |     ^^^^^^^^^^^^^^^

warning: ambiguous glob re-exports
  --> contracts/providers/services/customers.rs:2:9
   |
2  |   pub use crate::{
   |  _________^
3  | |     providers::{
4  | |         data::{ brand::*, a_pool::*, a_reward::*, protocol::* },
5  | |         common::{
...  |
9  | |             validator::*,
   | |             ------------ but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
...  |
17 | |     },
18 | | };
   | |_^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here

warning: unused imports: `CryptoHash`, `HashOutput`, `Keccak256`
  --> contracts/providers/services/customers.rs:23:18
   |
23 |     env::hash::{ Keccak256, CryptoHash, HashOutput },
   |                  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^

warning: ambiguous glob re-exports
  --> contracts/providers/services/customers.rs:26:9
   |
26 |   pub use openbrush::{
   |  _________^
27 | |     modifier_definition,
28 | |     contracts::{
29 | |         access_control::*,
30 | |         traits::{ psp22::*, psp22::extensions::metadata::* },
   | |                   -------- but the name `extensions` in the type namespace is also re-exported here
...  |
35 | |     traits::{ Balance, Storage, String },
36 | | };
   | |_^ the name `extensions` in the type namespace is first re-exported here

warning: ambiguous glob re-exports
  --> contracts/providers/services/customers.rs:26:9
   |
26 |   pub use openbrush::{
   |  _________^
27 | |     modifier_definition,
28 | |     contracts::{
29 | |         access_control::*,
30 | |         traits::{ psp22::*, psp22::extensions::metadata::* },
31 | |         reentrancy_guard::*,
   | |         ------------------- but the name `Data` in the type namespace is also re-exported here
...  |
35 | |     traits::{ Balance, Storage, String },
36 | | };
   | |_^ the name `Data` in the type namespace is first re-exported here

warning: unused import: `scale::KeyedVec`
  --> contracts/providers/services/customers.rs:37:5
   |
37 | use scale::KeyedVec;
   |     ^^^^^^^^^^^^^^^

For more information about this error, try `rustc --explain E0554`.
warning: `global` (lib) generated 78 warnings
error: could not compile `global` (lib) due to 1 previous error; 78 warnings emitted

cargo +nightly test results in

> cargo +nightly test
warning: unused import: `psp22::PSP22Impl`
 --> contracts/controllers/deployables/reward.rs:5:8
  |
5 |     }, psp22::PSP22Impl},
  |        ^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused imports: `psp22::*` and `psp34::extensions::enumerable`
 --> contracts/controllers/deployables/a_pool.rs:2:46
  |
2 |     contracts::{traits::{ access_control::*, psp22::*, psp34::*, pausable::* }, psp34::extensions::enumerable},
  |                                              ^^^^^^^^                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `psp22::*`
 --> contracts/controllers/deployables/treasury.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::* },
  |                                             ^^^^^^^^

warning: unused import: `prelude::vec::Vec`
 --> contracts/controllers/deployables/treasury.rs:7:12
  |
7 | use ink::{ prelude::vec::Vec };
  |            ^^^^^^^^^^^^^^^^^

warning: unused import: `data::a_pool::*`
 --> contracts/controllers/deployables/treasury.rs:9:58
  |
9 | use crate::providers::{ common::{ errors::*, types::* }, data::a_pool::* };
  |                                                          ^^^^^^^^^^^^^^^

warning: unused import: `psp22::*`
 --> contracts/controllers/deployables/bounty.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::* },
  |                                             ^^^^^^^^

warning: unused import: `prelude::vec::Vec`
 --> contracts/controllers/deployables/bounty.rs:6:12
  |
6 | use ink::{ prelude::vec::Vec };
  |            ^^^^^^^^^^^^^^^^^

warning: unused import: `data::a_pool::*`
 --> contracts/controllers/deployables/bounty.rs:8:44
  |
8 | use crate::providers::{ common::errors::*, data::a_pool::* };
  |                                            ^^^^^^^^^^^^^^^

warning: unused import: `psp22::*`
 --> contracts/controllers/deployables/payment.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::* },
  |                                             ^^^^^^^^

warning: unused import: `openbrush::traits::String`
 --> contracts/controllers/deployables/payment.rs:5:5
  |
5 | use openbrush::traits::String;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `prelude::vec::Vec`
 --> contracts/controllers/deployables/payment.rs:7:12
  |
7 | use ink::{ prelude::vec::Vec };
  |            ^^^^^^^^^^^^^^^^^

warning: unused imports: `data::a_pool::*` and `types::*`
 --> contracts/controllers/deployables/payment.rs:9:46
  |
9 | use crate::providers::{ common::{ errors::*, types::* }, data::a_pool::* };
  |                                              ^^^^^^^^    ^^^^^^^^^^^^^^^

warning: unused imports: `Balance` and `psp22::*`
 --> contracts/controllers/deployables/pool_initiator.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::* },
  |                                             ^^^^^^^^
3 |     traits::{ AccountId, Balance },
  |                          ^^^^^^^

warning: unused import: `openbrush::traits::String`
 --> contracts/controllers/deployables/pool_initiator.rs:5:5
  |
5 | use openbrush::traits::String;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `errors::*`
  --> contracts/controllers/deployables/pool_initiator.rs:10:35
   |
10 | use crate::providers::{ common::{ errors::*, types::* }, data::a_pool::* };
   |                                   ^^^^^^^^^

warning: unused import: `psp22::*`
 --> contracts/controllers/deployables/reward_initiator.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::* },
  |                                             ^^^^^^^^

warning: unused import: `data::a_pool::*`
  --> contracts/controllers/deployables/reward_initiator.rs:10:58
   |
10 | use crate::providers::{ common::{ errors::*, types::* }, data::a_pool::* };
   |                                                          ^^^^^^^^^^^^^^^

warning: unused imports: `pausable::*` and `psp22::*`
 --> contracts/controllers/services/brands.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::*, psp34::*, pausable::* },
  |                                             ^^^^^^^^            ^^^^^^^^^^^

warning: unused import: `prelude::vec::Vec`
 --> contracts/controllers/services/brands.rs:8:12
  |
8 | use ink::{ prelude::vec::Vec };
  |            ^^^^^^^^^^^^^^^^^

warning: unused imports: `String`, `access_control::*`, `pausable::*`, `psp22::*`, and `psp34::*`
 --> contracts/controllers/services/customers.rs:2:26
  |
2 |     contracts::traits::{ access_control::*, psp22::*, psp34::*, pausable::* },
  |                          ^^^^^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^
3 |     traits::{ AccountId, Balance, String },
  |                                   ^^^^^^

warning: unused imports: `a_pool::*`, `a_reward::*`, and `brand::*`
 --> contracts/controllers/services/customers.rs:6:52
  |
6 | use crate::providers::{ common::errors::*, data::{ a_reward::*, brand::*, a_pool::* } };
  |                                                    ^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^

warning: unused imports: `Balance`, `pausable::*`, `psp22::*`, and `psp34::*`
 --> contracts/controllers/services/admin.rs:2:45
  |
2 |     contracts::traits::{ access_control::*, psp22::*, psp34::*, pausable::* },
  |                                             ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^
3 |     traits::{ AccountId, Balance, String },
  |                          ^^^^^^^

warning: unused imports: `a_pool::*`, `a_reward::*`, `brand::*`, and `treasury::*`
 --> contracts/controllers/services/admin.rs:6:64
  |
6 | ...rrors::*, types::*}, data::{ a_reward::*, brand::*, a_pool::*, protocol::*, treasury::* } };
  |                                 ^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^               ^^^^^^^^^^^

warning: type `BRAND_ID_TYPE` should have an upper camel case name
 --> contracts/providers/common/types.rs:1:10
  |
1 | pub type BRAND_ID_TYPE = [u8; 10];
  |          ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `BrandIdType`
  |
  = note: `#[warn(non_camel_case_types)]` on by default

warning: unused import: `storage::traits::StorageLayout`
 --> contracts/providers/common/context.rs:3:12
  |
3 | use ink::{ storage::traits::StorageLayout };
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/common/context.rs:4:5
  |
4 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `Decode`
 --> contracts/providers/common/roleguard.rs:6:13
  |
6 | use scale::{Decode, Encode};
  |             ^^^^^^

warning: unused imports: `env::hash::Keccak256` and `storage::Mapping`
 --> contracts/providers/common/roleguard.rs:7:11
  |
7 | use ink::{env::hash::Keccak256, prelude::{collections::BTreeMap, vec::Vec}, storage::Mapping};
  |           ^^^^^^^^^^^^^^^^^^^^                                              ^^^^^^^^^^^^^^^^

warning: unused import: `crate::controllers::services::admin`
  --> contracts/providers/common/roleguard.rs:10:5
   |
10 | use crate::controllers::services::admin;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/data/a_pool.rs:4:5
  |
4 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `AccountId`
 --> contracts/providers/data/a_position.rs:2:46
  |
2 | use openbrush::{ storage::Mapping, traits::{ AccountId, Balance}, contracts::traits::psp34::Id };
  |                                              ^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/data/a_position.rs:4:5
  |
4 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `core::clone`
 --> contracts/providers/data/a_reward.rs:1:5
  |
1 | use core::clone;
  |     ^^^^^^^^^^^

warning: unused import: `Balance`
 --> contracts/providers/data/a_reward.rs:3:37
  |
3 | use openbrush::traits::{ AccountId, Balance, String, Storage };
  |                                     ^^^^^^^

warning: unused import: `database::*`
 --> contracts/providers/data/a_reward.rs:5:33
  |
5 | use crate::providers::common::{ database::*, types::BRAND_ID_TYPE, errors::ProtocolError };
  |                                 ^^^^^^^^^^^

warning: unused import: `Balance`
 --> contracts/providers/data/brand.rs:1:37
  |
1 | use openbrush::traits::{ AccountId, Balance, Storage, String };
  |                                     ^^^^^^^

warning: unused imports: `database::*` and `errors::ProtocolError`
 --> contracts/providers/data/brand.rs:3:33
  |
3 | use crate::providers::common::{ database::*, errors::ProtocolError, types::* };
  |                                 ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `core::clone`
 --> contracts/providers/data/protocol.rs:1:5
  |
1 | use core::clone;
  |     ^^^^^^^^^^^

warning: unused import: `String`
 --> contracts/providers/data/protocol.rs:3:48
  |
3 | use openbrush::{ traits::{ AccountId, Balance, String, Storage } };
  |                                                ^^^^^^

warning: unused import: `Mapping`
 --> contracts/providers/data/protocol.rs:4:46
  |
4 | use ink::{ storage::{ traits::StorageLayout, Mapping } };
  |                                              ^^^^^^^

warning: unused import: `database::*`
 --> contracts/providers/data/protocol.rs:5:33
  |
5 | use crate::providers::common::{ database::*, types::* };
  |                                 ^^^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/data/bounty.rs:3:5
  |
3 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `database::*`
 --> contracts/providers/data/treasury.rs:3:33
  |
3 | use crate::providers::common::{ database::*, types::* };
  |                                 ^^^^^^^^^^^

warning: unused import: `traits::StorageLayout`
 --> contracts/providers/data/payment.rs:2:32
  |
2 | use ink::{ storage::{ Mapping, traits::StorageLayout } };
  |                                ^^^^^^^^^^^^^^^^^^^^^

warning: unused imports: `database::*` and `types::*`
 --> contracts/providers/data/payment.rs:3:33
  |
3 | use crate::providers::common::{ database::*, types::* };
  |                                 ^^^^^^^^^^^  ^^^^^^^^

warning: unused import: `Balance`
 --> contracts/providers/data/pool_initiator.rs:1:37
  |
1 | use openbrush::traits::{ AccountId, Balance };
  |                                     ^^^^^^^

warning: unused import: `traits::StorageLayout`
 --> contracts/providers/data/pool_initiator.rs:3:32
  |
3 | use ink::{ storage::{ Mapping, traits::StorageLayout } };
  |                                ^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/data/pool_initiator.rs:4:5
  |
4 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `Balance`
 --> contracts/providers/data/reward_initiator.rs:1:37
  |
1 | use openbrush::traits::{ AccountId, Balance };
  |                                     ^^^^^^^

warning: unused import: `traits::StorageLayout`
 --> contracts/providers/data/reward_initiator.rs:3:32
  |
3 | use ink::{ storage::{ Mapping, traits::StorageLayout } ,  prelude::vec::Vec,};
  |                                ^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::providers::common::database::*`
 --> contracts/providers/data/reward_initiator.rs:4:5
  |
4 | use crate::providers::common::database::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `openbrush::traits::String`
 --> contracts/providers/data/reward_initiator.rs:7:5
  |
7 | use openbrush::traits::String;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: ambiguous glob re-exports
  --> contracts/providers/deployables/a_pool.rs:2:9
   |
2  |   pub use crate::{
   |  _________^
3  | |     providers::{
4  | |         data::{ a_pool::*, a_position::* },
5  | |         common::context::*,
6  | |         deployables::a_pool,
7  | |         common::{ roles::*, errors::ProtocolError, eunice::*, validator::* },
   | |                                                               ------------ but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
8  | |     },
9  | |     controllers::deployables::a_pool::*,
10 | | };
   | |_^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here
   |
   = note: `#[warn(ambiguous_glob_reexports)]` on by default

warning: unused imports: `common::constants::PRECISION` and `protocol::update_editable_protocol_config`
 --> contracts/providers/deployables/bounty.rs:1:25
  |
1 | ...ders::{ common::constants::PRECISION, data::{bounty::BountyRecord, protocol::update_editable_protocol_config} };
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: private item shadows public glob re-export
 --> contracts/providers/deployables/bounty.rs:1:62
  |
1 | use crate::providers::{ common::constants::PRECISION, data::{bounty::BountyRecord, protocol::update_editable_protocol_co...
  |                                                              ^^^^^^^^^^^^^^^^^^^^
  |
note: the name `BountyRecord` in the type namespace is supposed to be publicly re-exported here
 --> contracts/providers/deployables/bounty.rs:4:9
  |
4 |         data::bounty::*,
  |         ^^^^^^^^^^^^^^^
note: but the private item here shadows it
 --> contracts/providers/deployables/bounty.rs:1:62
  |
1 | use crate::providers::{ common::constants::PRECISION, data::{bounty::BountyRecord, protocol::update_editable_protocol_co...
  |                                                              ^^^^^^^^^^^^^^^^^^^^
  = note: `#[warn(hidden_glob_reexports)]` on by default

warning: ambiguous glob re-exports
 --> contracts/providers/deployables/bounty.rs:2:9
  |
2 |   pub use crate::{
  |  _________^
3 | |     providers::{
4 | |         data::bounty::*,
5 | |         common::{ roles::*, errors::ProtocolError, eunice::*, validator::* },
  | |                                                               ------------ but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
6 | |     },
7 | |     controllers::deployables::bounty::*,
8 | | };
  | |_^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here

warning: unused import: `env::call::ConstructorReturnType`
  --> contracts/providers/deployables/bounty.rs:10:54
   |
10 | use ink::{ prelude::vec::Vec, primitives::AccountId, env::call::ConstructorReturnType };
   |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `modifier_definition`
  --> contracts/providers/deployables/bounty.rs:12:5
   |
12 |     modifier_definition,
   |     ^^^^^^^^^^^^^^^^^^^

warning: unused imports: `constants::PRECISION` and `data::treasury::*`
 --> contracts/providers/deployables/treasury.rs:1:35
  |
1 | use crate::providers::{ common::{ constants::PRECISION, types::* }, data::treasury::* };
  |                                   ^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^^

warning: ambiguous glob re-exports
 --> contracts/providers/deployables/treasury.rs:2:9
  |
2 |   pub use crate::{
  |  _________^
3 | |     providers::{
4 | |         data::{ treasury::* },
5 | |         common::{ roles::*, errors::ProtocolError, eunice::*, validator::* },
  | |                                                               ------------ but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
6 | |     },
7 | |     controllers::deployables::treasury::*,
8 | | };
  | |_^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here

warning: unused import: `modifier_definition`
  --> contracts/providers/deployables/treasury.rs:13:5
   |
13 |     modifier_definition,
   |     ^^^^^^^^^^^^^^^^^^^

warning: unused imports: `constants::PRECISION`, `data::payment::*`, and `types::*`
 --> contracts/providers/services/payment.rs:1:35
  |
1 | use crate::providers::{ common::{ constants::PRECISION, types::* }, data::payment::* };
  |                                   ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^    ^^^^^^^^^^^^^^^^

warning: ambiguous glob re-exports
 --> contracts/providers/services/payment.rs:2:9
  |
2 |   pub use crate::{
  |  _________^
3 | |     providers::{
4 | |         data::{ payment::* },
5 | |         common::{ roles::*, errors::ProtocolError, eunice::*, validator::* },
  | |                                                               ------------ but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
6 | |     },
7 | |     controllers::deployables::payment::*,
8 | | };
  | |_^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here

warning: unused import: `openbrush::traits::String`
 --> contracts/providers/services/payment.rs:9:5
  |
9 | use openbrush::traits::String;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `modifier_definition`
  --> contracts/providers/services/payment.rs:13:5
   |
13 |     modifier_definition,
   |     ^^^^^^^^^^^^^^^^^^^

warning: ambiguous glob re-exports
  --> contracts/providers/services/admin.rs:4:9
   |
4  |   pub use crate::
   |  _________^
5  | |     providers::{
6  | |         data::{ brand::*, a_reward::*, protocol::* },
7  | |         common::
...  |
10 | |         services::brands::*,
   | |         ------------------- but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
11 | |     }
   | |_____^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here

warning: unused imports: `CryptoHash`, `HashOutput`, `Keccak256`, and `prelude::vec::Vec`
  --> contracts/providers/services/admin.rs:15:5
   |
15 |     prelude::vec::Vec,
   |     ^^^^^^^^^^^^^^^^^
16 |     primitives::AccountId,
17 |     env::hash::{ Keccak256, CryptoHash, HashOutput },
   |                  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^

warning: unused imports: `Balance`, `modifier_definition`, `psp22::*`, `psp22::extensions::metadata::*`, `psp34::Id`, and `reentrancy_guard::*`
  --> contracts/providers/services/admin.rs:21:5
   |
21 |     modifier_definition,
   |     ^^^^^^^^^^^^^^^^^^^
...
24 |         traits::{ psp22::*, psp22::extensions::metadata::* },
   |                   ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
25 |         reentrancy_guard::*,
   |         ^^^^^^^^^^^^^^^^^^^
26 |         psp34::Id,
   |         ^^^^^^^^^
...
29 |     traits::{ Balance, Storage, String },
   |               ^^^^^^^

warning: unused import: `scale::KeyedVec`
  --> contracts/providers/services/admin.rs:31:5
   |
31 | use scale::KeyedVec;
   |     ^^^^^^^^^^^^^^^

warning: unused imports: `providers::data::brand`, `reward`, and `treasury`
 --> contracts/providers/services/brands.rs:2:40
  |
2 | use crate::{controllers::deployables::{reward, treasury}, providers::data::brand};
  |                                        ^^^^^^  ^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^^

warning: unused imports: `CryptoHash`, `HashOutput`, and `Keccak256`
  --> contracts/providers/services/brands.rs:24:18
   |
24 |     env::hash::{ Keccak256, CryptoHash, HashOutput },
   |                  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^

warning: unused imports: `modifier_definition`, `modifiers`, `psp22::PSP22TransferImpl`, and `reentrancy_guard::*`
  --> contracts/providers/services/brands.rs:29:28
   |
29 |         access_control::*, psp22::PSP22TransferImpl, psp34::Id, reentrancy_guard::*, traits::psp22::{extensions::metada...
   |                            ^^^^^^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^^^^^^^^
30 |     }, modifier_definition, modifiers, traits::{ Balance, Storage, String }
   |        ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^

warning: unused import: `scale::KeyedVec`
  --> contracts/providers/services/brands.rs:32:5
   |
32 | use scale::KeyedVec;
   |     ^^^^^^^^^^^^^^^

warning: ambiguous glob re-exports
  --> contracts/providers/services/customers.rs:2:9
   |
2  |   pub use crate::{
   |  _________^
3  | |     providers::{
4  | |         data::{ brand::*, a_pool::*, a_reward::*, protocol::* },
5  | |         common::{
...  |
9  | |             validator::*,
   | |             ------------ but the name `ZERO_ADDRESS` in the value namespace is also re-exported here
...  |
17 | |     },
18 | | };
   | |_^ the name `ZERO_ADDRESS` in the value namespace is first re-exported here

warning: unused imports: `CryptoHash`, `HashOutput`, and `Keccak256`
  --> contracts/providers/services/customers.rs:23:18
   |
23 |     env::hash::{ Keccak256, CryptoHash, HashOutput },
   |                  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^

warning: ambiguous glob re-exports
  --> contracts/providers/services/customers.rs:26:9
   |
26 |   pub use openbrush::{
   |  _________^
27 | |     modifier_definition,
28 | |     contracts::{
29 | |         access_control::*,
30 | |         traits::{ psp22::*, psp22::extensions::metadata::* },
   | |                   -------- but the name `extensions` in the type namespace is also re-exported here
...  |
35 | |     traits::{ Balance, Storage, String },
36 | | };
   | |_^ the name `extensions` in the type namespace is first re-exported here

warning: ambiguous glob re-exports
  --> contracts/providers/services/customers.rs:26:9
   |
26 |   pub use openbrush::{
   |  _________^
27 | |     modifier_definition,
28 | |     contracts::{
29 | |         access_control::*,
30 | |         traits::{ psp22::*, psp22::extensions::metadata::* },
31 | |         reentrancy_guard::*,
   | |         ------------------- but the name `Data` in the type namespace is also re-exported here
...  |
35 | |     traits::{ Balance, Storage, String },
36 | | };
   | |_^ the name `Data` in the type namespace is first re-exported here

warning: unused import: `scale::KeyedVec`
  --> contracts/providers/services/customers.rs:37:5
   |
37 | use scale::KeyedVec;
   |     ^^^^^^^^^^^^^^^

warning: unused variable: `brand`
  --> contracts/providers/common/validator.rs:61:34
   |
61 | pub fn ensure_brand_is_not_empty(brand: BRAND_ID_TYPE) -> Result<(), ProtocolError> {
   |                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_brand`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: value assigned to `withdrawable_me_amount` is never read
   --> contracts/providers/deployables/a_pool.rs:233:17
    |
233 |         let mut withdrawable_me_amount: Balance = 0;
    |                 ^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: maybe it is overwritten before being read?
    = note: `#[warn(unused_assignments)]` on by default

warning: variable does not need to be mutable
   --> contracts/providers/deployables/a_pool.rs:902:13
    |
902 | ...   let mut slippage = if slippage_in_precision == 0 {config.default_slippage_in_precision} else{slippage_in_precisi...
    |           ----^^^^^^^^
    |           |
    |           help: remove this `mut`
    |
    = note: `#[warn(unused_mut)]` on by default

warning: value assigned to `reward_amount_to_withdraw` is never read
    --> contracts/providers/deployables/a_pool.rs:1024:13
     |
1024 |     let mut reward_amount_to_withdraw = 0;
     |             ^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = help: maybe it is overwritten before being read?

warning: value assigned to `reward_amount_to_withdraw_a` is never read
    --> contracts/providers/deployables/a_pool.rs:1058:13
     |
1058 |     let mut reward_amount_to_withdraw_a = 0;
     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = help: maybe it is overwritten before being read?

warning: value assigned to `reward_amount_to_withdraw_b` is never read
    --> contracts/providers/deployables/a_pool.rs:1059:13
     |
1059 |     let mut reward_amount_to_withdraw_b = 0;
     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = help: maybe it is overwritten before being read?

warning: value assigned to `me_amount_to_withdraw_a` is never read
    --> contracts/providers/deployables/a_pool.rs:1060:13
     |
1060 |     let mut me_amount_to_withdraw_a = 0;
     |             ^^^^^^^^^^^^^^^^^^^^^^^
     |
     = help: maybe it is overwritten before being read?

warning: value assigned to `me_amount_to_withdraw_b` is never read
    --> contracts/providers/deployables/a_pool.rs:1061:13
     |
1061 |     let mut me_amount_to_withdraw_b = 0;
     |             ^^^^^^^^^^^^^^^^^^^^^^^
     |
     = help: maybe it is overwritten before being read?

warning: unused variable: `metadata`
  --> contracts/providers/deployables/treasury.rs:35:9
   |
35 |         metadata: Option<String>
   |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata`

warning: unused variable: `metadata`
  --> contracts/providers/deployables/treasury.rs:78:9
   |
78 |         metadata: Option<String>
   |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata`

warning: unused variable: `metadata`
   --> contracts/providers/deployables/treasury.rs:132:9
    |
132 |         metadata: Option<String>
    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata`

warning: unused variable: `metadata`
   --> contracts/providers/deployables/treasury.rs:159:9
    |
159 |         metadata: Option<String>
    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata`

warning: unused variable: `requestor`
   --> contracts/providers/deployables/treasury.rs:194:9
    |
194 |         requestor: AccountId
    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_requestor`

warning: unused variable: `requestor`
   --> contracts/providers/deployables/treasury.rs:212:39
    |
212 |     fn get_me_notify_limit(&mut self, requestor: AccountId) -> Result<Balance, ProtocolError> {
    |                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_requestor`

warning: unused variable: `requestor`
   --> contracts/providers/services/brands.rs:276:13
    |
276 |         let requestor = Self::env().caller();
    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_requestor`

warning: unused variable: `requestor`
   --> contracts/providers/services/brands.rs:292:13
    |
292 |         let requestor = Self::env().caller();
    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_requestor`

warning: unused variable: `position`
   --> contracts/providers/services/brands.rs:353:13
    |
353 |         let position = match is_empty_positions(&existing_positions) {
    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`

warning: unused variable: `requestor_id`
   --> contracts/providers/services/brands.rs:383:10
    |
383 |      let requestor_id = self.data::<BrandRecords>().id.get(requestor).unwrap_or_default();
    |          ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_requestor_id`

warning: unused variable: `position`
   --> contracts/providers/services/brands.rs:391:10
    |
391 |      let position = match is_empty_positions(&existing_positions) {
    |          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`

warning: unused variable: `position`
   --> contracts/providers/services/brands.rs:423:11
    |
423 |       let position = match is_empty_positions(&existing_positions) {
    |           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`

warning: unused variable: `requestor_id`
   --> contracts/providers/services/brands.rs:463:13
    |
463 |         let requestor_id = self.data::<BrandRecords>().id.get(requestor).unwrap_or_default();
    |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_requestor_id`

warning: variable does not need to be mutable
   --> contracts/providers/services/brands.rs:530:13
    |
530 |         let mut  brand_id = brand_record.id.get(&requestor).unwrap_or_default();
    |             -----^^^^^^^^
    |             |
    |             help: remove this `mut`

warning: unused variable: `auto_resume_conversations`
   --> contracts/providers/services/brands.rs:564:9
    |
564 |         auto_resume_conversations: bool
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auto_resume_conversations`

warning: unused variable: `position`
   --> contracts/providers/services/brands.rs:683:9
    |
683 |         position: u128,
    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`

warning: function `bytes_to_string` is never used
   --> contracts/providers/common/roleguard.rs:415:4
    |
415 | fn bytes_to_string(bytes: &[u8]) -> String {
    |    ^^^^^^^^^^^^^^^
    |
    = note: `#[warn(dead_code)]` on by default

warning: unused `Result` that must be used
   --> contracts/providers/deployables/a_pool.rs:908:9
    |
908 |         ensure_value_is_not_zero(reward_amount);
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: this `Result` may be an `Err` variant, which should be handled
    = note: `#[warn(unused_must_use)]` on by default
help: use `let _ = ...` to ignore the resulting value
    |
908 |         let _ = ensure_value_is_not_zero(reward_amount);
    |         +++++++

warning: `global` (lib) generated 104 warnings (run `cargo fix --lib -p global` to apply 70 suggestions)
warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/deployables/pool/pool.rs:74:5
   |
74 | /     #[derive(Default, Storage)]
75 | |     pub struct Pool {
76 | |         #[storage_field]
77 | |         pub pool_state: PoolState,
...  |
95 | |         pub guard: reentrancy_guard::Data,
96 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
   --> contracts/modules/deployables/pool/pool.rs:307:9
    |
307 | /         pub fn new( 
308 | |             reward: AccountId, 
309 | |             me_token: AccountId,  
310 | |             config: PoolSetUpConfig 
...   |
350 | |             instance 
351 | |         } 
    | |_________^
    |
    = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
    = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: unused import: `common::roles::*`
  --> contracts/modules/deployables/pool/pool.rs:66:9
   |
66 |         common::roles::*,
   |         ^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

warning: unused import: `traits::ownable`
  --> contracts/modules/deployables/pool/pool.rs:69:112
   |
69 | ...sions::enumerable::*, self}, reentrancy_guard::*, traits::ownable },
   |                                                      ^^^^^^^^^^^^^^^

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/deployables/pool/pool.rs:74:5
   |
74 | /     #[derive(Default, Storage)]
75 | |     pub struct Pool {
76 | |         #[storage_field]
77 | |         pub pool_state: PoolState,
...  |
95 | |         pub guard: reentrancy_guard::Data,
96 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/deployables/reward/reward.rs:20:5
   |
20 | /     #[derive(Default, Storage)]
21 | |     pub struct Reward {
22 | |         #[storage_field]
23 | |         psp22: psp22::Data,
...  |
27 | |         metadata: metadata::Data,
28 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
   --> contracts/modules/deployables/reward/reward.rs:93:9
    |
93  | /         pub fn new(
94  | |             brand: AccountId,
95  | |             name: Option<String>,
96  | |             symbol: Option<String>,
...   |
106 | |             instance
107 | |         }
    | |_________^
    |
    = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
    = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: unused imports: `access_control::Internal` and `burnable::*`
  --> contracts/modules/deployables/reward/reward.rs:14:97
   |
14 | ...sions::{ mintable::*, metadata::*, burnable::* }, self}, access_control::Internal },
   |                                       ^^^^^^^^^^^           ^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/deployables/reward/reward.rs:20:5
   |
20 | /     #[derive(Default, Storage)]
21 | |     pub struct Reward {
22 | |         #[storage_field]
23 | |         psp22: psp22::Data,
...  |
27 | |         metadata: metadata::Data,
28 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/peripherals/treasury/treasury.rs:51:5
   |
51 | /     #[derive(Default, Storage)]
52 | |     pub struct Treasury {
53 | |         
54 | |         #[storage_field]
...  |
61 | |         pub guard: reentrancy_guard::Data,
62 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
   --> contracts/modules/peripherals/treasury/treasury.rs:175:9
    |
175 | /         pub fn new(me_token: AccountId) -> Self {
176 | |             let mut instance = Self::default();
177 | |             let caller = instance.env().caller();
...   |
185 | |             instance
186 | |         }
    | |_________^
    |
    = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
    = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/peripherals/treasury/treasury.rs:51:5
   |
51 | /     #[derive(Default, Storage)]
52 | |     pub struct Treasury {
53 | |         
54 | |         #[storage_field]
...  |
61 | |         pub guard: reentrancy_guard::Data,
62 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/peripherals/votes/votes.rs:9:5
   |
9  | /     #[derive(Default, Storage)]
10 | |     pub struct Contract {
11 | |         #[storage_field]
12 | |         psp22: psp22::Data,
...  |
17 | |         mock_timestamp: Timestamp,
18 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
  --> contracts/modules/peripherals/votes/votes.rs:22:9
   |
22 | /         pub fn new(total_supply: Balance) -> Self {
23 | |             let mut instance = Self::default();
24 | |
25 | |             psp22::Internal::_mint_to(&mut instance, Self::env().caller(), total_supply).expect("Should mint");
...  |
29 | |             instance
30 | |         }
   | |_________^
   |
   = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/peripherals/votes/votes.rs:9:5
   |
9  | /     #[derive(Default, Storage)]
10 | |     pub struct Contract {
11 | |         #[storage_field]
12 | |         psp22: psp22::Data,
...  |
17 | |         mock_timestamp: Timestamp,
18 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/peripherals/governance/governance.rs:10:5
   |
10 | /     #[derive(Default, Storage)]
11 | |     pub struct Contract {
12 | |         #[storage_field]
13 | |         governor: governor::Data,
...  |
22 | |         mock_timestamp: Timestamp,
23 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
  --> contracts/modules/peripherals/governance/governance.rs:27:9
   |
27 | /         pub fn new(
28 | |             token: AccountId,
29 | |             voting_delay: u64,
30 | |             voting_period: u64,
...  |
43 | |             instance
44 | |         }
   | |_________^
   |
   = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/peripherals/governance/governance.rs:10:5
   |
10 | /     #[derive(Default, Storage)]
11 | |     pub struct Contract {
12 | |         #[storage_field]
13 | |         governor: governor::Data,
...  |
22 | |         mock_timestamp: Timestamp,
23 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/services/payment/payment.rs:33:5
   |
33 | /     #[derive(Default, Storage)]
34 | |     pub struct Payment {
35 | |         #[storage_field]
36 | |         pub payment_state: PaymentStorage,
...  |
42 | |         pub guard: reentrancy_guard::Data,
43 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
   --> contracts/modules/services/payment/payment.rs:109:9
    |
109 | /         pub fn new(me_token: AccountId) -> Self {
110 | |             let mut instance = Self::default();
111 | |             let caller = instance.env().caller();
...   |
119 | |             instance
120 | |         }
    | |_________^
    |
    = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
    = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/services/payment/payment.rs:33:5
   |
33 | /     #[derive(Default, Storage)]
34 | |     pub struct Payment {
35 | |         #[storage_field]
36 | |         pub payment_state: PaymentStorage,
...  |
42 | |         pub guard: reentrancy_guard::Data,
43 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/peripherals/bounty/bounty.rs:45:5
   |
45 | /     #[derive(Default, Storage)]
46 | |     pub struct Bounty {
47 | |
48 | |         #[storage_field]
...  |
55 | |         pub guard: reentrancy_guard::Data,
56 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
   --> contracts/modules/peripherals/bounty/bounty.rs:114:9
    |
114 | /         pub fn new(me_token: AccountId,) -> Self {
115 | |             let mut instance = Self::default();
116 | |             let caller = instance.env().caller();
...   |
126 | |             instance
127 | |         }
    | |_________^
    |
    = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
    = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/peripherals/bounty/bounty.rs:45:5
   |
45 | /     #[derive(Default, Storage)]
46 | |     pub struct Bounty {
47 | |
48 | |         #[storage_field]
...  |
55 | |         pub guard: reentrancy_guard::Data,
56 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/services/oracle/oracle.rs:20:5
   |
20 | /     pub struct Oracle {
21 | |         started: bool,
22 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
  --> contracts/modules/services/oracle/oracle.rs:27:9
   |
27 | /         pub fn new(init_started: bool) -> Self {
28 | |             Self { started: init_started }
29 | |         }
   | |_________^
   |
   = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/services/oracle/oracle.rs:20:5
   |
20 | /     pub struct Oracle {
21 | |         started: bool,
22 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: `pool` (lib) generated 5 warnings (run `cargo fix --lib -p pool` to apply 2 suggestions)
warning: `reward` (lib) generated 4 warnings (run `cargo fix --lib -p reward` to apply 1 suggestion)
warning: `treasury` (lib) generated 3 warnings
warning: `votes` (lib) generated 3 warnings
warning: `governance` (lib) generated 3 warnings
warning: `payment` (lib) generated 3 warnings
warning: `bounty` (lib) generated 3 warnings
warning: `oracle` (lib) generated 3 warnings
warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/deployables/reward_initiator/reward_initiator.rs:24:5
   |
24 | /     #[derive(Default, Storage)]
25 | |     pub struct RewardInitiator {
26 | |         #[storage_field]
27 | |         pub reward_initiator_storage: RewardInitiatorStorage,
...  |
30 | |         pub access: access_control::Data,
31 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
   --> contracts/modules/deployables/reward_initiator/reward_initiator.rs:94:9
    |
94  | /         pub fn new(hash: Hash) -> Self {
95  | |             let mut instance = Self::default();
96  | |
97  | |             let caller = instance.env().caller();
...   |
105 | |             instance
106 | |         }
    | |_________^
    |
    = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
    = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: unused import: `ink::env`
  --> contracts/modules/deployables/reward_initiator/reward_initiator.rs:19:9
   |
19 |     use ink::env;
   |         ^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/deployables/reward_initiator/reward_initiator.rs:24:5
   |
24 | /     #[derive(Default, Storage)]
25 | |     pub struct RewardInitiator {
26 | |         #[storage_field]
27 | |         pub reward_initiator_storage: RewardInitiatorStorage,
...  |
30 | |         pub access: access_control::Data,
31 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/deployables/pool_initiator/pool_initiator.rs:24:5
   |
24 | /     #[derive(Default, Storage)]
25 | |     pub struct PoolInitiator {
26 | |         #[storage_field]
27 | |         pub pool_initiator_storage: PoolInitiatorStorage,
...  |
30 | |         pub access: access_control::Data,
31 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
   --> contracts/modules/deployables/pool_initiator/pool_initiator.rs:88:9
    |
88  | /         pub fn new( hash: Hash) -> Self {
89  | |            let mut instance = Self::default();
90  | |
91  | |            let caller = instance.env().caller();
...   |
99  | |            instance
100 | |         }
    | |_________^
    |
    = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
    = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: unused import: `brand`
 --> contracts/modules/deployables/pool_initiator/pool_initiator.rs:7:57
  |
7 |     use global::providers::{data::{pool_initiator::{*}, brand},services::{ payment::ProtocolError}, common::types::BRAND...
  |                                                         ^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: private item shadows public glob re-export
  --> contracts/modules/deployables/pool_initiator/pool_initiator.rs:7:76
   |
7  |     use global::providers::{data::{pool_initiator::{*}, brand},services::{ payment::ProtocolError}, common::types::BRAN...
   |                                                                            ^^^^^^^^^^^^^^^^^^^^^^
   |
note: the name `ProtocolError` in the type namespace is supposed to be publicly re-exported here
  --> contracts/modules/deployables/pool_initiator/pool_initiator.rs:13:33
   |
13 | ...   deployables::{a_pool::{ *, PoolSetUpConfig, PoolConfig, POOL_ADMIN, POOL_MANAGER, PoolImpl }, bounty::{OPEN_REWAR...
   |                               ^
note: but the private item here shadows it
  --> contracts/modules/deployables/pool_initiator/pool_initiator.rs:7:76
   |
7  |     use global::providers::{data::{pool_initiator::{*}, brand},services::{ payment::ProtocolError}, common::types::BRAN...
   |                                                                            ^^^^^^^^^^^^^^^^^^^^^^
   = note: `#[warn(hidden_glob_reexports)]` on by default

warning: unused import: `common::roles::*`
  --> contracts/modules/deployables/pool_initiator/pool_initiator.rs:14:9
   |
14 |         common::roles::*,
   |         ^^^^^^^^^^^^^^^^

warning: unused import: `ink::env`
  --> contracts/modules/deployables/pool_initiator/pool_initiator.rs:21:9
   |
21 |     use ink::env;
   |         ^^^^^^^^

warning: unused import: `global::controllers::deployables::pool_initiator`
  --> contracts/modules/deployables/pool_initiator/pool_initiator.rs:10:9
   |
10 |     use global::controllers::deployables::pool_initiator::*;
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/deployables/pool_initiator/pool_initiator.rs:24:5
   |
24 | /     #[derive(Default, Storage)]
25 | |     pub struct PoolInitiator {
26 | |         #[storage_field]
27 | |         pub pool_initiator_storage: PoolInitiatorStorage,
...  |
30 | |         pub access: access_control::Data,
31 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
  --> contracts/modules/services/services/services.rs:23:5
   |
23 | /     #[derive(Default, Storage)]
24 | |     pub struct Services {
25 | |
26 | |         #[storage_field]
...  |
46 | |
47 | |     }
   | |_____^
   |
   = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
   = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
   --> contracts/modules/services/services/services.rs:349:9
    |
349 | /         pub fn new() -> Self {
350 | |
351 | |             let mut instance = Self::default(); 
...   |
363 | |             instance
364 | |         }
    | |_________^
    |
    = note: expected values for `feature` are: `default`, `ink-as-dependency`, `scale-info`, and `std`
    = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: unused import: `prelude::vec::Vec`
 --> contracts/modules/services/services/services.rs:7:16
  |
7 |     use ink::{ prelude::vec::Vec};
  |                ^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `controllers::services::customers`
 --> contracts/modules/services/services/services.rs:8:18
  |
8 |     use global::{controllers::services::customers, providers::{common::roleguard::RecordStorage, data::{a_reward::Reward...
  |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `*`
  --> contracts/modules/services/services/services.rs:10:38
   |
10 |         contracts::{access_control::{*, self}, governance::{*}},
   |                                      ^

warning: non-local `impl` definition, they should be avoided as they go against expectation
  --> contracts/modules/services/services/services.rs:23:5
   |
23 | /     #[derive(Default, Storage)]
24 | |     pub struct Services {
25 | |
26 | |         #[storage_field]
...  |
46 | |
47 | |     }
   | |_____^
   |
   = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
   = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
   = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
   = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
   = note: `#[warn(non_local_definitions)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Storage`
 --> contracts/modules/peripherals/receiver/receiver.rs:6:5
  |
6 | /     pub struct Receiver {
7 | |         pub some_value: u32,
8 | |     }
  | |_____^
  |
  = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
  = help: consider adding `__ink_dylint_Storage` as a feature in `Cargo.toml`
  = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
  = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
  --> contracts/modules/peripherals/receiver/receiver.rs:12:9
   |
12 | /         pub fn new() -> Self {
13 | |             Self { some_value: 0 }
14 | |         }
   | |_________^
   |
   = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: unexpected `cfg` condition value: `__ink_dylint_Constructor`
  --> contracts/modules/peripherals/receiver/receiver.rs:16:9
   |
16 | /         pub fn default() -> Self {
17 | |             Self::new()
18 | |         }
   | |_________^
   |
   = note: expected values for `feature` are: `default`, `e2e-tests`, `ink-as-dependency`, `scale-info`, and `std`
   = help: consider adding `__ink_dylint_Constructor` as a feature in `Cargo.toml`
   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration

warning: non-local `impl` definition, they should be avoided as they go against expectation
 --> contracts/modules/peripherals/receiver/receiver.rs:6:5
  |
6 | /     pub struct Receiver {
7 | |         pub some_value: u32,
8 | |     }
  | |_____^
  |
  = help: move this `impl` block outside the of the current constant `_` and up 2 bodies
  = note: an `impl` definition is non-local if it is nested inside an item and may impact type checking outside of that item. This can be the case if neither the trait or the self type are at the same nesting level as the `impl`
  = note: one exception to the rule are anon-const (`const _: () = { ... }`) at top-level module and anon-const at the same nesting as the trait or type
  = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
  = note: `#[warn(non_local_definitions)]` on by default

warning: `reward_initiator` (lib) generated 4 warnings (run `cargo fix --lib -p reward_initiator` to apply 1 suggestion)
warning: `pool_initiator` (lib) generated 8 warnings (run `cargo fix --lib -p pool_initiator` to apply 3 suggestions)
warning: `services` (lib) generated 6 warnings (run `cargo fix --lib -p services` to apply 3 suggestions)
warning: `receiver` (lib) generated 4 warnings
warning: unused import: `ink::primitives::Hash`
 --> tests/treasury.rs:8:9
  |
8 |     use ink::primitives::Hash;
  |         ^^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused imports: `eunice::*`, `roles::*`, and `validator::*`
  --> tests/treasury.rs:10:40
   |
10 |     use global::providers::  common::{ roles::*, errors::ProtocolError, eunice::*, validator::* };
   |                                        ^^^^^^^^                         ^^^^^^^^^  ^^^^^^^^^^^^

warning: unused imports: `AccountId` and `Balance`
  --> tests/treasury.rs:11:47
   |
11 |     use openbrush::{ test_utils::*, traits::{ AccountId, Balance } };
   |                                               ^^^^^^^^^  ^^^^^^^

warning: unused import: `providers::data::treasury::*`
  --> tests/treasury.rs:12:19
   |
12 |     use global::{ providers::data::treasury::* };
   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused variable: `b`
  --> tests/treasury.rs:20:13
   |
20 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: unused variable: `b`
  --> tests/treasury.rs:30:13
   |
30 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused variable: `id`
  --> tests/treasury.rs:43:13
   |
43 |         let id: BRAND_ID_TYPE = [0; 10];
   |             ^^ help: if this is intentional, prefix it with an underscore: `_id`

warning: unused variable: `b`
  --> tests/treasury.rs:51:13
   |
51 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused variable: `id`
  --> tests/treasury.rs:53:13
   |
53 |         let id: BRAND_ID_TYPE = [0; 10];
   |             ^^ help: if this is intentional, prefix it with an underscore: `_id`

warning: unused variable: `b`
  --> tests/treasury.rs:62:13
   |
62 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused import: `ink::primitives::Hash`
 --> tests/bounty.rs:8:9
  |
8 |     use ink::primitives::Hash;
  |         ^^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `providers::data::bounty::*`
  --> tests/bounty.rs:10:19
   |
10 |     use global::{ providers::data::bounty::* };
   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused imports: `eunice::*`, `roles::*`, and `validator::*`
  --> tests/bounty.rs:11:40
   |
11 |     use global::providers::  common::{ roles::*, errors::ProtocolError, eunice::*, validator::* };
   |                                        ^^^^^^^^                         ^^^^^^^^^  ^^^^^^^^^^^^

warning: unused imports: `AccountId` and `Balance`
  --> tests/bounty.rs:12:47
   |
12 |     use openbrush::{ test_utils::*, traits::{ AccountId, Balance } };
   |                                               ^^^^^^^^^  ^^^^^^^

warning: unused import: `providers::data::bounty::*`
  --> tests/bounty.rs:13:19
   |
13 |     use global::{ providers::data::bounty::* };
   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused variable: `b`
  --> tests/bounty.rs:21:13
   |
21 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: unused import: `providers::data::a_pool::*`
 --> tests/pool.rs:9:19
  |
9 |     use global::{ providers::data::a_pool::* };
  |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused imports: `eunice::*`, `roles::*`, and `validator::*`
  --> tests/pool.rs:10:40
   |
10 |     use global::providers::  common::{ roles::*, errors::ProtocolError, eunice::*, validator::* };
   |                                        ^^^^^^^^                         ^^^^^^^^^  ^^^^^^^^^^^^

warning: unused imports: `AccountId` and `Balance`
  --> tests/pool.rs:11:47
   |
11 |     use openbrush::{ test_utils::*, traits::{ AccountId, Balance } };
   |                                               ^^^^^^^^^  ^^^^^^^

warning: variable does not need to be mutable
  --> tests/pool.rs:20:13
   |
20 |         let mut  pool = Pool::new(
   |             -----^^^^
   |             |
   |             help: remove this `mut`
   |
   = note: `#[warn(unused_mut)]` on by default

warning: unused import: `providers::data::a_pool::*`
  --> tests/pool_initiator.rs:13:19
   |
13 |     use global::{ providers::data::a_pool::* };
   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

warning: unused imports: `errors::ProtocolError`, `eunice::*`, `roles::*`, and `validator::*`
  --> tests/pool_initiator.rs:14:40
   |
14 |     use global::providers::  common::{ roles::*, errors::ProtocolError, eunice::*, validator::* };
   |                                        ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^

warning: unused imports: `AccountId` and `Balance`
  --> tests/pool_initiator.rs:16:47
   |
16 |     use openbrush::{ test_utils::*, traits::{ AccountId, Balance } };
   |                                               ^^^^^^^^^  ^^^^^^^

warning: unused variable: `a`
  --> tests/pool_initiator.rs:23:13
   |
23 |         let a = accounts.bob;
   |             ^ help: if this is intentional, prefix it with an underscore: `_a`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: unused variable: `b`
  --> tests/pool_initiator.rs:24:13
   |
24 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused variable: `a`
  --> tests/pool_initiator.rs:43:13
   |
43 |         let a = accounts.bob;
   |             ^ help: if this is intentional, prefix it with an underscore: `_a`

warning: unused variable: `b`
  --> tests/pool_initiator.rs:44:13
   |
44 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused variable: `a`
  --> tests/pool_initiator.rs:76:13
   |
76 |         let a = accounts.bob;
   |             ^ help: if this is intentional, prefix it with an underscore: `_a`

warning: unused variable: `b`
  --> tests/pool_initiator.rs:77:13
   |
77 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused variable: `pool_config`
  --> tests/pool_initiator.rs:90:13
   |
90 |         let pool_config=  PoolSetUpConfig {
   |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pool_config`

warning: unused variable: `emitted_events`
  --> tests/reward_.rs:71:13
   |
71 |         let emitted_events = ink::env::test::recorded_events().collect::<Vec<_>>();
   |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_emitted_events`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: type alias `Event` is never used
  --> tests/reward_.rs:19:10
   |
19 |     type Event = <Reward as ::ink::reflect::ContractEventBase>::Type;
   |          ^^^^^
   |
   = note: `#[warn(dead_code)]` on by default

warning: function `assert_transfer_event` is never used
  --> tests/reward_.rs:21:8
   |
21 |     fn assert_transfer_event(
   |        ^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `ink::primitives::Hash`
 --> tests/payment.rs:8:9
  |
8 |     use ink::primitives::Hash;
  |         ^^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `providers::data::payment::*`
  --> tests/payment.rs:10:19
   |
10 |     use global::{ providers::data::payment::* };
   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused imports: `eunice::*`, `roles::*`, and `validator::*`
  --> tests/payment.rs:11:40
   |
11 |     use global::providers::  common::{ roles::*, errors::ProtocolError, eunice::*, validator::* };
   |                                        ^^^^^^^^                         ^^^^^^^^^  ^^^^^^^^^^^^

warning: unused imports: `AccountId` and `Balance`
  --> tests/payment.rs:12:47
   |
12 |     use openbrush::{ test_utils::*, traits::{ AccountId, Balance } };
   |                                               ^^^^^^^^^  ^^^^^^^

warning: unused import: `providers::data::payment::*`
  --> tests/payment.rs:13:19
   |
13 |     use global::{ providers::data::payment::* };
   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused variable: `b`
  --> tests/payment.rs:21:13
   |
21 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: unused variable: `b`
  --> tests/payment.rs:35:13
   |
35 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused variable: `b`
  --> tests/payment.rs:45:13
   |
45 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused variable: `b`
  --> tests/payment.rs:55:13
   |
55 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused variable: `b`
  --> tests/payment.rs:65:13
   |
65 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused variable: `b`
  --> tests/payment.rs:76:13
   |
76 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

   Compiling meprotocol v0.1.0 (/me-protocol/rusty-protocol-v0.1)
warning: `meprotocol` (test "treasury") generated 10 warnings (run `cargo fix --test "treasury"` to apply 4 suggestions)
warning: `meprotocol` (test "bounty") generated 6 warnings (run `cargo fix --test "bounty"` to apply 5 suggestions)
warning: `meprotocol` (test "pool") generated 4 warnings (run `cargo fix --test "pool"` to apply 4 suggestions)
warning: `meprotocol` (test "pool_initiator") generated 10 warnings (run `cargo fix --test "pool_initiator"` to apply 3 suggestions)
warning: `meprotocol` (test "reward_") generated 3 warnings
warning: `meprotocol` (test "payment") generated 11 warnings (run `cargo fix --test "payment"` to apply 5 suggestions)
error[E0599]: no method named `get_pool_hash` found for struct `reward_initiator::reward_initiator::RewardInitiator` in the current scope
  --> tests/reward_initiator.rs:35:37
   |
35 |         assert_eq!(reward_initiator.get_pool_hash(), hash);
   |                                     ^^^^^^^^^^^^^
   |
help: there is a method `update_pool_hash` with a similar name, but with different arguments
  --> /me-protocol/rusty-protocol-v0.1/contracts/modules/deployables/reward_initiator/reward_initiator.rs:67:9
   |
67 |         #[modifiers(only_role(PROTOCOL))]
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   = note: this error originates in the attribute macro `modifiers` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0599]: no method named `get_pool_hash` found for struct `reward_initiator::reward_initiator::RewardInitiator` in the current scope
  --> tests/reward_initiator.rs:67:37
   |
67 |         assert_eq!(reward_initiator.get_pool_hash(), new_hash);
   |                                     ^^^^^^^^^^^^^
   |
help: there is a method `update_pool_hash` with a similar name, but with different arguments
  --> /me-protocol/rusty-protocol-v0.1/contracts/modules/deployables/reward_initiator/reward_initiator.rs:67:9
   |
67 |         #[modifiers(only_role(PROTOCOL))]
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   = note: this error originates in the attribute macro `modifiers` (in Nightly builds, run with -Z macro-backtrace for more info)

warning: unused variable: `a`
  --> tests/reward_initiator.rs:74:13
   |
74 |         let a = accounts.bob;
   |             ^ help: if this is intentional, prefix it with an underscore: `_a`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: unused variable: `b`
  --> tests/reward_initiator.rs:75:13
   |
75 |         let b = accounts.alice;
   |             ^ help: if this is intentional, prefix it with an underscore: `_b`

warning: unused variable: `reward_config`
  --> tests/reward_initiator.rs:88:13
   |
88 |         let reward_config=  PoolSetUpConfig {
   |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reward_config`

For more information about this error, try `rustc --explain E0599`.
warning: `meprotocol` (test "reward_initiator") generated 3 warnings
error: could not compile `meprotocol` (test "reward_initiator") due to 2 previous errors; 3 warnings emitted

@semuelle semuelle self-assigned this May 29, 2024
@AgentPoles
Copy link
Contributor Author

Hi @semuelle sorry I was out of office last week, the updates have now been made appropriately! Please check again and let me know. Thank you very much!

Copy link
Member

@semuelle semuelle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the updates, @AgentPoles. The unit tests are not running.

However, I also found a couple of other things missing. Please have a look at my evaluation notes. To summarize:

  1. 0b was specified to have a tutorial to follow, which I couldn't find.
  2. 0e seems to be the same document that you submitted for M1. My suggestion would be to publish a separate article instead, explaining your project in a high level to potential users. See our annoucement guidelines for inspiration. This wasn't specified in the agreement, but I think this would make more sense than updating your litepaper after every milestone.
  3. The link for 2 seems to be off.
  4. According to the agreement, core functions should be "fully covered" by tests. I only found a few tests, each testing only the return value for a single function. Usually, when it comes to smart contracts, I would expect several tests for every function. Please revise.

Also, I wasn't able to test the backend as it requires a lot of infrastructure to be set up. If possible, please provide a Dockerfile or other simplification (a deployed version would work as well) to test the whole infrastructure for the next milestone.

@AgentPoles
Copy link
Contributor Author

Hi @semuelle thanks a lot for the feedback:

  1. The cargo tests are simply unit tests, the major end to end tests are dockerize and can be run by following the instructions here

  2. for 2: Some functions are definitely missing on this branch, will review it immediately. But just to add, we had to move away from the original lens proposition because of the halt in the work on the diamond standard by openBrush, which is the major framework for our development. This oracle only exposes the secretary functionalities

  3. 0e: alright, this is duly noted will adjust appropriately, thanks lot!

  4. 0b: the actual screens for the interaction would be ready at the end of milestone 3, hence the full fledged tutorial from the UI. But given this comment, we will make a video tutorial to showcase from the terminal how some of these interactions can be carried out, would that suffice?

Also just to add, we will make sure we expose a deployed version of the backend and also serve the frontend for the milestone 3.

@semuelle
Copy link
Member

Thanks for the quick reply, @AgentPoles.

  • The cargo tests are simply unit tests, the major end to end tests are dockerize and can be run by following the instructions here

Sorry for that. Like I mentioned, I didn't get very far with the e2e tests, so I had another stab at it. However, I might be misunderstanding something, because if I start a contracts node and then run docker run -p 9944:9944 my-rust-environment:v1, all I get is

docker: Error response from daemon: driver failed programming external connectivity on endpoint crazy_diffie (da15b9f6a43d043e5af03c6c57874a282e78eb6ef5b252fb15bb069824da31a1): Error starting userland proxy: listen tcp4 0.0.0.0:9944: bind: address already in use.
ERRO[0000] error waiting for container: context canceled 
  • for 2: Some functions are definitely missing on this branch, will review it immediately. But just to add, we had to move away from the original lens proposition because of the halt in the work on the diamond standard by openBrush, which is the major framework for our development. This oracle only exposes the secretary functionalities

I'm not familiar with the lens proposition or secretary functionalities. If this code covers what was planned, can you add a sentence or two about it in the delivery file, explaining what changed?

  • 0b: the actual screens for the interaction would be ready at the end of milestone 3, hence the full fledged tutorial from the UI. But given this comment, we will make a video tutorial to showcase from the terminal how some of these interactions can be carried out, would that suffice?

A tutorial doesn't have to include a UI, especially when it's not ready anyway. The tools are up to you. Some provide polkadot.js apps screenshots, some a list of bash commands, some video tutorials. Though I'd argue it's best if it's easy to follow and reproduce.

@semuelle
Copy link
Member

semuelle commented Jun 6, 2024

pinging @AgentPoles

@semuelle
Copy link
Member

again pinging @AgentPoles, and @Adebara123.

@AgentPoles
Copy link
Contributor Author

Hi @semuelle Sorry for the delays, we are updating shortly. 🙏

@AgentPoles
Copy link
Contributor Author

Hello @semuelle we have now completed all the updates from our end. For the Article do we need to forward to the email: [email protected] for review first, or we just proceed to attach here

@semuelle
Copy link
Member

semuelle commented Jul 1, 2024

For the Article do we need to forward to the email: [email protected] for review first, or we just proceed to attach here

Hi @AgentPoles, sorry for the late reply. No need to involve grantsPR anymore if the article is linked in the delivery document.

I will review the changes asap.

@AgentPoles
Copy link
Contributor Author

Alright @semuelle thanks a lot. I have now added the blog article doc. We will publish the article after the review has been accepted. Awaiting your feedback. Thanks a lot 🙏

Copy link
Member

@semuelle semuelle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for that. Like I mentioned, I didn't get very far with the e2e tests, so I had another stab at it. However, I might be misunderstanding something, because if I start a contracts node and then run docker run -p 9944:9944 my-rust-environment:v1, all I get is

docker: Error response from daemon: driver failed programming external connectivity on endpoint crazy_diffie (da15b9f6a43d043e5af03c6c57874a282e78eb6ef5b252fb15bb069824da31a1): Error starting userland proxy: listen tcp4 0.0.0.0:9944: bind: address already in use.
ERRO[0000] error waiting for container: context canceled 

Thanks for the updates, @AgentPoles. Do you have any input for the issue with the tests mentioned above?

@AgentPoles
Copy link
Contributor Author

Yes we changed the port to 9945 as we figured out the original port 9944 could already be in use on your device. We also showed the full process in the first part of the tutorial video.

@semuelle
Copy link
Member

semuelle commented Jul 2, 2024

Yes we changed the port to 9945 as we figured out the original port 9944 could already be in use on your device.

Well, the instructions said to start a contracts node, so I assume that's occupying 9944.

@AgentPoles
Copy link
Contributor Author

Hello @semuelle , are you good now? yes it's occupying 9944 but you can also change the port. Just see the video tutorial for the guidelines

Copy link
Member

@semuelle semuelle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AgentPoles, I followed the video instructions, but when I run the docker tests, I'm only getting Abnormal Closures, no matter what port I use. Any suggestions?

> docker run -p 9945:9945 my-rust-environment:v1

  Bounty Test
    recordDepositedBountyRewards
2024-07-08 09:35:32          API-WS: disconnected from ws://host.docker.internal:9944: 1006:: Abnormal Closure
2024-07-08 09:35:35          API-WS: disconnected from ws://host.docker.internal:9944: 1006:: Abnormal Closure
2024-07-08 09:35:37          API-WS: disconnected from ws://host.docker.internal:9944: 1006:: Abnormal Closure
2024-07-08 09:35:40          API-WS: disconnected from ws://host.docker.internal:9944: 1006:: Abnormal Closure
2024-07-08 09:35:42          API-WS: disconnected from ws://host.docker.internal:9944: 1006:: Abnormal Closure
2024-07-08 09:35:45          API-WS: disconnected from ws://host.docker.internal:9944: 1006:: Abnormal Closure
2024-07-08 09:35:47          API-WS: disconnected from ws://host.docker.internal:9944: 1006:: Abnormal Closure
...

@AgentPoles
Copy link
Contributor Author

Hi @semuelle please are you sure substrate is running in the background? also we can schedule a call to work on this to review together. Everything is working on our end.

@semuelle
Copy link
Member

Hi @AgentPoles, yes, we can arrange a call. However, I suspect that this is simply a version mismatch somewhere. I just upgraded my nightly toolchain, and now I'm getting the following error. Perhaps you could add your contracts-node, rust and toolchain versions in the test instructions so I can replicate it.

> npx mocha --require @babel/register --require ts-node/register --recursive ./tests --extension \".ts\" --exit --timeout 20000

  Bounty Test
    recordDepositedBountyRewards
2024-07-11 12:24:02        API/INIT: substrate-contracts-node/100: Not decorating runtime apis without matching versions: Core/5 (1/2/3/4 known)
2024-07-11 12:24:02        API/INIT: substrate-contracts-node/100: Not decorating unknown runtime apis: 0xfbc577b9d747efd6/1
balance of bounty 100
      ✔ Should successfully record bounty amount (932ms)
2024-07-11 12:24:02        API/INIT: substrate-contracts-node/100: Not decorating runtime apis without matching versions: Core/5 (1/2/3/4 known)
2024-07-11 12:24:02        API/INIT: substrate-contracts-node/100: Not decorating unknown runtime apis: 0xfbc577b9d747efd6/1
balance of bounty 0
      ✔ Should fail because your are trying to record an amount you didn't deposit (624ms)
    withdrawBountyRewards
2024-07-11 12:24:03        API/INIT: substrate-contracts-node/100: Not decorating runtime apis without matching versions: Core/5 (1/2/3/4 known)
2024-07-11 12:24:03        API/INIT: substrate-contracts-node/100: Not decorating unknown runtime apis: 0xfbc577b9d747efd6/1

@AgentPoles
Copy link
Contributor Author

AgentPoles commented Jul 11, 2024

Alright @semuelle , most of the packages are in the docker file, so you would definitely be using the same version we are using, the only thing outside is substrate-contract-node and docker. Those should not contribute much errors. Can you send me your calendar so I can book a call for today, so we look at it together? Thanks a lot.

@semuelle
Copy link
Member

semuelle commented Jul 11, 2024

most of the packages are in the docker file

This last output is not using Docker. The Docker version is still giving API-WS: disconnected from ws://host.docker.internal:9944: 1006:: Abnormal Closure. And you are also working with the milestone-2 branch, correct?

Here is a link to my calendar.

@AgentPoles
Copy link
Contributor Author

AgentPoles commented Jul 12, 2024

Hello @semuelle I booked a call with you for this time, but can't see a meeting link my email is [email protected]

@AgentPoles
Copy link
Contributor Author

thanks for the call!

@semuelle
Copy link
Member

@AgentPoles, I can confirm now that the warning messages on the tests do not appear with contracts-node version 0.35.0. It would be great if you could look into resolving the messages using 0.41.0. Other than that, I will try to finish the rest of the evaluation later today.

Copy link
Member

@semuelle semuelle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi again, @AgentPoles. I just checked off the rest of the deliverables. I'm happy to report that your milestone is accepted. Congratulations! You can find my evaluation notes here.

As mentioned above, it'd be great if you could look into the warnings in the tests. Other than that, nice work!

Since the next will be your last milestone, it'd be great if you could then provide a guide how to test the whole project manually, e.g. with a step-by-step how to create a rewards program, how to earn and how to redeem points through the app.

@semuelle semuelle merged commit 31dbbf2 into w3f:master Jul 12, 2024
3 checks passed
Copy link

🪙 Please fill out the invoice form in order to initiate the payment process. Thank you!

@AgentPoles
Copy link
Contributor Author

Alright @semuelle thanks a lot! you are the best!

@semuelle
Copy link
Member

@AgentPoles, the payment information on the invoice doesn't match the ones you sent to us via email. If they have changed, please send another email with the new payment details from the same email address you used for the first email. Thanks!

@rnwesley
Copy link

rnwesley commented Jul 15, 2024

@semuelle I just sent the invoice in an email from as well using the email from last payment.

@semuelle
Copy link
Member

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants