[versions]
detekt = "1.23.1"
etherjar = "0.11.1"
groovy = "4.0.15"
protoc = "3.21.7"
jackson = "2.11.0"
grpc = "1.57.0"
reactive-grpc = "1.2.0"
spring-boot = "2.6.15"
spring-security = "5.5.3"
reactor = "3.4.32"
netty = "4.1.97.Final"
netty-tcnative = "2.0.61.Final"
kotlin = "1.9.10"
httpcomponents = "4.5.8"

[libraries]
apache-commons-lang3 = "org.apache.commons:commons-lang3:3.9"
apache-commons-collections4 = "org.apache.commons:commons-collections4:4.3"

bitcoinj = "org.bitcoinj:bitcoinj-core:0.15.8"

logstash-encoder = "net.logstash.logback:logstash-logback-encoder:7.2"

janino = "org.codehaus.janino:janino:3.1.9"

bouncycastle-prov = "org.bouncycastle:bcprov-jdk15on:1.61"
bouncycastle-pkix = 'org.bouncycastle:bcpkix-jdk15on:1.61'

caffeine = "com.github.ben-manes.caffeine:caffeine:2.8.5"

commons-io = "commons-io:commons-io:2.6"

cglib-nodep = "cglib:cglib-nodep:3.3.0"

detekt-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" }

equals-verifier = "nl.jqno.equalsverifier:equalsverifier:3.10.1"

etherjar-domain = { module = "io.emeraldpay.etherjar:etherjar-domain", version.ref = "etherjar" }
etherjar-hex = { module = "io.emeraldpay.etherjar:etherjar-hex", version.ref = "etherjar" }
etherjar-rpc-api = { module = "io.emeraldpay.etherjar:etherjar-rpc-api", version.ref = "etherjar" }
etherjar-rpc-http = { module = "io.emeraldpay.etherjar:etherjar-rpc-http", version.ref = "etherjar" }
etherjar-rpc-ws = { module = "io.emeraldpay.etherjar:etherjar-rpc-ws", version.ref = "etherjar" }
etherjar-tx = { module = "io.emeraldpay.etherjar:etherjar-tx", version.ref = "etherjar" }
etherjar-contract = { module = "io.emeraldpay.etherjar:etherjar-contract", version.ref = "etherjar" }
etherjar-erc20 = { module = "io.emeraldpay.etherjar:etherjar-erc20", version.ref = "etherjar" }

groovy = { module = "org.apache.groovy:groovy", version.ref = "groovy" }

grpc-proto-util = { module = "com.google.protobuf:protobuf-java-util", version.ref = "protoc" }
grpc-protobuf = { module = "io.grpc:grpc-protobuf", version.ref = "grpc" }
grpc-stub = { module = "io.grpc:grpc-stub", version.ref = "grpc" }
grpc-netty = { module = "io.grpc:grpc-netty", version.ref = "grpc" }
grpc-testing = { module = "io.grpc:grpc-testing", version.ref = "grpc" }
grpc-services = { module = "io.grpc:grpc-services", version.ref = "grpc" }

httpcomponents-httpmime = { module = "org.apache.httpcomponents:httpmime", version.ref = "httpcomponents" }
httpcomponents-httpclient = { module = "org.apache.httpcomponents:httpclient", version.ref = "httpcomponents" }

jackson-core = { module = "com.fasterxml.jackson.core:jackson-core", version.ref = "jackson" }
jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" }
jackson-datatype-jdk8 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jdk8", version.ref = "jackson" }
jackson-datatype-jsr310 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", version.ref = "jackson" }
jackson-module-kotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "jackson" }

java-websocket = "org.java-websocket:Java-WebSocket:1.5.1"

javax-annotations = "javax.annotation:javax.annotation-api:1.3.2"

kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" }

lettuce-core = "io.lettuce:lettuce-core:5.2.2.RELEASE"

micrometer-registry-prometheus = "io.micrometer:micrometer-registry-prometheus:1.5.6"

mockserver-netty = "org.mock-server:mockserver-netty:5.11.2"

mockito-kotlin = "org.mockito.kotlin:mockito-kotlin:5.1.0"

netty-common = { module = "io.netty:netty-common", version.ref = "netty" }
netty-transport = { module = "io.netty:netty-transport", version.ref = "netty" }
netty-handler-core = { module = "io.netty:netty-handler", version.ref = "netty" }
netty-handler-proxy = { module = "io.netty:netty-handler-proxy", version.ref = "netty" }
netty-resolver-core = { module = "io.netty:netty-resolver", version.ref = "netty" }
netty-resolver-dns = { module = "io.netty:netty-resolver-dns", version.ref = "netty" }
netty-codec-core = { module = "io.netty:netty-codec", version.ref = "netty" }
netty-codec-http = { module = "io.netty:netty-codec-http", version.ref = "netty" }
netty-codec-http2 = { module = "io.netty:netty-codec-http2", version.ref = "netty" }
netty-buffer = { module = "io.netty:netty-buffer", version.ref = "netty" }
netty-tcnative-core = { module = "io.netty:netty-tcnative", version.ref = "netty-tcnative" }
netty-tcnative-boringssl = { module = "io.netty:netty-tcnative-boringssl-static", version.ref = "netty-tcnative"}
netty-macos =  { module = "io.netty:netty-resolver-dns-native-macos", version.ref = "netty" }

zeromq = "org.zeromq:jeromq:0.5.2"

objgenesis = "org.objenesis:objenesis:3.1"

reactor-core = { module = "io.projectreactor:reactor-core", version.ref = "reactor" }
reactor-netty = { module = "io.projectreactor.netty:reactor-netty", version = "1.1.10" }
reactor-extra = { module = "io.projectreactor.addons:reactor-extra", version = "3.5.1" }
reactor-kotlin = { module = "io.projectreactor.kotlin:reactor-kotlin-extensions", version = "1.1.7" }
reactor-test = { module = "io.projectreactor:reactor-test", version.ref = "reactor" }

reactor-grpc-stub = "com.salesforce.servicelibs:reactor-grpc-stub:1.2.0"

snake-yaml = "org.yaml:snakeyaml:1.24"

spockframework-core = "org.spockframework:spock-core:2.3-groovy-4.0"

spring-boot-starter = { module = "org.springframework.boot:spring-boot-starter", version.ref = "spring-boot" }
spring-security-core = { module = "org.springframework.security:spring-security-core", version.ref = "spring-security" }
spring-security-web = { module = "org.springframework.security:spring-security-web", version.ref = "spring-security" }
spring-security-config = { module = "org.springframework.security:spring-security-config", version.ref = "spring-security" }

spring-boot-starter-test = { module = "org.springframework.boot:spring-boot-starter-test", version.ref = "spring-boot" }

testcontainers = "org.testcontainers:testcontainers:1.17.5"
testcontainers-ganache = "io.github.ganchix:testcontainers-java-module-ganache:0.0.4"

junit-jupiter = "org.junit.jupiter:junit-jupiter:5.9.1"
assertj = "org.assertj:assertj-core:3.23.1"

spring-cloud-starter-sleuth = "org.springframework.cloud:spring-cloud-starter-sleuth:3.1.6"
spring-cloud-sleuth-zipkin = "org.springframework.cloud:spring-cloud-sleuth-zipkin:3.1.6"
brave-instrumentation-grpc = "io.zipkin.brave:brave-instrumentation-grpc:5.15.0"

auth0-jwt = "com.auth0:java-jwt:4.4.0"

mockito-inline = "org.mockito:mockito-inline:4.0.0"

[bundles]
apache-commons = ["commons-io", "apache-commons-lang3", "apache-commons-collections4"]
etherjar = ["etherjar-domain", "etherjar-hex", "etherjar-rpc-api", "etherjar-rpc-http", "etherjar-rpc-ws", "etherjar-tx", "etherjar-contract", "etherjar-erc20"]
grpc = ["grpc-protobuf", "grpc-stub", "grpc-netty", "grpc-proto-util", "grpc-services"]
httpcomponents = ["httpcomponents-httpmime", "httpcomponents-httpclient"]
jackson = ["jackson-core", "jackson-databind", "jackson-datatype-jdk8", "jackson-datatype-jsr310", "jackson-module-kotlin"]
kotlin = ["kotlin-stdlib-jdk8", "kotlin-reflect"]
netty = ["netty-common", "netty-transport", "netty-handler-core", "netty-handler-proxy", "netty-resolver-core", "netty-resolver-dns", "netty-codec-core", "netty-codec-http", "netty-codec-http2", "netty-buffer", "netty-tcnative-core"]
reactor = ["reactor-core", "reactor-netty", "reactor-extra", "reactor-kotlin"]
spring-framework = ["spring-boot-starter", "spring-security-core", "spring-security-web", "spring-security-config"]
testcontainers = ["testcontainers", "testcontainers-ganache"]
junit = ["junit-jupiter", "assertj"]
bouncycastle = ["bouncycastle-pkix", "bouncycastle-prov"]


[plugins]
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
jib = { id = "com.google.cloud.tools.jib", version = "2.7.1" }
spring = { id = "org.springframework.boot", version = "2.6.0" }
git = { id = "com.palantir.git-version", version = "0.12.3" }
protobuf = { id = "com.google.protobuf", version = "0.9.1" }
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version = "11.6.0" }
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }