[advisories]
version = 2

db-path = "~/.cargo/advisory-db"
db-urls = ["https://github.com/rustsec/advisory-db"]

yanked = "deny"

ignore = [
  "RUSTSEC-2020-0168", # mach is unmaintained
  "RUSTSEC-2021-0139", # https://github.com/serai-dex/serai/228
  "RUSTSEC-2022-0061", # https://github.com/serai-dex/serai/227
  "RUSTSEC-2024-0370", # proc-macro-error is unmaintained
  "RUSTSEC-2024-0384", # instant is unmaintained
]

[licenses]
version = 2

allow = [
  # Effective public domain
  "CC0-1.0",
  "Unlicense",

  # Attribution required
  "MIT",
  "MITNFA",
  "BSD-2-Clause",
  "BSD-3-Clause",
  "ISC",
  "Zlib",
  "Unicode-3.0",
  "OpenSSL",

  # Non-invasive copyleft
  "MPL-2.0",
  "Apache-2.0",
  "Apache-2.0 WITH LLVM-exception",
  "GPL-3.0 WITH Classpath-exception-2.0",
]

exceptions = [
  { allow = ["AGPL-3.0"], name = "serai-env" },
  { allow = ["AGPL-3.0"], name = "serai-task" },

  { allow = ["AGPL-3.0"], name = "ethereum-schnorr-contract" },
  { allow = ["AGPL-3.0"], name = "serai-ethereum-relayer" },

  { allow = ["AGPL-3.0"], name = "serai-message-queue" },

  { allow = ["AGPL-3.0"], name = "serai-processor-messages" },
  { allow = ["AGPL-3.0"], name = "serai-processor-primitives" },

  { allow = ["AGPL-3.0"], name = "serai-processor-key-gen" },
  { allow = ["AGPL-3.0"], name = "serai-processor-frost-attempt-manager" },

  { allow = ["AGPL-3.0"], name = "serai-processor-scanner" },
  { allow = ["AGPL-3.0"], name = "serai-processor-scheduler-primitives" },
  { allow = ["AGPL-3.0"], name = "serai-processor-utxo-scheduler-primitives" },
  { allow = ["AGPL-3.0"], name = "serai-processor-utxo-scheduler" },
  { allow = ["AGPL-3.0"], name = "serai-processor-transaction-chaining-scheduler" },
  { allow = ["AGPL-3.0"], name = "serai-processor-smart-contract-scheduler" },
  { allow = ["AGPL-3.0"], name = "serai-processor-signers" },

  { allow = ["AGPL-3.0"], name = "serai-bitcoin-processor" },
  { allow = ["AGPL-3.0"], name = "serai-processor-bin" },
  { allow = ["AGPL-3.0"], name = "serai-processor-ethereum-primitives" },
  { allow = ["AGPL-3.0"], name = "serai-ethereum-test-primitives" },
  { allow = ["AGPL-3.0"], name = "serai-processor-ethereum-deployer" },
  { allow = ["AGPL-3.0"], name = "serai-processor-ethereum-router" },
  { allow = ["AGPL-3.0"], name = "serai-processor-ethereum-erc20" },
  { allow = ["AGPL-3.0"], name = "serai-ethereum-processor" },
  { allow = ["AGPL-3.0"], name = "serai-monero-processor" },

  { allow = ["AGPL-3.0"], name = "tributary-sdk" },
  { allow = ["AGPL-3.0"], name = "serai-cosign" },
  { allow = ["AGPL-3.0"], name = "serai-coordinator-substrate" },
  { allow = ["AGPL-3.0"], name = "serai-coordinator-tributary" },
  { allow = ["AGPL-3.0"], name = "serai-coordinator-p2p" },
  { allow = ["AGPL-3.0"], name = "serai-coordinator-libp2p-p2p" },
  { allow = ["AGPL-3.0"], name = "serai-coordinator" },

  { allow = ["AGPL-3.0"], name = "serai-coins-pallet" },
  { allow = ["AGPL-3.0"], name = "serai-dex-pallet" },

  { allow = ["AGPL-3.0"], name = "serai-genesis-liquidity-pallet" },
  { allow = ["AGPL-3.0"], name = "serai-emissions-pallet" },

  { allow = ["AGPL-3.0"], name = "serai-economic-security-pallet" },

  { allow = ["AGPL-3.0"], name = "serai-in-instructions-pallet" },

  { allow = ["AGPL-3.0"], name = "serai-validator-sets-pallet" },

  { allow = ["AGPL-3.0"], name = "serai-signals-pallet" },

  { allow = ["AGPL-3.0"], name = "serai-runtime" },
  { allow = ["AGPL-3.0"], name = "serai-node" },

  { allow = ["AGPL-3.0"], name = "serai-orchestrator" },

  { allow = ["AGPL-3.0"], name = "mini-serai" },

  { allow = ["AGPL-3.0"], name = "serai-docker-tests" },
  { allow = ["AGPL-3.0"], name = "serai-message-queue-tests" },
  { allow = ["AGPL-3.0"], name = "serai-processor-tests" },
  { allow = ["AGPL-3.0"], name = "serai-coordinator-tests" },
  { allow = ["AGPL-3.0"], name = "serai-full-stack-tests" },
  { allow = ["AGPL-3.0"], name = "serai-reproducible-runtime-tests" },
]

[[licenses.clarify]]
name = "ring"
version = "*"
expression = "MIT AND ISC AND OpenSSL"
license-files = [
  { path = "LICENSE", hash = 0xbd0eed23 }
]

[bans]
multiple-versions = "warn"
wildcards = "warn"
highlight = "all"
deny = [ { name = "serde_derive", version = ">=1.0.172, <1.0.185" } ]

[sources]
unknown-registry = "deny"
unknown-git = "deny"
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
allow-git = [
  "https://github.com/rust-lang-nursery/lazy-static.rs",
  "https://github.com/serai-dex/substrate-bip39",
  "https://github.com/serai-dex/substrate",
  "https://github.com/kayabaNerve/pasta_curves",
  "https://github.com/alloy-rs/core",
]
