use clap::{Arg, ArgAction, Command};
use neo_devpack_solidity::frontend::VisibilityKind;
use neo_devpack_solidity::ir;
use neo_devpack_solidity::neo::{
build_nef_with_tokens, clamp_nef_source_with_flag, NEF_SOURCE_MAX_BYTES,
};
use neo_devpack_solidity::semantic_model::build_semantic_model;
use neo_devpack_solidity::solidity::{
analyse_all_sources, validate_contract, ContractMetadata, DiagnosticSeverity, EventMetadata,
FunctionKind, FunctionMetadata, NatspecDoc, ParameterMetadata, StateMutability,
};
use neo_devpack_solidity::type_system::NeoType;
use serde_json::{json, Value};
use sha3::{Digest, Keccak256};
use std::collections::{HashMap, HashSet};
use std::fs;
use std::path::Path;
mod bytecode;
#[cfg(test)]
pub(crate) use crate::interop::interop_id_bytes;
pub(crate) use bytecode::generate_contract_bytecode;
pub use bytecode::disassemble_neovm_bytecode;
mod ir_optimize;
pub(crate) use ir_optimize::optimize_ir;
mod standard_json;
pub(crate) use standard_json::*;
pub fn fuzz_process_standard_json_content(input: &[u8]) -> Result<(), String> {
let input_str = std::str::from_utf8(input)
.map_err(|err| format!("standard-json fuzz input was not valid UTF-8: {err}"))?;
let options = StandardJsonOptions {
optimizer_level: 0,
use_callt: false,
deny_wildcard_permissions: false,
deny_wildcard_contracts: false,
deny_wildcard_methods: false,
nef_source: None,
manifest_permissions: None,
contract_names: Vec::new(),
};
process_standard_json_content(input_str, None, options)
}
include!("cli_parts/cli_defs.rs");
include!("cli_parts/cli_run.rs");
include!("cli_parts/cli_compile.rs");
include!("cli_parts/cli_analyze.rs");
include!("cli_parts/cli_output.rs");
include!("cli_parts/cli_manifest.rs");
include!("cli_parts/cli_deploy.rs");
include!("cli_parts/cli_diagnostics.rs");
#[cfg(test)]
mod tests;