Skip to main content
Glama

OpenZeppelin Contracts MCP Server

Official
by OpenZeppelin
multisig.test.ts.md10.1 kB
# Snapshot report for `src/multisig.test.ts` The actual snapshot is saved in `multisig.test.ts.snap`. Generated by [AVA](https://avajs.dev). ## custom name > Snapshot 1 `// SPDX-License-Identifier: MIT␊ // Compatible with OpenZeppelin Contracts for Cairo ^2.0.0␊ ␊ #[starknet::contract]␊ mod CustomMultisig {␊ use openzeppelin::governance::multisig::MultisigComponent;␊ use openzeppelin::upgrades::interface::IUpgradeable;␊ use openzeppelin::upgrades::UpgradeableComponent;␊ use starknet::{ClassHash, ContractAddress};␊ ␊ const INITIAL_QUORUM: u32 = 2;␊ ␊ component!(path: MultisigComponent, storage: multisig, event: MultisigEvent);␊ component!(path: UpgradeableComponent, storage: upgradeable, event: UpgradeableEvent);␊ ␊ // External␊ #[abi(embed_v0)]␊ impl MultisigImpl = MultisigComponent::MultisigImpl<ContractState>;␊ ␊ // Internal␊ impl MultisigInternalImpl = MultisigComponent::InternalImpl<ContractState>;␊ impl UpgradeableInternalImpl = UpgradeableComponent::InternalImpl<ContractState>;␊ ␊ #[storage]␊ struct Storage {␊ #[substorage(v0)]␊ multisig: MultisigComponent::Storage,␊ #[substorage(v0)]␊ upgradeable: UpgradeableComponent::Storage,␊ }␊ ␊ #[event]␊ #[derive(Drop, starknet::Event)]␊ enum Event {␊ #[flat]␊ MultisigEvent: MultisigComponent::Event,␊ #[flat]␊ UpgradeableEvent: UpgradeableComponent::Event,␊ }␊ ␊ #[constructor]␊ fn constructor(ref self: ContractState, signers: Span<ContractAddress>) {␊ self.multisig.initializer(INITIAL_QUORUM, signers);␊ }␊ ␊ //␊ // Upgradeable␊ //␊ ␊ #[abi(embed_v0)]␊ impl UpgradeableImpl of IUpgradeable<ContractState> {␊ fn upgrade(ref self: ContractState, new_class_hash: ClassHash) {␊ self.multisig.assert_only_self();␊ self.upgradeable.upgrade(new_class_hash);␊ }␊ }␊ }␊ ` ## custom quorum > Snapshot 1 `// SPDX-License-Identifier: MIT␊ // Compatible with OpenZeppelin Contracts for Cairo ^2.0.0␊ ␊ #[starknet::contract]␊ mod MyMultisig {␊ use openzeppelin::governance::multisig::MultisigComponent;␊ use openzeppelin::upgrades::interface::IUpgradeable;␊ use openzeppelin::upgrades::UpgradeableComponent;␊ use starknet::{ClassHash, ContractAddress};␊ ␊ const INITIAL_QUORUM: u32 = 42;␊ ␊ component!(path: MultisigComponent, storage: multisig, event: MultisigEvent);␊ component!(path: UpgradeableComponent, storage: upgradeable, event: UpgradeableEvent);␊ ␊ // External␊ #[abi(embed_v0)]␊ impl MultisigImpl = MultisigComponent::MultisigImpl<ContractState>;␊ ␊ // Internal␊ impl MultisigInternalImpl = MultisigComponent::InternalImpl<ContractState>;␊ impl UpgradeableInternalImpl = UpgradeableComponent::InternalImpl<ContractState>;␊ ␊ #[storage]␊ struct Storage {␊ #[substorage(v0)]␊ multisig: MultisigComponent::Storage,␊ #[substorage(v0)]␊ upgradeable: UpgradeableComponent::Storage,␊ }␊ ␊ #[event]␊ #[derive(Drop, starknet::Event)]␊ enum Event {␊ #[flat]␊ MultisigEvent: MultisigComponent::Event,␊ #[flat]␊ UpgradeableEvent: UpgradeableComponent::Event,␊ }␊ ␊ #[constructor]␊ fn constructor(ref self: ContractState, signers: Span<ContractAddress>) {␊ self.multisig.initializer(INITIAL_QUORUM, signers);␊ }␊ ␊ //␊ // Upgradeable␊ //␊ ␊ #[abi(embed_v0)]␊ impl UpgradeableImpl of IUpgradeable<ContractState> {␊ fn upgrade(ref self: ContractState, new_class_hash: ClassHash) {␊ self.multisig.assert_only_self();␊ self.upgradeable.upgrade(new_class_hash);␊ }␊ }␊ }␊ ` ## all custom settings > Snapshot 1 `// SPDX-License-Identifier: MIT␊ // Compatible with OpenZeppelin Contracts for Cairo ^2.0.0␊ ␊ #[starknet::contract]␊ mod CustomMultisig {␊ use openzeppelin::governance::multisig::MultisigComponent;␊ use openzeppelin::upgrades::interface::IUpgradeable;␊ use openzeppelin::upgrades::UpgradeableComponent;␊ use starknet::{ClassHash, ContractAddress};␊ ␊ const INITIAL_QUORUM: u32 = 42;␊ ␊ component!(path: MultisigComponent, storage: multisig, event: MultisigEvent);␊ component!(path: UpgradeableComponent, storage: upgradeable, event: UpgradeableEvent);␊ ␊ // External␊ #[abi(embed_v0)]␊ impl MultisigImpl = MultisigComponent::MultisigImpl<ContractState>;␊ ␊ // Internal␊ impl MultisigInternalImpl = MultisigComponent::InternalImpl<ContractState>;␊ impl UpgradeableInternalImpl = UpgradeableComponent::InternalImpl<ContractState>;␊ ␊ #[storage]␊ struct Storage {␊ #[substorage(v0)]␊ multisig: MultisigComponent::Storage,␊ #[substorage(v0)]␊ upgradeable: UpgradeableComponent::Storage,␊ }␊ ␊ #[event]␊ #[derive(Drop, starknet::Event)]␊ enum Event {␊ #[flat]␊ MultisigEvent: MultisigComponent::Event,␊ #[flat]␊ UpgradeableEvent: UpgradeableComponent::Event,␊ }␊ ␊ #[constructor]␊ fn constructor(ref self: ContractState, signers: Span<ContractAddress>) {␊ self.multisig.initializer(INITIAL_QUORUM, signers);␊ }␊ ␊ //␊ // Upgradeable␊ //␊ ␊ #[abi(embed_v0)]␊ impl UpgradeableImpl of IUpgradeable<ContractState> {␊ fn upgrade(ref self: ContractState, new_class_hash: ClassHash) {␊ self.multisig.assert_only_self();␊ self.upgradeable.upgrade(new_class_hash);␊ }␊ }␊ }␊ ` ## upgradeable > Snapshot 1 `// SPDX-License-Identifier: MIT␊ // Compatible with OpenZeppelin Contracts for Cairo ^2.0.0␊ ␊ #[starknet::contract]␊ mod MyMultisig {␊ use openzeppelin::governance::multisig::MultisigComponent;␊ use openzeppelin::upgrades::interface::IUpgradeable;␊ use openzeppelin::upgrades::UpgradeableComponent;␊ use starknet::{ClassHash, ContractAddress};␊ ␊ const INITIAL_QUORUM: u32 = 2;␊ ␊ component!(path: MultisigComponent, storage: multisig, event: MultisigEvent);␊ component!(path: UpgradeableComponent, storage: upgradeable, event: UpgradeableEvent);␊ ␊ // External␊ #[abi(embed_v0)]␊ impl MultisigImpl = MultisigComponent::MultisigImpl<ContractState>;␊ ␊ // Internal␊ impl MultisigInternalImpl = MultisigComponent::InternalImpl<ContractState>;␊ impl UpgradeableInternalImpl = UpgradeableComponent::InternalImpl<ContractState>;␊ ␊ #[storage]␊ struct Storage {␊ #[substorage(v0)]␊ multisig: MultisigComponent::Storage,␊ #[substorage(v0)]␊ upgradeable: UpgradeableComponent::Storage,␊ }␊ ␊ #[event]␊ #[derive(Drop, starknet::Event)]␊ enum Event {␊ #[flat]␊ MultisigEvent: MultisigComponent::Event,␊ #[flat]␊ UpgradeableEvent: UpgradeableComponent::Event,␊ }␊ ␊ #[constructor]␊ fn constructor(ref self: ContractState, signers: Span<ContractAddress>) {␊ self.multisig.initializer(INITIAL_QUORUM, signers);␊ }␊ ␊ //␊ // Upgradeable␊ //␊ ␊ #[abi(embed_v0)]␊ impl UpgradeableImpl of IUpgradeable<ContractState> {␊ fn upgrade(ref self: ContractState, new_class_hash: ClassHash) {␊ self.multisig.assert_only_self();␊ self.upgradeable.upgrade(new_class_hash);␊ }␊ }␊ }␊ ` ## non-upgradeable > Snapshot 1 `// SPDX-License-Identifier: MIT␊ // Compatible with OpenZeppelin Contracts for Cairo ^2.0.0␊ ␊ #[starknet::contract]␊ mod MyMultisig {␊ use openzeppelin::governance::multisig::MultisigComponent;␊ use starknet::ContractAddress;␊ ␊ const INITIAL_QUORUM: u32 = 2;␊ ␊ component!(path: MultisigComponent, storage: multisig, event: MultisigEvent);␊ ␊ // External␊ #[abi(embed_v0)]␊ impl MultisigImpl = MultisigComponent::MultisigImpl<ContractState>;␊ ␊ // Internal␊ impl MultisigInternalImpl = MultisigComponent::InternalImpl<ContractState>;␊ ␊ #[storage]␊ struct Storage {␊ #[substorage(v0)]␊ multisig: MultisigComponent::Storage,␊ }␊ ␊ #[event]␊ #[derive(Drop, starknet::Event)]␊ enum Event {␊ #[flat]␊ MultisigEvent: MultisigComponent::Event,␊ }␊ ␊ #[constructor]␊ fn constructor(ref self: ContractState, signers: Span<ContractAddress>) {␊ self.multisig.initializer(INITIAL_QUORUM, signers);␊ }␊ }␊ `

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OpenZeppelin/contracts-wizard'

If you have feedback or need assistance with the MCP directory API, please join our Discord server