import BaseAPI from "./BaseAPI"; import Client from "../Client"; import { SubmitDeveloperExchangeOptions as BillingAPISubmitDeveloperExchangeOptions } from "./BillingAPI"; export type GetAssetResaleDataOptions = { assetId: number; }; export type GetAssetResaleData = { assetStock: number; sales: number; numberRemaining: number; recentAveragePrice: number; originalPrice: number; priceDataPoints: { value: number; date: string; }[]; volumeDataPoints: { value: number; date: string; }[]; }; export type GetAssetResellersOptions = { assetId: number; limit?: 10 | 25 | 50 | 100; cursor?: string; }; export type GetAssetResellers = { previousPageCursor: string; nextPageCursor: string; data: { userAssetId: number; seller: { id: number; type: "User" | "Group"; name: string; }; price: number; serialNumber: number; }[]; }; export type GetUserResellableAssetCopiesOptions = { userId: number; assetId: number; }; export type GetUserResellableAssetCopies = { data: GetAssetResellers["data"]; }; export type GetResaleTaxRate = { taxRate: number; minimumFee: number; }; export type SetAssetCopiesOptions = { assetId: number; userAssetId: number; price: number; }; export type SetAssetCopies = unknown; export type GetDeveloperExchangeAbility = { canCashOut: boolean; meetsPremiumRequirement: boolean; hasVerifiedEmail: boolean; isUserBlackListed: boolean; meetsMinimumCashOutBalance: boolean; hasCashedOutThisMonth: boolean; lastImbursementStatusIsValid: boolean; }; export type GetDeveloperExchangeHelp = unknown; export type GetDeveloperExchangeInfoOptions = { fromDevExPage: boolean; }; export type GetDeveloperExchangeInfo = { hasCurrencyOperationError: boolean; currencyOperationErrorMessage: string; showOnlyExchangeRates: boolean; meetsMembershipRequirements: boolean; emailIsVerified: boolean; isImbursementBlacklistUser: boolean; canProceedToCashout: boolean; showProgressBar: boolean; percentRobux: number; minRobuxToCashOut: number; maxRobuxCanCashOut: number; lastImbursementStatus: string; lastImbursementSubmissionDate: string; conversionPercent: number; }; export type SubmitDeveloperExchangeOptions = BillingAPISubmitDeveloperExchangeOptions; export type SubmitDeveloperExchange = { submitted: boolean; cashOutAbility: { canCashOut: boolean; meetsPremiumRequirement: boolean; hasVerifiedEmail: boolean; isUserBlcakListed: boolean; meetsMinimumCashOutBalance: boolean; hasCashedOutThisMonth: boolean; lastImbursementStatusIsValid: boolean; }; errors: unknown; }; export type GetGroupCurrencyOptions = { groupId: number; }; export type GetGroupCurrency = { robux: number; }; export type GetSelfCurrencyOptions = { userId: number; }; export type GetSelfCurrency = { robux: number; }; export type GetGroupRevenueSummaryInTimeFrameOptions = { groupId: number; timeFrame: "Day" | "Week" | "Month" | "Year"; }; export type GetGroupRevenueSummaryInTimeFrame = { recurringRobuxStipend: number; itemSaleRobux: number; purchasedRoblox: number; tradeSystemRobux: number; pendingRobux: number; groupPayoutRobux: number; }; export type GetSelfRevenueSummaryInTimeFrameOptions = Omit & { userId: number; }; export type GetSelfRevenueSummaryInTimeFrame = GetGroupRevenueSummaryInTimeFrame; export type GetGroupTransactionsOptions = { groupId: number; transactionType: "Sale" | "Purchase" | "AffiliateSale" | "DevEx" | "GroupPayout" | "AdImpressionPayout"; limit?: 10 | 25 | 50 | 100; cursor?: string; }; export type GetGroupTransactions = { previousPageCursor: string; nextPageCursor: string; data: { created: string; isPending: boolean; agent: { id: number; type: "User" | "Group"; name: string; }; details: unknown; currency: { amount: number; type: "Robux" | string; }; }[]; }; export type GetSelfTransactionsOptions = Omit & { userId: number; }; export type GetSelfTransactions = GetGroupTransactions; export default class EconomyAPI extends BaseAPI { constructor(client: Client); getAssetResaleData(options: GetAssetResaleDataOptions): Promise; getAssetResellers(options: GetAssetResellersOptions): Promise; getUserResellableAssetCopies(options: GetUserResellableAssetCopiesOptions): Promise; getResaleTaxRate(): Promise; setAssetCopiesForSale(options: SetAssetCopiesOptions): Promise; getDeveloperExchangeAbility(): Promise; getDeveloperExchangeHelp(): Promise; getDeveloperExchangeInfo(options: GetDeveloperExchangeInfoOptions): Promise; submitDeveloperExchange(options: SubmitDeveloperExchangeOptions): Promise; getGroupCurrency(options: GetGroupCurrencyOptions): Promise; getSelfCurrency(options: GetSelfCurrencyOptions): Promise; getGroupRevenueByTime(options: GetGroupRevenueSummaryInTimeFrameOptions): Promise; getSelfRevenueSummaryByTIme(options: GetSelfRevenueSummaryInTimeFrameOptions): Promise; getGroupTransactions(options: GetGroupTransactionsOptions): Promise; getSelfTransactions(options: GetSelfTransactionsOptions): Promise; }