Rate Conversion
Rate conversion functions of Papaya SDK for working with time periods
Rate Periods
The SDK exports a RatePeriod
enum to represent different time periods:
export enum RatePeriod {
SECOND = 'second',
HOUR = 'hour',
DAY = 'day',
WEEK = 'week',
MONTH = 'month',
YEAR = 'year'
}
These period values correspond to the following conversion factors (in seconds):
SECOND
1
HOUR
3,600
DAY
86,400
WEEK
604,800
MONTH
2,628,000 (≈30.42 days)
YEAR
31,536,000 (365 days)
convertRatePerSecond()
convertRatePerSecond()
Converts an amount for a specific period (e.g., 10 USDT per month) to a per-second rate.
function convertRatePerSecond(amount: string, period: RatePeriod): number
Parameters:
amount
: The rate amount as a stringperiod
: The time period for the rate (e.g.,RatePeriod.MONTH
)
Returns: The equivalent per-second rate as a number.
Example:
// Convert 10 USDT per month to a per-second rate
const perSecondRate = convertRatePerSecond('10', RatePeriod.MONTH);
console.log(perSecondRate); // Very small number representing tokens per second
convertRateToPeriod()
convertRateToPeriod()
Converts a per-second rate to a rate for a specified period.
function convertRateToPeriod(ratePerSecond: number, period: RatePeriod): number
Parameters:
ratePerSecond
: The per-second rate as a numberperiod
: The target time period (e.g.,RatePeriod.MONTH
)
Returns: The rate for the target period as a number.
Example:
// Convert a per-second rate to a monthly rate
const monthlyRate = convertRateToPeriod(perSecondRate, RatePeriod.MONTH);
console.log(monthlyRate); // Approximately 10 (if perSecondRate was from previous example)
Practical Example
import { convertRatePerSecond, convertRateToPeriod, RatePeriod } from '@papaya_fi/sdk';
// User wants to subscribe to 25 USDT per month
const monthlyAmount = '25';
const perSecondRate = convertRatePerSecond(monthlyAmount, RatePeriod.MONTH);
// Use the per-second rate for subscription
await papaya.subscribe(creatorAddress, perSecondRate, RatePeriod.SECOND, projectId);
// Later, when getting subscription info
const userInfo = await papaya.getUserInfo();
const rawIncomeRate = userInfo.incomeRate;
// Convert back to human-readable format
const monthlyIncome = convertRateToPeriod(Number(rawIncomeRate), RatePeriod.MONTH);
console.log(`Monthly income: ${monthlyIncome} USDT`);
Last updated