Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

openzeppelin_access

Fully qualified path: openzeppelin_access

Modules

Modules

Modules

accesscontrol

Fully qualified path: openzeppelin_access::accesscontrol

Modules


Re-exports:



Modules

Modules

accesscontrol

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol

Modules

Modules

Modules

AccessControlComponent

AccessControl Component

The AccessControl component enables role-based access control mechanisms. This is a lightweight implementation that doesn’t support on-chain enumeration of role members, though role membership can be tracked off-chain through contract events.

Roles can be granted and revoked dynamically via grant_role and revoke_role. Each role has an associated admin role that controls who can grant and revoke it. By default, all roles use DEFAULT_ADMIN_ROLE as their admin role. Accounts can also renounce roles they have been granted by using renounce_role.

More complex role hierarchies can be created using set_role_admin.

WARNING: The DEFAULT_ADMIN_ROLE is its own admin, meaning it can grant and revoke itself. Extra precautions should be taken to secure accounts with this role.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent

Modules

Constants

Free functions

Structs

Storage
RoleGrantedEmitted when account is granted role . sender is the account that originated the contract call, an account with the admin role or the deployer address if _grant_role
RoleGrantedWithDelayEmitted when account is granted role with a delay. sender is the account that originated the contract call, an account with the admin role or the deployer address if _grant_role_with_delay
RoleRevokedEmitted when role is revoked for account . sender is the account that originated the contract call:…
RoleAdminChangedEmitted when new_admin_role is set as role ’s admin role, replacing previous_admin_role DEFAULT_ADMIN_ROLE is the starting admin for all roles, despite RoleAdminChanged
ComponentState

Enums

Event

Traits

Modules

Modules

Errors

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Errors

Constants

Constants

Constants

INVALID_CALLER

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Errors::INVALID_CALLER

pub const INVALID_CALLER: felt252 =
    119051191745757350281208028839101815176267233062108463203342334778046508134;

MISSING_ROLE

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Errors::MISSING_ROLE

pub const MISSING_ROLE: felt252 = 25210060730641651003830129571497095168425182341590117;

INVALID_DELAY

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Errors::INVALID_DELAY

pub const INVALID_DELAY: felt252 =
    7202958984691914763075227381218870070086808991015795868594737127472;

ALREADY_EFFECTIVE

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Errors::ALREADY_EFFECTIVE

pub const ALREADY_EFFECTIVE: felt252 = 517454436563142884656566846503664730090624682370817168340581;

__external_AccessControlImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__external_AccessControlImpl

__l1_handler_AccessControlImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__l1_handler_AccessControlImpl

__constructor_AccessControlImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__constructor_AccessControlImpl

__external_AccessControlCamelImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__external_AccessControlCamelImpl

__l1_handler_AccessControlCamelImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__l1_handler_AccessControlCamelImpl

__constructor_AccessControlCamelImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__constructor_AccessControlCamelImpl

__external_AccessControlWithDelayImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__external_AccessControlWithDelayImpl

__l1_handler_AccessControlWithDelayImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__l1_handler_AccessControlWithDelayImpl

__constructor_AccessControlWithDelayImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__constructor_AccessControlWithDelayImpl

__external_AccessControlMixinImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__external_AccessControlMixinImpl

__l1_handler_AccessControlMixinImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__l1_handler_AccessControlMixinImpl

__constructor_AccessControlMixinImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::__constructor_AccessControlMixinImpl

Constants

Constants

DEFAULT_ADMIN_ROLE

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::DEFAULT_ADMIN_ROLE

pub const DEFAULT_ADMIN_ROLE: felt252 = 0;

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::unsafe_new_component_state

pub fn unsafe_new_component_state<TContractState>() -> ComponentState<TContractState>

Structs

Structs

Storage
RoleGrantedEmitted when account is granted role . sender is the account that originated the contract call, an account with the admin role or the deployer address if _grant_role
RoleGrantedWithDelayEmitted when account is granted role with a delay. sender is the account that originated the contract call, an account with the admin role or the deployer address if _grant_role_with_delay
RoleRevokedEmitted when role is revoked for account . sender is the account that originated the contract call:…
RoleAdminChangedEmitted when new_admin_role is set as role ’s admin role, replacing previous_admin_role DEFAULT_ADMIN_ROLE is the starting admin for all roles, despite RoleAdminChanged
ComponentState

Storage

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Storage

[storage]
pub struct Storage {
    pub AccessControl_role_admin: Map<felt252, felt252>,
    pub AccessControl_role_member: Map<(felt252, ContractAddress), AccountRoleInfo>,
}

Members

AccessControl_role_admin

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Storage::AccessControl_role_admin

pub AccessControl_role_admin: Map<felt252, felt252>

AccessControl_role_member

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Storage::AccessControl_role_member

pub AccessControl_role_member: Map<(felt252, ContractAddress), AccountRoleInfo>

RoleGranted

Emitted when account is granted role.

sender is the account that originated the contract call, an account with the admin role or the deployer address if _grant_role is called from the constructor.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleGranted

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct RoleGranted {
    pub role: felt252,
    pub account: ContractAddress,
    pub sender: ContractAddress,
}

Members

role

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleGranted::role

pub role: felt252

account

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleGranted::account

pub account: ContractAddress

sender

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleGranted::sender

pub sender: ContractAddress

RoleGrantedWithDelay

Emitted when account is granted role with a delay.

sender is the account that originated the contract call, an account with the admin role or the deployer address if _grant_role_with_delay is called from the constructor.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleGrantedWithDelay

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct RoleGrantedWithDelay {
    pub role: felt252,
    pub account: ContractAddress,
    pub sender: ContractAddress,
    pub delay: u64,
}

Members

role

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleGrantedWithDelay::role

pub role: felt252

account

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleGrantedWithDelay::account

pub account: ContractAddress

sender

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleGrantedWithDelay::sender

pub sender: ContractAddress

delay

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleGrantedWithDelay::delay

pub delay: u64

RoleRevoked

Emitted when role is revoked for account.

sender is the account that originated the contract call:

  • If using revoke_role, it is the admin role bearer.
  • If using renounce_role, it is the role bearer (i.e. account).

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleRevoked

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct RoleRevoked {
    pub role: felt252,
    pub account: ContractAddress,
    pub sender: ContractAddress,
}

Members

role

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleRevoked::role

pub role: felt252

account

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleRevoked::account

pub account: ContractAddress

sender

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleRevoked::sender

pub sender: ContractAddress

RoleAdminChanged

Emitted when new_admin_role is set as role’s admin role, replacing previous_admin_role

DEFAULT_ADMIN_ROLE is the starting admin for all roles, despite RoleAdminChanged not being emitted signaling this.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleAdminChanged

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct RoleAdminChanged {
    pub role: felt252,
    pub previous_admin_role: felt252,
    pub new_admin_role: felt252,
}

Members

role

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleAdminChanged::role

pub role: felt252

previous_admin_role

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleAdminChanged::previous_admin_role

pub previous_admin_role: felt252

new_admin_role

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::RoleAdminChanged::new_admin_role

pub new_admin_role: felt252

ComponentState

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Event

pub enum Event {
    RoleGranted: RoleGranted,
    RoleGrantedWithDelay: RoleGrantedWithDelay,
    RoleRevoked: RoleRevoked,
    RoleAdminChanged: RoleAdminChanged,
}

Variants

RoleGranted

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Event::RoleGranted

RoleGranted: RoleGranted

RoleGrantedWithDelay

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Event::RoleGrantedWithDelay

RoleGrantedWithDelay: RoleGrantedWithDelay

RoleRevoked

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Event::RoleRevoked

RoleRevoked: RoleRevoked

RoleAdminChanged

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Event::RoleAdminChanged

RoleAdminChanged: RoleAdminChanged

Traits

Traits

HasComponent

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::HasComponent::get_component

fn get_component(self: @TContractState) -> @ComponentState<TContractState>

get_component_mut

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::HasComponent::get_component_mut

fn get_component_mut(ref self: TContractState) -> ComponentState<TContractState>

get_contract

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::HasComponent::get_contract

fn get_contract(self: @ComponentState<TContractState>) -> @TContractState

get_contract_mut

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::HasComponent::get_contract_mut

fn get_contract_mut(ref self: ComponentState<TContractState>) -> TContractState

emit

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::HasComponent::emit

fn emit<
    S,
    impl IntoImp: Into<
        S, openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::Event,
    >,
>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::InternalTrait

pub trait InternalTrait<
    TContractState,
    +HasComponent<TContractState>,
    impl SRC5: HasComponent<TContractState>,
    +Drop<TContractState>,
>

Trait functions

initializer

Initializes the contract by registering the IAccessControl interface ID.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::InternalTrait::initializer

fn initializer(ref self: ComponentState<TContractState>)

assert_only_role

Validates that the caller can act as the given role. Otherwise it panics.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::InternalTrait::assert_only_role

fn assert_only_role(self: @ComponentState<TContractState>, role: felt252)

is_role_effective

Returns whether the account can act as the given role.

The account can act as the role if it is active and the effective_from time is before or equal to the current time.

NOTE: If the effective_from timepoint is 0, the role is effective immediately. This is backwards compatible with implementations that didn’t use delays but a single boolean flag.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::InternalTrait::is_role_effective

fn is_role_effective(
    self: @ComponentState<TContractState>, role: felt252, account: ContractAddress,
) -> bool

resolve_role_status

Returns the account’s status for the given role.

The possible statuses are:

  • NotGranted: the role has not been granted to the account.
  • Delayed: The role has been granted to the account but is not yet active due to a time delay.
  • Effective: the role has been granted to the account and is currently active.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::InternalTrait::resolve_role_status

fn resolve_role_status(
    self: @ComponentState<TContractState>, role: felt252, account: ContractAddress,
) -> RoleStatus

is_role_granted

Returns whether the account has the given role granted.

NOTE: The account may not be able to act as the role yet, if a delay was set and has not passed yet. Use is_role_effective to check if the account can act as the role.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::InternalTrait::is_role_granted

fn is_role_granted(
    self: @ComponentState<TContractState>, role: felt252, account: ContractAddress,
) -> bool

set_role_admin

Sets admin_role as role’s admin role.

Internal function without access restriction.

Emits a RoleAdminChanged event.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::InternalTrait::set_role_admin

fn set_role_admin(ref self: ComponentState<TContractState>, role: felt252, admin_role: felt252)

_grant_role

Attempts to grant role to account. The function does nothing if role is already effective for account. If role has been granted to account, but is not yet active due to a time delay, the delay is removed and role becomes effective immediately.

Internal function without access restriction.

May emit a RoleGranted event.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::InternalTrait::_grant_role

fn _grant_role(ref self: ComponentState<TContractState>, role: felt252, account: ContractAddress)

_grant_role_with_delay

Attempts to grant role to account with the specified activation delay.

The role will become effective after the given delay has passed. If the role is already active (Effective) for the account, the function will panic. If the role has been granted but is not yet active (being in the Delayed state), the existing delay will be overwritten with the new delay.

Internal function without access restriction.

Requirements:

  • delay must be greater than 0.
  • the role must not be already effective for account.

May emit a RoleGrantedWithDelay event.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::InternalTrait::_grant_role_with_delay

fn _grant_role_with_delay(
    ref self: ComponentState<TContractState>, role: felt252, account: ContractAddress, delay: u64,
)

_revoke_role

Attempts to revoke role from account.

Internal function without access restriction.

May emit a RoleRevoked event.

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::InternalTrait::_revoke_role

fn _revoke_role(ref self: ComponentState<TContractState>, role: felt252, account: ContractAddress)

UnsafeNewContractStateTraitForAccessControlImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::UnsafeNewContractStateTraitForAccessControlImpl

pub trait UnsafeNewContractStateTraitForAccessControlImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::UnsafeNewContractStateTraitForAccessControlImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForAccessControlCamelImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::UnsafeNewContractStateTraitForAccessControlCamelImpl

pub trait UnsafeNewContractStateTraitForAccessControlCamelImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::UnsafeNewContractStateTraitForAccessControlCamelImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForAccessControlWithDelayImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::UnsafeNewContractStateTraitForAccessControlWithDelayImpl

pub trait UnsafeNewContractStateTraitForAccessControlWithDelayImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::UnsafeNewContractStateTraitForAccessControlWithDelayImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForAccessControlMixinImpl

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::UnsafeNewContractStateTraitForAccessControlMixinImpl

pub trait UnsafeNewContractStateTraitForAccessControlMixinImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::accesscontrol::accesscontrol::AccessControlComponent::UnsafeNewContractStateTraitForAccessControlMixinImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

account_role_info

Fully qualified path: openzeppelin_access::accesscontrol::account_role_info

Structs

AccountRoleInfoInformation about whether a role is active for an account or not.

Structs

Structs

AccountRoleInfoInformation about whether a role is active for an account or not.

AccountRoleInfo

Information about whether a role is active for an account or not.

Fully qualified path: openzeppelin_access::accesscontrol::account_role_info::AccountRoleInfo

[derive(Copy, Drop, Serde, PartialEq, Debug)]
pub struct AccountRoleInfo {
    pub effective_from: u64,
    pub is_granted: bool,
}

Members

effective_from

Fully qualified path: openzeppelin_access::accesscontrol::account_role_info::AccountRoleInfo::effective_from

pub effective_from: u64

is_granted

Fully qualified path: openzeppelin_access::accesscontrol::account_role_info::AccountRoleInfo::is_granted

pub is_granted: bool

extensions

Fully qualified path: openzeppelin_access::accesscontrol::extensions

Modules


Re-exports:


DefaultConfigImplementation of the default ERC20Component ImmutableConfig. See https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-107.md#defaultconfig-implementation…


Modules

Modules

accesscontrol_default_admin_rules

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules

Modules

Impls

DefaultConfigImplementation of the default ERC20Component ImmutableConfig. See https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-107.md#defaultconfig-implementation…

Modules

Modules

AccessControlDefaultAdminRulesComponent

AccessControlDefaultAdminRules Component

Extension of AccessControl that allows specifying special rules to manage the DEFAULT_ADMIN_ROLE holder, which is a sensitive role with special permissions over other roles that may potentially have privileged rights in the system.

If a specific role doesn’t have an admin role assigned, the holder of the DEFAULT_ADMIN_ROLE will have the ability to grant it and revoke it.

This contract implements the following risk mitigations on top of {AccessControl}:

  • Only one account holds the DEFAULT_ADMIN_ROLE since deployment until it’s potentially renounced.
  • Enforces a 2-step process to transfer the DEFAULT_ADMIN_ROLE to another account.
  • Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted.
  • The delay can be changed by scheduling, see change_default_admin_delay.
  • It is not possible to use another role to manage the DEFAULT_ADMIN_ROLE.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent

Modules

Constants

Free functions

Structs

Storage
DefaultAdminTransferScheduledEmitted when a default_admin transfer is started. Sets new_admin as the next address to become the default_admin by calling accept_default_admin_transfer only after accept_schedule `…
DefaultAdminTransferCanceledEmitted when a pending_default_admin is reset if it was never accepted, regardless of its schedule.
DefaultAdminDelayChangeScheduledEmitted when a default_admin_delay change is started. Sets new_delay as the next delay to be applied between default admins transfers after effect_schedule has passed.
DefaultAdminDelayChangeCanceledEmitted when a pending_default_admin_delay is reset if its schedule didn’t pass.
ComponentState

Enums

Event

Traits

Modules

Modules

Errors

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Errors

Constants

Constants

Constants

INVALID_CALLER

AccessControl errors

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Errors::INVALID_CALLER

pub const INVALID_CALLER: felt252 =
    119051191745757350281208028839101815176267233062108463203342334778046508134;

MISSING_ROLE

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Errors::MISSING_ROLE

pub const MISSING_ROLE: felt252 = 25210060730641651003830129571497095168425182341590117;

INVALID_GRANT_ROLE_DELAY

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Errors::INVALID_GRANT_ROLE_DELAY

pub const INVALID_GRANT_ROLE_DELAY: felt252 =
    7202958984691914763075227381218870070086808991015795868594737127472;

ALREADY_EFFECTIVE

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Errors::ALREADY_EFFECTIVE

pub const ALREADY_EFFECTIVE: felt252 = 517454436563142884656566846503664730090624682370817168340581;

INVALID_DEFAULT_ADMIN

DefaultAdminRules extension errors

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Errors::INVALID_DEFAULT_ADMIN

pub const INVALID_DEFAULT_ADMIN: felt252 = 107320248484662281824505193580524149612429867575662;

ADMIN_TRANSFER_DELAY_TOO_HIGH

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Errors::ADMIN_TRANSFER_DELAY_TOO_HIGH

pub const ADMIN_TRANSFER_DELAY_TOO_HIGH: felt252 =
    1762972771950605937378764940229157014459606997690752055041091223250792;

ONLY_NEW_DEFAULT_ADMIN

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Errors::ONLY_NEW_DEFAULT_ADMIN

pub const ONLY_NEW_DEFAULT_ADMIN: felt252 =
    548214979085969159257434433750054553192310537025363096826600515677152612;

ENFORCED_DEFAULT_ADMIN_RULES

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Errors::ENFORCED_DEFAULT_ADMIN_RULES

pub const ENFORCED_DEFAULT_ADMIN_RULES: felt252 =
    7202949342972851343017453202681816323330072953697918535706869982564;

ENFORCED_DEFAULT_ADMIN_DELAY

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Errors::ENFORCED_DEFAULT_ADMIN_DELAY

pub const ENFORCED_DEFAULT_ADMIN_DELAY: felt252 =
    7202949342972851343017453202681816038108683094977223637649821230436;

__external_AccessControlDefaultAdminRulesImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__external_AccessControlDefaultAdminRulesImpl

__l1_handler_AccessControlDefaultAdminRulesImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__l1_handler_AccessControlDefaultAdminRulesImpl

__constructor_AccessControlDefaultAdminRulesImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__constructor_AccessControlDefaultAdminRulesImpl

__external_AccessControlImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__external_AccessControlImpl

__l1_handler_AccessControlImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__l1_handler_AccessControlImpl

__constructor_AccessControlImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__constructor_AccessControlImpl

__external_AccessControlCamelImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__external_AccessControlCamelImpl

__l1_handler_AccessControlCamelImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__l1_handler_AccessControlCamelImpl

__constructor_AccessControlCamelImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__constructor_AccessControlCamelImpl

__external_AccessControlWithDelayImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__external_AccessControlWithDelayImpl

__l1_handler_AccessControlWithDelayImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__l1_handler_AccessControlWithDelayImpl

__constructor_AccessControlWithDelayImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__constructor_AccessControlWithDelayImpl

__external_AccessControlMixinImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__external_AccessControlMixinImpl

__l1_handler_AccessControlMixinImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__l1_handler_AccessControlMixinImpl

__constructor_AccessControlMixinImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::__constructor_AccessControlMixinImpl

Constants

Constants

DEFAULT_ADMIN_ROLE

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::DEFAULT_ADMIN_ROLE

pub const DEFAULT_ADMIN_ROLE: felt252 = 0;

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::unsafe_new_component_state

pub fn unsafe_new_component_state<TContractState>() -> ComponentState<TContractState>

Structs

Structs

Storage
DefaultAdminTransferScheduledEmitted when a default_admin transfer is started. Sets new_admin as the next address to become the default_admin by calling accept_default_admin_transfer only after accept_schedule `…
DefaultAdminTransferCanceledEmitted when a pending_default_admin is reset if it was never accepted, regardless of its schedule.
DefaultAdminDelayChangeScheduledEmitted when a default_admin_delay change is started. Sets new_delay as the next delay to be applied between default admins transfers after effect_schedule has passed.
DefaultAdminDelayChangeCanceledEmitted when a pending_default_admin_delay is reset if its schedule didn’t pass.
ComponentState

Storage

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Storage

[storage]
pub struct Storage {
    pub AccessControl_role_admin: Map<felt252, felt252>,
    pub AccessControl_role_member: Map<(felt252, ContractAddress), AccountRoleInfo>,
    pub AccessControl_pending_default_admin: ContractAddress,
    pub AccessControl_pending_default_admin_schedule: u64,
    pub AccessControl_current_delay: u64,
    pub AccessControl_current_default_admin: ContractAddress,
    pub AccessControl_pending_delay: PendingDelay,
}

Members

AccessControl_role_admin

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Storage::AccessControl_role_admin

pub AccessControl_role_admin: Map<felt252, felt252>

AccessControl_role_member

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Storage::AccessControl_role_member

pub AccessControl_role_member: Map<(felt252, ContractAddress), AccountRoleInfo>

AccessControl_pending_default_admin

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Storage::AccessControl_pending_default_admin

pub AccessControl_pending_default_admin: ContractAddress

AccessControl_pending_default_admin_schedule

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Storage::AccessControl_pending_default_admin_schedule

pub AccessControl_pending_default_admin_schedule: u64

AccessControl_current_delay

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Storage::AccessControl_current_delay

pub AccessControl_current_delay: u64

AccessControl_current_default_admin

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Storage::AccessControl_current_default_admin

pub AccessControl_current_default_admin: ContractAddress

AccessControl_pending_delay

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Storage::AccessControl_pending_delay

pub AccessControl_pending_delay: PendingDelay

DefaultAdminTransferScheduled

Emitted when a default_admin transfer is started.

Sets new_admin as the next address to become the default_admin by calling accept_default_admin_transfer only after accept_schedule` passes.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::DefaultAdminTransferScheduled

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct DefaultAdminTransferScheduled {
    pub new_admin: ContractAddress,
    pub accept_schedule: u64,
}

Members

new_admin

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::DefaultAdminTransferScheduled::new_admin

pub new_admin: ContractAddress

accept_schedule

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::DefaultAdminTransferScheduled::accept_schedule

pub accept_schedule: u64

DefaultAdminTransferCanceled

Emitted when a pending_default_admin is reset if it was never accepted, regardless of its schedule.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::DefaultAdminTransferCanceled

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct DefaultAdminTransferCanceled {}

DefaultAdminDelayChangeScheduled

Emitted when a default_admin_delay change is started.

Sets new_delay as the next delay to be applied between default admins transfers after effect_schedule has passed.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::DefaultAdminDelayChangeScheduled

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct DefaultAdminDelayChangeScheduled {
    pub new_delay: u64,
    pub effect_schedule: u64,
}

Members

new_delay

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::DefaultAdminDelayChangeScheduled::new_delay

pub new_delay: u64

effect_schedule

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::DefaultAdminDelayChangeScheduled::effect_schedule

pub effect_schedule: u64

DefaultAdminDelayChangeCanceled

Emitted when a pending_default_admin_delay is reset if its schedule didn’t pass.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::DefaultAdminDelayChangeCanceled

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct DefaultAdminDelayChangeCanceled {}

ComponentState

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Event

pub enum Event {
    RoleGranted: RoleGranted,
    RoleGrantedWithDelay: RoleGrantedWithDelay,
    RoleRevoked: RoleRevoked,
    RoleAdminChanged: RoleAdminChanged,
    DefaultAdminTransferScheduled: DefaultAdminTransferScheduled,
    DefaultAdminTransferCanceled: DefaultAdminTransferCanceled,
    DefaultAdminDelayChangeScheduled: DefaultAdminDelayChangeScheduled,
    DefaultAdminDelayChangeCanceled: DefaultAdminDelayChangeCanceled,
}

Variants

RoleGranted

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Event::RoleGranted

RoleGranted: RoleGranted

RoleGrantedWithDelay

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Event::RoleGrantedWithDelay

RoleGrantedWithDelay: RoleGrantedWithDelay

RoleRevoked

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Event::RoleRevoked

RoleRevoked: RoleRevoked

RoleAdminChanged

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Event::RoleAdminChanged

RoleAdminChanged: RoleAdminChanged

DefaultAdminTransferScheduled

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Event::DefaultAdminTransferScheduled

DefaultAdminTransferScheduled: DefaultAdminTransferScheduled

DefaultAdminTransferCanceled

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Event::DefaultAdminTransferCanceled

DefaultAdminTransferCanceled: DefaultAdminTransferCanceled

DefaultAdminDelayChangeScheduled

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Event::DefaultAdminDelayChangeScheduled

DefaultAdminDelayChangeScheduled: DefaultAdminDelayChangeScheduled

DefaultAdminDelayChangeCanceled

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Event::DefaultAdminDelayChangeCanceled

DefaultAdminDelayChangeCanceled: DefaultAdminDelayChangeCanceled

Traits

Traits

ImmutableConfig

Constants expected to be defined at the contract level used to configure the component behavior.

  • DEFAULT_ADMIN_DELAY_INCREASE_WAIT: Returns the maximum number of seconds to wait for a delay increase.
  • MAXIMUM_DEFAULT_ADMIN_TRANSFER_DELAY: Returns the maximum number of seconds for a transfer delay.

IMPORTANT:

When overriding DEFAULT_ADMIN_DELAY_INCREASE_WAIT, choose a value that provides a safe buffer. If set too low, a mistakenly high new delay (e.g., entering milliseconds instead of seconds) could be activated almost instantly, leaving no opportunity for manual correction.

The maximum time you have to recover from an accidental delay increase is controlled by MAXIMUM_DEFAULT_ADMIN_TRANSFER_DELAY. See the delay_change_wait function for details on how these constants interact.

If MAXIMUM_DEFAULT_ADMIN_TRANSFER_DELAY is set too high, you might be unable to recover from an accidental increase for an extended period. Too low, and it unnecessarily restricts how much security delay you can impose for admin transfers. As a best practice, consider setting it in the 30-60 day range for a good balance between security and recoverability.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::ImmutableConfig

pub trait ImmutableConfig

Trait constants

DEFAULT_ADMIN_DELAY_INCREASE_WAIT

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::ImmutableConfig::DEFAULT_ADMIN_DELAY_INCREASE_WAIT

const DEFAULT_ADMIN_DELAY_INCREASE_WAIT: u64;

MAXIMUM_DEFAULT_ADMIN_TRANSFER_DELAY

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::ImmutableConfig::MAXIMUM_DEFAULT_ADMIN_TRANSFER_DELAY

const MAXIMUM_DEFAULT_ADMIN_TRANSFER_DELAY: u64;

HasComponent

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::HasComponent::get_component

fn get_component(self: @TContractState) -> @ComponentState<TContractState>

get_component_mut

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::HasComponent::get_component_mut

fn get_component_mut(ref self: TContractState) -> ComponentState<TContractState>

get_contract

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::HasComponent::get_contract

fn get_contract(self: @ComponentState<TContractState>) -> @TContractState

get_contract_mut

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::HasComponent::get_contract_mut

fn get_contract_mut(ref self: ComponentState<TContractState>) -> TContractState

emit

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::HasComponent::emit

fn emit<
    S,
    impl IntoImp: Into<
        S,
        openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::Event,
    >,
>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait

pub trait InternalTrait<
    TContractState,
    +HasComponent<TContractState>,
    impl Immutable: ImmutableConfig,
    impl SRC5: HasComponent<TContractState>,
    +Drop<TContractState>,
>

Trait functions

initializer

Initializes the contract by registering the IAccessControl interface ID and setting the initial delay and default admin.

Requirements:

  • initial_default_admin must not be the zero address.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::initializer

fn initializer(
    ref self: ComponentState<TContractState>,
    initial_admin_transfer_delay: u64,
    initial_default_admin: ContractAddress,
)

assert_only_role

Validates that the caller can act as the given role. Otherwise it panics.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::assert_only_role

fn assert_only_role(self: @ComponentState<TContractState>, role: felt252)

is_role_effective

Returns whether the account can act as the given role.

The account can act as the role if it is active and the effective_from time is before or equal to the current time.

NOTE: If the effective_from timepoint is 0, the role is effective immediately. This is backwards compatible with implementations that didn’t use delays but a single boolean flag.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::is_role_effective

fn is_role_effective(
    self: @ComponentState<TContractState>, role: felt252, account: ContractAddress,
) -> bool

resolve_role_status

Returns the account’s status for the given role.

The possible statuses are:

  • NotGranted: the role has not been granted to the account.
  • Delayed: The role has been granted to the account but is not yet active due to a time delay.
  • Effective: the role has been granted to the account and is currently active.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::resolve_role_status

fn resolve_role_status(
    self: @ComponentState<TContractState>, role: felt252, account: ContractAddress,
) -> RoleStatus

is_role_granted

Returns whether the account has the given role granted.

NOTE: The account may not be able to act as the role yet, if a delay was set and has not passed yet. Use is_role_effective to check if the account can act as the role.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::is_role_granted

fn is_role_granted(
    self: @ComponentState<TContractState>, role: felt252, account: ContractAddress,
) -> bool

set_role_admin

Sets admin_role as role’s admin role.

Internal function without access restriction.

Requirements:

  • role must not be DEFAULT_ADMIN_ROLE.

Emits a RoleAdminChanged event.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::set_role_admin

fn set_role_admin(ref self: ComponentState<TContractState>, role: felt252, admin_role: felt252)

_grant_role

Attempts to grant role to account. The function does nothing if role is already effective for account. If role has been granted to account, but is not yet active due to a time delay, the delay is removed and role becomes effective immediately.

Internal function without access restriction.

For DEFAULT_ADMIN_ROLE, it only allows granting if there isn’t already a default_admin or if the role has been previously renounced.

NOTE: Exposing this function through another mechanism may make the DEFAULT_ADMIN_ROLE assignable again. Make sure to guarantee this is the expected behavior in your implementation.

May emit a RoleGranted event.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::_grant_role

fn _grant_role(ref self: ComponentState<TContractState>, role: felt252, account: ContractAddress)

_grant_role_with_delay

Attempts to grant role to account with the specified activation delay.

The role will become effective after the given delay has passed. If the role is already active (Effective) for the account, the function will panic. If the role has been granted but is not yet active (being in the Delayed state), the existing delay will be overwritten with the new delay.

Internal function without access restriction.

Requirements:

  • delay must be greater than 0.
  • the role must not be already effective for account.
  • role must not be DEFAULT_ADMIN_ROLE.

May emit a RoleGrantedWithDelay event.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::_grant_role_with_delay

fn _grant_role_with_delay(
    ref self: ComponentState<TContractState>, role: felt252, account: ContractAddress, delay: u64,
)

_revoke_role

Attempts to revoke role from account.

Internal function without access restriction.

May emit a RoleRevoked event.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::_revoke_role

fn _revoke_role(ref self: ComponentState<TContractState>, role: felt252, account: ContractAddress)

set_pending_default_admin

Setter of the tuple for pending admin and its schedule.

May emit a DefaultAdminTransferCanceled event.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::set_pending_default_admin

fn set_pending_default_admin(
    ref self: ComponentState<TContractState>, new_admin: ContractAddress, new_schedule: u64,
)

set_pending_delay

Setter of the tuple for pending delay and its schedule.

May emit a DefaultAdminDelayChangeCanceled event.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::set_pending_delay

fn set_pending_delay(ref self: ComponentState<TContractState>, new_delay: u64, new_schedule: u64)

delay_change_wait

Returns the amount of seconds to wait after the new_delay will become the new default_admin_delay.

The value returned guarantees that if the delay is reduced, it will go into effect after a wait that honors the previously set delay.

See default_admin_delay_increase_wait.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::InternalTrait::delay_change_wait

fn delay_change_wait(self: @ComponentState<TContractState>, new_delay: u64) -> u64

UnsafeNewContractStateTraitForAccessControlDefaultAdminRulesImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::UnsafeNewContractStateTraitForAccessControlDefaultAdminRulesImpl

pub trait UnsafeNewContractStateTraitForAccessControlDefaultAdminRulesImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::UnsafeNewContractStateTraitForAccessControlDefaultAdminRulesImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForAccessControlImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::UnsafeNewContractStateTraitForAccessControlImpl

pub trait UnsafeNewContractStateTraitForAccessControlImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::UnsafeNewContractStateTraitForAccessControlImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForAccessControlCamelImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::UnsafeNewContractStateTraitForAccessControlCamelImpl

pub trait UnsafeNewContractStateTraitForAccessControlCamelImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::UnsafeNewContractStateTraitForAccessControlCamelImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForAccessControlWithDelayImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::UnsafeNewContractStateTraitForAccessControlWithDelayImpl

pub trait UnsafeNewContractStateTraitForAccessControlWithDelayImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::UnsafeNewContractStateTraitForAccessControlWithDelayImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForAccessControlMixinImpl

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::UnsafeNewContractStateTraitForAccessControlMixinImpl

pub trait UnsafeNewContractStateTraitForAccessControlMixinImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::AccessControlDefaultAdminRulesComponent::UnsafeNewContractStateTraitForAccessControlMixinImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

Impls

Impls

DefaultConfigImplementation of the default ERC20Component ImmutableConfig. See https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-107.md#defaultconfig-implementation…

DefaultConfig

Implementation of the default ERC20Component ImmutableConfig.

See https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-107.md#defaultconfig-implementation

The default delay increase wait is set to 5 days. The maximum transfer delay is set to 30 days.

NOTE: You cannot set a transfer delay to a value greater than this MAXIMUM_DEFAULT_ADMIN_TRANSFER_DELAY.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::DefaultConfig

pub impl DefaultConfig of ImmutableConfig;

Impl constants

DEFAULT_ADMIN_DELAY_INCREASE_WAIT

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::DefaultConfig::DEFAULT_ADMIN_DELAY_INCREASE_WAIT

const DEFAULT_ADMIN_DELAY_INCREASE_WAIT: u64 = 5 * 24 * 60 * 60;

MAXIMUM_DEFAULT_ADMIN_TRANSFER_DELAY

Fully qualified path: openzeppelin_access::accesscontrol::extensions::accesscontrol_default_admin_rules::DefaultConfig::MAXIMUM_DEFAULT_ADMIN_TRANSFER_DELAY

const MAXIMUM_DEFAULT_ADMIN_TRANSFER_DELAY: u64 = 30 * 24 * 60 * 60;

pending_delay

Fully qualified path: openzeppelin_access::accesscontrol::extensions::pending_delay

Structs

PendingDelayInformation about a scheduledpending delay.

Structs

Structs

PendingDelayInformation about a scheduledpending delay.

PendingDelay

Information about a scheduledpending delay.

Fully qualified path: openzeppelin_access::accesscontrol::extensions::pending_delay::PendingDelay

[derive(Copy, Drop, Serde, PartialEq, Debug)]
pub struct PendingDelay {
    pub delay: u64,
    pub schedule: u64,
}

Members

delay

Fully qualified path: openzeppelin_access::accesscontrol::extensions::pending_delay::PendingDelay::delay

pub delay: u64

schedule

Fully qualified path: openzeppelin_access::accesscontrol::extensions::pending_delay::PendingDelay::schedule

pub schedule: u64

ownable

Fully qualified path: openzeppelin_access::ownable

Modules

ownable

Re-exports:


Modules

Modules

ownable

ownable

Fully qualified path: openzeppelin_access::ownable::ownable

Modules

Modules

Modules

OwnableComponent

Ownable Component

The Ownable component provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions.

The initial owner can be set by using the initializer function in construction time. This can later be changed with transfer_ownership.

The component also offers functionality for a two-step ownership transfer where the new owner first has to accept their ownership to finalize the transfer.

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent

Modules

Free functions

Structs

Storage
OwnershipTransferredEmitted when new_owner is set as owner of the contract. new_owner can be set to zero only if the ownership is renounced.
OwnershipTransferStartedEmitted when transfer_ownership is called on a contract that implements IOwnableTwoStep . previous_owner is the address of the current owner. new_owner is the address of the pending owner.
ComponentState

Enums

Event

Traits

Modules

Modules

Errors

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::Errors

Constants

Constants

Constants

NOT_OWNER

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::Errors::NOT_OWNER

pub const NOT_OWNER: felt252 = 6453775547044262656980513251389146108192067417835201906;

NOT_PENDING_OWNER

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::Errors::NOT_PENDING_OWNER

pub const NOT_PENDING_OWNER: felt252 =
    119051145825490371705017055488349666845855619325153144982018027625445746034;

ZERO_ADDRESS_OWNER

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::Errors::ZERO_ADDRESS_OWNER

pub const ZERO_ADDRESS_OWNER: felt252 =
    2113561387378558640007916056212955719375468717479393106901732231050099;

__external_OwnableImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__external_OwnableImpl

__l1_handler_OwnableImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__l1_handler_OwnableImpl

__constructor_OwnableImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__constructor_OwnableImpl

__external_OwnableTwoStepImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__external_OwnableTwoStepImpl

__l1_handler_OwnableTwoStepImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__l1_handler_OwnableTwoStepImpl

__constructor_OwnableTwoStepImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__constructor_OwnableTwoStepImpl

__external_OwnableCamelOnlyImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__external_OwnableCamelOnlyImpl

__l1_handler_OwnableCamelOnlyImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__l1_handler_OwnableCamelOnlyImpl

__constructor_OwnableCamelOnlyImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__constructor_OwnableCamelOnlyImpl

__external_OwnableTwoStepCamelOnlyImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__external_OwnableTwoStepCamelOnlyImpl

__l1_handler_OwnableTwoStepCamelOnlyImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__l1_handler_OwnableTwoStepCamelOnlyImpl

__constructor_OwnableTwoStepCamelOnlyImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__constructor_OwnableTwoStepCamelOnlyImpl

__external_OwnableMixinImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__external_OwnableMixinImpl

__l1_handler_OwnableMixinImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__l1_handler_OwnableMixinImpl

__constructor_OwnableMixinImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__constructor_OwnableMixinImpl

__external_OwnableTwoStepMixinImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__external_OwnableTwoStepMixinImpl

__l1_handler_OwnableTwoStepMixinImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__l1_handler_OwnableTwoStepMixinImpl

__constructor_OwnableTwoStepMixinImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::__constructor_OwnableTwoStepMixinImpl

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::unsafe_new_component_state

pub fn unsafe_new_component_state<TContractState>() -> ComponentState<TContractState>

Structs

Structs

Storage
OwnershipTransferredEmitted when new_owner is set as owner of the contract. new_owner can be set to zero only if the ownership is renounced.
OwnershipTransferStartedEmitted when transfer_ownership is called on a contract that implements IOwnableTwoStep . previous_owner is the address of the current owner. new_owner is the address of the pending owner.
ComponentState

Storage

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::Storage

[storage]
pub struct Storage {
    pub Ownable_owner: ContractAddress,
    pub Ownable_pending_owner: ContractAddress,
}

Members

Ownable_owner

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::Storage::Ownable_owner

pub Ownable_owner: ContractAddress

Ownable_pending_owner

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::Storage::Ownable_pending_owner

pub Ownable_pending_owner: ContractAddress

OwnershipTransferred

Emitted when new_owner is set as owner of the contract. new_owner can be set to zero only if the ownership is renounced.

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct OwnershipTransferred {
    pub previous_owner: ContractAddress,
    pub new_owner: ContractAddress,
}

Members

previous_owner

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred::previous_owner

pub previous_owner: ContractAddress

new_owner

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred::new_owner

pub new_owner: ContractAddress

OwnershipTransferStarted

Emitted when transfer_ownership is called on a contract that implements IOwnableTwoStep. previous_owner is the address of the current owner. new_owner is the address of the pending owner.

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct OwnershipTransferStarted {
    pub previous_owner: ContractAddress,
    pub new_owner: ContractAddress,
}

Members

previous_owner

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted::previous_owner

pub previous_owner: ContractAddress

new_owner

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted::new_owner

pub new_owner: ContractAddress

ComponentState

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::Event

pub enum Event {
    OwnershipTransferred: OwnershipTransferred,
    OwnershipTransferStarted: OwnershipTransferStarted,
}

Variants

OwnershipTransferred

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::Event::OwnershipTransferred

OwnershipTransferred: OwnershipTransferred

OwnershipTransferStarted

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::Event::OwnershipTransferStarted

OwnershipTransferStarted: OwnershipTransferStarted

Traits

Traits

HasComponent

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::HasComponent::get_component

fn get_component(self: @TContractState) -> @ComponentState<TContractState>

get_component_mut

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::HasComponent::get_component_mut

fn get_component_mut(ref self: TContractState) -> ComponentState<TContractState>

get_contract

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::HasComponent::get_contract

fn get_contract(self: @ComponentState<TContractState>) -> @TContractState

get_contract_mut

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::HasComponent::get_contract_mut

fn get_contract_mut(ref self: ComponentState<TContractState>) -> TContractState

emit

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::HasComponent::emit

fn emit<S, impl IntoImp: Into<S, openzeppelin_access::ownable::ownable::OwnableComponent::Event>>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::InternalTrait

pub trait InternalTrait<TContractState, +HasComponent<TContractState>>

Trait functions

initializer

Sets the contract’s initial owner.

Requirements:

  • owner is not the zero address.

This function should be called at construction time.

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::InternalTrait::initializer

fn initializer(ref self: ComponentState<TContractState>, owner: ContractAddress)

assert_only_owner

Panics if called by any account other than the owner. Use this to restrict access to certain functions to the owner.

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::InternalTrait::assert_only_owner

fn assert_only_owner(self: @ComponentState<TContractState>)

_transfer_ownership

Transfers ownership of the contract to a new address and resets the pending owner to the zero address.

Internal function without access restriction.

Emits an OwnershipTransferred event.

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::InternalTrait::_transfer_ownership

fn _transfer_ownership(ref self: ComponentState<TContractState>, new_owner: ContractAddress)

_propose_owner

Sets a new pending owner.

Internal function without access restriction.

Emits an OwnershipTransferStarted event.

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::InternalTrait::_propose_owner

fn _propose_owner(ref self: ComponentState<TContractState>, new_owner: ContractAddress)

UnsafeNewContractStateTraitForOwnableImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableImpl

pub trait UnsafeNewContractStateTraitForOwnableImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForOwnableTwoStepImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableTwoStepImpl

pub trait UnsafeNewContractStateTraitForOwnableTwoStepImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableTwoStepImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForOwnableCamelOnlyImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableCamelOnlyImpl

pub trait UnsafeNewContractStateTraitForOwnableCamelOnlyImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableCamelOnlyImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForOwnableTwoStepCamelOnlyImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableTwoStepCamelOnlyImpl

pub trait UnsafeNewContractStateTraitForOwnableTwoStepCamelOnlyImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableTwoStepCamelOnlyImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForOwnableMixinImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableMixinImpl

pub trait UnsafeNewContractStateTraitForOwnableMixinImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableMixinImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForOwnableTwoStepMixinImpl

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableTwoStepMixinImpl

pub trait UnsafeNewContractStateTraitForOwnableTwoStepMixinImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_access::ownable::ownable::OwnableComponent::UnsafeNewContractStateTraitForOwnableTwoStepMixinImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState