multisig.test.ts.md•10.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);␊
}␊
}␊
`