plugins {
    id "org.jetbrains.kotlin.multiplatform"
    id "org.jetbrains.kotlin.plugin.serialization"
    id "com.google.devtools.ksp"
    id "org.jetbrains.dokka"
}

project.description = "Core part of tgbotapi with all (and only) required functionality for working with Telegram Bot API"

apply from: "$mppProjectWithSerializationPresetPath"
apply from: "$publishGradlePath"

kotlin {
    sourceSets {
        commonMain {
            dependencies {
                api libs.kotlin.coroutines
                api libs.kotlin.serialization
                api libs.kotlin.serialization.properties

                api libs.korlibs.klock
                api libs.korlibs.krypto
                api libs.uuid

                api libs.microutils.colors.common
                api libs.microutils.coroutines
                api libs.microutils.serialization.base64
                api libs.microutils.serialization.encapsulator
                api libs.microutils.serialization.typedSerializer
                api libs.microutils.serialization.mapper
                api libs.microutils.ktor.common
                api libs.microutils.languageCodes

                api libs.ktor.client.core

                api libs.kslog
            }
        }
        commonTest {
            dependencies {
                implementation project(":tgbotapi.utils")
            }
        }
        jvmMain {
            dependencies {
                api libs.ktor.server
                api libs.ktor.server.host.common

                api libs.ktor.client.cio

                api libs.javax.activation
            }
        }

        linuxX64Main {
            dependencies {
                api libs.ktor.client.curl
            }
        }

        linuxArm64Main {
            dependencies {
                api libs.ktor.client.cio
            }
        }

        mingwX64Main {
            dependencies {
                api libs.ktor.client.winhttp
            }
        }
    }
}

dependencies {
    add("kspCommonMainMetadata", project(":tgbotapi.ksp"))
}

ksp {
    arg("cctargetPackage", "dev.inmo.tgbotapi.extensions.utils")
    arg("ccoutputFileName", "ClassCastsNew")
    arg("ccoutputFolder", project(":tgbotapi.utils").file("src/commonMain/kotlin").absolutePath)
}
