import DiscordMarketplaceRoute from "../routes/DiscordMarketplaceRoute"; import Requests from "../util/Requests"; import Response from "../util/Response"; import { AxiosPromise } from "axios"; class DiscordMarketplace { /** * Search for Discord servers available for sponsorship. */ public static listListings(params?: Record): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.listListings, undefined, undefined, params); } /** * List a Discord server in the marketplace (Owner). */ public static createListing(data: object): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.createListing, data); } /** * Get details for a specific server listing. */ public static viewListing(id: string): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.viewListing, {}, { id }); } /** * Update listing settings like price or auto-approve (Owner). */ public static updateListing(id: string, data: object): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.updateListing, data, { id }); } /** * Remove a server from the marketplace (Owner). */ public static deleteListing(id: string): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.deleteListing, {}, { id }); } /** * List sponsored post orders. Use params { mode: 'buyer' | 'seller' }. */ public static listOrders(params?: Record): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.listOrders, undefined, undefined, params); } /** * Submit a post to a Discord server for sponsorship (Game Developer). */ public static createOrder(data: object): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.createOrder, data); } /** * Get details for a specific order. */ public static viewOrder(id: string): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.viewOrder, {}, { id }); } /** * Approve and publish a sponsored post (Owner). */ public static approveOrder(id: string): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.approveOrder, {}, { id }); } /** * Reject a sponsored post (Owner). */ public static rejectOrder(id: string, data: { reason: string }): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.rejectOrder, data, { id }); } /** * Request changes to the post content (Owner). */ public static requestChanges(id: string, data: { reason: string }): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.requestChanges, data, { id }); } /** * Resubmit a post after making requested changes (Game Developer). */ public static resubmitOrder(id: string): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.resubmitOrder, {}, { id }); } /** * Get available text channels for a specific Discord listing. */ public static getChannels(id: string): AxiosPromise> { return Requests.processRoute(DiscordMarketplaceRoute.routes.getChannels, {}, { id }); } } export default DiscordMarketplace;