{"version":3,"sources":["../../../../src/lib/managers/SkyBlockManager.ts"],"sourcesContent":["import { BaseManager } from './BaseManager';\r\nimport { HypixelTSError } from '../errors/index';\r\nimport { SkyBlockProfile, SkyBlockAuction } from '../classes/index';\r\nimport type { Client } from '../Client';\r\nimport type {\r\n\tAPISkyBlockProfile,\r\n\tFetchCollectionsResponse,\r\n\tFetchSkillsResponse,\r\n\tFetchItemsResponse,\r\n\tFetchElectionAndMayorResponse,\r\n\tFetchActiveBingoGoalsResponse,\r\n\tFetchNewsResponse,\r\n\tAPISkyBlockAuction,\r\n\tFetchActiveAuctionsResponse,\r\n\tFetchBazaarResponse,\r\n\tRecentlyEndedAuctionsResponse,\r\n\tFetchBingoDataResponse,\r\n\tFetchFireSalesResponse,\r\n\tFetchFireSalesResponseFireSale\r\n} from '../typings';\r\nimport type { Logger } from '../Logger';\r\n\r\n/**\r\n * Skyblock related endpoints\r\n * @category Managers\r\n * @group Managers\r\n * @see {@link https://api.hypixel.net/#tag/SkyBlock}\r\n */\r\nexport class SkyBlockManager extends BaseManager {\r\n\tpublic constructor(client: Client, logger: Logger) {\r\n\t\tsuper(client, true, logger);\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch information regarding collections in the SkyBlock game\r\n\t */\r\n\tpublic async fetchCollections(): Promise<FetchCollectionsResponse> {\r\n\t\tconst data = await this.makeGetRequest<FetchCollectionsResponse>('/resources/skyblock/collections');\r\n\t\treturn {\r\n\t\t\tlastUpdated: data.lastUpdated,\r\n\t\t\tversion: data.version,\r\n\t\t\tcollections: data.collections\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch information regarding skills in the SkyBlock game\r\n\t */\r\n\tpublic async fetchSkills(): Promise<FetchSkillsResponse> {\r\n\t\tconst data = await this.makeGetRequest<FetchSkillsResponse>('/resources/skyblock/skills');\r\n\t\treturn {\r\n\t\t\tlastUpdated: data.lastUpdated,\r\n\t\t\tversion: data.version,\r\n\t\t\tcollections: data.collections,\r\n\t\t\tskills: data.skills\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch information regarding items in the SkyBlock game\r\n\t */\r\n\tpublic async fetchItems(): Promise<FetchItemsResponse> {\r\n\t\tconst data = await this.makeGetRequest<FetchItemsResponse>('/resources/skyblock/items');\r\n\t\treturn {\r\n\t\t\tlastUpdated: data.lastUpdated,\r\n\t\t\titems: data.items\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch information regarding the current mayor and ongoing election in SkyBlock\r\n\t */\r\n\tpublic async fetchElectionAndMayor(): Promise<FetchElectionAndMayorResponse> {\r\n\t\tconst data = await this.makeGetRequest<FetchElectionAndMayorResponse>('/resources/skyblock/election');\r\n\t\treturn {\r\n\t\t\tlastUpdated: data.lastUpdated,\r\n\t\t\tmayor: data.mayor,\r\n\t\t\tcurrent: data.current\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch information regarding the current bingo event and its goals\r\n\t */\r\n\tpublic async fetchActiveBingoGoals(): Promise<FetchActiveBingoGoalsResponse> {\r\n\t\tconst data = await this.makeGetRequest<FetchActiveBingoGoalsResponse>('/resources/skyblock/bingo');\r\n\t\treturn {\r\n\t\t\tlastUpdated: data.lastUpdated,\r\n\t\t\tid: data.id,\r\n\t\t\tgoals: data.goals\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch SkyBlock news\r\n\t */\r\n\tpublic async fetchNews() {\r\n\t\tconst data = await this.makeGetRequest<FetchNewsResponse>('/skyblock/news');\r\n\t\treturn {\r\n\t\t\titems: data.items\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch a SkyBlock auction.\r\n\t * @param identifier The idenitifer you're using to fetch the auction\r\n\t * @param type The type of identifier you're passing (either auction `uuid`, uuid of the `player`, uuid of the `profile`)\r\n\t * @param raw Whether to return the raw response, without converting each auction to an @see{@link SkyBlockAuction} class. Defaults to `false`.\r\n\t */\r\n\tpublic async fetchAuction(\r\n\t\tidentifier: string,\r\n\t\ttype: 'uuid' | 'player' | 'profile',\r\n\t\traw = false\r\n\t): Promise<SkyBlockAuction[] | APISkyBlockAuction[]> {\r\n\t\tif (!identifier) throw new HypixelTSError('METHOD_MISSING_OPTION', 'SkyBlockManager', 'fetchAuction', 'identifier');\r\n\t\tif (!type) throw new HypixelTSError('METHOD_MISSING_OPTION', 'SkyBlockManager', 'fetchAuction', 'type');\r\n\t\tif (type !== 'uuid' && type !== 'player' && type !== 'profile')\r\n\t\t\tthrow new HypixelTSError('METHOD_INVALID_OPTIONS', 'SkyBlockManager', 'fetchAuction', 'type', ['uuid', 'player', 'profile']);\r\n\r\n\t\tconst { auctions } = await this.makeGetRequest<{ auctions: APISkyBlockAuction[] }>(`/skyblock/auction?${type}=${identifier}`);\r\n\r\n\t\tif (!raw) {\r\n\t\t\tconst parsed = [];\r\n\r\n\t\t\tfor (const auction of auctions) {\r\n\t\t\t\tparsed.push(new SkyBlockAuction(this.client, auction));\r\n\t\t\t}\r\n\r\n\t\t\treturn parsed;\r\n\t\t}\r\n\r\n\t\treturn auctions;\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch the currently active auctions (sorted by last updated first and paginated)\r\n\t * @param page The page number\r\n\t * @param resolveAuctions Whether to resolve the auctions returned, to a @see {@link SkyBlockAuction} class. Defaults to `true`.\r\n\t */\r\n\tpublic async fetchActiveAuctions(page?: number, resolveAuctions = true) {\r\n\t\tif (page && typeof page !== 'number')\r\n\t\t\tthrow new HypixelTSError('METHOD_INVALID_OPTIONS', 'SkyBlockManager', 'fetchActiveAuctions', 'page', ['number']);\r\n\r\n\t\tconst data = await this.makeGetRequest<FetchActiveAuctionsResponse>('/skyblock/auctions');\r\n\r\n\t\tif (resolveAuctions) {\r\n\t\t\tconst parsed = [];\r\n\r\n\t\t\tfor (const auction of data.auctions) {\r\n\t\t\t\tparsed.push(new SkyBlockAuction(this.client, auction));\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tlastUpdated: data.lastUpdated,\r\n\t\t\t\tpage: data.page,\r\n\t\t\t\ttotalPages: data.totalPages,\r\n\t\t\t\ttotalAuctions: data.totalAuctions,\r\n\t\t\t\tauctions: parsed\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tlastUpdated: data.lastUpdated,\r\n\t\t\tpage: data.page,\r\n\t\t\ttotalPages: data.totalPages,\r\n\t\t\ttotalAuctions: data.totalAuctions,\r\n\t\t\tauctions: data.auctions\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch recently ended auctions (auctions which ended in the last 60 seconds).\r\n\t */\r\n\tpublic async fetchRecentlyEndedAuctions(): Promise<RecentlyEndedAuctionsResponse> {\r\n\t\tconst data = await this.makeGetRequest<RecentlyEndedAuctionsResponse>('/skyblock/auctions_ended');\r\n\t\treturn {\r\n\t\t\tlastUpdated: data.lastUpdated,\r\n\t\t\tauctions: data.auctions\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch bazaar items\r\n\t */\r\n\tpublic async fetchBazaar(): Promise<FetchBazaarResponse> {\r\n\t\tconst data = await this.makeGetRequest<FetchBazaarResponse>('/skyblock/bazaar');\r\n\t\treturn {\r\n\t\t\tlastUpdated: data.lastUpdated,\r\n\t\t\tproducts: data.products\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch a SkyBlock profile (using a SkyBlock profile uuid). The data returned can differ depending on the players in-game API settings.\r\n\t * @param profileUuid The uuid of the SkyBlock profile\r\n\t *\r\n\t * @deprecated\r\n\t */\r\n\tpublic async fetchProfile(profileUuid: string): Promise<SkyBlockProfile> {\r\n\t\tif (!profileUuid) throw new HypixelTSError('METHOD_MISSING_OPTION', 'SkyBlockManager', 'fetchProfile', 'profileUuid');\r\n\r\n\t\tconst data = await this.makeGetRequest<APISkyBlockProfile>(`/skyblock/profile?profile=${profileUuid}`);\r\n\r\n\t\treturn new SkyBlockProfile(this.client, data);\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch a SkyBlock profiles of a player\r\n\t * @param playerUuid The uuid of the player\r\n\t *\r\n\t * @deprecated\r\n\t */\r\n\tpublic async fetchPlayerSkyBlockProfiles(playerUuid: string): Promise<SkyBlockProfile[]> {\r\n\t\tif (!playerUuid) throw new HypixelTSError('METHOD_MISSING_OPTION', 'SkyBlockManager', 'fetchPlayerSkyBlockProfiles', 'playerUuid');\r\n\r\n\t\tconst { profiles } = await this.makeGetRequest<{ profiles: APISkyBlockProfile[] }>(`/skyblock/profiles?uuid=${playerUuid}`);\r\n\t\tconst parsed = [];\r\n\r\n\t\tfor (const profile of profiles) {\r\n\t\t\tparsed.push(new SkyBlockProfile(this.client, profile));\r\n\t\t}\r\n\r\n\t\treturn parsed;\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch bingo data of a player\r\n\t * @param playerUuid The uuid of the player\r\n\t */\r\n\tpublic async fetchBingoData(playerUuid: string): Promise<FetchBingoDataResponse> {\r\n\t\tif (!playerUuid) throw new HypixelTSError('METHOD_MISSING_OPTION', 'SkyBlockManager', 'fetchBingoData', 'playerUuid');\r\n\r\n\t\tconst data = await this.makeGetRequest<FetchBingoDataResponse>(`/skyblock/bingo?uuid=${playerUuid}`);\r\n\t\treturn {\r\n\t\t\tevents: data.events\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Fetch the currently active or upcoming Fire Sales for SkyBlock\r\n\t */\r\n\tpublic async fetchFireSales(): Promise<FetchFireSalesResponseFireSale[]> {\r\n\t\tconst { sales } = await this.makeGetRequest<FetchFireSalesResponse>('/skyblock/firesales');\r\n\t\treturn sales;\r\n\t}\r\n}\r\n"],"mappings":"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","names":[]}