Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

openzeppelin_governance

Fully qualified path: openzeppelin_governance

Modules

Modules

Modules

governor

Fully qualified path: openzeppelin_governance::governor

Modules


Re-exports:

ProposalCoreProposal state.

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


Modules

Modules

extensions

Fully qualified path: openzeppelin_governance::governor::extensions

Modules


Re-exports:


Modules

Modules

governor_core_execution

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution

Modules

Modules

Modules

GovernorCoreExecutionComponent

GovernorCoreExecution Component

Extension of GovernorComponent providing an execution mechanism directly through the Governor itself. For a timelocked execution mechanism, see GovernorTimelockExecutionComponent.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent

Free functions

Structs

Enums

Event

Traits

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::unsafe_new_component_state

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

Structs

Structs

Storage

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::Storage

[storage]
pub struct Storage {}

ComponentState

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::Event

pub enum Event {}

Traits

Traits

HasComponent

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::HasComponent::get_component

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

get_component_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::HasComponent::get_component_mut

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

get_contract

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::HasComponent::get_contract

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

get_contract_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::HasComponent::get_contract_mut

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

emit

Fully qualified path: openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::HasComponent::emit

fn emit<
    S,
    impl IntoImp: Into<
        S,
        openzeppelin_governance::governor::extensions::governor_core_execution::GovernorCoreExecutionComponent::Event,
    >,
>(
    ref self: ComponentState<TContractState>, event: S,
)

governor_counting_simple

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple

Modules

Modules

Modules

GovernorCountingSimpleComponent

GovernorCountingSimple Component

Extension of GovernorComponent for simple vote counting with three options.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent

Modules

Errors

Free functions

Structs

Enums

VoteTypeSupported vote types.
Event

Traits

Modules

Modules

Errors

Errors

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::Errors

Constants

Constants

Constants

ALREADY_CAST_VOTE

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::Errors::ALREADY_CAST_VOTE

pub const ALREADY_CAST_VOTE: felt252 = 22262504451487240676400251763458170647653;

INVALID_VOTE_TYPE

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::Errors::INVALID_VOTE_TYPE

pub const INVALID_VOTE_TYPE: felt252 = 24987442531777145766172188403588409159781;

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::unsafe_new_component_state

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

Structs

Structs

Storage

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::Storage

[storage]
pub struct Storage {
    pub Governor_proposals_votes: Map<felt252, ProposalVote>,
}

Members

Governor_proposals_votes

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::Storage::Governor_proposals_votes

pub Governor_proposals_votes: Map<felt252, ProposalVote>

ProposalVote

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::ProposalVote

[starknet::storage_node]
pub struct ProposalVote {
    pub against_votes: u256,
    pub for_votes: u256,
    pub abstain_votes: u256,
    pub has_voted: Map<ContractAddress, bool>,
}

Members

against_votes

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::ProposalVote::against_votes

pub against_votes: u256

for_votes

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::ProposalVote::for_votes

pub for_votes: u256

abstain_votes

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::ProposalVote::abstain_votes

pub abstain_votes: u256

has_voted

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::ProposalVote::has_voted

pub has_voted: Map<ContractAddress, bool>

ComponentState

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

VoteTypeSupported vote types.
Event

VoteType

Supported vote types.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::VoteType

pub enum VoteType {
    Against,
    For,
    Abstain,
}

Variants

Against

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::VoteType::Against

Against

For

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::VoteType::For

For

Abstain

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::VoteType::Abstain

Abstain

Event

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::Event

pub enum Event {}

Traits

Traits

HasComponent

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::HasComponent::get_component

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

get_component_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::HasComponent::get_component_mut

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

get_contract

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::HasComponent::get_contract

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

get_contract_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::HasComponent::get_contract_mut

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

emit

Fully qualified path: openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::HasComponent::emit

fn emit<
    S,
    impl IntoImp: Into<
        S,
        openzeppelin_governance::governor::extensions::governor_counting_simple::GovernorCountingSimpleComponent::Event,
    >,
>(
    ref self: ComponentState<TContractState>, event: S,
)

governor_settings

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings

Modules

Modules

Modules

GovernorSettingsComponent

GovernorSettings Component

Extension of GovernorComponent for settings that are updatable through governance.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent

Modules

Free functions

Structs

Storage
VotingDelayUpdatedEmitted when Governor_voting_delay is updated.
VotingPeriodUpdatedEmitted when Governor_voting_period is updated.
ProposalThresholdUpdatedEmitted when Governor_proposal_threshold is updated.
ComponentState

Enums

Event

Traits

Modules

Modules

Errors

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Errors

Constants

Constants

Constants

INVALID_VOTING_PERIOD

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Errors::INVALID_VOTING_PERIOD

pub const INVALID_VOTING_PERIOD: felt252 = 107320248484662281825934412318490016555160658603876;

__external_GovernorSettingsAdminImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::__external_GovernorSettingsAdminImpl

__l1_handler_GovernorSettingsAdminImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::__l1_handler_GovernorSettingsAdminImpl

__constructor_GovernorSettingsAdminImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::__constructor_GovernorSettingsAdminImpl

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::unsafe_new_component_state

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

Structs

Structs

Storage
VotingDelayUpdatedEmitted when Governor_voting_delay is updated.
VotingPeriodUpdatedEmitted when Governor_voting_period is updated.
ProposalThresholdUpdatedEmitted when Governor_proposal_threshold is updated.
ComponentState

Storage

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Storage

[storage]
pub struct Storage {
    pub Governor_voting_delay: u64,
    pub Governor_voting_period: u64,
    pub Governor_proposal_threshold: u256,
}

Members

Governor_voting_delay

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Storage::Governor_voting_delay

pub Governor_voting_delay: u64

Governor_voting_period

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Storage::Governor_voting_period

pub Governor_voting_period: u64

Governor_proposal_threshold

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Storage::Governor_proposal_threshold

pub Governor_proposal_threshold: u256

VotingDelayUpdated

Emitted when Governor_voting_delay is updated.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::VotingDelayUpdated

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct VotingDelayUpdated {
    pub old_voting_delay: u64,
    pub new_voting_delay: u64,
}

Members

old_voting_delay

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::VotingDelayUpdated::old_voting_delay

pub old_voting_delay: u64

new_voting_delay

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::VotingDelayUpdated::new_voting_delay

pub new_voting_delay: u64

VotingPeriodUpdated

Emitted when Governor_voting_period is updated.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::VotingPeriodUpdated

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct VotingPeriodUpdated {
    pub old_voting_period: u64,
    pub new_voting_period: u64,
}

Members

old_voting_period

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::VotingPeriodUpdated::old_voting_period

pub old_voting_period: u64

new_voting_period

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::VotingPeriodUpdated::new_voting_period

pub new_voting_period: u64

ProposalThresholdUpdated

Emitted when Governor_proposal_threshold is updated.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::ProposalThresholdUpdated

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct ProposalThresholdUpdated {
    pub old_proposal_threshold: u256,
    pub new_proposal_threshold: u256,
}

Members

old_proposal_threshold

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::ProposalThresholdUpdated::old_proposal_threshold

pub old_proposal_threshold: u256

new_proposal_threshold

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::ProposalThresholdUpdated::new_proposal_threshold

pub new_proposal_threshold: u256

ComponentState

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Event

pub enum Event {
    VotingDelayUpdated: VotingDelayUpdated,
    VotingPeriodUpdated: VotingPeriodUpdated,
    ProposalThresholdUpdated: ProposalThresholdUpdated,
}

Variants

VotingDelayUpdated

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Event::VotingDelayUpdated

VotingDelayUpdated: VotingDelayUpdated

VotingPeriodUpdated

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Event::VotingPeriodUpdated

VotingPeriodUpdated: VotingPeriodUpdated

ProposalThresholdUpdated

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Event::ProposalThresholdUpdated

ProposalThresholdUpdated: ProposalThresholdUpdated

Traits

Traits

HasComponent

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::HasComponent::get_component

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

get_component_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::HasComponent::get_component_mut

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

get_contract

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::HasComponent::get_contract

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

get_contract_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::HasComponent::get_contract_mut

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

emit

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::HasComponent::emit

fn emit<
    S,
    impl IntoImp: Into<
        S,
        openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::Event,
    >,
>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::InternalTrait

pub trait InternalTrait<TContractState, +HasComponent<TContractState>, impl GovernorCountingTrait<TContractState>: GovernorCountingTrait<TContractState>, impl GovernorExecutionTrait<TContractState>: GovernorExecutionTrait<TContractState>, impl GovernorVotesTrait<TContractState>: GovernorVotesTrait<TContractState>, impl HasComponent<TContractState>: HasComponent<TContractState>, impl Governor: HasComponent<TContractState>, +Drop<TContractState>>

Trait functions

initializer

Initializes the component by setting the default values.

Requirements:

  • new_voting_period must be greater than 0.

Emits a VotingDelayUpdated, VotingPeriodUpdated, and ProposalThresholdUpdated event.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::InternalTrait::initializer

fn initializer(
    ref self: ComponentState<TContractState>,
    new_voting_delay: u64,
    new_voting_period: u64,
    new_proposal_threshold: u256,
)

assert_only_governance

Wrapper for Governor::assert_only_governance.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::InternalTrait::assert_only_governance

fn assert_only_governance(self: @ComponentState<TContractState>)

_set_voting_delay

Internal function to update the voting delay.

NOTE: This function does not emit an event if the new voting delay is the same as the old one.

May emit a VotingDelayUpdated event.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::InternalTrait::_set_voting_delay

fn _set_voting_delay(ref self: ComponentState<TContractState>, new_voting_delay: u64)

_set_voting_period

Internal function to update the voting period.

Requirements:

  • new_voting_period must be greater than 0.

NOTE: This function does not emit an event if the new voting period is the same as the old one.

May emit a VotingPeriodUpdated event.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::InternalTrait::_set_voting_period

fn _set_voting_period(ref self: ComponentState<TContractState>, new_voting_period: u64)

_set_proposal_threshold

Internal function to update the proposal threshold.

NOTE: This function does not emit an event if the new proposal threshold is the same as the old one.

May emit a ProposalThresholdUpdated event.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::InternalTrait::_set_proposal_threshold

fn _set_proposal_threshold(ref self: ComponentState<TContractState>, new_proposal_threshold: u256)

UnsafeNewContractStateTraitForGovernorSettingsAdminImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::UnsafeNewContractStateTraitForGovernorSettingsAdminImpl

pub trait UnsafeNewContractStateTraitForGovernorSettingsAdminImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_governance::governor::extensions::governor_settings::GovernorSettingsComponent::UnsafeNewContractStateTraitForGovernorSettingsAdminImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

governor_timelock_execution

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution

Modules

Modules

Modules

GovernorTimelockExecutionComponent

GovernorTimelockExecution Component

Extension of GovernorComponent that binds the execution process to an instance of a contract implementing TimelockControllerComponent. This adds a delay, enforced by the TimelockController to all successful proposals (in addition to the voting duration).

NOTE: The Governor needs the PROPOSER, EXECUTOR, and CANCELLER roles to work properly.

Using this model means the proposal will be operated by the TimelockController and not by the Governor. Thus, the assets and permissions must be attached to the TimelockController. Any asset sent to the Governor will be inaccessible from a proposal, unless executed via Governor::relay.

WARNING: Setting up the TimelockController to have additional proposers or cancellers besides the governor is very risky, as it grants them the ability to: 1) execute operations as the timelock, and thus possibly performing operations or accessing funds that are expected to only be accessible through a vote, and 2) block governance proposals that have been approved by the voters, effectively executing a Denial of Service attack.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent

Modules

Free functions

Structs

Storage
TimelockUpdatedEmitted when the timelock controller used for proposal execution is modified.
ComponentState

Enums

Event

Traits

Modules

Modules

Errors

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::Errors

Constants

Constants

Constants

INVALID_TIMELOCK_CONTROLLER

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::Errors::INVALID_TIMELOCK_CONTROLLER

pub const INVALID_TIMELOCK_CONTROLLER: felt252 =
    30207964442802130652131156886795978221456167704787259247460902258;

__external_TimelockedImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::__external_TimelockedImpl

__l1_handler_TimelockedImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::__l1_handler_TimelockedImpl

__constructor_TimelockedImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::__constructor_TimelockedImpl

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::unsafe_new_component_state

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

Structs

Structs

Storage
TimelockUpdatedEmitted when the timelock controller used for proposal execution is modified.
ComponentState

Storage

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::Storage

[storage]
pub struct Storage {
    pub Governor_timelock_controller: ContractAddress,
    pub Governor_timelock_ids: Map<felt252, felt252>,
}

Members

Governor_timelock_controller

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::Storage::Governor_timelock_controller

pub Governor_timelock_controller: ContractAddress

Governor_timelock_ids

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::Storage::Governor_timelock_ids

pub Governor_timelock_ids: Map<felt252, felt252>

TimelockUpdated

Emitted when the timelock controller used for proposal execution is modified.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::TimelockUpdated

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct TimelockUpdated {
    pub old_timelock: ContractAddress,
    pub new_timelock: ContractAddress,
}

Members

old_timelock

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::TimelockUpdated::old_timelock

pub old_timelock: ContractAddress

new_timelock

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::TimelockUpdated::new_timelock

pub new_timelock: ContractAddress

ComponentState

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::Event

pub enum Event {
    TimelockUpdated: TimelockUpdated,
}

Variants

TimelockUpdated

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::Event::TimelockUpdated

TimelockUpdated: TimelockUpdated

Traits

Traits

HasComponent

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::HasComponent::get_component

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

get_component_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::HasComponent::get_component_mut

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

get_contract

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::HasComponent::get_contract

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

get_contract_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::HasComponent::get_contract_mut

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

emit

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::HasComponent::emit

fn emit<
    S,
    impl IntoImp: Into<
        S,
        openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::Event,
    >,
>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::InternalTrait

pub trait InternalTrait<TContractState, +HasComponent<TContractState>, impl GovernorSettingsTrait<TContractState>: GovernorSettingsTrait<TContractState>, impl GovernorCountingTrait<TContractState>: GovernorCountingTrait<TContractState>, impl GovernorVotesTrait<TContractState>: GovernorVotesTrait<TContractState>, impl HasComponent<TContractState>: HasComponent<TContractState>, impl Governor: HasComponent<TContractState>, +Drop<TContractState>>

Trait functions

initializer

Initializes the component by setting the timelock contract address.

Requirements:

  • timelock_controller must not be zero.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::InternalTrait::initializer

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

assert_only_governance

Wrapper for Governor::assert_only_governance.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::InternalTrait::assert_only_governance

fn assert_only_governance(self: @ComponentState<TContractState>)

timelock_salt

Computes the TimelockController operation salt as the XOR of the governor address and description_hash. In the case of overflow, it is reduced modulo P.

It is computed with the governor address itself to avoid collisions across governor instances using the same timelock.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::InternalTrait::timelock_salt

fn timelock_salt(self: @ComponentState<TContractState>, description_hash: felt252) -> felt252

get_timelock_dispatcher

Returns the timelock contract address wrapped in a ITimelockDispatcher.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::InternalTrait::get_timelock_dispatcher

fn get_timelock_dispatcher(self: @ComponentState<TContractState>) -> ITimelockDispatcher

_update_timelock

Updates the timelock contract address.

Emits a TimelockUpdated event.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::InternalTrait::_update_timelock

fn _update_timelock(ref self: ComponentState<TContractState>, new_timelock: ContractAddress)

UnsafeNewContractStateTraitForTimelockedImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::UnsafeNewContractStateTraitForTimelockedImpl

pub trait UnsafeNewContractStateTraitForTimelockedImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_governance::governor::extensions::governor_timelock_execution::GovernorTimelockExecutionComponent::UnsafeNewContractStateTraitForTimelockedImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

governor_votes

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes

Modules

Modules

Modules

GovernorVotesComponent

GovernorVotes Component

Extension of GovernorComponent for voting weight extraction from a token with the Votes extension.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent

Modules

Free functions

Structs

Enums

Event

Traits

Modules

Modules

Errors

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::Errors

Constants

Constants

Constants

INVALID_TOKEN

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::Errors::INVALID_TOKEN

pub const INVALID_TOKEN: felt252 = 1637577033762547024931860539240840025294464366;

__external_VotesTokenImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::__external_VotesTokenImpl

__l1_handler_VotesTokenImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::__l1_handler_VotesTokenImpl

__constructor_VotesTokenImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::__constructor_VotesTokenImpl

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::unsafe_new_component_state

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

Structs

Structs

Storage

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::Storage

[storage]
pub struct Storage {
    pub Governor_token: ContractAddress,
}

Members

Governor_token

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::Storage::Governor_token

pub Governor_token: ContractAddress

ComponentState

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::Event

pub enum Event {}

Traits

Traits

HasComponent

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::HasComponent::get_component

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

get_component_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::HasComponent::get_component_mut

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

get_contract

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::HasComponent::get_contract

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

get_contract_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::HasComponent::get_contract_mut

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

emit

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::HasComponent::emit

fn emit<
    S,
    impl IntoImp: Into<
        S,
        openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::Event,
    >,
>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::InternalTrait

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

Trait functions

initializer

Initializes the component by setting the votes token.

Requirements:

  • votes_token must not be zero.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::InternalTrait::initializer

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

UnsafeNewContractStateTraitForVotesTokenImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::UnsafeNewContractStateTraitForVotesTokenImpl

pub trait UnsafeNewContractStateTraitForVotesTokenImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes::GovernorVotesComponent::UnsafeNewContractStateTraitForVotesTokenImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

governor_votes_quorum_fraction

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction

Modules

Modules

Modules

GovernorVotesQuorumFractionComponent

GovernorVotesQuorumFraction Component

Extension of GovernorComponent for voting weight extraction from a token with the Votes extension and a quorum expressed as a fraction of the total supply.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent

Modules

Free functions

Structs

Storage
QuorumNumeratorUpdatedEmitted when the quorum numerator is updated.
ComponentState

Enums

Event

Traits

Modules

Modules

Errors

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::Errors

Constants

Constants

Constants

INVALID_QUORUM_FRACTION

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::Errors::INVALID_QUORUM_FRACTION

pub const INVALID_QUORUM_FRACTION: felt252 =
    7033339804690827301718597462522552828128581913957461870;

INVALID_TOKEN

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::Errors::INVALID_TOKEN

pub const INVALID_TOKEN: felt252 = 1637577033762547024931860539240840025294464366;

__external_QuorumFractionImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::__external_QuorumFractionImpl

__l1_handler_QuorumFractionImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::__l1_handler_QuorumFractionImpl

__constructor_QuorumFractionImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::__constructor_QuorumFractionImpl

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::unsafe_new_component_state

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

Structs

Structs

Storage
QuorumNumeratorUpdatedEmitted when the quorum numerator is updated.
ComponentState

Storage

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::Storage

[storage]
pub struct Storage {
    pub Governor_token: ContractAddress,
    pub Governor_quorum_numerator_history: Trace,
}

Members

Governor_token

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::Storage::Governor_token

pub Governor_token: ContractAddress

Governor_quorum_numerator_history

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::Storage::Governor_quorum_numerator_history

pub Governor_quorum_numerator_history: Trace

QuorumNumeratorUpdated

Emitted when the quorum numerator is updated.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::QuorumNumeratorUpdated

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct QuorumNumeratorUpdated {
    pub old_quorum_numerator: u256,
    pub new_quorum_numerator: u256,
}

Members

old_quorum_numerator

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::QuorumNumeratorUpdated::old_quorum_numerator

pub old_quorum_numerator: u256

new_quorum_numerator

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::QuorumNumeratorUpdated::new_quorum_numerator

pub new_quorum_numerator: u256

ComponentState

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::Event

pub enum Event {
    QuorumNumeratorUpdated: QuorumNumeratorUpdated,
}

Variants

QuorumNumeratorUpdated

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::Event::QuorumNumeratorUpdated

QuorumNumeratorUpdated: QuorumNumeratorUpdated

Traits

Traits

HasComponent

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::HasComponent::get_component

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

get_component_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::HasComponent::get_component_mut

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

get_contract

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::HasComponent::get_contract

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

get_contract_mut

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::HasComponent::get_contract_mut

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

emit

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::HasComponent::emit

fn emit<
    S,
    impl IntoImp: Into<
        S,
        openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::Event,
    >,
>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::InternalTrait

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

Trait functions

initializer

Initializes the component by setting the votes token and the initial quorum numerator value.

Requirements:

  • votes_token must not be zero.
  • quorum_numerator must be less than quorum_denominator.

Emits a QuorumNumeratorUpdated event.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::InternalTrait::initializer

fn initializer(
    ref self: ComponentState<TContractState>, votes_token: ContractAddress, quorum_numerator: u256,
)

update_quorum_numerator

Updates the quorum numerator.

NOTE: This function does not emit an event if the new quorum numerator is the same as the old one.

Requirements:

  • new_quorum_numerator must be less than quorum_denominator.

May emit a QuorumNumeratorUpdated event.

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::InternalTrait::update_quorum_numerator

fn update_quorum_numerator(ref self: ComponentState<TContractState>, new_quorum_numerator: u256)

UnsafeNewContractStateTraitForQuorumFractionImpl

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::UnsafeNewContractStateTraitForQuorumFractionImpl

pub trait UnsafeNewContractStateTraitForQuorumFractionImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_governance::governor::extensions::governor_votes_quorum_fraction::GovernorVotesQuorumFractionComponent::UnsafeNewContractStateTraitForQuorumFractionImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

governor

Fully qualified path: openzeppelin_governance::governor::governor

Modules

Impls

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

Modules

Modules

GovernorComponent

Governor Component

Core of the governance system.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent

Modules

Free functions

Structs

Storage
ProposalCreatedEmitted when call is scheduled as part of operation id .
ProposalQueuedEmitted when a proposal is queued.
ProposalExecutedEmitted when a proposal is executed.
ProposalCanceledEmitted when a proposal is canceled.
VoteCastEmitted when a vote is cast without params.
VoteCastWithParamsEmitted when a vote is cast with params. NOTE: support values should be seen as buckets. Their interpretation depends on the voting module used. params
ComponentState

Enums

Event

Traits

ImmutableConfigConstants expected to be defined at the contract level used to configure the component behavior….
GovernorSettingsTrait
GovernorQuorumTrait
GovernorCountingTrait
GovernorVotesTrait
GovernorExecutionTrait
HasComponent
InternalTrait
InternalExtendedTrait
UnsafeNewContractStateTraitForGovernorImpl

Modules

Modules

Errors

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Errors

Constants

Constants

Constants

EXECUTOR_ONLY

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Errors::EXECUTOR_ONLY

pub const EXECUTOR_ONLY: felt252 = 5504003985851522690581493869689;

PROPOSER_ONLY

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Errors::PROPOSER_ONLY

pub const PROPOSER_ONLY: felt252 = 6373669013987707420509201132665;

NONEXISTENT_PROPOSAL

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Errors::NONEXISTENT_PROPOSAL

pub const NONEXISTENT_PROPOSAL: felt252 = 447786279721322827064110475097525489609471123820;

EXISTENT_PROPOSAL

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Errors::EXISTENT_PROPOSAL

pub const EXISTENT_PROPOSAL: felt252 = 23639538209908052828444086322521472983404;

RESTRICTED_PROPOSER

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Errors::RESTRICTED_PROPOSER

pub const RESTRICTED_PROPOSER: felt252 = 1837498734415321675983055626448671942234039666;

INSUFFICIENT_PROPOSER_VOTES

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Errors::INSUFFICIENT_PROPOSER_VOTES

pub const INSUFFICIENT_PROPOSER_VOTES: felt252 = 6396781404174968618341064636014939040146803;

UNEXPECTED_PROPOSAL_STATE

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Errors::UNEXPECTED_PROPOSAL_STATE

pub const UNEXPECTED_PROPOSAL_STATE: felt252 =
    536260558599490853407724593562672133152449371803561509352549;

QUEUE_NOT_IMPLEMENTED

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Errors::QUEUE_NOT_IMPLEMENTED

pub const QUEUE_NOT_IMPLEMENTED: felt252 = 119051847145803658975802206826363178663641491989860;

INVALID_SIGNATURE

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Errors::INVALID_SIGNATURE

pub const INVALID_SIGNATURE: felt252 = 24987442531777145766116412176803132961381;

__external_GovernorImpl

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::__external_GovernorImpl

__l1_handler_GovernorImpl

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::__l1_handler_GovernorImpl

__constructor_GovernorImpl

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::__constructor_GovernorImpl

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::unsafe_new_component_state

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

Structs

Structs

Storage
ProposalCreatedEmitted when call is scheduled as part of operation id .
ProposalQueuedEmitted when a proposal is queued.
ProposalExecutedEmitted when a proposal is executed.
ProposalCanceledEmitted when a proposal is canceled.
VoteCastEmitted when a vote is cast without params.
VoteCastWithParamsEmitted when a vote is cast with params. NOTE: support values should be seen as buckets. Their interpretation depends on the voting module used. params
ComponentState

Storage

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Storage

[storage]
pub struct Storage {
    pub Governor_proposals: Map<felt252, ProposalCore>,
    pub Governor_nonces: Map<ContractAddress, felt252>,
}

Members

Governor_proposals

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Storage::Governor_proposals

pub Governor_proposals: Map<felt252, ProposalCore>

Governor_nonces

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Storage::Governor_nonces

pub Governor_nonces: Map<ContractAddress, felt252>

ProposalCreated

Emitted when call is scheduled as part of operation id.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalCreated

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct ProposalCreated {
    pub proposal_id: felt252,
    pub proposer: ContractAddress,
    pub calls: Span<Call>,
    pub signatures: Span<Span<felt252>>,
    pub vote_start: u64,
    pub vote_end: u64,
    pub description: ByteArray,
}

Members

proposal_id

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalCreated::proposal_id

pub proposal_id: felt252

proposer

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalCreated::proposer

pub proposer: ContractAddress

calls

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalCreated::calls

pub calls: Span<Call>

signatures

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalCreated::signatures

pub signatures: Span<Span<felt252>>

vote_start

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalCreated::vote_start

pub vote_start: u64

vote_end

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalCreated::vote_end

pub vote_end: u64

description

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalCreated::description

pub description: ByteArray

ProposalQueued

Emitted when a proposal is queued.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalQueued

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct ProposalQueued {
    pub proposal_id: felt252,
    pub eta_seconds: u64,
}

Members

proposal_id

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalQueued::proposal_id

pub proposal_id: felt252

eta_seconds

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalQueued::eta_seconds

pub eta_seconds: u64

ProposalExecuted

Emitted when a proposal is executed.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalExecuted

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

Members

proposal_id

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalExecuted::proposal_id

pub proposal_id: felt252

ProposalCanceled

Emitted when a proposal is canceled.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalCanceled

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

Members

proposal_id

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ProposalCanceled::proposal_id

pub proposal_id: felt252

VoteCast

Emitted when a vote is cast without params.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCast

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct VoteCast {
    pub voter: ContractAddress,
    pub proposal_id: felt252,
    pub support: u8,
    pub weight: u256,
    pub reason: ByteArray,
}

Members

voter

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCast::voter

pub voter: ContractAddress

proposal_id

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCast::proposal_id

pub proposal_id: felt252

support

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCast::support

pub support: u8

weight

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCast::weight

pub weight: u256

reason

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCast::reason

pub reason: ByteArray

VoteCastWithParams

Emitted when a vote is cast with params.

NOTE: support values should be seen as buckets. Their interpretation depends on the voting module used. params are additional encoded parameters. Their interpretation also depends on the voting module used.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCastWithParams

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct VoteCastWithParams {
    pub voter: ContractAddress,
    pub proposal_id: felt252,
    pub support: u8,
    pub weight: u256,
    pub reason: ByteArray,
    pub params: Span<felt252>,
}

Members

voter

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCastWithParams::voter

pub voter: ContractAddress

proposal_id

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCastWithParams::proposal_id

pub proposal_id: felt252

support

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCastWithParams::support

pub support: u8

weight

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCastWithParams::weight

pub weight: u256

reason

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCastWithParams::reason

pub reason: ByteArray

params

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::VoteCastWithParams::params

pub params: Span<felt252>

ComponentState

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Event

pub enum Event {
    ProposalCreated: ProposalCreated,
    ProposalQueued: ProposalQueued,
    ProposalExecuted: ProposalExecuted,
    ProposalCanceled: ProposalCanceled,
    VoteCast: VoteCast,
    VoteCastWithParams: VoteCastWithParams,
}

Variants

ProposalCreated

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Event::ProposalCreated

ProposalCreated: ProposalCreated

ProposalQueued

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Event::ProposalQueued

ProposalQueued: ProposalQueued

ProposalExecuted

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Event::ProposalExecuted

ProposalExecuted: ProposalExecuted

ProposalCanceled

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Event::ProposalCanceled

ProposalCanceled: ProposalCanceled

VoteCast

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Event::VoteCast

VoteCast: VoteCast

VoteCastWithParams

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::Event::VoteCastWithParams

VoteCastWithParams: VoteCastWithParams

Traits

Traits

ImmutableConfigConstants expected to be defined at the contract level used to configure the component behavior….
GovernorSettingsTrait
GovernorQuorumTrait
GovernorCountingTrait
GovernorVotesTrait
GovernorExecutionTrait
HasComponent
InternalTrait
InternalExtendedTrait
UnsafeNewContractStateTraitForGovernorImpl

ImmutableConfig

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

  • DEFAULT_PARAMS: Default additional encoded parameters used by cast_vote methods that don’t include them.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ImmutableConfig

pub trait ImmutableConfig

Trait functions

DEFAULT_PARAMS

Defined as a function since constant Span is not supported.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::ImmutableConfig::DEFAULT_PARAMS

fn DEFAULT_PARAMS() -> Span<felt252>

GovernorSettingsTrait

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorSettingsTrait

pub trait GovernorSettingsTrait<TContractState>

Trait functions

voting_delay

See interface::IGovernor::voting_delay.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorSettingsTrait::voting_delay

fn voting_delay(self: @ComponentState<TContractState>) -> u64

voting_period

See interface::IGovernor::voting_period.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorSettingsTrait::voting_period

fn voting_period(self: @ComponentState<TContractState>) -> u64

proposal_threshold

See interface::IGovernor::proposal_threshold.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorSettingsTrait::proposal_threshold

fn proposal_threshold(self: @ComponentState<TContractState>) -> u256

GovernorQuorumTrait

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorQuorumTrait

pub trait GovernorQuorumTrait<TContractState>

Trait functions

quorum

See interface::IGovernor::quorum.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorQuorumTrait::quorum

fn quorum(self: @ComponentState<TContractState>, timepoint: u64) -> u256

GovernorCountingTrait

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorCountingTrait

pub trait GovernorCountingTrait<TContractState>

Trait functions

counting_mode

See interface::IGovernor::COUNTING_MODE.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorCountingTrait::counting_mode

fn counting_mode(self: @ComponentState<TContractState>) -> ByteArray

count_vote

Register a vote for proposal_id by account with a given support, voting weight and voting params.

NOTE: Support is generic and can represent various things depending on the voting system used.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorCountingTrait::count_vote

fn count_vote(
    ref self: ComponentState<TContractState>,
    proposal_id: felt252,
    account: ContractAddress,
    support: u8,
    total_weight: u256,
    params: Span<felt252>,
) -> u256

has_voted

See interface::IGovernor::has_voted.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorCountingTrait::has_voted

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

quorum_reached

Returns whether amount of votes already cast passes the threshold limit.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorCountingTrait::quorum_reached

fn quorum_reached(self: @ComponentState<TContractState>, proposal_id: felt252) -> bool

vote_succeeded

Returns whether the proposal is successful or not.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorCountingTrait::vote_succeeded

fn vote_succeeded(self: @ComponentState<TContractState>, proposal_id: felt252) -> bool

GovernorVotesTrait

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorVotesTrait

pub trait GovernorVotesTrait<TContractState>

Trait functions

clock

See ERC6372Clock::clock.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorVotesTrait::clock

fn clock(self: @ComponentState<TContractState>) -> u64

CLOCK_MODE

See ERC6372Clock::CLOCK_MODE.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorVotesTrait::CLOCK_MODE

fn CLOCK_MODE(self: @ComponentState<TContractState>) -> ByteArray

get_votes

See interface::IGovernor::get_votes.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorVotesTrait::get_votes

fn get_votes(
    self: @ComponentState<TContractState>,
    account: ContractAddress,
    timepoint: u64,
    params: Span<felt252>,
) -> u256

GovernorExecutionTrait

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorExecutionTrait

pub trait GovernorExecutionTrait<TContractState>

Trait functions

state

See interface::IGovernor::state.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorExecutionTrait::state

fn state(self: @ComponentState<TContractState>, proposal_id: felt252) -> ProposalState

executor

Address through which the governor executes action. Should be used to specify whether the module execute actions through another contract such as a timelock.

NOTE: MUST be the governor itself, or an instance of TimelockController with the governor as the only proposer, canceller, and executor.

WARNING: When the executor is not the governor itself (i.e. a timelock), it can call functions that are restricted with the assert_only_governance guard, and also potentially execute transactions on behalf of the governor. Because of this, this module is designed to work with the TimelockController as the unique potential external executor.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorExecutionTrait::executor

fn executor(self: @ComponentState<TContractState>) -> ContractAddress

execute_operations

Execution mechanism. Can be used to modify the way execution is performed (for example adding a vault/timelock).

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorExecutionTrait::execute_operations

fn execute_operations(
    ref self: ComponentState<TContractState>,
    proposal_id: felt252,
    calls: Span<Call>,
    description_hash: felt252,
)

queue_operations

Queuing mechanism. Can be used to modify the way queuing is performed (for example adding a vault/timelock).

Requirements:

  • Must return a timestamp that describes the expected ETA for execution. If the returned value is 0, the core will consider queueing did not succeed, and the public queue function will revert.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorExecutionTrait::queue_operations

fn queue_operations(
    ref self: ComponentState<TContractState>,
    proposal_id: felt252,
    calls: Span<Call>,
    description_hash: felt252,
) -> u64

proposal_needs_queuing

See interface::IGovernor::proposal_needs_queuing.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorExecutionTrait::proposal_needs_queuing

fn proposal_needs_queuing(self: @ComponentState<TContractState>, proposal_id: felt252) -> bool

cancel_operations

Cancel mechanism. Can be used to modify the way canceling is performed (for example adding a vault/timelock).

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::GovernorExecutionTrait::cancel_operations

fn cancel_operations(
    ref self: ComponentState<TContractState>, proposal_id: felt252, description_hash: felt252,
)

HasComponent

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::HasComponent::get_component

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

get_component_mut

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::HasComponent::get_component_mut

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

get_contract

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::HasComponent::get_contract

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

get_contract_mut

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::HasComponent::get_contract_mut

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

emit

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::HasComponent::emit

fn emit<
    S, impl IntoImp: Into<S, openzeppelin_governance::governor::governor::GovernorComponent::Event>,
>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalTrait

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

Trait functions

initializer

Initializes the contract by registering the supported interface id.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalTrait::initializer

fn initializer(ref self: ComponentState<TContractState>)

get_proposal

Returns the proposal object given its id.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalTrait::get_proposal

fn get_proposal(self: @ComponentState<TContractState>, proposal_id: felt252) -> ProposalCore

is_valid_description_for_proposer

Checks if the proposer is authorized to submit a proposal with the given description.

If the proposal description ends with #proposer=0x???, where 0x??? is an address written as a hex string (case insensitive), then the submission of this proposal will only be authorized to said address.

This is used for frontrunning protection. By adding this pattern at the end of their proposal, one can ensure that no other address can submit the same proposal. An attacker would have to either remove or change that part, which would result in a different proposal id.

NOTE: In Starknet, the Sequencer ensures the order of transactions, but frontrunning can still be achieved by nodes, and potentially other actors in the future with sequencer decentralization.

If the description does not match this pattern, it is unrestricted and anyone can submit it. This includes:

  • If the 0x??? part is not a valid hex string.
  • If the 0x??? part is a valid hex string, but does not contain exactly 64 hex digits.
  • If it ends with the expected suffix followed by newlines or other whitespace.
  • If it ends with some other similar suffix, e.g. #other=abc.
  • If it does not end with any such suffix.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalTrait::is_valid_description_for_proposer

fn is_valid_description_for_proposer(
    self: @ComponentState<TContractState>, proposer: ContractAddress, description: @ByteArray,
) -> bool

_hash_proposal

Returns a hash of the proposal using the Pedersen hashing algorithm.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalTrait::_hash_proposal

fn _hash_proposal(
    self: @ComponentState<TContractState>, calls: Span<Call>, description_hash: felt252,
) -> felt252

_proposal_snapshot

Timepoint used to retrieve user’s votes and quorum. If using block number, the snapshot is performed at the end of this block. Hence, voting for this proposal starts at the beginning of the following block.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalTrait::_proposal_snapshot

fn _proposal_snapshot(self: @ComponentState<TContractState>, proposal_id: felt252) -> u64

_proposal_deadline

Timepoint at which votes close. If using block number, votes close at the end of this block, so it is possible to cast a vote during this block.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalTrait::_proposal_deadline

fn _proposal_deadline(self: @ComponentState<TContractState>, proposal_id: felt252) -> u64

_proposal_proposer

The account that created a proposal.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalTrait::_proposal_proposer

fn _proposal_proposer(
    self: @ComponentState<TContractState>, proposal_id: felt252,
) -> ContractAddress

_proposal_eta

The time when a queued proposal becomes executable (“ETA”). Unlike proposal_snapshot and proposal_deadline, this doesn’t use the governor clock, and instead relies on the executor’s clock which may be different. In most cases this will be a timestamp.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalTrait::_proposal_eta

fn _proposal_eta(self: @ComponentState<TContractState>, proposal_id: felt252) -> u64

InternalExtendedTrait

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait

pub trait InternalExtendedTrait<TContractState, +HasComponent<TContractState>, impl HasComponent<TContractState>: HasComponent<TContractState>, +GovernorCountingTrait<TContractState>, +GovernorExecutionTrait<TContractState>, impl GovernorSettings: GovernorSettingsTrait<TContractState>, impl GovernorVotes: GovernorVotesTrait<TContractState>, +Drop<TContractState>>

Trait functions

assert_only_governance

Asserts that the caller is the governance executor.

WARNING: When the executor is not the governor itself (i.e. a timelock), it can call functions that are restricted with this modifier, and also potentially execute transactions on behalf of the governor. Because of this, this module is designed to work with the TimelockController as the unique potential external executor. The timelock MUST have the governor as the only proposer, canceller, and executor.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait::assert_only_governance

fn assert_only_governance(self: @ComponentState<TContractState>)

validate_state

Validates that the proposal is in one of the expected states.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait::validate_state

fn validate_state(
    self: @ComponentState<TContractState>,
    proposal_id: felt252,
    allowed_states: Span<ProposalState>,
)

use_nonce

Consumes a nonce, returns the current value, and increments nonce.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait::use_nonce

fn use_nonce(ref self: ComponentState<TContractState>, voter: ContractAddress) -> felt252

_get_votes

Internal wrapper for GovernorVotesTrait::get_votes.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait::_get_votes

fn _get_votes(
    self: @ComponentState<TContractState>,
    account: ContractAddress,
    timepoint: u64,
    params: Span<felt252>,
) -> u256

_proposal_threshold

Internal wrapper for GovernorProposeTrait::proposal_threshold.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait::_proposal_threshold

fn _proposal_threshold(self: @ComponentState<TContractState>) -> u256

_state

Returns the state of a proposal, given its id.

Requirements:

  • The proposal must exist.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait::_state

fn _state(self: @ComponentState<TContractState>, proposal_id: felt252) -> ProposalState

_propose

Internal propose mechanism. Returns the proposal id.

Requirements:

  • The proposal must not already exist.

Emits a ProposalCreated event.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait::_propose

fn _propose(
    ref self: ComponentState<TContractState>,
    calls: Span<Call>,
    description: @ByteArray,
    proposer: ContractAddress,
) -> felt252

_cancel

Internal cancel mechanism with minimal restrictions. A proposal can be cancelled in any state other than Canceled or Executed.

NOTE: Once cancelled, a proposal can’t be re-submitted.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait::_cancel

fn _cancel(
    ref self: ComponentState<TContractState>, proposal_id: felt252, description_hash: felt252,
)

_count_vote

Internal wrapper for GovernorCountingTrait::count_vote.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait::_count_vote

fn _count_vote(
    ref self: ComponentState<TContractState>,
    proposal_id: felt252,
    account: ContractAddress,
    support: u8,
    total_weight: u256,
    params: Span<felt252>,
) -> u256

_cast_vote

Internal vote-casting mechanism.

Checks that the vote is pending and that it has not been cast yet. This function retrieves the voting weight using get_votes and then calls the _count_vote internal function.

Emits either:

  • VoteCast event if no params are provided.
  • VoteCastWithParams event otherwise.

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::InternalExtendedTrait::_cast_vote

fn _cast_vote(
    ref self: ComponentState<TContractState>,
    proposal_id: felt252,
    voter: ContractAddress,
    support: u8,
    reason: ByteArray,
    params: Span<felt252>,
) -> u256

UnsafeNewContractStateTraitForGovernorImpl

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::UnsafeNewContractStateTraitForGovernorImpl

pub trait UnsafeNewContractStateTraitForGovernorImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_governance::governor::governor::GovernorComponent::UnsafeNewContractStateTraitForGovernorImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

Impls

Impls

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

DefaultConfig

Implementation of the default Governor ImmutableConfig.

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

The DEFAULT_PARAMS is set to an empty span of felts.

Fully qualified path: openzeppelin_governance::governor::governor::DefaultConfig

pub impl DefaultConfig of ImmutableConfig;

Impl functions

DEFAULT_PARAMS

Fully qualified path: openzeppelin_governance::governor::governor::DefaultConfig::DEFAULT_PARAMS

fn DEFAULT_PARAMS() -> Span<felt252>

proposal_core

Fully qualified path: openzeppelin_governance::governor::proposal_core

Structs

ProposalCoreProposal state.

Structs

Structs

ProposalCoreProposal state.

ProposalCore

Proposal state.

Fully qualified path: openzeppelin_governance::governor::proposal_core::ProposalCore

[derive(Copy, Drop, Serde, PartialEq, Debug)]
pub struct ProposalCore {
    pub proposer: ContractAddress,
    pub vote_start: u64,
    pub vote_duration: u64,
    pub executed: bool,
    pub canceled: bool,
    pub eta_seconds: u64,
}

Members

proposer

Fully qualified path: openzeppelin_governance::governor::proposal_core::ProposalCore::proposer

pub proposer: ContractAddress

vote_start

Fully qualified path: openzeppelin_governance::governor::proposal_core::ProposalCore::vote_start

pub vote_start: u64

vote_duration

Fully qualified path: openzeppelin_governance::governor::proposal_core::ProposalCore::vote_duration

pub vote_duration: u64

executed

Fully qualified path: openzeppelin_governance::governor::proposal_core::ProposalCore::executed

pub executed: bool

canceled

Fully qualified path: openzeppelin_governance::governor::proposal_core::ProposalCore::canceled

pub canceled: bool

eta_seconds

Fully qualified path: openzeppelin_governance::governor::proposal_core::ProposalCore::eta_seconds

pub eta_seconds: u64

vote

Fully qualified path: openzeppelin_governance::governor::vote

Constants

Structs

Constants

Constants

VOTE_TYPE_HASH

Fully qualified path: openzeppelin_governance::governor::vote::VOTE_TYPE_HASH

pub const VOTE_TYPE_HASH: felt252 =
    725086074905528818286057064447115658319371078818069988727085961453449186177;

VOTE_WITH_REASON_AND_PARAMS_TYPE_HASH

Fully qualified path: openzeppelin_governance::governor::vote::VOTE_WITH_REASON_AND_PARAMS_TYPE_HASH

pub const VOTE_WITH_REASON_AND_PARAMS_TYPE_HASH: felt252 =
    884836110813927721873221814866501037558610336142253565359524245175899322699;

Structs

Structs

Vote

Fully qualified path: openzeppelin_governance::governor::vote::Vote

[derive(Copy, Drop, Hash)]
pub struct Vote {
    pub verifying_contract: ContractAddress,
    pub nonce: felt252,
    pub proposal_id: felt252,
    pub support: u8,
    pub voter: ContractAddress,
}

Members

verifying_contract

Fully qualified path: openzeppelin_governance::governor::vote::Vote::verifying_contract

pub verifying_contract: ContractAddress

nonce

Fully qualified path: openzeppelin_governance::governor::vote::Vote::nonce

pub nonce: felt252

proposal_id

Fully qualified path: openzeppelin_governance::governor::vote::Vote::proposal_id

pub proposal_id: felt252

support

Fully qualified path: openzeppelin_governance::governor::vote::Vote::support

pub support: u8

voter

Fully qualified path: openzeppelin_governance::governor::vote::Vote::voter

pub voter: ContractAddress

VoteWithReasonAndParams

Fully qualified path: openzeppelin_governance::governor::vote::VoteWithReasonAndParams

[derive(Copy, Drop)]
pub struct VoteWithReasonAndParams {
    pub verifying_contract: ContractAddress,
    pub nonce: felt252,
    pub proposal_id: felt252,
    pub support: u8,
    pub voter: ContractAddress,
    pub reason_hash: felt252,
    pub params: Span<felt252>,
}

Members

verifying_contract

Fully qualified path: openzeppelin_governance::governor::vote::VoteWithReasonAndParams::verifying_contract

pub verifying_contract: ContractAddress

nonce

Fully qualified path: openzeppelin_governance::governor::vote::VoteWithReasonAndParams::nonce

pub nonce: felt252

proposal_id

Fully qualified path: openzeppelin_governance::governor::vote::VoteWithReasonAndParams::proposal_id

pub proposal_id: felt252

support

Fully qualified path: openzeppelin_governance::governor::vote::VoteWithReasonAndParams::support

pub support: u8

voter

Fully qualified path: openzeppelin_governance::governor::vote::VoteWithReasonAndParams::voter

pub voter: ContractAddress

reason_hash

Fully qualified path: openzeppelin_governance::governor::vote::VoteWithReasonAndParams::reason_hash

pub reason_hash: felt252

params

Fully qualified path: openzeppelin_governance::governor::vote::VoteWithReasonAndParams::params

pub params: Span<felt252>

multisig

Fully qualified path: openzeppelin_governance::multisig

Modules


Re-exports:


Modules

Modules

multisig

Fully qualified path: openzeppelin_governance::multisig::multisig

Modules

Modules

Modules

MultisigComponent

Multisig Component

Component that implements a multi-signature mechanism to enhance the security and governance of smart contract transactions. It requires multiple registered signers to collectively approve and execute transactions, ensuring that no single signer can perform critical actions unilaterally.

By default, this component is self-administered, meaning modifications to signers or quorum must be performed by the contract itself through the multisig approval process. Only registered signers can submit, confirm, revoke, or execute transactions. A common use case is to secure important operations by requiring multiple approvals, such as in fund management or protocol governance.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent

Modules

Free functions

Structs

Storage
SignerAddedEmitted when a new signer is added.
SignerRemovedEmitted when a signer is removed.
QuorumUpdatedEmitted when the quorum value is updated.
TransactionSubmittedEmitted when a new transaction is submitted by a signer .
TransactionConfirmedEmitted when a transaction is confirmed by a signer .
ConfirmationRevokedEmitted when a signer revokes his confirmation.
TransactionExecutedEmitted when a transaction is executed.
CallSaltEmitted when a new transaction is submitted with non-zero salt.
ComponentState

Enums

Event

Traits

Modules

Modules

Errors

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors

Constants

Constants

Constants

UNAUTHORIZED

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::UNAUTHORIZED

pub const UNAUTHORIZED: felt252 = 28980735133710228569237587213461474776215379414508900;

NOT_A_SIGNER

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::NOT_A_SIGNER

pub const NOT_A_SIGNER: felt252 = 28980735133710228569237585048363487446986659776587122;

ALREADY_A_SIGNER

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::ALREADY_A_SIGNER

pub const ALREADY_A_SIGNER: felt252 =
    124471309613323618845560282141163823132043530618172507669030258;

ALREADY_CONFIRMED

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::ALREADY_CONFIRMED

pub const ALREADY_CONFIRMED: felt252 =
    31864655261010846424463432228137938721803143880836789374926284132;

HAS_NOT_CONFIRMED

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::HAS_NOT_CONFIRMED

pub const HAS_NOT_CONFIRMED: felt252 =
    31864655261010846424463434595496793058698599549259553196380874084;

TX_ALREADY_EXISTS

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::TX_ALREADY_EXISTS

pub const TX_ALREADY_EXISTS: felt252 =
    31864655261010846424463438709027797572833375938559821179128083571;

TX_NOT_FOUND

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::TX_NOT_FOUND

pub const TX_NOT_FOUND: felt252 = 28980735133710228569237586915758639845424376204062308;

TX_NOT_CONFIRMED

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::TX_NOT_CONFIRMED

pub const TX_NOT_CONFIRMED: felt252 =
    124471309613323618845560307457140865165540135695436916542236004;

TX_ALREADY_EXECUTED

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::TX_ALREADY_EXECUTED

pub const TX_ALREADY_EXECUTED: felt252 =
    2088282047185606831273635919234845741733208125509456440790871335789924;

ZERO_ADDRESS_SIGNER

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::ZERO_ADDRESS_SIGNER

pub const ZERO_ADDRESS_SIGNER: felt252 =
    2088282047185606831273636051412104868533519736479712600171427759285618;

ZERO_QUORUM

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::ZERO_QUORUM

pub const ZERO_QUORUM: felt252 =
    8157351746818776684662640047258508745439585914141865884190243102768;

QUORUM_TOO_HIGH

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Errors::QUORUM_TOO_HIGH

pub const QUORUM_TOO_HIGH: felt252 =
    124471309613323618845560303455482616354973463089364470377837171;

__external_MultisigImpl

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::__external_MultisigImpl

__l1_handler_MultisigImpl

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::__l1_handler_MultisigImpl

__constructor_MultisigImpl

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::__constructor_MultisigImpl

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::unsafe_new_component_state

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

Structs

Structs

Storage
SignerAddedEmitted when a new signer is added.
SignerRemovedEmitted when a signer is removed.
QuorumUpdatedEmitted when the quorum value is updated.
TransactionSubmittedEmitted when a new transaction is submitted by a signer .
TransactionConfirmedEmitted when a transaction is confirmed by a signer .
ConfirmationRevokedEmitted when a signer revokes his confirmation.
TransactionExecutedEmitted when a transaction is executed.
CallSaltEmitted when a new transaction is submitted with non-zero salt.
ComponentState

Storage

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Storage

[storage]
pub struct Storage {
    pub Multisig_signers_info: SignersInfo,
    pub Multisig_is_signer: Map<ContractAddress, bool>,
    pub Multisig_signers_by_index: Map<u32, ContractAddress>,
    pub Multisig_signers_indices: Map<ContractAddress, u32>,
    pub Multisig_tx_info: Map<felt252, TxInfo>,
    pub Multisig_tx_confirmed_by: Map<(felt252, ContractAddress), bool>,
}

Members

Multisig_signers_info

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Storage::Multisig_signers_info

pub Multisig_signers_info: SignersInfo

Multisig_is_signer

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Storage::Multisig_is_signer

pub Multisig_is_signer: Map<ContractAddress, bool>

Multisig_signers_by_index

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Storage::Multisig_signers_by_index

pub Multisig_signers_by_index: Map<u32, ContractAddress>

Multisig_signers_indices

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Storage::Multisig_signers_indices

pub Multisig_signers_indices: Map<ContractAddress, u32>

Multisig_tx_info

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Storage::Multisig_tx_info

pub Multisig_tx_info: Map<felt252, TxInfo>

Multisig_tx_confirmed_by

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Storage::Multisig_tx_confirmed_by

pub Multisig_tx_confirmed_by: Map<(felt252, ContractAddress), bool>

SignerAdded

Emitted when a new signer is added.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::SignerAdded

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

Members

signer

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::SignerAdded::signer

pub signer: ContractAddress

SignerRemoved

Emitted when a signer is removed.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::SignerRemoved

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

Members

signer

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::SignerRemoved::signer

pub signer: ContractAddress

QuorumUpdated

Emitted when the quorum value is updated.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::QuorumUpdated

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct QuorumUpdated {
    pub old_quorum: u32,
    pub new_quorum: u32,
}

Members

old_quorum

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::QuorumUpdated::old_quorum

pub old_quorum: u32

new_quorum

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::QuorumUpdated::new_quorum

pub new_quorum: u32

TransactionSubmitted

Emitted when a new transaction is submitted by a signer.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::TransactionSubmitted

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct TransactionSubmitted {
    pub id: felt252,
    pub signer: ContractAddress,
}

Members

id

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::TransactionSubmitted::id

pub id: felt252

signer

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::TransactionSubmitted::signer

pub signer: ContractAddress

TransactionConfirmed

Emitted when a transaction is confirmed by a signer.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::TransactionConfirmed

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct TransactionConfirmed {
    pub id: felt252,
    pub signer: ContractAddress,
}

Members

id

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::TransactionConfirmed::id

pub id: felt252

signer

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::TransactionConfirmed::signer

pub signer: ContractAddress

ConfirmationRevoked

Emitted when a signer revokes his confirmation.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::ConfirmationRevoked

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct ConfirmationRevoked {
    pub id: felt252,
    pub signer: ContractAddress,
}

Members

id

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::ConfirmationRevoked::id

pub id: felt252

signer

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::ConfirmationRevoked::signer

pub signer: ContractAddress

TransactionExecuted

Emitted when a transaction is executed.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::TransactionExecuted

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

Members

id

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::TransactionExecuted::id

pub id: felt252

CallSalt

Emitted when a new transaction is submitted with non-zero salt.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::CallSalt

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct CallSalt {
    pub id: felt252,
    pub salt: felt252,
}

Members

id

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::CallSalt::id

pub id: felt252

salt

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::CallSalt::salt

pub salt: felt252

ComponentState

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Event

pub enum Event {
    SignerAdded: SignerAdded,
    SignerRemoved: SignerRemoved,
    QuorumUpdated: QuorumUpdated,
    TransactionSubmitted: TransactionSubmitted,
    TransactionConfirmed: TransactionConfirmed,
    TransactionExecuted: TransactionExecuted,
    ConfirmationRevoked: ConfirmationRevoked,
    CallSalt: CallSalt,
}

Variants

SignerAdded

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Event::SignerAdded

SignerAdded: SignerAdded

SignerRemoved

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Event::SignerRemoved

SignerRemoved: SignerRemoved

QuorumUpdated

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Event::QuorumUpdated

QuorumUpdated: QuorumUpdated

TransactionSubmitted

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Event::TransactionSubmitted

TransactionSubmitted: TransactionSubmitted

TransactionConfirmed

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Event::TransactionConfirmed

TransactionConfirmed: TransactionConfirmed

TransactionExecuted

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Event::TransactionExecuted

TransactionExecuted: TransactionExecuted

ConfirmationRevoked

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Event::ConfirmationRevoked

ConfirmationRevoked: ConfirmationRevoked

CallSalt

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::Event::CallSalt

CallSalt: CallSalt

Traits

Traits

HasComponent

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::HasComponent::get_component

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

get_component_mut

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::HasComponent::get_component_mut

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

get_contract

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::HasComponent::get_contract

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

get_contract_mut

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::HasComponent::get_contract_mut

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

emit

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::HasComponent::emit

fn emit<
    S, impl IntoImp: Into<S, openzeppelin_governance::multisig::multisig::MultisigComponent::Event>,
>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::InternalTrait

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

Trait functions

initializer

Initializes the Multisig component with the initial quorum and signers. This function must be called during contract initialization to set up the initial state.

Requirements:

  • quorum must be non-zero and less than or equal to the number of signers.

Emits a SignerAdded event for each signer added.

Emits a QuorumUpdated event.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::InternalTrait::initializer

fn initializer(
    ref self: ComponentState<TContractState>, quorum: u32, signers: Span<ContractAddress>,
)

resolve_tx_state

Resolves and returns the current state of the transaction with the given id.

The possible states are:

  • NotFound: the transaction does not exist.
  • Pending: the transaction exists but hasn’t reached the required confirmations.
  • Confirmed: the transaction has reached the required confirmations but hasn’t been executed.
  • Executed: the transaction has been executed.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::InternalTrait::resolve_tx_state

fn resolve_tx_state(self: @ComponentState<TContractState>, id: felt252) -> TransactionState

assert_one_of_signers

Asserts that the caller is one of the registered signers.

Requirements:

  • The caller must be a registered signer.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::InternalTrait::assert_one_of_signers

fn assert_one_of_signers(self: @ComponentState<TContractState>, caller: ContractAddress)

assert_tx_exists

Asserts that a transaction with the given id exists.

Requirements:

  • The transaction with the given id must have been submitted.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::InternalTrait::assert_tx_exists

fn assert_tx_exists(self: @ComponentState<TContractState>, id: felt252)

assert_only_self

Asserts that the caller is the contract itself.

Requirements:

  • The caller must be the contract’s own address.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::InternalTrait::assert_only_self

fn assert_only_self(self: @ComponentState<TContractState>)

_add_signers

Adds new signers and updates the quorum.

Requirements:

  • Each signer address must be non-zero.
  • new_quorum must be non-zero and less than or equal to the total number of signers after addition.

Emits a SignerAdded event for each new signer added.

Emits a QuorumUpdated event if the quorum changes.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::InternalTrait::_add_signers

fn _add_signers(
    ref self: ComponentState<TContractState>,
    new_quorum: u32,
    signers_to_add: Span<ContractAddress>,
)

_remove_signers

Removes existing signers and updates the quorum.

Requirements:

  • new_quorum must be non-zero and less than or equal to the total number of signers after removal.

Emits a SignerRemoved event for each signer removed.

Emits a QuorumUpdated event if the quorum changes.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::InternalTrait::_remove_signers

fn _remove_signers(
    ref self: ComponentState<TContractState>,
    new_quorum: u32,
    signers_to_remove: Span<ContractAddress>,
)

_replace_signer

Replaces an existing signer with a new signer.

Requirements:

  • signer_to_remove must be an existing signer.
  • signer_to_add must not be an existing signer.
  • signer_to_add must be a non-zero address.

Emits a SignerRemoved event for the removed signer.

Emits a SignerAdded event for the new signer.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::InternalTrait::_replace_signer

fn _replace_signer(
    ref self: ComponentState<TContractState>,
    signer_to_remove: ContractAddress,
    signer_to_add: ContractAddress,
)

_change_quorum

Updates the quorum value to new_quorum if it differs from the current quorum.

Requirements:

  • new_quorum must be non-zero.
  • new_quorum must be less than or equal to the total number of signers.

Emits a QuorumUpdated event if the quorum changes.

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::InternalTrait::_change_quorum

fn _change_quorum(ref self: ComponentState<TContractState>, new_quorum: u32)

UnsafeNewContractStateTraitForMultisigImpl

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::UnsafeNewContractStateTraitForMultisigImpl

pub trait UnsafeNewContractStateTraitForMultisigImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_governance::multisig::multisig::MultisigComponent::UnsafeNewContractStateTraitForMultisigImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

storage_utils

Fully qualified path: openzeppelin_governance::multisig::storage_utils

Structs

TxInfoHelper struct for MultisigComponent that optimizes how transaction-related information is stored, including the transaction’s execution status and the block it was submitted in.
SignersInfoHelper struct for MultisigComponent that optimizes how the quorum value and the total number of signers are stored.

Impls

TxInfoStorePackingPacks a TxInfo entity into a u128 value. The packing is done as follows:…
SignersInfoStorePackingV2Packs a SignersInfo entity into a u128 value. The packing is done as follows:…

Structs

Structs

TxInfoHelper struct for MultisigComponent that optimizes how transaction-related information is stored, including the transaction’s execution status and the block it was submitted in.
SignersInfoHelper struct for MultisigComponent that optimizes how the quorum value and the total number of signers are stored.

TxInfo

Helper struct for MultisigComponent that optimizes how transaction-related information is stored, including the transaction’s execution status and the block it was submitted in.

Fully qualified path: openzeppelin_governance::multisig::storage_utils::TxInfo

[derive(Drop)]
pub struct TxInfo {
    pub is_executed: bool,
    pub submitted_block: u64,
}

Members

is_executed

Fully qualified path: openzeppelin_governance::multisig::storage_utils::TxInfo::is_executed

pub is_executed: bool

submitted_block

Fully qualified path: openzeppelin_governance::multisig::storage_utils::TxInfo::submitted_block

pub submitted_block: u64

SignersInfo

Helper struct for MultisigComponent that optimizes how the quorum value and the total number of signers are stored.

Fully qualified path: openzeppelin_governance::multisig::storage_utils::SignersInfo

[derive(Drop)]
pub struct SignersInfo {
    pub quorum: u32,
    pub signers_count: u32,
}

Members

quorum

Fully qualified path: openzeppelin_governance::multisig::storage_utils::SignersInfo::quorum

pub quorum: u32

signers_count

Fully qualified path: openzeppelin_governance::multisig::storage_utils::SignersInfo::signers_count

pub signers_count: u32

Impls

Impls

TxInfoStorePackingPacks a TxInfo entity into a u128 value. The packing is done as follows:…
SignersInfoStorePackingV2Packs a SignersInfo entity into a u128 value. The packing is done as follows:…

TxInfoStorePacking

Packs a TxInfo entity into a u128 value.

The packing is done as follows:

  • The boolean is_executed is stored as a single bit at the highest bit position (index 127).
  • The submitted_block value occupies 64 bits in the range 63..126.

Fully qualified path: openzeppelin_governance::multisig::storage_utils::TxInfoStorePacking

pub impl TxInfoStorePacking of StorePacking<TxInfo, u128>;

Impl functions

pack

Fully qualified path: openzeppelin_governance::multisig::storage_utils::TxInfoStorePacking::pack

fn pack(value: TxInfo) -> u128

unpack

Fully qualified path: openzeppelin_governance::multisig::storage_utils::TxInfoStorePacking::unpack

fn unpack(value: u128) -> TxInfo

SignersInfoStorePackingV2

Packs a SignersInfo entity into a u128 value.

The packing is done as follows:

  • quorum value occupies 32 bits in bit range 64..95.
  • signers_count value occupies the highest 32 bits in bit range 96..127.
  • The 63rd bit indicates the packing version: 0 for V1 (legacy) and 1 for V2 (current).

WARNING: A bug in the original StorePacking trait for SignersInfo multiplied the quorum value by 0xffffffff instead of 0x100000000. This affected only the case where signers_count was 0xffffffff, resulting in an off-by-one quorum value and a signers_count of 0 after unpacking. The issue is resolved in V2 of StorePacking. For backward compatibility, V2 can still correctly unpack values from both V1 and V2 by checking the 63rd bit (0 for V1, 1 for V2).

Fully qualified path: openzeppelin_governance::multisig::storage_utils::SignersInfoStorePackingV2

pub impl SignersInfoStorePackingV2 of StorePacking<SignersInfo, u128>;

Impl functions

pack

Fully qualified path: openzeppelin_governance::multisig::storage_utils::SignersInfoStorePackingV2::pack

fn pack(value: SignersInfo) -> u128

unpack

Fully qualified path: openzeppelin_governance::multisig::storage_utils::SignersInfoStorePackingV2::unpack

fn unpack(value: u128) -> SignersInfo

timelock

Fully qualified path: openzeppelin_governance::timelock

Modules


Re-exports:



Modules

Modules

timelock_controller

Fully qualified path: openzeppelin_governance::timelock::timelock_controller

Modules

Modules

Modules

TimelockControllerComponent

TimelockController Component

Component that acts as a timelocked controller. When set as the owner of an Ownable smart contract, it enforces a timelock on all only_owner maintenance operations. This gives time for users of the controlled contract to exit before a potentially dangerous maintenance operation is applied.

By default, this component is self administered, meaning administration tasks have to go through the timelock process. The proposer role is in charge of proposing operations. A common use case is to position the timelock controller as the owner of a smart contract, with a multi-sig or a DAO as the sole proposer.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent

Modules

Constants

Free functions

Structs

Storage
CallScheduledEmitted when call is scheduled as part of operation id .
CallExecutedEmitted when call is performed as part of operation id .
CallSaltEmitted when a new proposal is scheduled with non-zero salt.
CallCancelledEmitted when operation id is cancelled.
MinDelayChangedEmitted when the minimum delay for future operations is modified.
ComponentState

Enums

Event

Traits

Modules

Modules

Errors

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Errors

Constants

Constants

Constants

INVALID_OPERATION_LEN

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Errors::INVALID_OPERATION_LEN

pub const INVALID_OPERATION_LEN: felt252 =
    149142786123133088059548017970228936285844585618085628618567453910126847342;

INSUFFICIENT_DELAY

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Errors::INSUFFICIENT_DELAY

pub const INSUFFICIENT_DELAY: felt252 =
    8889602787681406024667502520690189257282797298883326216109860610425;

EXPECTED_UNSET_OPERATION

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Errors::EXPECTED_UNSET_OPERATION

pub const EXPECTED_UNSET_OPERATION: felt252 =
    34725010889380492283857430373592962417870439180718862108563894128;

EXPECTED_PENDING_OPERATION

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Errors::EXPECTED_PENDING_OPERATION

pub const EXPECTED_PENDING_OPERATION: felt252 =
    2275738313646439942314880556963788385017557102123813133454626827300720;

EXPECTED_READY_OPERATION

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Errors::EXPECTED_READY_OPERATION

pub const EXPECTED_READY_OPERATION: felt252 =
    34725010889380492283857430373592962417870439180500136256239333232;

UNEXECUTED_PREDECESSOR

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Errors::UNEXECUTED_PREDECESSOR

pub const UNEXECUTED_PREDECESSOR: felt252 =
    582589008293488625232609399723160697451040620433093421953529306198273906;

UNAUTHORIZED_CALLER

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Errors::UNAUTHORIZED_CALLER

pub const UNAUTHORIZED_CALLER: felt252 =
    2275738313646439942314880912899505822360497764644535609168103673193842;

__external_TimelockImpl

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::__external_TimelockImpl

__l1_handler_TimelockImpl

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::__l1_handler_TimelockImpl

__constructor_TimelockImpl

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::__constructor_TimelockImpl

__external_TimelockMixinImpl

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::__external_TimelockMixinImpl

__l1_handler_TimelockMixinImpl

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::__l1_handler_TimelockMixinImpl

__constructor_TimelockMixinImpl

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::__constructor_TimelockMixinImpl

Constants

Constants

PROPOSER_ROLE

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::PROPOSER_ROLE

pub const PROPOSER_ROLE: felt252 =
    273237946050858345628590045737694107205410417995850951630048913656897445057;

EXECUTOR_ROLE

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::EXECUTOR_ROLE

pub const EXECUTOR_ROLE: felt252 =
    300468863893292893306738894280854375441360493536472852170483816561360936547;

CANCELLER_ROLE

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CANCELLER_ROLE

pub const CANCELLER_ROLE: felt252 =
    629414745181218075209380536283997517164293846052958011745239685582828271491;

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::unsafe_new_component_state

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

Structs

Structs

Storage
CallScheduledEmitted when call is scheduled as part of operation id .
CallExecutedEmitted when call is performed as part of operation id .
CallSaltEmitted when a new proposal is scheduled with non-zero salt.
CallCancelledEmitted when operation id is cancelled.
MinDelayChangedEmitted when the minimum delay for future operations is modified.
ComponentState

Storage

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Storage

[storage]
pub struct Storage {
    pub TimelockController_timestamps: Map<felt252, u64>,
    pub TimelockController_min_delay: u64,
}

Members

TimelockController_timestamps

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Storage::TimelockController_timestamps

pub TimelockController_timestamps: Map<felt252, u64>

TimelockController_min_delay

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Storage::TimelockController_min_delay

pub TimelockController_min_delay: u64

CallScheduled

Emitted when call is scheduled as part of operation id.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallScheduled

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct CallScheduled {
    pub id: felt252,
    pub index: felt252,
    pub call: Call,
    pub predecessor: felt252,
    pub delay: u64,
}

Members

id

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallScheduled::id

pub id: felt252

index

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallScheduled::index

pub index: felt252

call

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallScheduled::call

pub call: Call

predecessor

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallScheduled::predecessor

pub predecessor: felt252

delay

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallScheduled::delay

pub delay: u64

CallExecuted

Emitted when call is performed as part of operation id.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallExecuted

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct CallExecuted {
    pub id: felt252,
    pub index: felt252,
    pub call: Call,
}

Members

id

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallExecuted::id

pub id: felt252

index

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallExecuted::index

pub index: felt252

call

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallExecuted::call

pub call: Call

CallSalt

Emitted when a new proposal is scheduled with non-zero salt.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallSalt

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct CallSalt {
    pub id: felt252,
    pub salt: felt252,
}

Members

id

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallSalt::id

pub id: felt252

salt

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallSalt::salt

pub salt: felt252

CallCancelled

Emitted when operation id is cancelled.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallCancelled

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

Members

id

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::CallCancelled::id

pub id: felt252

MinDelayChanged

Emitted when the minimum delay for future operations is modified.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::MinDelayChanged

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct MinDelayChanged {
    pub old_duration: u64,
    pub new_duration: u64,
}

Members

old_duration

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::MinDelayChanged::old_duration

pub old_duration: u64

new_duration

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::MinDelayChanged::new_duration

pub new_duration: u64

ComponentState

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Event

pub enum Event {
    CallScheduled: CallScheduled,
    CallExecuted: CallExecuted,
    CallSalt: CallSalt,
    CallCancelled: CallCancelled,
    MinDelayChanged: MinDelayChanged,
}

Variants

CallScheduled

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Event::CallScheduled

CallScheduled: CallScheduled

CallExecuted

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Event::CallExecuted

CallExecuted: CallExecuted

CallSalt

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Event::CallSalt

CallSalt: CallSalt

CallCancelled

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Event::CallCancelled

CallCancelled: CallCancelled

MinDelayChanged

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Event::MinDelayChanged

MinDelayChanged: MinDelayChanged

Traits

Traits

HasComponent

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::HasComponent::get_component

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

get_component_mut

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::HasComponent::get_component_mut

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

get_contract

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::HasComponent::get_contract

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

get_contract_mut

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::HasComponent::get_contract_mut

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

emit

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::HasComponent::emit

fn emit<
    S,
    impl IntoImp: Into<
        S,
        openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::Event,
    >,
>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::InternalTrait

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

Trait functions

initializer

Initializes the contract by registering support for SRC5 and AccessControl.

This function also configures the contract with the following parameters:

  • min_delay: initial minimum delay in seconds for operations.
  • proposers: accounts to be granted proposer and canceller roles.
  • executors: accounts to be granted executor role.
  • admin: optional account to be granted admin role; disable with zero address.

WARNING: The optional admin can aid with initial configuration of roles after deployment without being subject to delay, but this role should be subsequently renounced in favor of administration through timelocked proposals.

Emits two RoleGranted events for each account in proposers with PROPOSER_ROLE and CANCELLER_ROLE roles.

Emits a RoleGranted event for each account in executors with EXECUTOR_ROLE role.

May emit a RoleGranted event for admin with DEFAULT_ADMIN_ROLE role (if admin is not zero).

Emits MinDelayChanged event.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::InternalTrait::initializer

fn initializer(
    ref self: ComponentState<TContractState>,
    min_delay: u64,
    proposers: Span<ContractAddress>,
    executors: Span<ContractAddress>,
    admin: ContractAddress,
)

assert_only_role

Validates that the caller has the given role. Otherwise it panics.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::InternalTrait::assert_only_role

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

assert_only_role_or_open_role

Validates that the caller has the given role. If role is granted to the zero address, then this is considered an open role which allows anyone to be the caller.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::InternalTrait::assert_only_role_or_open_role

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

assert_only_self

Validates that the caller is the timelock contract itself. Otherwise it panics.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::InternalTrait::assert_only_self

fn assert_only_self(self: @ComponentState<TContractState>)

_before_call

Private function that checks before execution of an operation’s calls.

Requirements:

  • id must be in the Ready OperationState.
  • predecessor must either be zero or be in the Done OperationState.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::InternalTrait::_before_call

fn _before_call(self: @ComponentState<TContractState>, id: felt252, predecessor: felt252)

_after_call

Private function that checks after execution of an operation’s calls and sets the OperationState of id to Done.

Requirements:

  • id must be in the Ready OperationState.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::InternalTrait::_after_call

fn _after_call(ref self: ComponentState<TContractState>, id: felt252)

_schedule

Private function that schedules an operation that is to become valid after a given delay.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::InternalTrait::_schedule

fn _schedule(ref self: ComponentState<TContractState>, id: felt252, delay: u64)

_execute

Private function that executes an operation’s calls.

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::InternalTrait::_execute

fn _execute(ref self: ComponentState<TContractState>, call: Call)

UnsafeNewContractStateTraitForTimelockImpl

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::UnsafeNewContractStateTraitForTimelockImpl

pub trait UnsafeNewContractStateTraitForTimelockImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::UnsafeNewContractStateTraitForTimelockImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

UnsafeNewContractStateTraitForTimelockMixinImpl

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::UnsafeNewContractStateTraitForTimelockMixinImpl

pub trait UnsafeNewContractStateTraitForTimelockMixinImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_governance::timelock::timelock_controller::TimelockControllerComponent::UnsafeNewContractStateTraitForTimelockMixinImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState

utils

Fully qualified path: openzeppelin_governance::utils

Modules

Modules

Modules

call_impls

Fully qualified path: openzeppelin_governance::utils::call_impls

Impls

Impls

Impls

HashCallImpl

Fully qualified path: openzeppelin_governance::utils::call_impls::HashCallImpl

pub impl HashCallImpl<S, +HashStateTrait<S>, +Drop<S>> of Hash<Call, S, + HashStateTrait<S>>;

Impl functions

update_state

Fully qualified path: openzeppelin_governance::utils::call_impls::HashCallImpl::update_state

fn update_state(mut state: S, value: Call) -> S

HashCallsImpl

Fully qualified path: openzeppelin_governance::utils::call_impls::HashCallsImpl

pub impl HashCallsImpl<S, +HashStateTrait<S>, +Drop<S>> of Hash<Span<Call>, S, + HashStateTrait<S>>;

Impl functions

update_state

Fully qualified path: openzeppelin_governance::utils::call_impls::HashCallsImpl::update_state

fn update_state(mut state: S, value: Span<Call>) -> S

CallPartialEq

Fully qualified path: openzeppelin_governance::utils::call_impls::CallPartialEq

pub impl CallPartialEq of PartialEq<Call>;

Impl functions

eq

Fully qualified path: openzeppelin_governance::utils::call_impls::CallPartialEq::eq

fn eq(lhs: @Call, rhs: @Call) -> bool

ne

Fully qualified path: openzeppelin_governance::utils::call_impls::CallPartialEq::ne

fn ne(lhs: @Call, rhs: @Call) -> bool

votes

Fully qualified path: openzeppelin_governance::votes

Modules


Re-exports:



Modules

Modules

delegation

Fully qualified path: openzeppelin_governance::votes::delegation

Constants

Structs

Constants

Constants

DELEGATION_TYPE_HASH

Fully qualified path: openzeppelin_governance::votes::delegation::DELEGATION_TYPE_HASH

pub const DELEGATION_TYPE_HASH: felt252 =
    1166593738448701488539025986910998635615644239754284995914066903868502076751;

Structs

Structs

Delegation

Fully qualified path: openzeppelin_governance::votes::delegation::Delegation

[derive(Copy, Drop, Hash)]
pub struct Delegation {
    pub verifying_contract: ContractAddress,
    pub delegatee: ContractAddress,
    pub nonce: felt252,
    pub expiry: u64,
}

Members

verifying_contract

Fully qualified path: openzeppelin_governance::votes::delegation::Delegation::verifying_contract

pub verifying_contract: ContractAddress

delegatee

Fully qualified path: openzeppelin_governance::votes::delegation::Delegation::delegatee

pub delegatee: ContractAddress

nonce

Fully qualified path: openzeppelin_governance::votes::delegation::Delegation::nonce

pub nonce: felt252

expiry

Fully qualified path: openzeppelin_governance::votes::delegation::Delegation::expiry

pub expiry: u64

votes

Fully qualified path: openzeppelin_governance::votes::votes

Modules

Modules

Modules

VotesComponent

Votes Component

The Votes component provides a flexible system for tracking and delegating voting power. It is currently implemented for ERC20 and ERC721 tokens. An account can delegate their voting power to a representative, that will pool delegated voting units from different delegators and can then use it to vote in decisions. Voting power must be delegated to be counted, and an account must delegate to itself if it wishes to vote directly without a trusted representative.

When integrating the Votes component, the ´VotingUnitsTrait´ must be implemented to get the voting units for a given account as a function of the implementing contract. For simplicity, this module already provides two implementations for ERC20 and ERC721 tokens, which will work out of the box if the respective components are integrated.

NOTE: ERC20 and ERC721 tokens implementing this component must call ´transfer_voting_units´ whenever a transfer, mint, or burn operation is performed. Hooks can be leveraged for this purpose, as shown in the following ERC20 example:

See the documentation (https://docs.openzeppelin.com/contracts-cairo/3.0.0/governance.html#usage_2) for examples and more details.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent

Modules

Free functions

Structs

Storage
DelegateChangedEmitted when delegator delegates their votes from from_delegate to to_delegate .
DelegateVotesChangedEmitted when delegate votes are updated from previous_votes to new_votes .
ComponentState

Enums

Event

Traits

VotingUnitsTraitA trait that must be implemented when integrating {VotesComponent} into a contract. It offers a mechanism to retrieve the number of voting units for a given account at the current time.
HasComponent
InternalTrait
UnsafeNewContractStateTraitForVotesImpl

Modules

Modules

Errors

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Errors

Constants

Constants

Constants

FUTURE_LOOKUP

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Errors::FUTURE_LOOKUP

pub const FUTURE_LOOKUP: felt252 = 493458728554737271343947431258143419428107941232;

EXPIRED_SIGNATURE

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Errors::EXPIRED_SIGNATURE

pub const EXPIRED_SIGNATURE: felt252 = 2119389101068337925958216489287083020391074280737212822117;

INVALID_SIGNATURE

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Errors::INVALID_SIGNATURE

pub const INVALID_SIGNATURE: felt252 = 2119389101068337927306084668060731060221641785975082676837;

__external_VotesImpl

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::__external_VotesImpl

__l1_handler_VotesImpl

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::__l1_handler_VotesImpl

__constructor_VotesImpl

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::__constructor_VotesImpl

Free functions

Free functions

unsafe_new_component_state

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::unsafe_new_component_state

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

Structs

Structs

Storage
DelegateChangedEmitted when delegator delegates their votes from from_delegate to to_delegate .
DelegateVotesChangedEmitted when delegate votes are updated from previous_votes to new_votes .
ComponentState

Storage

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Storage

[storage]
pub struct Storage {
    pub Votes_delegatee: Map<ContractAddress, ContractAddress>,
    pub Votes_delegate_checkpoints: Map<ContractAddress, Trace>,
    pub Votes_total_checkpoints: Trace,
}

Members

Votes_delegatee

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Storage::Votes_delegatee

pub Votes_delegatee: Map<ContractAddress, ContractAddress>

Votes_delegate_checkpoints

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Storage::Votes_delegate_checkpoints

pub Votes_delegate_checkpoints: Map<ContractAddress, Trace>

Votes_total_checkpoints

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Storage::Votes_total_checkpoints

pub Votes_total_checkpoints: Trace

DelegateChanged

Emitted when delegator delegates their votes from from_delegate to to_delegate.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::DelegateChanged

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct DelegateChanged {
    pub delegator: ContractAddress,
    pub from_delegate: ContractAddress,
    pub to_delegate: ContractAddress,
}

Members

delegator

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::DelegateChanged::delegator

pub delegator: ContractAddress

from_delegate

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::DelegateChanged::from_delegate

pub from_delegate: ContractAddress

to_delegate

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::DelegateChanged::to_delegate

pub to_delegate: ContractAddress

DelegateVotesChanged

Emitted when delegate votes are updated from previous_votes to new_votes.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::DelegateVotesChanged

[derive(Drop, Debug, PartialEq, starknet::Event)]
pub struct DelegateVotesChanged {
    pub delegate: ContractAddress,
    pub previous_votes: u256,
    pub new_votes: u256,
}

Members

delegate

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::DelegateVotesChanged::delegate

pub delegate: ContractAddress

previous_votes

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::DelegateVotesChanged::previous_votes

pub previous_votes: u256

new_votes

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::DelegateVotesChanged::new_votes

pub new_votes: u256

ComponentState

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::ComponentState

pub struct ComponentState<TContractState> {}

Enums

Enums

Event

Event

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Event

pub enum Event {
    DelegateChanged: DelegateChanged,
    DelegateVotesChanged: DelegateVotesChanged,
}

Variants

DelegateChanged

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Event::DelegateChanged

DelegateChanged: DelegateChanged

DelegateVotesChanged

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::Event::DelegateVotesChanged

DelegateVotesChanged: DelegateVotesChanged

Traits

Traits

VotingUnitsTraitA trait that must be implemented when integrating {VotesComponent} into a contract. It offers a mechanism to retrieve the number of voting units for a given account at the current time.
HasComponent
InternalTrait
UnsafeNewContractStateTraitForVotesImpl

VotingUnitsTrait

A trait that must be implemented when integrating {VotesComponent} into a contract. It offers a mechanism to retrieve the number of voting units for a given account at the current time.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::VotingUnitsTrait

pub trait VotingUnitsTrait<TState>

Trait functions

get_voting_units

Returns the number of voting units for a given account. For ERC20, this is typically the token balance. For ERC721, this is typically the number of tokens owned.

WARNING: While any formula can be used as a measure of voting units, the internal vote accounting of the contract may be compromised if voting units are transferred in any external flow by following a different formula. For example, when implementing the hook for ERC20, the number of voting units transferred should match the formula given by the get_voting_units implementation.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::VotingUnitsTrait::get_voting_units

fn get_voting_units(self: @TState, account: ContractAddress) -> u256

HasComponent

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::HasComponent

pub trait HasComponent<TContractState>

Trait functions

get_component

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::HasComponent::get_component

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

get_component_mut

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::HasComponent::get_component_mut

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

get_contract

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::HasComponent::get_contract

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

get_contract_mut

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::HasComponent::get_contract_mut

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

emit

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::HasComponent::emit

fn emit<S, impl IntoImp: Into<S, openzeppelin_governance::votes::votes::VotesComponent::Event>>(
    ref self: ComponentState<TContractState>, event: S,
)

InternalTrait

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::InternalTrait

pub trait InternalTrait<TContractState, +HasComponent<TContractState>, +VotingUnitsTrait<ComponentState<TContractState>>, impl Clock: ERC6372Clock, impl HasComponent<TContractState>: HasComponent<TContractState>, +SNIP12Metadata, +Drop<TContractState>>

Trait functions

get_total_supply

Returns the current total supply of votes.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::InternalTrait::get_total_supply

fn get_total_supply(self: @ComponentState<TContractState>) -> u256

move_delegate_votes

Moves delegated votes from one delegate to another.

May emit one or two DelegateVotesChanged events.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::InternalTrait::move_delegate_votes

fn move_delegate_votes(
    ref self: ComponentState<TContractState>,
    from: ContractAddress,
    to: ContractAddress,
    amount: u256,
)

transfer_voting_units

Transfers, mints, or burns voting units.

To register a mint, from should be zero. To register a burn, to should be zero. Total supply of voting units will be adjusted with mints and burns.

WARNING: If voting units are based on an underlying transferable asset (like a token), you must call this function every time the asset is transferred to keep the internal voting power accounting in sync. For ERC20 and ERC721 tokens, this is typically handled using hooks.

May emit one or two DelegateVotesChanged events.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::InternalTrait::transfer_voting_units

fn transfer_voting_units(
    ref self: ComponentState<TContractState>,
    from: ContractAddress,
    to: ContractAddress,
    amount: u256,
)

num_checkpoints

Returns the number of checkpoints for account.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::InternalTrait::num_checkpoints

fn num_checkpoints(self: @ComponentState<TContractState>, account: ContractAddress) -> u64

checkpoints

Returns the pos-th checkpoint for account.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::InternalTrait::checkpoints

fn checkpoints(
    self: @ComponentState<TContractState>, account: ContractAddress, pos: u64,
) -> Checkpoint

_delegate

Delegates all of account’s voting units to delegatee.

Emits a DelegateChanged event. May emit one or two DelegateVotesChanged events.

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::InternalTrait::_delegate

fn _delegate(
    ref self: ComponentState<TContractState>, account: ContractAddress, delegatee: ContractAddress,
)

UnsafeNewContractStateTraitForVotesImpl

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::UnsafeNewContractStateTraitForVotesImpl

pub trait UnsafeNewContractStateTraitForVotesImpl<TContractState>

Trait functions

unsafe_new_contract_state

Fully qualified path: openzeppelin_governance::votes::votes::VotesComponent::UnsafeNewContractStateTraitForVotesImpl::unsafe_new_contract_state

fn unsafe_new_contract_state() -> TContractState