-
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathtoken.ts
More file actions
98 lines (89 loc) · 4.04 KB
/
Copy pathtoken.ts
File metadata and controls
98 lines (89 loc) · 4.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/**
* Mirror of `TOKEN_RULES` and `COSMETICS` in
* `langx/packages/shared/src/token.ts` and `cosmetics.ts`.
*
* langx marks these as "starting values only" — they are expected to move
* once there is real activity data, which is why the page that renders them
* says so out loud.
*/
export const tokenEarning = [
{ action: 'Send a message', amount: '1' },
{ action: "Correct someone else's sentence", amount: '10' },
{ action: 'Answer a pronunciation request with a recording', amount: '10' },
{ action: 'First conversation where both of you have spoken', amount: '15' },
{ action: 'Finish a review in Echo (ten cards)', amount: '5' }
];
export const tokenCaps = [
'Up to 200 tokens a day from messages.',
'At most 60 of those from any one person, so it takes four partners to reach the ceiling and talking to one all day is not a strategy.',
'Echo pays for five reviews a day — 25 tokens at most.',
'A shared daily pool of 5,000 tokens is split between that day’s active users, in proportion to how active they were. No one can take more than 5% of it — 250 tokens.'
];
export const streakMilestones = [
{ day: 7, bonus: 50 },
{ day: 30, bonus: 250 },
{ day: 100, bonus: 1000 },
{ day: 180, bonus: 1500 },
{ day: 365, bonus: 5000 },
{ day: 730, bonus: 12000 },
{ day: 1095, bonus: 25000 }
];
export const tokenSinks = [
{
name: 'Streak freeze',
price: '200 tokens',
description: 'Rescues one missed day. You can bank two at a time.'
},
{
name: 'Fill in a missed day',
price: '600 tokens',
description:
'Fills one empty square on your activity map, within the last 14 days. Two a month, and never today — today is earned.'
},
{
name: 'Frames and titles',
price: '1,000 – 100,000 tokens',
description:
'Cosmetic only: ten avatar frames from Slate to Aurora, and ten titles from Beginner to Legend.'
},
{
name: 'Sticker packs',
price: '1,000 – 1,500 tokens',
description:
'Three packs of twelve stickers to send in a chat: Starter and Practice at 1,000, and Pixel, drawn entirely for LangX, at 1,500. No pack is a rung above another, so any one can be bought first — and none of them carry lettering, because the app is read in eight languages.'
}
];
/**
* The hourly gift in the wallet's store. Free and random; mirrors
* `TOKEN_RULES.gift`. Gift tokens count toward the all-time balance only,
* never toward the weekly, monthly or yearly tables.
*/
export const tokenGift = {
every: 'Once an hour',
range: '0 – 250 tokens',
description:
'A small gift every hour, for free. Most hold a handful of tokens — about a third are empty and nine in ten hold 30 or fewer — and a few hold more. It never counts toward a leaderboard.'
};
/** The full list, phrased so it can be read as a promise rather than a disclaimer. */
export const tokenIsNot = [
'It cannot be bought — there is no way to purchase tokens, with money or anything else.',
'It cannot be sold, traded or staked. There is no exchange, no market, no marketplace, and none is planned.',
'It cannot be sent to another user.',
'It cannot be withdrawn. It does not leave the app.',
'It is not on a blockchain. There is no chain, no contract, no wallet address.',
'It cannot unlock a paid plan. Those are subscriptions; tokens buy none of them.'
];
/**
* The referral programme; mirrors `TOKEN_RULES.referral` and `signupBonus`.
* Nothing is paid for signing up — an invite pays once the invitee writes to
* somebody — and the plan bonus goes to the inviter, never to whoever paid.
*/
export const tokenInvites = [
{ when: 'They write their first message or correction', amount: '1,000' },
{ when: 'They ever start a paid plan', amount: '4,000' }
];
export const tokenInviteNote =
'At most 5,000 per person you invite. They earn 750 at the same moment, so with the 250 every new account starts with they begin on 1,000. Nothing is paid for signing up alone, and the person who pays for a plan gets no tokens for paying.';
/** v1 balances are credited to earned tokens divided by this. */
export const legacyTokenDivisor = 100;
export const welcomeBackBonus = 250;