cairo_lang_starknet/plugin/
consts.rs

1use const_format::formatcp;
2
3pub const EXTERNAL_MODULE: &str = "__external";
4pub const L1_HANDLER_MODULE: &str = "__l1_handler";
5pub const CONSTRUCTOR_MODULE: &str = "__constructor";
6pub const WRAPPER_PREFIX: &str = "__wrapper__";
7pub const STORAGE_STRUCT_NAME: &str = "Storage";
8pub const EVENT_TYPE_NAME: &str = "Event";
9pub const STORAGE_MAPPING: &str = "Map";
10pub const CONTRACT_STATE_NAME: &str = "ContractState";
11pub const GENERIC_CONTRACT_STATE_NAME: &str = "TContractState";
12pub const COMPONENT_STATE_NAME: &str = "ComponentState";
13pub const GENERIC_COMPONENT_STATE_NAME: &str =
14    formatcp!("{}<{}>", COMPONENT_STATE_NAME, GENERIC_CONTRACT_STATE_NAME);
15pub const CONCRETE_COMPONENT_STATE_NAME: &str =
16    formatcp!("{}<{}>", COMPONENT_STATE_NAME, CONTRACT_STATE_NAME);
17
18// TODO(spapini): Remove this attribute. It's for the old contract syntax.
19pub const DEPRECATED_ABI_ATTR: &str = "abi";
20pub const EVENT_ATTR: &str = "event";
21pub const EVENT_TRAIT: &str = "starknet::Event";
22pub const STORE_TRAIT: &str = "starknet::Store";
23pub const DERIVE_STORAGE_TRAIT: &str = "starknet::storage_access::DeriveStorage";
24pub const STORAGE_AS_POINTER_TRAIT: &str = "starknet::storage::StorageAsPointer";
25pub const STORAGE_AS_PATH_TRAIT: &str = "starknet::storage::StorageAsPath";
26pub const STORAGE_NODE_ATTR: &str = "starknet::storage_node";
27pub const STORAGE_SUB_POINTERS_ATTR: &str = "starknet::sub_pointers";
28pub const INTERFACE_ATTR: &str = "starknet::interface";
29pub(super) const DEPRECATED_CONTRACT_ATTR: &str = "contract";
30pub const CONTRACT_ATTR: &str = "starknet::contract";
31pub const CONTRACT_ATTR_ACCOUNT_ARG: &str = "account";
32pub const COMPONENT_ATTR: &str = "starknet::component";
33pub const STORAGE_ATTR: &str = "storage";
34pub const EXTERNAL_ATTR: &str = "external";
35pub const EMBEDDABLE_ATTR: &str = "starknet::embeddable";
36pub const L1_HANDLER_ATTR: &str = "l1_handler";
37pub const CONSTRUCTOR_ATTR: &str = "constructor";
38pub const CONSTRUCTOR_NAME: &str = "constructor";
39pub(super) const RAW_OUTPUT_ATTR: &str = "raw_output";
40pub const EMBEDDABLE_AS_ATTR: &str = "embeddable_as";
41pub const COMPONENT_INLINE_MACRO: &str = "component";
42pub const HAS_COMPONENT_TRAIT: &str = "HasComponent";
43pub const SUBSTORAGE_ATTR: &str = "substorage";
44pub const RENAME_ATTR: &str = "rename";
45pub const NESTED_ATTR: &str = "nested";
46pub const FLAT_ATTR: &str = "flat";
47pub const KEY_ATTR: &str = "key";
48pub const SERDE_ATTR: &str = "serde";
49
50pub const VALIDATE_ENTRY_POINT_SELECTOR: &str = "__validate__";
51pub const EXECUTE_ENTRY_POINT_SELECTOR: &str = "__execute__";
52pub const ACCOUNT_CONTRACT_ENTRY_POINT_SELECTORS: &[&str] =
53    &[VALIDATE_ENTRY_POINT_SELECTOR, EXECUTE_ENTRY_POINT_SELECTOR];
54pub const VALIDATE_DEPLOY_ENTRY_POINT_SELECTOR: &str = "__validate_deploy__";
55
56// ABI attribute
57pub const ABI_ATTR: &str = "abi";
58pub const ABI_ATTR_PER_ITEM_ARG: &str = "per_item";
59pub const ABI_ATTR_EMBED_V0_ARG: &str = "embed_v0";
60
61pub(super) const L1_HANDLER_FIRST_PARAM_NAME: &str = "from_address";
62pub(super) const CALLDATA_PARAM_NAME: &str = "__calldata__";
63
64/// Starknet OS required implicit precedence.
65pub(super) const IMPLICIT_PRECEDENCE: &[&str] = &[
66    "core::pedersen::Pedersen",
67    "core::RangeCheck",
68    "core::integer::Bitwise",
69    "core::ec::EcOp",
70    "core::poseidon::Poseidon",
71    "core::SegmentArena",
72    "core::circuit::RangeCheck96",
73    "core::circuit::AddMod",
74    "core::circuit::MulMod",
75    "core::gas::GasBuiltin",
76    "System",
77];