<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>io.horizen</groupId>
  <artifactId>sidechains-sdk</artifactId>
  <version>0.3.4</version>
  <name>${project.groupId}:${project.artifactId}</name>
  <description>Zendoo is a unique sidechain and scaling solution developed by Horizen. The Zendoo ${project.artifactId} is a framework that supports the creation of sidechains and their custom business logic, with the Horizen public blockchain as the mainchain.</description>
  <url>https://github.com/${project.github.organization}/${project.artifactId}</url>
  <inceptionYear>2018</inceptionYear>
  <licenses>
    <license>
      <name>MIT License</name>
      <url>https://opensource.org/licenses/MIT</url>
    </license>
  </licenses>
  <developers>
    <developer>
      <name>Zen Blockchain Foundation</name>
      <email>info@zensystem.io</email>
      <organization>${project.github.organization}</organization>
      <organizationUrl>https://github.com/${project.github.organization}</organizationUrl>
    </developer>
  </developers>
  <scm>
    <connection>scm:git:git://github.com/${project.github.organization}/${project.artifactId}.git</connection>
    <developerConnection>scm:git:git@github.com:${project.github.organization}/${project.artifactId}.git</developerConnection>
    <tag>${project.version}</tag>
    <url>https://github.com/${project.github.organization}/${project.artifactId}.git</url>
  </scm>
  <issueManagement>
    <system>GitHub</system>
    <url>https://github.com/${project.github.organization}/${project.artifactId}/issues</url>
  </issueManagement>
  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
  </distributionManagement>
  <properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.github.organization>HorizenOfficial</project.github.organization>
    <scala.version>2.12.12</scala.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>${scala.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>io.horizen</groupId>
      <artifactId>zendoo-sc-cryptolib</artifactId>
      <version>0.5.0</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/io.circe/circe-core -->
    <dependency>
      <groupId>io.circe</groupId>
      <artifactId>circe-core_2.12</artifactId>
      <version>0.9.0</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.scorexfoundation/scorex-core -->
    <dependency>
      <groupId>org.scorexfoundation</groupId>
      <artifactId>scorex-core_2.12</artifactId>
      <version>2.0.0-RC6</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>
          <artifactId>curve25519-java</artifactId>
          <groupId>org.whispersystems</groupId>
        </exclusion>
        <!-- NOTE: because of bug in Scorex RC6 maven dependencies, we should force to include
        different version of circe-core -->
        <exclusion>
          <artifactId>circe-core_2.1</artifactId>
          <groupId>io.circe</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>2.17.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.17.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>31.0.1-jre</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.google.inject/guice -->
    <dependency>
      <groupId>com.google.inject</groupId>
      <artifactId>guice</artifactId>
      <version>5.1.0</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.google.inject.extensions/guice-assistedinject -->
    <dependency>
      <groupId>com.google.inject.extensions</groupId>
      <artifactId>guice-assistedinject</artifactId>
      <version>5.1.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.scalatest/scalatest -->
    <dependency>
      <groupId>org.scalatest</groupId>
      <artifactId>scalatest_2.12</artifactId>
      <version>3.2.11</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.scalatest/scalatest-funsuite -->
    <dependency>
      <groupId>org.scalatest</groupId>
      <artifactId>scalatest-funsuite_2.12</artifactId>
      <version>3.2.11</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.scalatest/scalatest-shouldmatchers -->
    <dependency>
      <groupId>org.scalatest</groupId>
      <artifactId>scalatest-shouldmatchers_2.12</artifactId>
      <version>3.2.11</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.scalatestplus/junit-4-13 -->
    <dependency>
      <groupId>org.scalatestplus</groupId>
      <artifactId>junit-4-13_2.12</artifactId>
      <version>3.2.11.0</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.scalatestplus/mockito-4-2 -->
    <dependency>
      <groupId>org.scalatestplus</groupId>
      <artifactId>mockito-4-2_2.12</artifactId>
      <version>3.2.11.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.typesafe.akka/akka-testkit -->
    <dependency>
      <groupId>com.typesafe.akka</groupId>
      <artifactId>akka-testkit_2.12</artifactId>
      <version>2.5.24</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.typesafe.akka/akka-http-testkit -->
    <dependency>
      <groupId>com.typesafe.akka</groupId>
      <artifactId>akka-http-testkit_2.12</artifactId>
      <version>10.1.9</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.typesafe.akka/akka-http-jackson -->
    <dependency>
      <groupId>com.typesafe.akka</groupId>
      <artifactId>akka-http-jackson_2.12</artifactId>
      <version>10.1.9</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>4.3.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-inline</artifactId>
      <version>4.3.1</version>
      <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.module/jackson-module-scala -->
    <dependency>
      <groupId>com.fasterxml.jackson.module</groupId>
      <artifactId>jackson-module-scala_2.12</artifactId>
      <version>2.9.9</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.glassfish.tyrus.bundles/tyrus-standalone-client -->
    <dependency>
      <groupId>org.glassfish.tyrus.bundles</groupId>
      <artifactId>tyrus-standalone-client</artifactId>
      <version>1.18</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.glassfish.tyrus/tyrus-container-grizzly-server -->
    <dependency>
      <groupId>org.glassfish.tyrus</groupId>
      <artifactId>tyrus-container-grizzly-server</artifactId>
      <version>1.18</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.glassfish.tyrus/tyrus-server -->
    <dependency>
      <groupId>org.glassfish.tyrus</groupId>
      <artifactId>tyrus-server</artifactId>
      <version>1.18</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.iq80.leveldb/leveldb-project -->
    <dependency>
      <groupId>org.iq80.leveldb</groupId>
      <artifactId>leveldb</artifactId>
      <version>0.12</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.iq80.leveldb/leveldb-api -->
    <dependency>
      <groupId>org.iq80.leveldb</groupId>
      <artifactId>leveldb-api</artifactId>
      <version>0.12</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on -->
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-jdk15on</artifactId>
      <version>1.69</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://repo.softmotions.com/repository/softmotions-public/org/ethereum/leveldbjni-all -->
    <dependency>
      <groupId>org.ethereum</groupId>
      <artifactId>leveldbjni-all</artifactId>
      <version>1.18.3</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
  <repositories>
    <repository>
      <id>softmotions_repository</id>
      <name>Softmotions Public Repository</name>
      <url>https://repo.softmotions.com/repository/softmotions-public</url>
    </repository>
  </repositories>
  <build>
    <testResources>
      <testResource>
        <directory>${basedir}/src/test/resources</directory>
        <includes>
          <include>publickey25519proposition_hex</include>
          <include>privatekey25519_hex</include>
          <include>regulartransaction_hex</include>
          <include>RegularTransactionSerializerTestVrfPublicKey111</include>
          <include>RegularTransactionSerializerTestVrfPublicKey221</include>
          <include>SidechainBlockInfoTestVrfOutput234</include>
          <include>SidechainBlockTestVrfProof908</include>
          <include>SidechainBlockTestVrfSecretKey908</include>
          <include>SidechainBlockHeaderTestVrfProof178</include>
          <include>SidechainBlockHeaderTestVrfSecretKey178</include>
          <include>ForgerBoxMerklePathInfoTestVrfPublicKey907</include>
          <include>ForgerBoxSerializationTestVrfPublicKey901</include>
          <include>OmmerTestVrfProof143</include>
          <include>OmmerTestVrfSecretKey143</include>
          <include>zenbox_hex</include>
          <include>forgerbox_hex</include>
          <include>certifierrightbox_hex</include>
          <include>sidechainblockinfo_hex</include>
          <include>sidechainsyncinfo_hex</include>
          <include>sidechainblock_hex</include>
          <include>sidechainblockheader_hex</include>
          <include>ommer_hex</include>
          <include>mcblock473173_mainnet</include>
          <include>mcblock473174_mainnet</include>
          <include>mcblock473175_mainnet</include>
          <include>mcblock473176_mainnet</include>
          <include>withdrawalrequestbox_hex</include>
          <include>nonce_calculation_hex</include>
          <include>mcpublickeyhashproposition_hex</include>
          <include>boxmerklepathinfo_hex</include>
          <include>sidechaincoretransaction_hex</include>
          <include>schnorr_sk01_hex</include>
          <include>schnorr_sk02_hex</include>
          <include>schnorr_sk03_hex</include>
          <include>schnorr_sk04_hex</include>
          <include>schnorr_sk05_hex</include>
          <include>schnorr_sk06_hex</include>
          <include>schnorr_sk07_hex</include>
          <include>schnorr_sk08_hex</include>
          <include>schnorr_sk09_hex</include>
          <include>schnorr_sk00_hex</include>
          <!-- from https://explorer.horizen.global/api/rawblock/0000000024ebb5c6d558daa34ad9b9a4c5503b057e14815a48e241612b1eb660 -->
          <include>mcblock501173</include>
          <!-- from https://explorer.horizen.global/api/rawblock/0000000011aec26c29306d608645a644a592e44add2988a9d156721423e714e0 -->
          <include>mcblock273173</include>
          <!-- from https://explorer.horizen.global/api/rawblock/0000000009b9f4a9f2abe5cd129421df969d1eb1b02d3fd685ab0781939ead07 -->
          <include>mcheader300001</include>
          <!-- from https://explorer.horizen.global/api/rawblock/0000000058f40e90e203ceae655ae4d8a5c27d72732698e0c7959700c2787a01 -->
          <include>mcheader503014</include>
          <!-- from https://explorer.horizen.global/api/rawblock/000000001918f6d26d0b128dd4a6e6fce71f3cd96694470d4e24ddaf0dc0404f -->
          <include>mctx_v1</include>
          <!-- from https://explorer.horizen.global/api/rawtx/6054f092033e5bb352d46ddb837b10da91eb43b40da46656e46140e3ce938db9 -->
          <include>mctx_v1_coinbase</include>
          <!-- from https://explorer.horizen.global/api/rawtx/e2f681e0431bc5f77299373632350ac493211fa8f3d0491a2d6c5e0284f5d377 -->
          <include>mctx_v2</include>
          <!-- from https://explorer.horizen.global/api/rawtx/dee5a3758cee29648a6a50edf26c56db60c1186e434302299fd0f3e8339bf45a -->
          <include>mctx_v-3</include>
          <!-- generated on regtest on 25.05.2021 using test_data_generators/mc_txs_data.py -->
          <include>mctx_v-4_without_sc_data</include>
          <!-- generated on regtest on 25.05.2021 using test_data_generators/mc_txs_data.py -->
          <include>mctx_v-4_single_ft</include>
          <!-- generated on regtest on 25.05.2021 using test_data_generators/mc_txs_data.py -->
          <include>mctx_v-4_multiple_ft</include>
          <!-- generated on regtest on 25.05.2021 using test_data_generators/mc_txs_data.py -->
          <include>mctx_v-4_sc_creation</include>
          <!-- generated on regtest on 26.05.2021 using test_data_generators/mc_txs_data.py -->
          <include>mctx_v-4_mbtr</include>
          <!-- generated on regtest on 31.05.2021 using MC qa/sc_csw_actcertdata.py -->
          <include>mctx_v-4_csw</include>
          <include>mctx_v-4_csw_without_actcertdata</include>
          <include>mctx_v-4_with_many_tx_outputs</include>
          <!-- generated on regtest on 28.05.2021 using test_data_generators/sc_backward_transfer.py.py -->
          <include>cert_no_bts</include>
          <!-- generated on regtest on 28.05.2021 using test_data_generators/sc_backward_transfer.py.py -->
          <include>cert_with_bts</include>
          <include>sc_node_holder_fixter_settings.conf</include>
          <include>new_mc_blocks/mc_block_empty_sidechains</include>
          <include>new_mc_blocks/mc_block_with_1_sc_creation</include>
          <include>new_mc_blocks/mc_block_with_1_ft</include>
          <!-- generated on regtest on 26.05.2021 using test_data_generators/mc_blocks_data.py -->
          <include>new_mc_blocks/mc_block_with_1_mbtr</include>
          <!-- generated on regtest on 31.05.2021 using MC qa/sc_csw_actcertdata.py -->
          <include>new_mc_blocks/mc_block_with_csws</include>
          <include>new_mc_blocks/mc_block_with_3_sidechains</include>
          <!-- generated on regtest on 28.05.2021 using qa/sc_backward_transfer.py -->
          <include>new_mc_blocks/mc_block_with_certificate_with_bts</include>
          <!-- generated on regtest on 28.05.2021 using qa/sc_backward_transfer.py -->
          <include>new_mc_blocks/mc_block_with_certificate_without_bts</include>
          <!-- generated on regtest on 28.05.2021 using qa/sc_multiple_certs.py -->
          <include>new_mc_blocks/mc_block_with_2_certificates</include>
          <!-- generated on regtest on 31.05.2021 using MC qa/sc_cert_customfields.py -->
          <include>new_mc_blocks/mc_block_with_certificate_with_custom_fields</include>
          <!-- generated on regtest on 15.03.2022 using MC sc_getscgenesisinfo.py -->
          <include>new_mc_blocks/mc_block_with_certificate_with_custom_fields_mixed_sc_versions</include>
          <include>backward_transfer_certificate_empty</include>
          <include>backward_transfer_certificate_non_empty</include>
          <include>log4j2-test.xml</include>
        </includes>
      </testResource>
    </testResources>
    <plugins>
      <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>scala-maven-plugin</artifactId>
        <version>4.4.0</version>
        <executions>
          <execution>
            <id>compile-scala-sources</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
          <execution>
            <id>compile-scala-tests</id>
            <phase>generate-test-sources</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <scalaVersion>${scala.version}</scalaVersion>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration/>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
        <executions>
          <execution>
            <id>install-jar-lib</id>
            <phase>package</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <file>target/${project.build.finalName}.${project.packaging}</file>
          <pomFile>pom.xml</pomFile>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.sonatype.plugins</groupId>
        <artifactId>nexus-staging-maven-plugin</artifactId>
        <version>1.6.8</version>
        <extensions>true</extensions>
        <configuration>
          <serverId>ossrh</serverId>
          <nexusUrl>https://oss.sonatype.org/</nexusUrl>
          <autoReleaseAfterClose>true</autoReleaseAfterClose>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>scala-maven-plugin</artifactId>
        <version>4.4.0</version>
        <configuration>
          <scalaVersion>${scala.version}</scalaVersion>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
  <profiles>
    <profile>
      <id>sign</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <gpgArguments>
                    <arg>--pinentry-mode</arg>
                    <arg>loopback</arg>
                    <arg>--no-tty</arg>
                  </gpgArguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>build-extras</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.2.1</version>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <sourcepath>${project.basedir}/src/main/java</sourcepath>
              <excludePackageNames>com.horizen.*</excludePackageNames>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
