All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.provenance.explorer.client.GovernanceClient.kt Maven / Gradle / Ivy

There is a newer version: 6.0.0
Show newest version
package io.provenance.explorer.client

import feign.Headers
import feign.Param
import feign.RequestLine
import io.provenance.explorer.client.BaseRoutes.PAGE_PARAMETERS
import io.provenance.explorer.model.DepositRecord
import io.provenance.explorer.model.GovProposalDetail
import io.provenance.explorer.model.VoteRecord
import io.provenance.explorer.model.base.PagedResults

object GovernanceRoutes {
    const val GOV_V2 = "${BaseRoutes.V2_BASE}/gov"
    const val GOV_V3 = "${BaseRoutes.V3_BASE}/gov"
    const val PROPOSAL = "$GOV_V2/proposals/{id}"
    const val DEPOSITS = "$GOV_V2/proposals/{id}/deposits"
    const val ALL = "$GOV_V3/proposals"
    const val VOTES = "$GOV_V3/proposals/{id}/votes"
    const val VOTES_BY_ADDRESS = "$GOV_V3/votes/{address}"
}

@Headers(BaseClient.CT_JSON)
interface GovernanceClient : BaseClient {

    @RequestLine("GET ${GovernanceRoutes.ALL}?$PAGE_PARAMETERS")
    fun allProposals(
        @Param("count") count: Int = 10,
        @Param("page") page: Int = 1
    ): PagedResults

    @RequestLine("GET ${GovernanceRoutes.PROPOSAL}")
    fun proposal(@Param("id") id: Long): GovProposalDetail

    @RequestLine("GET ${GovernanceRoutes.DEPOSITS}?$PAGE_PARAMETERS")
    fun proposalDeposits(
        @Param("id") id: Long,
        @Param("count") count: Int = 10,
        @Param("page") page: Int = 1
    ): PagedResults

    @RequestLine("GET ${GovernanceRoutes.VOTES}?$PAGE_PARAMETERS")
    fun proposalVotes(
        @Param("id") id: Long,
        @Param("count") count: Int = 10,
        @Param("page") page: Int = 1
    ): PagedResults

    @RequestLine("GET ${GovernanceRoutes.VOTES_BY_ADDRESS}?$PAGE_PARAMETERS")
    fun votesByAddress(
        @Param("address") address: String,
        @Param("count") count: Int = 10,
        @Param("page") page: Int = 1
    ): PagedResults
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy