@opexa/portal-sdk 0.0.22 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -1
- package/dist/index.js +77 -62
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +665 -433
- package/dist/index.mjs.map +1 -1
- package/dist/sdk/sdk.d.ts +7 -9
- package/dist/sdk/transformer.d.ts +2 -0
- package/dist/sdk/types.d.ts +7 -0
- package/dist/services/cms-portal.service.d.ts +17 -0
- package/dist/services/game.service.d.ts +2 -2
- package/dist/services/queries.d.ts +1 -0
- package/dist/services/types.d.ts +38 -8
- package/dist/utils/compact.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/lib/sdk/object-type.ts","../src/lib/utils/gql.ts","../src/lib/services/queries.ts","../src/lib/services/utils.ts","../src/lib/services/account.service.ts","../src/lib/utils/status-code-to-operation-error.ts","../src/lib/services/auth.service.ts","../src/lib/services/file.service.ts","../src/lib/services/report.service.ts","../src/lib/services/static.service.ts","../src/lib/services/wallet.service.ts","../src/lib/services/game.service.ts","../src/lib/services/portal.service.ts","../src/lib/utils/clamp.ts","../src/lib/utils/is-plain-object.ts","../src/lib/utils/flatten.ts","../src/lib/utils/graphql-client.ts","../src/lib/utils/sha256.ts","../src/lib/sdk/logger.ts","../src/lib/utils/clone-date.ts","../src/lib/utils/add-days.ts","../src/lib/utils/add-minutes.ts","../src/lib/utils/is-after.ts","../src/lib/utils/sleep.ts","../src/lib/utils/pollable.ts","../src/lib/utils/sub-minutes.ts","../src/lib/sdk/session-manager.ts","../src/lib/utils/parse-decimal.ts","../src/lib/sdk/transformer.ts","../src/lib/sdk/sdk.ts"],"sourcesContent":["/*\r\n * ref: https://github.com/HighOutputVentures/opexa/blob/main/libs/shared/src/libs/object-type.ts\r\n */\r\n\r\nexport const ObjectType = {\r\n\tAccount: 8,\r\n\tDeposit: 9,\r\n\tWithdrawal: 14,\r\n\tVerification: 15,\r\n\tFile: 16,\r\n\tGameSession: 204,\r\n\tMayaSession: 230,\r\n};\r\n","export function gql(strings: TemplateStringsArray, ...values: unknown[]) {\r\n\tlet result = '';\r\n\r\n\tfor (const [index, string] of strings.entries()) {\r\n\t\tconst value = values.at(index) ?? '';\r\n\r\n\t\tresult = `${result}${string}${value}`;\r\n\t}\r\n\r\n\treturn result.trim();\r\n}\r\n","import { gql } from '../utils/gql';\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ FILE +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const FILE_FRAGMENT = gql`\r\n\tfragment FileFragment on File {\r\n\t\tid\r\n\t\turl\r\n\t\tstatus\r\n\t\tdateTimeCreated\r\n\t}\r\n`;\r\n\r\nexport const FILE_QUERY = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tquery File($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on File {\r\n\t\t\t\t...FileFragment\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const UPLOAD_PRIVATE_IMAGE_FILE_MUTATION = gql`\r\n\tmutation UploadPrivateImageFile($input: UploadFileInput!) {\r\n\t\tuploadPrivateImageFile(input: $input) {\r\n\t\t\t... on FileFormatNotSupportedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on FileNameTooLongError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on FileSizeTooBigError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ WALLET +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const WALLET_QUERY = gql`\r\n\tquery Wallet {\r\n\t\twallet {\r\n\t\t\tid\r\n\t\t\tbalance\r\n\t\t\tcurrency\r\n\t\t\tdateTimeCreated\r\n\t\t\tdateTimeLastUpdated\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ POINTS +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const POINTS_WALLET_QUERY = gql`\r\n\tquery PointsWallet {\r\n\t\tpointsWallet {\r\n\t\t\tid\r\n\t\t\tpoints\r\n\t\t\taccount\r\n\t\t\tdateTimeCreated\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const POINTS_TO_CASH_CONVERSION_MUTATION = gql`\r\n\tmutation PointsToCashConversion($input: PointsToCashConversionInput!) {\r\n\t\tpointsToCashConversion(input: $input) {\r\n\t\t\t... on InsufficientPointsError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ GAME +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const GAME_FRAGMENT = gql`\r\n\tfragment GameFragment on Game {\r\n\t\tid\r\n\t\ttype\r\n\t\tname\r\n\t\tprovider\r\n\t}\r\n`;\r\n\r\nexport const GAMES_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery Games($first: Int, $after: Cursor, $filter: GameFilterInput) {\r\n\t\tgames(first: $first, after: $after, filter: $filter) {\r\n\t\t\tedges {\r\n\t\t\t\tcursor\r\n\t\t\t\tnode {\r\n\t\t\t\t\t... on Game {\r\n\t\t\t\t\t\t...GameFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttotalCount\r\n\t\t\tpageInfo {\r\n\t\t\t\thasNextPage\r\n\t\t\t\tendCursor\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const GAMES_BY_NAME_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery GamesByName($first: Int, $search: String!, $filter: GameFilterInput) {\r\n\t\tgamesByName(first: $first, search: $search, filter: $filter) {\r\n\t\t\tid\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const GAME_SESSION_QUERY = gql`\r\n\tquery GameSession($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on GameSession {\r\n\t\t\t\tid\r\n\t\t\t\tgame\r\n\t\t\t\tstatus\r\n\t\t\t\tlaunchUrl\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_GAME_SESSION_MUTATION = gql`\r\n\tmutation CreateGameSession($input: CreateGameSessionInput!) {\r\n\t\tcreateGameSession(input: $input) {\r\n\t\t\t... on GameDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const END_GAME_SESSION_MUTATION = gql`\r\n\tmutation EndGameSession($input: EndGameSessionInput!) {\r\n\t\tendGameSession(input: $input)\r\n\t}\r\n`;\r\n\r\nexport const END_GAME_SESSION_MUTATION__LEGACY = gql`\r\n\tmutation EndGameSession($input: EndGameSessionInput!) {\r\n\t\tendGameSession(input: $input) {\r\n\t\t\t... on GameSessionDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on GameSessionAlreadyClosedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on GameProviderError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ ANNOUNCEMENT +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const ANNOUNCEMENTS_QUERY = gql`\r\n\tquery Announcements($first: Int, $after: Cursor, $filter: AnnouncementFilterInput) {\r\n\t\tannouncements(first: $first, after: $after, filter: $filter) {\r\n\t\t\tedges {\r\n\t\t\t\tcursor\r\n\t\t\t\tnode {\r\n\t\t\t\t\t... on Announcement {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\ttype\r\n\t\t\t\t\t\ttitle\r\n\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\tmessage\r\n\t\t\t\t\t\tactivationStartDateTime\r\n\t\t\t\t\t\tactivationEndDateTime\r\n\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttotalCount\r\n\t\t\tpageInfo {\r\n\t\t\t\thasNextPage\r\n\t\t\t\tendCursor\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ WITHDRAWAL +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const WITHDRAWAL_RECORDS_QUERY = gql`\r\n\tquery WithdrawalRecords($first: Int, $after: Cursor, $filter: WithdrawalRecordFilterInput) {\r\n\t\tmember {\r\n\t\t\twithdrawalRecords(first: $first, after: $after, filter: $filter) {\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on BankWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tbank\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on GCashWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\trecipientMobileNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on ManualWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on MayaAppWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttotalCount\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_GCASH_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateGCashWithdrawal($input: CreateGCashWithdrawalInput!) {\r\n\t\tcreateGCashWithdrawal(input: $input) {\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_MAYA_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateMayaWithdrawal($input: CreateMayaWithdrawalInput!) {\r\n\t\tcreateMayaWithdrawal(input: $input) {\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_MAYA_APP_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateMayaAppWithdrawal($input: CreateMayaAppWithdrawalInput!) {\r\n\t\tcreateMayaAppWithdrawal(input: $input) {\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_BANK_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateBankWithdrawal($input: CreateBankWithdrawalInput!) {\r\n\t\tcreateBankWithdrawal(input: $input) {\r\n\t\t\t... on MobileNumberNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const REMAINING_DAILY_WITHDRAWALS_COUNT_QUERY = gql`\r\n\tquery RemainingDailyWithdrawalsCount {\r\n\t\tremainingDailyWithdrawalsCount\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ DEPOSIT +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const DEPOSIT_RECORDS_QUERY = gql`\r\n\tquery DepositRecords($after: Cursor, $first: Int, $filter: DepositRecordFilterInput) {\r\n\t\tmember {\r\n\t\t\tdepositRecords(after: $after, first: $first, filter: $filter) {\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on DepositRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tdepositNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttotalCount\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_GCASH_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateGCashDeposit($input: CreateGCashDepositInput!) {\r\n\t\tcreateGCashDeposit(input: $input) {\r\n\t\t\t... on DepositPromoMaximumAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on DepositPromoMinimumAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on HasActiveBonusError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MaximumDepositAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumFirstDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on PromoNotEnabledError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WalletDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_MAYA_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateMayaDeposit($input: CreateMayaDepositInput!) {\r\n\t\tcreateMayaDeposit(input: $input) {\r\n\t\t\t... on DepositPromoMaximumAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on DepositPromoMinimumAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on HasActiveBonusError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MaximumDepositAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumFirstDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on PromoNotEnabledError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WalletDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_MAYA_APP_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateMayaAppDeposit($input: CreateMayaAppDepositInput!) {\r\n\t\tcreateMayaAppDeposit(input: $input) {\r\n\t\t\t... on DepositPromoMaximumAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on DepositPromoMinimumAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on HasActiveBonusError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MaximumDepositAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumFirstDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on PromoNotEnabledError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WalletDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const DEPOSIT_QUERY = gql`\r\n\tquery Deposit($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on GCashDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t\tcheckoutUrl\r\n\t\t\t}\r\n\t\t\t... on MayaDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t\tcheckoutUrl\r\n\t\t\t}\r\n\t\t\t... on MayaAppDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t}\r\n\t\t\t... on BankDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t}\r\n\t\t\t... on ManualDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const DEPOSITS_COUNT_QUERY = gql`\r\n\tquery DepositsCount {\r\n\t\tmember {\r\n\t\t\tdepositsCount\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ BET +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const BET_RECORDS_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery BetRecords($first: Int, $after: Cursor, $filter: BetRecordFilterInput) {\r\n\t\tmember {\r\n\t\t\tbetRecords(first: $first, after: $after, filter: $filter) {\r\n\t\t\t\ttotalCount\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on BetRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\tserialCode\r\n\t\t\t\t\t\t\tgame {\r\n\t\t\t\t\t\t\t\t...GameFragment\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbet\r\n\t\t\t\t\t\t\tpayout\r\n\t\t\t\t\t\t\twinloss\r\n\t\t\t\t\t\t\tjackpotPayout\r\n\t\t\t\t\t\t\tjackpotContribution\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeSettled\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t\tmetadata\r\n\t\t\t\t\t\t\tvendorRoundId\r\n\t\t\t\t\t\t\tbetContent\r\n\t\t\t\t\t\t\tcontestName\r\n\t\t\t\t\t\t\texternalCategory\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const LATEST_BET_RECORDS_QUERY = gql`\r\n\tquery LatestBetRecords {\r\n\t\tlatestBetRecords {\r\n\t\t\tid\r\n\t\t\tmember {\r\n\t\t\t\tid\r\n\t\t\t\tname\r\n\t\t\t}\r\n\t\t\tgame {\r\n\t\t\t\t...GameFragment\r\n\t\t\t}\r\n\t\t\tbet\r\n\t\t\tpayout\r\n\t\t\tvalidBet\r\n\t\t\tdateTimeSettled\r\n\t\t\tdateTimeCreated\r\n\t\t}\r\n\t}\r\n\r\n\t${GAME_FRAGMENT}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ TRANSACTIONS +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const TRANSACTION_RECORDS_QUERY = gql`\r\n\tquery TransactionRecords($first: Int, $after: Cursor, $filter: TransactionRecordFilter) {\r\n\t\tmember {\r\n\t\t\ttransactionRecords(first: $first, after: $after, filter: $filter) {\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on TransactionRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tcontent\r\n\t\t\t\t\t\t\tcurrentBalance\r\n\t\t\t\t\t\t\treferenceNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttotalCount\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ PROMO +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const PROMO_FRAGMENT = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tfragment PromoFragment on Promo {\r\n\t\tid\r\n\t\ttype\r\n\t\tname\r\n\t\tbanner {\r\n\t\t\t...FileFragment\r\n\t\t}\r\n\t\tstatus\r\n\t\tdescription\r\n\t\tmaximumBonusAmount\r\n\t\tminimumBonusAmount\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tdateTimeCreated\r\n\t\tdateTimeLastUpdated\r\n\t}\r\n`;\r\n\r\nexport const PROMOS_QUERY = gql`\r\n\t${PROMO_FRAGMENT}\r\n\r\n\tquery Promos {\r\n\t\tpromos {\r\n\t\t\t...PromoFragment\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const AVAILABLE_PROMOS_QUERY = gql`\r\n\t${PROMO_FRAGMENT}\r\n\r\n\tquery AvailablePromos($filter: PromoFilterInput) {\r\n\t\tavailablePromos(filter: $filter) {\r\n\t\t\t...PromoFragment\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CASHBACK_FRAGMENT = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tfragment CashbackFragment on Cashback {\r\n\t\tid\r\n\t\tname\r\n\t\tbanner {\r\n\t\t\t...FileFragment\r\n\t\t}\r\n\t\tstatus\r\n\t\tdescription\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tdateTimeCreated\r\n\t\tdateTimeLastUpdated\r\n\t}\r\n`;\r\n\r\nexport const CASHBACKS_QUERY = gql`\r\n\t${CASHBACK_FRAGMENT}\r\n\r\n\tquery Cashbacks {\r\n\t\tcashbacks {\r\n\t\t\t...CashbackFragment\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ BONUS +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const BONUS_QUERY = gql`\r\n\t${PROMO_FRAGMENT}\r\n\r\n\tquery Bonus {\r\n\t\tbonus {\r\n\t\t\tid\r\n\t\t\tpromo {\r\n\t\t\t\t...PromoFragment\r\n\t\t\t}\r\n\t\t\tdeposit {\r\n\t\t\t\ttype\r\n\t\t\t\tamount\r\n\t\t\t\tnetAmount\r\n\t\t\t\tfee\r\n\t\t\t\tstatus\r\n\t\t\t\treference\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t}\r\n\t\t\tamount\r\n\t\t\tbalance\r\n\t\t\tturnoverRequirement\r\n\t\t\tcurrentTurnoverRequirementContribution\r\n\t\t\tcurrentTurnoverRequirementContributionPercentage\r\n\t\t\texpiration\r\n\t\t\tdateTimeCreated\r\n\t\t\tdateTimeLastUpdated\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CASHBACK_BONUSES_QUERY = gql`\r\n\t${CASHBACK_FRAGMENT}\r\n\r\n\tquery CashbackBonuses {\r\n\t\tcashbackBonuses {\r\n\t\t\tid\r\n\t\t\tbalance\r\n\t\t\tcashback {\r\n\t\t\t\t...CashbackFragment\r\n\t\t\t}\r\n\t\t\tdateTimeCreated\r\n\t\t\tdateTimeLastUpdated\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CLAIM_CASHBACK_BONUS_MUTATION = gql`\r\n\tmutation ClaimCashbackBonus($input: ClaimCashbackBonusInput!) {\r\n\t\tclaimCashbackBonus(input: $input) {\r\n\t\t\t... on CashbackBonusDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ MEMBER +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const MEMBER_QUERY = gql`\r\n\tquery Member {\r\n\t\tmember {\r\n\t\t\tdateTimeLastActive\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**\r\n * _aka_ `Query.self`\r\n */\r\nexport const MEMBER_ACCOUNT_QUERY = gql`\r\n\tquery MemberAccount {\r\n\t\tmemberAccount: self {\r\n\t\t\t... on MemberAccount {\r\n\t\t\t\tid\r\n\t\t\t\tname\r\n\t\t\t\tstatus\r\n\t\t\t\trealName\r\n\t\t\t\temailAddress\r\n\t\t\t\tmobileNumber\r\n\t\t\t\tbirthDay\r\n\t\t\t\tverified\r\n\t\t\t\tverificationStatus\r\n\t\t\t\tnickName\r\n\t\t\t\tvalidId\r\n\t\t\t\tmobileNumberVerified\r\n\t\t\t\tmobileNumberVerificationRequired\r\n\t\t\t\ttransactionPassword\r\n\t\t\t\tsecretAnswerSubmitted\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const MEMBER_VERIFICATION_QUERY = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tquery MemberVerification {\r\n\t\tmemberAccount: self {\r\n\t\t\t... on MemberAccount {\r\n\t\t\t\tverification {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tstatus\r\n\t\t\t\t\taddress\r\n\t\t\t\t\tsourceOfIncome\r\n\t\t\t\t\tnatureOfWork\r\n\t\t\t\t\tnationality\r\n\t\t\t\t\tplaceOfBirth\r\n\t\t\t\t\tidFrontImage {\r\n\t\t\t\t\t\t...FileFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t\tselfieImage {\r\n\t\t\t\t\t\t...FileFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const REGISTER_MEMBER_ACCOUNT_MUTATION = gql`\r\n\tmutation RegisterMemberAccount(\r\n\t\t$input: RegisterMemberAccountInput!\r\n\t\t$referralCode: String\r\n\t\t$verificationCode: String\r\n\t\t$reCAPTCHAResponse: String\r\n\t) {\r\n\t\tregisterMemberAccount(\r\n\t\t\tinput: $input\r\n\t\t\treferralCode: $referralCode\r\n\t\t\tverificationCode: $verificationCode\r\n\t\t\treCAPTCHAResponse: $reCAPTCHAResponse\r\n\t\t) {\r\n\t\t\t... on AccountNameNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidReCAPTCHAResponseError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidSMSVerificationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumAgeRequirementError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const UPDATE_MEMBER_ACCOUNT_MUTATION = gql`\r\n\tmutation UpdateMemberAccount($input: UpdateMemberAccountInput!) {\r\n\t\tupdateMemberAccount(input: $input) {\r\n\t\t\t... on AccountNameNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on EmailAddressNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NickNameNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on RealNameAlreadySetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on ValidIdAlreadySetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const RESET_PASSWORD_MUTATION = gql`\r\n\tmutation ResetPassword($input: ResetPasswordInput!, $verificationCode: String) {\r\n\t\tresetPassword(input: $input, verificationCode: $verificationCode) {\r\n\t\t\t... on AccountNotFoundError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidVerificationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const DELETE_MEMBER_ACCOUNT_MUTATION = gql`\r\n\tmutation DeleteMemberAccount($input: DeleteMemberAccountInput!) {\r\n\t\tdeleteMemberAccount(input: $input)\r\n\t}\r\n`;\r\n\r\nexport const VERIFY_MOBILE_NUMBER_MUTATION = gql`\r\n\tmutation VerifyMobileNumber($input: VerifyMobileNumberInput!) {\r\n\t\tverifyMobileNumber(input: $input) {\r\n\t\t\t... on InvalidSMSVerificationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberAlreadyVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_MEMBER_VERIFICATION_MUTATION = gql`\r\n\tmutation CreateMemberVerification($input: CreateMemberVerificationInput!) {\r\n\t\tcreateMemberVerification(input: $input) {\r\n\t\t\t... on FileDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on FileNotReadyError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MemberVerificationAlreadyExistsError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const UPDATE_MEMBER_VERIFICATION_MUTATION = gql`\r\n\tmutation UpdateMemberVerification($input: UpdateMemberVerificationInput!) {\r\n\t\tupdateMemberVerification(input: $input) {\r\n\t\t\t... on FileDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on FileNotReadyError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MemberVerificationAlreadyApprovedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MemberVerificationDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const PROFILE_COMPLETION_QUERY = gql`\r\n\tquery ProfileCompletion {\r\n\t\tprofileCompletion {\r\n\t\t\tcompletionPercentage\r\n\t\t\tpersonalInformation\r\n\t\t\taccountVerification\r\n\t\t\tmobileNumberVerification\r\n\t\t\ttransactionPassword\r\n\t\t\taccountPassword\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const SEND_VERIFICATION_CODE_MUTATION = gql`\r\n\tmutation SendVerificationCode($input: SendVerificationCodeInput!) {\r\n\t\tsendVerificationCode(input: $input) {\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotReadyToSendVerficationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ PLATFORM +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const PLATFORM_QUERY = gql`\r\n\tfragment DepositGatewaySettingsCoreData on DepositGatewaySettings {\r\n\t\tminimumAmount\r\n\t\tmaximumAmount\r\n\t\tfixedFee\r\n\t\tpercentageFee\r\n\t\twebEnabled\r\n\t\tmobileWebEnabled\r\n\t\tandroidEnabled\r\n\t\tiosEnabled\r\n\t}\r\n\r\n\tfragment WithdrawalGatewaySettingsCoreData on WithdrawalGatewaySettings {\r\n\t\tminimumAmount\r\n\t\tmaximumAmount\r\n\t\tfixedFee\r\n\t\tpercentageFee\r\n\t\twebEnabled\r\n\t\tmobileWebEnabled\r\n\t\tandroidEnabled\r\n\t\tiosEnabled\r\n\t}\r\n\r\n\tquery Platform {\r\n\t\tminimumFirstDepositAmount\r\n\t\trestrictWithdrawalsToVerifiedMembers\r\n\t\tbankDepositGatewaySettings: depositGatewaySettings(gateway: BANK) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tgcashDepositGatewaySettings: depositGatewaySettings(gateway: GCASH) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaDepositGatewaySettings: depositGatewaySettings(gateway: MAYA) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaAppDepositGatewaySettings: depositGatewaySettings(gateway: MAYA_APP) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tbankWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: BANK) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tgcashWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: GCASH) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: MAYA) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaAppWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: MAYA_APP) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tpointsClubSettings {\r\n\t\t\tmultiplier\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ SESSION +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const MAYA_SESSION_QUERY = gql`\r\n\tquery MayaSession($id: ObjectId!) {\r\n\t\tmayaSession(id: $id) {\r\n\t\t\tid\r\n\t\t\tmember\r\n\t\t\tdateTimeCreated\r\n\t\t}\r\n\t}\r\n`;\r\n","import type { OperationError } from '../utils/types';\r\nimport type {\r\n\tAuthenticateError,\r\n\tClaimCashbackBonusError,\r\n\tCreateDepositError,\r\n\tCreateGameSessionError,\r\n\tCreateMemberVerificationError,\r\n\tCreateSessionError,\r\n\tCreateWithdrawalError,\r\n\tEndGameSessionError__Legacy,\r\n\tPointsToCashConversionError,\r\n\tRefreshSessionError,\r\n\tRegisterMemberAccountError,\r\n\tResetPasswordError,\r\n\tSendVerificationCodeError,\r\n\tUpdateMemberAccountError,\r\n\tUpdateMemberVerificationError,\r\n\tUploadPrivateImageFileError,\r\n\tVerifyMobileNumberError,\r\n} from './types';\r\n\r\ntype E =\r\n\t| ClaimCashbackBonusError\r\n\t| CreateDepositError\r\n\t| UploadPrivateImageFileError\r\n\t| CreateGameSessionError\r\n\t| EndGameSessionError__Legacy\r\n\t| RegisterMemberAccountError\r\n\t| UpdateMemberAccountError\r\n\t| ResetPasswordError\r\n\t| SendVerificationCodeError\r\n\t| VerifyMobileNumberError\r\n\t| CreateMemberVerificationError\r\n\t| UpdateMemberVerificationError\r\n\t| PointsToCashConversionError\r\n\t| CreateWithdrawalError\r\n\t| CreateSessionError\r\n\t| RefreshSessionError\r\n\t| AuthenticateError;\r\n\r\nexport function createOperationError<T extends E>(code: T): OperationError<T> {\r\n\tconst messages: Record<E, string> = {\r\n\t\tAccountNameNotAvailableError: 'Username is no longer available',\r\n\t\tAccountNotFoundError: 'Account does not exist',\r\n\t\tAccountNotVerifiedError: 'Account is not verified',\r\n\t\tCashbackBonusDoesNotExistError: 'Cashback bonus does not exists',\r\n\t\tDepositPromoMaximumAmountExceededError: 'Deposit amount exceeds maximum amount',\r\n\t\tDepositPromoMinimumAmountNotMetError: 'Deposit amount does not meet minimum amount',\r\n\t\tEmailAddressNotAvailableError: 'Email is no longer available',\r\n\t\tFileDoesNotExistError: 'File does not exist',\r\n\t\tFileFormatNotSupportedError: 'File format is not supported',\r\n\t\tFileNameTooLongError: 'File name is too long',\r\n\t\tFileNotReadyError: 'File is not yet ready',\r\n\t\tFileSizeTooBigError: 'File size is too big',\r\n\t\tGameDoesNotExistError: 'Game does not exist',\r\n\t\tHasActiveBonusError: 'Account has active bonus',\r\n\t\tInsufficientPointsError: 'Insufficient points',\r\n\t\tInvalidPlatformError: 'Invalid platform',\r\n\t\tInvalidReCAPTCHAResponseError: 'Invalid reCAPTCHA',\r\n\t\tInvalidSMSVerificationCodeError: 'Invalid SMS verification code',\r\n\t\tInvalidTransactionPasswordError: 'Invalid transaction password',\r\n\t\tInvalidVerificationCodeError: 'Invalid verification code',\r\n\t\tInvalidWithdrawalAmountError: 'Invalid withdrawal amount',\r\n\t\tMaximumDepositAmountExceededError: 'Maximum deposit amount exceeded',\r\n\t\tMemberVerificationAlreadyApprovedError: 'Member verification is already approved',\r\n\t\tMemberVerificationAlreadyExistsError: 'Member verification already exists',\r\n\t\tMemberVerificationDoesNotExistError: 'Member verification does not exist',\r\n\t\tMinimumAgeRequirementError: 'Minimum age requirement not met',\r\n\t\tMinimumDepositAmountNotMetError: 'Minimum deposit amount not met',\r\n\t\tMinimumFirstDepositAmountNotMetError: 'Minimum first deposit amount not met',\r\n\t\tMobileNumberAlreadyVerifiedError: 'Mobile number is already verified',\r\n\t\tMobileNumberNotAvailableError: 'Mobile number is no longer available',\r\n\t\tMobileNumberNotVerifiedError: 'Mobile number is not verified',\r\n\t\tNickNameNotAvailableError: 'Nickname is no longer available',\r\n\t\tNotEnoughBalanceError: 'Insufficient balance',\r\n\t\tNotReadyToSendVerficationCodeError: 'Not ready to send verification code',\r\n\t\tPromoNotEnabledError: 'Promo is not enabled',\r\n\t\tRealNameAlreadySetError: 'Real name is already set',\r\n\t\tValidIdAlreadySetError: 'Valid ID is already set',\r\n\t\tWalletDoesNotExistError: 'Wallet does not exist',\r\n\t\tWithdrawalDailyLimitExceededError: 'Daily withdrawal limit exceeded',\r\n\t\tGameProviderError: 'Game provider error',\r\n\t\tGameSessionAlreadyClosedError: 'Game session is already closed',\r\n\t\tGameSessionDoesNotExistError: 'Game session does not exist',\r\n\r\n\t\tAccountBlacklisted: 'Account is blacklisted',\r\n\t\tAccountNotFound: 'Account not found',\r\n\t\tInvalidToken: 'Invalid token',\r\n\t\tInvalidTokenOrSecretAnswer: 'Invalid token or secret answer',\r\n\t\tSessionExpired: 'Session expired',\r\n\t};\r\n\r\n\treturn {\r\n\t\tname: code,\r\n\t\tmessage: messages[code],\r\n\t};\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tANNOUNCEMENTS_QUERY,\r\n\tCREATE_MEMBER_VERIFICATION_MUTATION,\r\n\tDELETE_MEMBER_ACCOUNT_MUTATION,\r\n\tMEMBER_ACCOUNT_QUERY,\r\n\tMEMBER_VERIFICATION_QUERY,\r\n\tPLATFORM_QUERY,\r\n\tPROFILE_COMPLETION_QUERY,\r\n\tREGISTER_MEMBER_ACCOUNT_MUTATION,\r\n\tRESET_PASSWORD_MUTATION,\r\n\tSEND_VERIFICATION_CODE_MUTATION,\r\n\tUPDATE_MEMBER_ACCOUNT_MUTATION,\r\n\tUPDATE_MEMBER_VERIFICATION_MUTATION,\r\n\tVERIFY_MOBILE_NUMBER_MUTATION,\r\n} from './queries';\r\nimport type {\r\n\tAnnouncement,\r\n\tAnnouncementsQuery,\r\n\tAnnouncementsQueryVariables,\r\n\tCreateMemberVerificationError,\r\n\tCreateMemberVerificationMutation,\r\n\tCreateMemberVerificationMutationVariables,\r\n\tDeleteMemberAccountMutation,\r\n\tDeleteMemberAccountMutationVariables,\r\n\tMemberAccount,\r\n\tMemberAccountQuery,\r\n\tMemberVerification,\r\n\tMemberVerificationQuery,\r\n\tPaginatedQueryResult,\r\n\tPlatform,\r\n\tPlatformQuery,\r\n\tProfileCompletion,\r\n\tProfileCompletionQuery,\r\n\tRegisterMemberAccountError,\r\n\tRegisterMemberAccountMutation,\r\n\tRegisterMemberAccountMutationVariables,\r\n\tResetPasswordError,\r\n\tResetPasswordMutation,\r\n\tResetPasswordMutationVariables,\r\n\tSendVerificationCodeError,\r\n\tSendVerificationCodeMutation,\r\n\tSendVerificationCodeMutationVariables,\r\n\tUpdateMemberAccountError,\r\n\tUpdateMemberAccountMutation,\r\n\tUpdateMemberAccountMutationVariables,\r\n\tUpdateMemberVerificationError,\r\n\tUpdateMemberVerificationMutation,\r\n\tUpdateMemberVerificationMutationVariables,\r\n\tVerifyMobileNumberError,\r\n\tVerifyMobileNumberMutation,\r\n\tVerifyMobileNumberMutationVariables,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class AccountService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\t/** aka `Query.self` */\r\n\tasync memberAccount(): Promise<OperationResult<never, MemberAccount>> {\r\n\t\tconst res = await this.client.request<MemberAccountQuery>(MEMBER_ACCOUNT_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.memberAccount,\r\n\t\t};\r\n\t}\r\n\r\n\tasync registerMemberAccount(\r\n\t\tvariables: RegisterMemberAccountMutationVariables,\r\n\t): Promise<OperationResult<RegisterMemberAccountError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRegisterMemberAccountMutation,\r\n\t\t\tRegisterMemberAccountMutationVariables\r\n\t\t>(REGISTER_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.registerMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.registerMemberAccount.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateMemberAccount(\r\n\t\tvariables: UpdateMemberAccountMutationVariables,\r\n\t): Promise<OperationResult<UpdateMemberAccountError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tUpdateMemberAccountMutation,\r\n\t\t\tUpdateMemberAccountMutationVariables\r\n\t\t>(UPDATE_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.updateMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.updateMemberAccount.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync deleteMemberAccount(\r\n\t\tvariables: DeleteMemberAccountMutationVariables,\r\n\t): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tDeleteMemberAccountMutation,\r\n\t\t\tDeleteMemberAccountMutationVariables\r\n\t\t>(DELETE_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.deleteMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync resetPassword(\r\n\t\tvariables: ResetPasswordMutationVariables,\r\n\t): Promise<OperationResult<ResetPasswordError>> {\r\n\t\tconst res = await this.client.request<ResetPasswordMutation, ResetPasswordMutationVariables>(\r\n\t\t\tRESET_PASSWORD_MUTATION,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.resetPassword) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.resetPassword.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync profileCompletion(): Promise<OperationResult<never, ProfileCompletion>> {\r\n\t\tconst res = await this.client.request<ProfileCompletionQuery>(PROFILE_COMPLETION_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.profileCompletion } : res;\r\n\t}\r\n\r\n\tasync platform(): Promise<OperationResult<never, Platform>> {\r\n\t\treturn await this.client.request<PlatformQuery>(PLATFORM_QUERY);\r\n\t}\r\n\r\n\tasync sendVerificationCode(\r\n\t\tvariables: SendVerificationCodeMutationVariables,\r\n\t): Promise<OperationResult<SendVerificationCodeError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tSendVerificationCodeMutation,\r\n\t\t\tSendVerificationCodeMutationVariables\r\n\t\t>(SEND_VERIFICATION_CODE_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.sendVerificationCode) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.sendVerificationCode.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync verifyMobileNumber(\r\n\t\tvariables: VerifyMobileNumberMutationVariables,\r\n\t): Promise<OperationResult<VerifyMobileNumberError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tVerifyMobileNumberMutation,\r\n\t\t\tVerifyMobileNumberMutationVariables\r\n\t\t>(VERIFY_MOBILE_NUMBER_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.verifyMobileNumber) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.verifyMobileNumber.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMemberVerification(\r\n\t\tvariables: CreateMemberVerificationMutationVariables,\r\n\t): Promise<OperationResult<CreateMemberVerificationError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMemberVerificationMutation,\r\n\t\t\tCreateMemberVerificationMutationVariables\r\n\t\t>(CREATE_MEMBER_VERIFICATION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMemberVerification) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMemberVerification.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateMemberVerification(\r\n\t\tvariables: UpdateMemberVerificationMutationVariables,\r\n\t): Promise<OperationResult<UpdateMemberVerificationError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tUpdateMemberVerificationMutation,\r\n\t\t\tUpdateMemberVerificationMutationVariables\r\n\t\t>(UPDATE_MEMBER_VERIFICATION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.updateMemberVerification) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.updateMemberVerification.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync memberVerification(): Promise<\r\n\t\tOperationResult<never, MemberVerification | null | undefined>\r\n\t> {\r\n\t\tconst res = await this.client.request<MemberVerificationQuery>(MEMBER_VERIFICATION_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.memberAccount.verification,\r\n\t\t};\r\n\t}\r\n\r\n\tasync announcements(\r\n\t\tvariables?: AnnouncementsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Announcement>>> {\r\n\t\tconst res = await this.client.request<AnnouncementsQuery, AnnouncementsQueryVariables>(\r\n\t\t\tANNOUNCEMENTS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.announcements,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { HttpError, OperationError } from './types';\r\n\r\nexport function statusCodeToOperationError(\r\n\tvalue: number,\r\n\tmessage?: string,\r\n): OperationError<HttpError> {\r\n\tconst e = ERROR_MAP[value] ? ERROR_MAP[value] : ERROR_MAP[500];\r\n\r\n\treturn {\r\n\t\tname: e.name,\r\n\t\tmessage: message ?? e.message,\r\n\t};\r\n}\r\n\r\nconst ERROR_MAP: Record<number, OperationError<HttpError>> = {\r\n\t400: { name: 'HttpBadRequest', message: 'Bad Request' },\r\n\t401: { name: 'HttpUnauthorized', message: 'Unauthorized' },\r\n\t403: { name: 'HttpForbidden', message: 'Forbidden' },\r\n\t404: { name: 'HttpNotFound', message: 'Not Found' },\r\n\t408: { name: 'HttpRequestTimeout', message: 'Request Timeout' },\r\n\t429: { name: 'HttpTooManyRequests', message: 'Too Many Requests' },\r\n\t500: { name: 'HttpInternalServerError', message: 'Internal Server Error' },\r\n};\r\n","import { statusCodeToOperationError } from '../utils/status-code-to-operation-error';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tAuthenticateError,\r\n\tAuthenticateInput,\r\n\tAuthenticateMutation,\r\n\tCreateSessionError,\r\n\tCreateSessionInput,\r\n\tCreateSessionMutation,\r\n\tRefreshSessionError,\r\n\tRefreshSessionMutation,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport interface AuthServiceConfig {\r\n\turl: string;\r\n\tplatform: string;\r\n}\r\n\r\nexport class AuthService {\r\n\tprivate url: string;\r\n\tprivate platform: string;\r\n\r\n\tconstructor(config: AuthServiceConfig) {\r\n\t\tthis.url = config.url;\r\n\t\tthis.platform = config.platform;\r\n\t}\r\n\r\n\tasync createSession(\r\n\t\tinput: CreateSessionInput,\r\n\t): Promise<OperationResult<CreateSessionError, CreateSessionMutation>> {\r\n\t\tconst headers = new Headers({\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t\t'Platform-Code': this.platform,\r\n\t\t\tRole: 'MEMBER',\r\n\t\t});\r\n\r\n\t\tif (input.name) {\r\n\t\t\tconst data = `${input.name}:${input.password}`;\r\n\t\t\tconst token = Buffer.from(data).toString('base64');\r\n\r\n\t\t\theaders.set('Authorization', `Basic ${token}`);\r\n\t\t}\r\n\r\n\t\tif (input.mobileNumber) {\r\n\t\t\tconst data = `${input.mobileNumber}:${input.verificationCode}`;\r\n\t\t\tconst token = Buffer.from(data).toString('base64');\r\n\r\n\t\t\theaders.set('Authorization', `MobileNumberOTP ${token}`);\r\n\t\t}\r\n\r\n\t\tif (input.sessionId) {\r\n\t\t\theaders.set('Authorization', `Maya ${input.sessionId}`);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/sessions`, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders,\r\n\t\t\t});\r\n\r\n\t\t\tconst data = await res.json();\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'ACCOUNT_BLACKLISTED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountBlacklisted'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync authenticate(\r\n\t\tinput: AuthenticateInput,\r\n\t): Promise<OperationResult<AuthenticateError, AuthenticateMutation>> {\r\n\t\tconst headers = new Headers({\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t\t'Platform-Code': this.platform,\r\n\t\t\tRole: 'MEMBER',\r\n\t\t});\r\n\r\n\t\tif (input.type === 'SECURITY_QUESTION') {\r\n\t\t\theaders.set('Authorization', `Bearer ${input.token}`);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await fetch(`${this.url}/session/${input.token}/authenticate`, {\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\theaders,\r\n\t\t\t\t\tbody: JSON.stringify({\r\n\t\t\t\t\t\tsecretAnswer: input.secretAnswer,\r\n\t\t\t\t\t}),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst data = await res.json();\r\n\r\n\t\t\t\tif (res.ok) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\tdata,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (res.status === 401 || res.status === 403) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\terror: createOperationError('InvalidTokenOrSecretAnswer'),\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t\t};\r\n\t\t\t} catch {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"Invalid input 'type'\");\r\n\t}\r\n\r\n\tasync refreshSession(\r\n\t\trefreshToken: string,\r\n\t): Promise<OperationResult<RefreshSessionError, RefreshSessionMutation>> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session:refresh`, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${refreshToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tconst data = await res.json();\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'ACCOUNT_BLACKLISTED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountBlacklisted'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (res.status === 403 || res.status === 401) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('InvalidToken'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync destroySession(accessToken: string): Promise<OperationResult> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session`, {\r\n\t\t\t\tmethod: 'DELETE',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${accessToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn res.ok ? { ok: true } : { ok: false, error: statusCodeToOperationError(res.status) };\r\n\t\t} catch {\r\n\t\t\treturn { ok: false, error: statusCodeToOperationError(500) };\r\n\t\t}\r\n\t}\r\n\r\n\tasync verifySession(accessToken: string) {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session`, {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${accessToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn res.ok;\r\n\t\t} catch {\r\n\t\t\t/*\r\n\t\t\t * For network or unknown errors fallback to true\r\n\t\t\t * so users don't get logged out\r\n\t\t\t */\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport { FILE_QUERY, UPLOAD_PRIVATE_IMAGE_FILE_MUTATION } from './queries';\r\nimport type {\r\n\tFile,\r\n\tFileQuery,\r\n\tFileQueryVariables,\r\n\tUploadPrivateImageFileError,\r\n\tUploadPrivateImageFileMutation,\r\n\tUploadPrivateImageFileMutationVariables,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class FileService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync file(\r\n\t\tvariables: FileQueryVariables,\r\n\t): Promise<OperationResult<never, File | null | undefined>> {\r\n\t\tconst res = await this.client.request<FileQuery, FileQueryVariables>(FILE_QUERY, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.node,\r\n\t\t};\r\n\t}\r\n\r\n\tasync uploadPrivateImageFile(\r\n\t\tvariables: UploadPrivateImageFileMutationVariables,\r\n\t): Promise<OperationResult<UploadPrivateImageFileError>> {\r\n\t\tconst res = await this.client.upload<\r\n\t\t\tUploadPrivateImageFileMutation,\r\n\t\t\tUploadPrivateImageFileMutationVariables\r\n\t\t>(UPLOAD_PRIVATE_IMAGE_FILE_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.uploadPrivateImageFile) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.uploadPrivateImageFile.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tBET_RECORDS_QUERY,\r\n\tDEPOSITS_COUNT_QUERY,\r\n\tDEPOSIT_RECORDS_QUERY,\r\n\tMEMBER_QUERY,\r\n\tTRANSACTION_RECORDS_QUERY,\r\n\tWITHDRAWAL_RECORDS_QUERY,\r\n} from './queries';\r\nimport type {\r\n\tBetRecord,\r\n\tBetRecordsQuery,\r\n\tBetRecordsQueryVariables,\r\n\tDepositRecord,\r\n\tDepositRecordsQuery,\r\n\tDepositRecordsQueryVariables,\r\n\tDepositsCountQuery,\r\n\tMember,\r\n\tMemberQuery,\r\n\tPaginatedQueryResult,\r\n\tTransactionRecord,\r\n\tTransactionRecordsQuery,\r\n\tTransactionRecordsQueryVariables,\r\n\tWithdrawalRecord,\r\n\tWithdrawalRecordsQuery,\r\n\tWithdrawalRecordsQueryVariables,\r\n} from './types';\r\n\r\nexport class ReportService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync betRecords(\r\n\t\tvariables?: BetRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<BetRecord>>> {\r\n\t\tconst res = await this.client.request<BetRecordsQuery, BetRecordsQueryVariables>(\r\n\t\t\tBET_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.betRecords } : res;\r\n\t}\r\n\r\n\tasync transactionRecords(\r\n\t\tvariables?: TransactionRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<TransactionRecord>>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tTransactionRecordsQuery,\r\n\t\t\tTransactionRecordsQueryVariables\r\n\t\t>(TRANSACTION_RECORDS_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.transactionRecords } : res;\r\n\t}\r\n\r\n\tasync withdrawalRecords(\r\n\t\tvariables?: WithdrawalRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<WithdrawalRecord>>> {\r\n\t\tconst res = await this.client.request<WithdrawalRecordsQuery, WithdrawalRecordsQueryVariables>(\r\n\t\t\tWITHDRAWAL_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.withdrawalRecords } : res;\r\n\t}\r\n\r\n\tasync depositRecords(\r\n\t\tvariables?: DepositRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<DepositRecord>>> {\r\n\t\tconst res = await this.client.request<DepositRecordsQuery, DepositRecordsQueryVariables>(\r\n\t\t\tDEPOSIT_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.depositRecords } : res;\r\n\t}\r\n\r\n\tasync depositsCount(): Promise<OperationResult<never, number>> {\r\n\t\tconst res = await this.client.request<DepositsCountQuery>(DEPOSITS_COUNT_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.depositsCount } : res;\r\n\t}\r\n\r\n\tasync member(): Promise<OperationResult<never, Member>> {\r\n\t\tconst res = await this.client.request<MemberQuery>(MEMBER_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member } : res;\r\n\t}\r\n}\r\n","interface StaticServiceConfig {\r\n\turl: string;\r\n}\r\n\r\nexport class StaticService {\r\n\tprivate url: string;\r\n\r\n\tconstructor(config: StaticServiceConfig) {\r\n\t\tthis.url = config.url;\r\n\t}\r\n\r\n\tgameThumbnails<\r\n\t\tT extends {\r\n\t\t\tid: string;\r\n\t\t\tprovider: string;\r\n\t\t},\r\n\t>(args: T) {\r\n\t\treturn [\r\n\t\t\t`${this.url}/images/${args.provider.toLowerCase()}/thumbnail-${args.id}.webp`,\r\n\t\t\t`${this.url}/images/${args.provider.toLowerCase()}/thumbnail-${args.provider.toLowerCase()}.webp`,\r\n\t\t];\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tAVAILABLE_PROMOS_QUERY,\r\n\tBONUS_QUERY,\r\n\tCASHBACK_BONUSES_QUERY,\r\n\tCASHBACKS_QUERY,\r\n\tCLAIM_CASHBACK_BONUS_MUTATION,\r\n\tCREATE_BANK_WITHDRAWAL_MUTATION,\r\n\tCREATE_GAME_SESSION_MUTATION,\r\n\tCREATE_GCASH_DEPOSIT_MUTATION,\r\n\tCREATE_GCASH_WITHDRAWAL_MUTATION,\r\n\tCREATE_MAYA_APP_DEPOSIT_MUTATION,\r\n\tCREATE_MAYA_APP_WITHDRAWAL_MUTATION,\r\n\tCREATE_MAYA_DEPOSIT_MUTATION,\r\n\tCREATE_MAYA_WITHDRAWAL_MUTATION,\r\n\tDEPOSIT_QUERY,\r\n\tEND_GAME_SESSION_MUTATION,\r\n\tGAME_SESSION_QUERY,\r\n\tGAMES_BY_NAME_QUERY,\r\n\tGAMES_QUERY,\r\n\tMAYA_SESSION_QUERY,\r\n\tPOINTS_TO_CASH_CONVERSION_MUTATION,\r\n\tPOINTS_WALLET_QUERY,\r\n\tPROMOS_QUERY,\r\n\tREMAINING_DAILY_WITHDRAWALS_COUNT_QUERY,\r\n\tWALLET_QUERY,\r\n} from './queries';\r\nimport type {\r\n\tAvailablePromosQuery,\r\n\tAvailablePromosQueryVariables,\r\n\tBonus,\r\n\tBonusQuery,\r\n\tCashback,\r\n\tCashbackBonus,\r\n\tCashbackBonusesQuery,\r\n\tCashbacksQuery,\r\n\tClaimCashbackBonusError,\r\n\tClaimCashbackBonusMutation,\r\n\tClaimCashbackBonusMutationVariables,\r\n\tCreateBankWithdrawalMutation,\r\n\tCreateBankWithdrawalMutationVariables,\r\n\tCreateDepositError,\r\n\tCreateGameSessionError,\r\n\tCreateGameSessionMutation,\r\n\tCreateGameSessionMutationVariables,\r\n\tCreateGCashDepositMutation,\r\n\tCreateGCashDepositMutationVariables,\r\n\tCreateGCashWithdrawalMutation,\r\n\tCreateGCashWithdrawalMutationVariables,\r\n\tCreateMayaAppDepositMutation,\r\n\tCreateMayaAppDepositMutationVariables,\r\n\tCreateMayaAppWithdrawalMutation,\r\n\tCreateMayaAppWithdrawalMutationVariables,\r\n\tCreateMayaDepositMutation,\r\n\tCreateMayaDepositMutationVariables,\r\n\tCreateMayaWithdrawalMutation,\r\n\tCreateMayaWithdrawalMutationVariables,\r\n\tCreateWithdrawalError,\r\n\tDeposit,\r\n\tDepositQuery,\r\n\tDepositQueryVariables,\r\n\tEndGameSessionMutation,\r\n\tEndGameSessionMutationVariables,\r\n\tGame,\r\n\tGamesByNameQuery,\r\n\tGamesByNameQueryVariables,\r\n\tGameSession,\r\n\tGameSessionQuery,\r\n\tGameSessionQueryVariables,\r\n\tGamesQuery,\r\n\tGamesQueryVariables,\r\n\tMayaSession,\r\n\tMayaSessionQuery,\r\n\tMayaSessionQueryVariables,\r\n\tPaginatedQueryResult,\r\n\tPointsToCashConversionError,\r\n\tPointsToCashConversionMutation,\r\n\tPointsToCashConversionMutationVariables,\r\n\tPointsWallet,\r\n\tPointsWalletQuery,\r\n\tPromo,\r\n\tPromosQuery,\r\n\tRemainingDailyWithdrawalsCountQuery,\r\n\tWallet,\r\n\tWalletQuery,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class WalletService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync promos(): Promise<OperationResult<never, Promo[]>> {\r\n\t\tconst res = await this.client.request<PromosQuery>(PROMOS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.promos } : res;\r\n\t}\r\n\r\n\tasync cashbacks(): Promise<OperationResult<never, Cashback[]>> {\r\n\t\tconst res = await this.client.request<CashbacksQuery>(CASHBACKS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.cashbacks } : res;\r\n\t}\r\n\r\n\tasync availablePromos(\r\n\t\tvariables?: AvailablePromosQueryVariables,\r\n\t): Promise<OperationResult<never, Promo[]>> {\r\n\t\tconst res = await this.client.request<AvailablePromosQuery, AvailablePromosQueryVariables>(\r\n\t\t\tAVAILABLE_PROMOS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.availablePromos } : res;\r\n\t}\r\n\r\n\tasync cashbackBonuses(): Promise<OperationResult<never, CashbackBonus[]>> {\r\n\t\tconst res = await this.client.request<CashbackBonusesQuery>(CASHBACK_BONUSES_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.cashbackBonuses } : res;\r\n\t}\r\n\r\n\tasync claimCashbackBonus(\r\n\t\tvariables: ClaimCashbackBonusMutationVariables,\r\n\t): Promise<OperationResult<ClaimCashbackBonusError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tClaimCashbackBonusMutation,\r\n\t\t\tClaimCashbackBonusMutationVariables\r\n\t\t>(CLAIM_CASHBACK_BONUS_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) {\r\n\t\t\treturn {\r\n\t\t\t\tok: res.ok,\r\n\t\t\t\terror: res.error,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (res.data.claimCashbackBonus) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.claimCashbackBonus.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync bonus(): Promise<OperationResult<never, Bonus | null | undefined>> {\r\n\t\tconst res = await this.client.request<BonusQuery>(BONUS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.bonus } : res;\r\n\t}\r\n\r\n\tasync wallet(): Promise<OperationResult<never, Wallet | null | undefined>> {\r\n\t\tconst res = await this.client.request<WalletQuery>(WALLET_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.wallet } : res;\r\n\t}\r\n\r\n\tasync deposit(\r\n\t\tvariables: DepositQueryVariables,\r\n\t): Promise<OperationResult<never, Deposit | null | undefined>> {\r\n\t\tconst res = await this.client.request<DepositQuery, DepositQueryVariables>(\r\n\t\t\tDEPOSIT_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync createGCashDeposit(\r\n\t\tvariables: CreateGCashDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGCashDepositMutation,\r\n\t\t\tCreateGCashDepositMutationVariables\r\n\t\t>(CREATE_GCASH_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGCashDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGCashDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaDeposit(\r\n\t\tvariables: CreateMayaDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaDepositMutation,\r\n\t\t\tCreateMayaDepositMutationVariables\r\n\t\t>(CREATE_MAYA_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaAppDeposit(\r\n\t\tvariables: CreateMayaAppDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaAppDepositMutation,\r\n\t\t\tCreateMayaAppDepositMutationVariables\r\n\t\t>(CREATE_MAYA_APP_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaAppDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaAppDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createGCashWithdrawal(\r\n\t\tvariables: CreateGCashWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGCashWithdrawalMutation,\r\n\t\t\tCreateGCashWithdrawalMutationVariables\r\n\t\t>(CREATE_GCASH_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGCashWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGCashWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaWithdrawal(\r\n\t\tvariables: CreateMayaWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaWithdrawalMutation,\r\n\t\t\tCreateMayaWithdrawalMutationVariables\r\n\t\t>(CREATE_MAYA_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaAppWithdrawal(\r\n\t\tvariables: CreateMayaAppWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaAppWithdrawalMutation,\r\n\t\t\tCreateMayaAppWithdrawalMutationVariables\r\n\t\t>(CREATE_MAYA_APP_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaAppWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaAppWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createBankWithdrawal(\r\n\t\tvariables: CreateBankWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateBankWithdrawalMutation,\r\n\t\t\tCreateBankWithdrawalMutationVariables\r\n\t\t>(CREATE_BANK_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createBankWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createBankWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync remainingDailyWithdrawalsCount(): Promise<OperationResult<never, number>> {\r\n\t\tconst res = await this.client.request<RemainingDailyWithdrawalsCountQuery>(\r\n\t\t\tREMAINING_DAILY_WITHDRAWALS_COUNT_QUERY,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.remainingDailyWithdrawalsCount } : res;\r\n\t}\r\n\r\n\tasync pointsWallet(): Promise<OperationResult<never, PointsWallet | null | undefined>> {\r\n\t\tconst res = await this.client.request<PointsWalletQuery>(POINTS_WALLET_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.pointsWallet } : res;\r\n\t}\r\n\r\n\tasync pointsToCashConversion(\r\n\t\tvariables: PointsToCashConversionMutationVariables,\r\n\t): Promise<OperationResult<PointsToCashConversionError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tPointsToCashConversionMutation,\r\n\t\t\tPointsToCashConversionMutationVariables\r\n\t\t>(POINTS_TO_CASH_CONVERSION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.pointsToCashConversion) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.pointsToCashConversion.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync mayaSession(\r\n\t\tvariables: MayaSessionQueryVariables,\r\n\t): Promise<OperationResult<never, MayaSession | null | undefined>> {\r\n\t\tconst res = await this.client.request<MayaSessionQuery, MayaSessionQueryVariables>(\r\n\t\t\tMAYA_SESSION_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.mayaSession } : res;\r\n\t}\r\n\r\n\tasync games(\r\n\t\tvariables?: GamesQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Game>>> {\r\n\t\tconst res = await this.client.request<GamesQuery, GamesQueryVariables>(GAMES_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.games } : res;\r\n\t}\r\n\r\n\tasync gamesByName(variables?: GamesByNameQueryVariables) {\r\n\t\tconst res = await this.client.request<GamesByNameQuery, GamesQueryVariables>(\r\n\t\t\tGAMES_BY_NAME_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.gamesByName } : res;\r\n\t}\r\n\r\n\tasync gameSession(\r\n\t\tvariables: GameSessionQueryVariables,\r\n\t): Promise<OperationResult<never, GameSession | null | undefined>> {\r\n\t\tconst res = await this.client.request<GameSessionQuery, GameSessionQueryVariables>(\r\n\t\t\tGAME_SESSION_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync createGameSession(\r\n\t\tvariables: CreateGameSessionMutationVariables,\r\n\t): Promise<OperationResult<CreateGameSessionError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGameSessionMutation,\r\n\t\t\tCreateGameSessionMutationVariables\r\n\t\t>(CREATE_GAME_SESSION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGameSession.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync endGameSession(variables: EndGameSessionMutationVariables): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<EndGameSessionMutation, EndGameSessionMutationVariables>(\r\n\t\t\tEND_GAME_SESSION_MUTATION,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.endGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tCREATE_GAME_SESSION_MUTATION,\r\n\tEND_GAME_SESSION_MUTATION__LEGACY,\r\n\tGAME_SESSION_QUERY,\r\n\tGAMES_BY_NAME_QUERY,\r\n\tGAMES_QUERY,\r\n} from './queries';\r\nimport type {\r\n\tCreateGameSessionError,\r\n\tCreateGameSessionMutation,\r\n\tCreateGameSessionMutationVariables,\r\n\tEndGameSessionError__Legacy,\r\n\tEndGameSessionMutation__Legacy,\r\n\tEndGameSessionMutationVariables,\r\n\tGame,\r\n\tGamesByNameQuery,\r\n\tGamesByNameQueryVariables,\r\n\tGameSession,\r\n\tGameSessionQuery,\r\n\tGameSessionQueryVariables,\r\n\tGamesQuery,\r\n\tGamesQueryVariables,\r\n\tPaginatedQueryResult,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class GameService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync games(\r\n\t\tvariables?: GamesQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Game>>> {\r\n\t\tconst res = await this.client.request<GamesQuery, GamesQueryVariables>(GAMES_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.games } : res;\r\n\t}\r\n\r\n\tasync gamesByName(variables?: GamesByNameQueryVariables) {\r\n\t\tconst res = await this.client.request<GamesByNameQuery, GamesQueryVariables>(\r\n\t\t\tGAMES_BY_NAME_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.gamesByName } : res;\r\n\t}\r\n\r\n\tasync gameSession(\r\n\t\tvariables: GameSessionQueryVariables,\r\n\t): Promise<OperationResult<never, GameSession | null | undefined>> {\r\n\t\tconst res = await this.client.request<GameSessionQuery, GameSessionQueryVariables>(\r\n\t\t\tGAME_SESSION_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync createGameSession(\r\n\t\tvariables: CreateGameSessionMutationVariables,\r\n\t): Promise<OperationResult<CreateGameSessionError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGameSessionMutation,\r\n\t\t\tCreateGameSessionMutationVariables\r\n\t\t>(CREATE_GAME_SESSION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGameSession.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync endGameSession(\r\n\t\tvariables: EndGameSessionMutationVariables,\r\n\t): Promise<OperationResult<EndGameSessionError__Legacy>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tEndGameSessionMutation__Legacy,\r\n\t\t\tEndGameSessionMutationVariables\r\n\t\t>(END_GAME_SESSION_MUTATION__LEGACY, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.endGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.endGameSession.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport { LATEST_BET_RECORDS_QUERY } from './queries';\r\nimport type { LatestBetRecord, LatestBetRecordsQuery } from './types';\r\n\r\nexport class PortalService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync latestBetRecords(): Promise<OperationResult<never, LatestBetRecord[]>> {\r\n\t\tconst res = await this.client.request<LatestBetRecordsQuery>(LATEST_BET_RECORDS_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.latestBetRecords,\r\n\t\t};\r\n\t}\r\n}\r\n","export function clamp(value: number, min: number, max: number) {\r\n\tif (value < min) return min;\r\n\tif (value > max) return max;\r\n\treturn value;\r\n}\r\n","export function isPlainObject(value: unknown): value is Record<string, any> {\r\n\treturn Object.prototype.toString.call(value) === '[object Object]' && Object(value) === value;\r\n}\r\n","import { isPlainObject } from './is-plain-object';\r\n\r\nexport function flatten(value: Record<string, any> | any[]) {\r\n\tconst result: {\r\n\t\tkey: string[];\r\n\t\tvalue: any;\r\n\t}[] = [];\r\n\r\n\tfunction fn(o: Record<string, any>, parentKeys: string[] = []) {\r\n\t\tfor (const k in o) {\r\n\t\t\tconst v = o[k];\r\n\r\n\t\t\tif (isPlainObject(v)) {\r\n\t\t\t\tfn(v, [...parentKeys, k]);\r\n\t\t\t} else if (Array.isArray(v)) {\r\n\t\t\t\tfn(arrayToObject(v), [...parentKeys, k]);\r\n\t\t\t} else {\r\n\t\t\t\tresult.push({\r\n\t\t\t\t\tkey: [...parentKeys, k],\r\n\t\t\t\t\tvalue: v,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfn(value);\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction arrayToObject(array: unknown[]) {\r\n\treturn array.reduce<Record<string, any>>((o, v, i) => {\r\n\t\to[i] = v;\r\n\t\treturn o;\r\n\t}, {});\r\n}\r\n","import { flatten } from './flatten';\r\nimport { statusCodeToOperationError } from './status-code-to-operation-error';\r\nimport type { GenericObject, OperationResult } from './types';\r\n\r\ntype ModifiableKey =\r\n\t| 'mode'\r\n\t| 'cache'\r\n\t| 'signal'\r\n\t| 'headers'\r\n\t| 'integrity'\r\n\t| 'keepalive'\r\n\t| 'credentials';\r\n\r\ntype Modifiable = {\r\n\t[K in ModifiableKey]: Request[K];\r\n};\r\n\r\nexport interface ModifiedRequest extends Readonly<Omit<Request, ModifiableKey>>, Modifiable {}\r\n\r\nexport type GraphQLClientMiddleware = (\r\n\trequest: ModifiedRequest,\r\n) => ModifiedRequest | Promise<ModifiedRequest>;\r\n\r\nexport interface GraphQLClientFetchOptions extends Omit<RequestInit, 'body' | 'method'> {}\r\n\r\nexport interface GraphQLClientConfig {\r\n\tmiddlewares?: GraphQLClientMiddleware[];\r\n\tfetchOptions?: GraphQLClientFetchOptions;\r\n}\r\n\r\n/* ref: https://www.apollographql.com/docs/apollo-server/data/errors/#graphql_parse_failed */\r\ntype GraphQLErrorExtensionCode =\r\n\t| 'FORBIDDEN'\r\n\t| 'UNAUTHORIZED'\r\n\t| 'BAD_REQUEST'\r\n\t| 'BAD_USER_INPUT'\r\n\t| 'INTERNAL_SERVER_ERROR'\r\n\t| 'ACCESS_TOKEN_EXPIRED';\r\n\r\ninterface GraphQLErrorExtensions {\r\n\tcode: GraphQLErrorExtensionCode;\r\n\tstacktrace: string[];\r\n}\r\n\r\ninterface GraphQLErrorLocation {\r\n\tline: number;\r\n\tcolumn: number;\r\n}\r\n\r\ninterface GraphQLError {\r\n\tpath: string[];\r\n\tmessage?: string;\r\n\textensions?: GraphQLErrorExtensions;\r\n\tlocations: GraphQLErrorLocation[];\r\n}\r\n\r\nexport class GraphQLClient {\r\n\tprivate url: string;\r\n\tprivate options: GraphQLClientFetchOptions;\r\n\tprivate middlewares: GraphQLClientMiddleware[];\r\n\r\n\tconstructor(url: string, config?: GraphQLClientConfig) {\r\n\t\tconst headers = new Headers(config?.fetchOptions?.headers);\r\n\r\n\t\tthis.url = url;\r\n\t\tthis.options = { ...config?.fetchOptions, headers };\r\n\t\tthis.middlewares = config?.middlewares ?? [];\r\n\t}\r\n\r\n\tasync request<Data, Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables?: Variables,\r\n\t) {\r\n\t\tconst body = JSON.stringify({ query, variables });\r\n\t\tconst headers = new Headers(this.options.headers);\r\n\r\n\t\theaders.set('Content-Type', 'application/json');\r\n\t\theaders.set('Accept', 'application/json');\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(this.url, {\r\n\t\t\t\t...this.options,\r\n\t\t\t\tbody,\r\n\t\t\t\theaders,\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn await this.exec<Data>(req);\r\n\t}\r\n\r\n\t/** Single file upload */\r\n\tasync upload<Data, Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables: Variables,\r\n\t) {\r\n\t\tconst body = this.createUploadBody(query, variables);\r\n\t\tconst headers = new Headers(this.options.headers);\r\n\r\n\t\theaders.delete('Content-Type');\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(this.url, {\r\n\t\t\t\t...this.options,\r\n\t\t\t\tbody,\r\n\t\t\t\theaders,\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn await this.exec<Data>(req);\r\n\t}\r\n\r\n\tprivate async exec<T>(request: Request): Promise<OperationResult<never, T>> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(request);\r\n\r\n\t\t\tif (!res.ok) {\r\n\t\t\t\treturn { ok: false, error: statusCodeToOperationError(res.status) };\r\n\t\t\t}\r\n\r\n\t\t\tconst json = await res.json();\r\n\t\t\tconst data = json.data;\r\n\t\t\tconst error = json.errors?.at(0) as GraphQLError | undefined;\r\n\r\n\t\t\tif (error) {\r\n\t\t\t\tif (\r\n\t\t\t\t\terror.extensions?.code === 'FORBIDDEN' ||\r\n\t\t\t\t\terror.extensions?.code === 'ACCESS_TOKEN_EXPIRED'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(403, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (error.extensions?.code === 'UNAUTHORIZED') {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(401, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\terror.extensions?.code === 'BAD_USER_INPUT' ||\r\n\t\t\t\t\terror.extensions?.code === 'BAD_REQUEST'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(400, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Fallback for unknown error codes */\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(500, error.message),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async runMiddlewares(req: ModifiedRequest): Promise<ModifiedRequest> {\r\n\t\tlet result = req.clone();\r\n\r\n\t\tfor (const middleware of this.middlewares) {\r\n\t\t\tresult = await middleware(result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate createUploadBody<Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables: Variables,\r\n\t) {\r\n\t\tconst files = flatten(variables).filter(\r\n\t\t\t(o) => o.value instanceof File || o.value instanceof Blob,\r\n\t\t);\r\n\r\n\t\tconst body = new FormData();\r\n\r\n\t\tbody.append(\r\n\t\t\t'operations',\r\n\t\t\tJSON.stringify({\r\n\t\t\t\tquery,\r\n\t\t\t\tvariables,\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tconst map: GenericObject = {};\r\n\r\n\t\tfiles.forEach((o, i) => {\r\n\t\t\tmap[i.toString()] = [`variables.${o.key.join('.')}`];\r\n\t\t});\r\n\r\n\t\tbody.append('map', JSON.stringify(map));\r\n\r\n\t\tfiles.forEach((o, i) => {\r\n\t\t\tbody.append(i.toString(), o.value);\r\n\t\t});\r\n\r\n\t\treturn body;\r\n\t}\r\n}\r\n","export async function sha256(input: string) {\r\n\tconst msgUint8 = new TextEncoder().encode(input);\r\n\tconst hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);\r\n\tconst hashArray = Array.from(new Uint8Array(hashBuffer));\r\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\r\n\treturn hashHex;\r\n}\r\n","interface LoggerConfig {\r\n\t/**\r\n\t * @default true\r\n\t */\r\n\tenabled?: boolean;\r\n}\r\n\r\nexport class Logger {\r\n\tprivate enabled: boolean;\r\n\r\n\tconstructor(config?: LoggerConfig) {\r\n\t\tthis.enabled = config?.enabled ?? true;\r\n\t}\r\n\r\n\tinfo(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[34m[info] ${message}`);\r\n\t}\r\n\r\n\twarn(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[33m[warn] ${message}`);\r\n\t}\r\n\r\n\terror(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[31m[error] ${message}`);\r\n\t}\r\n\r\n\tsuccess(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[32m[success] ${message}`);\r\n\t}\r\n}\r\n","export function cloneDate(date: Date) {\r\n\treturn new Date(date.getTime());\r\n}\r\n","import { cloneDate } from './clone-date.js';\r\n\r\nexport function addDays(date: Date, days: number) {\r\n\tconst result = cloneDate(date);\r\n\tresult.setDate(result.getDate() + days);\r\n\treturn result;\r\n}\r\n","import { cloneDate } from './clone-date';\r\n\r\nexport function addMinutes(date: Date, minutes: number): Date {\r\n\tconst result = cloneDate(date);\r\n\tresult.setMinutes(result.getMinutes() + minutes);\r\n\treturn result;\r\n}\r\n","/**\r\n * is `date1` after `date2`?\r\n */\r\nexport function isAfter(date1: Date, date2: Date) {\r\n\treturn date1.getTime() > date2.getTime();\r\n}\r\n","export function sleep(ms: number) {\r\n\treturn new Promise<void>((resolve) => {\r\n\t\tsetTimeout(resolve, ms);\r\n\t});\r\n}\r\n","import { sleep } from './sleep';\r\n\r\ninterface Config<T> {\r\n\tuntil(response: T): boolean;\r\n\t/**\r\n\t * @default 1000\r\n\t */\r\n\tinterval?: number;\r\n\t/**\r\n\t * @default 3\r\n\t */\r\n\tmaxAttempt?: number;\r\n}\r\n\r\n/**\r\n * @example\r\n * ```ts\r\n * const poll = pollable(\r\n * fn,\r\n * {\r\n * until: (r) => r.ok,\r\n * interval: 1000,\r\n * maxAttempt: 5,\r\n * }\r\n * );\r\n *\r\n * poll()\r\n * ```\r\n */\r\nexport function pollable<Return, Args = never>(\r\n\tfunc: (...args: Args[]) => Promise<Return>,\r\n\tconfig: Config<Return>,\r\n) {\r\n\tconst {\r\n\t\tuntil,\r\n\t\tinterval = 1000,\r\n\t\tmaxAttempt = 3,\r\n\t\t/**/\r\n\t} = config;\r\n\r\n\tasync function repeater(args: Args[], max?: number) {\r\n\t\tconst m = max ?? maxAttempt;\r\n\t\tconst r = await func(...args);\r\n\t\tconst k = until(r);\r\n\r\n\t\tif (k) return r;\r\n\r\n\t\tif (m > 1) {\r\n\t\t\tawait sleep(interval * ((maxAttempt - m) / 2));\r\n\t\t\treturn repeater(args, m - 1);\r\n\t\t}\r\n\r\n\t\treturn r;\r\n\t}\r\n\r\n\treturn async (...args: Args[]): Promise<Return> => {\r\n\t\treturn await repeater(args);\r\n\t};\r\n}\r\n","import { cloneDate } from './clone-date';\r\n\r\nexport function subMinutes(date: Date, minutes: number) {\r\n\tconst result = cloneDate(date);\r\n\tresult.setMinutes(result.getMinutes() - minutes);\r\n\treturn result;\r\n}\r\n","import { AuthService, type AuthServiceConfig, WalletService } from '../services';\r\nimport { addDays } from '../utils/add-days';\r\nimport { addMinutes } from '../utils/add-minutes';\r\nimport { GraphQLClient } from '../utils/graphql-client';\r\nimport { isAfter } from '../utils/is-after';\r\nimport { pollable } from '../utils/pollable';\r\nimport { sleep } from '../utils/sleep';\r\nimport { subMinutes } from '../utils/sub-minutes';\r\nimport type { OperationResult } from '../utils/types';\r\nimport { Logger } from './logger';\r\nimport type {\r\n\tAuthenticateError,\r\n\tAuthenticateInput,\r\n\tAuthenticator,\r\n\tRefreshSessionError,\r\n\tSession,\r\n\tSignInError,\r\n\tSignInInput,\r\n} from './types';\r\n\r\ninterface Data {\r\n\tsession: Session;\r\n\taccessToken: string;\r\n\taccessTokenExpiresAt: number;\r\n\trefreshToken: string;\r\n\trefreshTokenExpiresAt: number;\r\n}\r\n\r\ninterface SessionManagerConfig extends Omit<AuthServiceConfig, 'url'> {\r\n\tauthUrl: string;\r\n\twalletUrl: string;\r\n\tplatform: string;\r\n\tlog?: boolean;\r\n}\r\n\r\nexport class SessionManager {\r\n\tprivate logger;\r\n\tprivate storageKey = 'session';\r\n\tprivate authService: AuthService;\r\n\tprivate walletService: WalletService;\r\n\tprivate _refreshing = false;\r\n\r\n\tconstructor(config: SessionManagerConfig) {\r\n\t\tthis.authService = new AuthService({\r\n\t\t\turl: config.authUrl,\r\n\t\t\tplatform: config.platform,\r\n\t\t});\r\n\r\n\t\tthis.walletService = new WalletService(\r\n\t\t\tnew GraphQLClient(config.walletUrl, {\r\n\t\t\t\tmiddlewares: [\r\n\t\t\t\t\t(req) => {\r\n\t\t\t\t\t\treq.headers.set('Platform', config.platform);\r\n\t\t\t\t\t\treq.headers.set('Role', 'MEMBER');\r\n\t\t\t\t\t\treturn req;\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: config.log ?? false,\r\n\t\t});\r\n\t}\r\n\r\n\tget refreshing() {\r\n\t\treturn this._refreshing;\r\n\t}\r\n\r\n\tset refreshing(value: boolean) {\r\n\t\tthis._refreshing = value;\r\n\t}\r\n\r\n\tasync create(\r\n\t\tinput: SignInInput,\r\n\t): Promise<OperationResult<SignInError, { authenticator: Authenticator } | null>> {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Server sign in is not supported.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Maya Sign In\r\n\t\t */\r\n\r\n\t\tif (input.type === 'MAYA') {\r\n\t\t\tconst f0 = () => this.walletService.mayaSession({ id: input.sessionId });\r\n\t\t\tconst r0 = await pollable(f0, {\r\n\t\t\t\tuntil: (r) => r.ok && r.data?.member != null,\r\n\t\t\t\tinterval: 1000,\r\n\t\t\t\tmaxAttempt: 5,\r\n\t\t\t})();\r\n\r\n\t\t\tif (!r0.ok) return r0;\r\n\r\n\t\t\tconst f1 = () => this.authService.createSession(input);\r\n\t\t\tconst r1 = await pollable(f1, {\r\n\t\t\t\tuntil: (r) => r.ok,\r\n\t\t\t\tinterval: 1000,\r\n\t\t\t\tmaxAttempt: 5,\r\n\t\t\t})();\r\n\r\n\t\t\tif (!r1.ok) return r1;\r\n\r\n\t\t\tconst now = new Date();\r\n\r\n\t\t\twindow.localStorage.setItem(\r\n\t\t\t\tthis.storageKey,\r\n\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t...r1.data,\r\n\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t}),\r\n\t\t\t);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: null,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Mobile Number Sign In\r\n\t\t */\r\n\r\n\t\tif (input.type === 'MOBILE_NUMBER') {\r\n\t\t\tconst res = await this.authService.createSession(input);\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\tconst now = new Date();\r\n\r\n\t\t\t\twindow.localStorage.setItem(\r\n\t\t\t\t\tthis.storageKey,\r\n\t\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t\t...res.data,\r\n\t\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata: null,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Name and Password Sign In\r\n\t\t */\r\n\r\n\t\tconst res = await this.authService.createSession(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\t/*\r\n\t\t * 2FA enabled\r\n\t\t */\r\n\t\tif (res.data.authenticator) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tauthenticator: res.data.authenticator,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst now = new Date();\r\n\r\n\t\twindow.localStorage.setItem(\r\n\t\t\tthis.storageKey,\r\n\t\t\tJSON.stringify({\r\n\t\t\t\t...res.data,\r\n\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createFromAuthenticator(\r\n\t\tinput: AuthenticateInput,\r\n\t): Promise<OperationResult<AuthenticateError>> {\r\n\t\tconst res = await this.authService.authenticate(input);\r\n\r\n\t\tif (res.ok) {\r\n\t\t\tconst now = new Date();\r\n\r\n\t\t\tif (this.isServer) {\r\n\t\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\t} else {\r\n\t\t\t\twindow.localStorage.setItem(\r\n\t\t\t\t\tthis.storageKey,\r\n\t\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t\t...res.data,\r\n\t\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn { ok: true };\r\n\t\t} else {\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tasync get(): Promise<OperationResult<RefreshSessionError, Data | null>> {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: null,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (this.refreshing) {\r\n\t\t\tawait sleep(1000);\r\n\t\t\treturn await this.get();\r\n\t\t}\r\n\r\n\t\tconst val = window.localStorage.getItem(this.storageKey);\r\n\r\n\t\tif (!val) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: null,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tlet obj: {\r\n\t\t\t\tsession: Session;\r\n\t\t\t\taccessToken: string;\r\n\t\t\t\taccessTokenExpiresAt: number;\r\n\t\t\t\trefreshToken: string;\r\n\t\t\t\trefreshTokenExpiresAt: number;\r\n\t\t\t} = JSON.parse(val);\r\n\r\n\t\t\tlet now = new Date();\r\n\r\n\t\t\tconst accessTokenExpiresAt = new Date(obj.accessTokenExpiresAt);\r\n\t\t\tconst refreshTokenExpiresAt = new Date(obj.refreshTokenExpiresAt);\r\n\r\n\t\t\t/* is refresh token expired? */\r\n\t\t\tif (isAfter(now, refreshTokenExpiresAt)) {\r\n\t\t\t\tthis.logger.warn('Session expired. Logging out..');\r\n\r\n\t\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: {\r\n\t\t\t\t\t\tname: 'SessionExpired',\r\n\t\t\t\t\t\tmessage: 'Session expired.',\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\t/* is access token expired? */\r\n\t\t\tif (isAfter(now, accessTokenExpiresAt)) {\r\n\t\t\t\tthis.logger.info('Refreshing session...');\r\n\r\n\t\t\t\tthis.refreshing = true;\r\n\r\n\t\t\t\tconst res = await this.authService.refreshSession(obj.refreshToken);\r\n\r\n\t\t\t\tthis.refreshing = false;\r\n\r\n\t\t\t\tif (!res.ok) {\r\n\t\t\t\t\tthis.logger.error(`Failed to refresh session: ${res.error.message}`);\r\n\r\n\t\t\t\t\t/* return previous session for all errors except \"InvalidToken\" and \"AccountBlacklisted\" */\r\n\t\t\t\t\tif (res.error.name === 'InvalidToken' || res.error.name === 'AccountBlacklisted') {\r\n\t\t\t\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\t\terror: res.error,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.logger.warn('Old session returned.');\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\t\tdata: obj,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.logger.success('Session refreshed!');\r\n\r\n\t\t\t\tnow = new Date();\r\n\t\t\t\tobj = {\r\n\t\t\t\t\t...obj,\r\n\t\t\t\t\t...res.data,\r\n\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.localStorage.setItem(this.storageKey, JSON.stringify(obj));\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: obj,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\t/* Did they modify session in localStorage? */\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync destroy() {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst res = await this.get();\r\n\r\n\t\tif (res.data?.accessToken) {\r\n\t\t\tawait this.authService.destroySession(res.data.accessToken);\r\n\t\t}\r\n\r\n\t\twindow.localStorage.removeItem(this.storageKey);\r\n\t}\r\n\r\n\tasync verify(): Promise<boolean> {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst s = await this.get();\r\n\r\n\t\tif (s.error?.name === 'InvalidToken') return false;\r\n\t\tif (s.error?.name === 'SessionExpired') return false;\r\n\t\tif (s.error?.name === 'AccountBlacklisted') return false;\r\n\r\n\t\t/* Not logged in or session is not expired */\r\n\t\tif (!s.data) return true;\r\n\r\n\t\tconst v = await this.authService.verifySession(s.data.accessToken);\r\n\r\n\t\t/* log out if session is no longer valid */\r\n\t\tif (!v) {\r\n\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\t\t}\r\n\r\n\t\treturn v;\r\n\t}\r\n\r\n\tprivate get isServer() {\r\n\t\treturn typeof window === 'undefined';\r\n\t}\r\n}\r\n","export function parseDecimal(value: unknown): number | undefined;\r\nexport function parseDecimal(value: unknown, fallback: number): number;\r\nexport function parseDecimal(value: unknown, fallback?: number) {\r\n\tif (typeof value === 'number') {\r\n\t\tif (!Number.isNaN(value)) return value;\r\n\t}\r\n\r\n\tif (typeof value === 'string') {\r\n\t\tconst parsed = Number.parseFloat(value);\r\n\r\n\t\tif (!Number.isNaN(parsed)) {\r\n\t\t\treturn parsed;\r\n\t\t}\r\n\t}\r\n\r\n\treturn fallback;\r\n}\r\n","import type * as Internal from '../services';\r\nimport { StaticService } from '../services';\r\nimport { parseDecimal } from '../utils/parse-decimal';\r\nimport type * as External from './types';\r\n\r\ninterface TransformerConfig {\r\n\tenvironment?: 'development' | 'production';\r\n}\r\n\r\nexport class Transformer {\r\n\tprivate staticService: StaticService;\r\n\r\n\tconstructor(config?: TransformerConfig) {\r\n\t\tconst debug = config?.environment === 'development';\r\n\r\n\t\tthis.staticService = new StaticService({\r\n\t\t\turl: debug\r\n\t\t\t\t? import.meta.env.VITE_STATIC_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_STATIC_PRODUCTION_URL,\r\n\t\t});\r\n\t}\r\n\r\n\tget transform() {\r\n\t\treturn {\r\n\t\t\tplatform: this.platform.bind(this),\r\n\t\t\taccount: this.account.bind(this),\r\n\t\t\twallet: this.wallet.bind(this),\r\n\t\t\tverificationDetails: this.verificationDetails.bind(this),\r\n\t\t\tprofileCompletion: this.profileCompletion.bind(this),\r\n\t\t\tannouncement: this.announcement.bind(this),\r\n\t\t\twithdrawalRecord: this.withdrawalRecord.bind(this),\r\n\t\t\tdeposit: this.deposit.bind(this),\r\n\t\t\tdepositRecord: this.depositRecord.bind(this),\r\n\t\t\tbetRecord: this.betRecord.bind(this),\r\n\t\t\tlatestBetRecord: this.latestBetRecord.bind(this),\r\n\t\t\ttransactionRecord: this.transactionRecord.bind(this),\r\n\t\t\tgame: this.game.bind(this),\r\n\t\t\tgameSession: this.gameSession.bind(this),\r\n\t\t\tpromo: this.promo.bind(this),\r\n\t\t\tcashback: this.cashback.bind(this),\r\n\t\t\tbonus: this.bonus.bind(this),\r\n\t\t\tcashbackBonus: this.cashbackBonus.bind(this),\r\n\t\t\tfile: this.file.bind(this),\r\n\t\t\tpointsWallet: this.pointsWallet.bind(this),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate platform(data: Internal.Platform): External.Platform {\r\n\t\treturn {\r\n\t\t\tpaymentSettings: {\r\n\t\t\t\tminimumFirstDepositAmount: parseDecimal(data.minimumFirstDepositAmount),\r\n\t\t\t\trestrictWithdrawalsToVerifiedMembers: data.restrictWithdrawalsToVerifiedMembers,\r\n\t\t\t\tdepositGateway: {\r\n\t\t\t\t\tbank: {\r\n\t\t\t\t\t\tandroidEnabled: data.bankDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.bankDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.bankDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.bankDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.bankDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.bankDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgcash: {\r\n\t\t\t\t\t\tandroidEnabled: data.gcashDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.gcashDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.gcashDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.gcashDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.gcashDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.gcashDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaya: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmayaApp: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaAppDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaAppDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaAppDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaAppDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\twithdrawalGateway: {\r\n\t\t\t\t\tbank: {\r\n\t\t\t\t\t\tandroidEnabled: data.bankWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.bankWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.bankWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.bankWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgcash: {\r\n\t\t\t\t\t\tandroidEnabled: data.gcashWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.gcashWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.gcashWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.gcashWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.gcashWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\t\tdata.gcashWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t\t1000000,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaya: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmayaApp: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaAppWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaAppWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaAppWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaAppWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\t\tdata.mayaAppWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t\t1000000,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tpointsClubSettings: {\r\n\t\t\t\tmultiplier: parseDecimal(data.pointsClubSettings?.multiplier, 0),\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tprivate account(data: Internal.MemberAccount & Internal.Member): External.Account {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tname: data.name,\r\n\t\t\tstatus: data.status,\r\n\t\t\tverified: data.verified,\r\n\t\t\tnickName: data.nickName ?? undefined,\r\n\t\t\trealName: data.realName ?? undefined,\r\n\t\t\tdateOfBirth: data.birthDay ? new Date(data.birthDay) : undefined,\r\n\t\t\temailAddress: data.emailAddress ?? undefined,\r\n\t\t\tmobileNumber: data.mobileNumber ?? undefined,\r\n\t\t\tmobileNumberVerified: data.mobileNumberVerified ?? false,\r\n\t\t\tmobileNumberVerificationRequired: data.mobileNumberVerificationRequired ?? false,\r\n\t\t\tvalidId: data.validId ? data.validId : undefined,\r\n\t\t\tverificationStatus: data.verificationStatus,\r\n\t\t\ttransactionPassword: data.transactionPassword,\r\n\t\t\tsecretAnswerSubmitted: data.secretAnswerSubmitted ?? false,\r\n\t\t\tdateTimeLastActive: data.dateTimeLastActive ? new Date(data.dateTimeLastActive) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate wallet(data: Internal.Wallet): External.Wallet {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate verificationDetails(data: Internal.MemberVerification): External.VerificationDetails {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tselfieImage: this.file(data.selfieImage) as External.File,\r\n\t\t\tidFrontImage: this.file(data.idFrontImage) as External.File,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate profileCompletion(data: Internal.ProfileCompletion): External.ProfileCompletion {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tcompletionPercentage: parseDecimal(data, 0),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate announcement(data: Internal.Announcement): External.Announcement {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate withdrawalRecord(data: Internal.WithdrawalRecord): External.WithdrawalRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tnetAmount: parseDecimal(data.netAmount, 0),\r\n\t\t\tfee: parseDecimal(data.fee, 0),\r\n\t\t\treference: data.reference ?? undefined,\r\n\t\t\tbank: data.bank ?? undefined,\r\n\t\t\trecipientMobileNumber: data.recipientMobileNumber ?? undefined,\r\n\t\t\tdateTimeConfirmed: data.dateTimeConfirmed ? new Date(data.dateTimeConfirmed) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t} as External.WithdrawalRecord;\r\n\t}\r\n\r\n\tprivate deposit(data: Internal.Deposit): External.Deposit {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\tstatus: data.status,\r\n\t\t\tcheckoutUrl: data.checkoutUrl ?? undefined,\r\n\t\t} as External.Deposit;\r\n\t}\r\n\r\n\tprivate depositRecord(data: Internal.DepositRecord): External.DepositRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tfee: parseDecimal(data.fee, 0),\r\n\t\t\tnetAmount: parseDecimal(data.netAmount, 0),\r\n\t\t\treference: data.reference ?? undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate betRecord(data: Internal.BetRecord): External.BetRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbet: parseDecimal(data.bet, 0),\r\n\t\t\tpayout: parseDecimal(data.payout, 0),\r\n\t\t\tjackpotContribution: parseDecimal(data.jackpotContribution, 0),\r\n\t\t\tjackpotPayout: parseDecimal(data.jackpotPayout, 0),\r\n\t\t\twinloss: parseDecimal(data.winloss),\r\n\t\t\tvalidBet: parseDecimal(data.validBet, 0),\r\n\t\t\tvendorRoundId: data.vendorRoundId ?? undefined,\r\n\t\t\tgame: this.game(data.game),\r\n\t\t\tdateTimeSettled: data.dateTimeSettled ? new Date(data.dateTimeSettled) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t\tbetContent: data.betContent ?? undefined,\r\n\t\t\tcontestName: data.contestName ?? undefined,\r\n\t\t\texternalCategory: data.externalCategory ?? undefined,\r\n\t\t\tmetadata: {\r\n\t\t\t\todds: data.metadata?.odds ?? undefined,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tprivate latestBetRecord(data: Internal.LatestBetRecord): External.LatestBetRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tgame: this.game(data.game),\r\n\t\t\tbet: parseDecimal(data.bet, 0),\r\n\t\t\tpayout: parseDecimal(data.payout, 0),\r\n\t\t\tvalidBet: parseDecimal(data.validBet, 0),\r\n\t\t\tdateTimeSettled: new Date(data.dateTimeSettled),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate transactionRecord(data: Internal.TransactionRecord): External.TransactionRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tcontent: data.content ?? undefined,\r\n\t\t\tcurrentBalance: parseDecimal(data.currentBalance, 0),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate game(data: Internal.Game): External.Game {\r\n\t\tconst images = this.staticService.gameThumbnails(data);\r\n\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\timages,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate gameSession(data: Internal.GameSession): External.GameSession {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t} as External.GameSession;\r\n\t}\r\n\r\n\tprivate promo(data: Internal.Promo): External.Promo {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbanner: this.file(data.banner),\r\n\t\t\tmaximumBonusAmount: parseDecimal(data.maximumBonusAmount),\r\n\t\t\tminimumBonusAmount: parseDecimal(data.minimumBonusAmount),\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t} as External.Promo;\r\n\t}\r\n\r\n\tprivate cashback(data: Internal.Cashback): External.Cashback {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbanner: this.file(data.banner),\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t} as External.Cashback;\r\n\t}\r\n\r\n\tprivate bonus(data: Internal.Bonus): External.Bonus {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tpromo: this.promo(data.promo),\r\n\t\t\t/* deposit here does not have an id and depositNumber field */\r\n\t\t\tdeposit: data.deposit\r\n\t\t\t\t? {\r\n\t\t\t\t\t\t...data.deposit,\r\n\t\t\t\t\t\tfee: parseDecimal(data.deposit.fee, 0),\r\n\t\t\t\t\t\tamount: parseDecimal(data.deposit.amount, 0),\r\n\t\t\t\t\t\tnetAmount: parseDecimal(data.deposit.netAmount, 0),\r\n\t\t\t\t\t\treference: data.deposit.reference ?? undefined,\r\n\t\t\t\t\t\tdateTimeCreated: new Date(data.deposit.dateTimeCreated),\r\n\t\t\t\t\t\tdateTimeLastUpdated: new Date(data.deposit.dateTimeLastUpdated),\r\n\t\t\t\t\t}\r\n\t\t\t\t: undefined,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\texpiration: new Date(data.expiration),\r\n\t\t\tturnoverRequirement: parseDecimal(data.turnoverRequirement, 0),\r\n\t\t\tcurrentTurnoverRequirementContribution: parseDecimal(\r\n\t\t\t\tdata.currentTurnoverRequirementContribution,\r\n\t\t\t\t0,\r\n\t\t\t),\r\n\t\t\tcurrentTurnoverRequirementContributionPercentage: parseDecimal(\r\n\t\t\t\tdata.currentTurnoverRequirementContributionPercentage,\r\n\t\t\t\t0,\r\n\t\t\t),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate cashbackBonus(data: Internal.CashbackBonus): External.CashbackBonus {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tcashback: this.cashback(data.cashback),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate file(data: Internal.File): External.File {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\turl: data.url ?? undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t} as External.File;\r\n\t}\r\n\r\n\tprivate pointsWallet(data: Internal.PointsWallet): External.PointsWallet {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tpoints: parseDecimal(data.points, 0),\r\n\t\t\taccount: data.account,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n}\r\n","import { AccountService, FileService, ReportService, WalletService } from '../services';\r\nimport { GameService } from '../services/game.service';\r\nimport { PortalService } from '../services/portal.service';\r\nimport { clamp } from '../utils/clamp';\r\nimport {\r\n\tGraphQLClient,\r\n\ttype GraphQLClientConfig,\r\n\ttype GraphQLClientMiddleware,\r\n} from '../utils/graphql-client';\r\nimport { sha256 } from '../utils/sha256';\r\nimport { Logger } from './logger';\r\nimport { ObjectId } from './object-id';\r\nimport { ObjectType } from './object-type';\r\nimport { SessionManager } from './session-manager';\r\nimport { Transformer } from './transformer';\r\nimport type {\r\n\tAccountReturn,\r\n\tAnnouncementsInput,\r\n\tAnnouncementsReturn,\r\n\tAuthenticateInput,\r\n\tAuthenticateReturn,\r\n\tAvailablePromosReturn,\r\n\tBetRecordsInput,\r\n\tBetRecordsReturn,\r\n\tBonusReturn,\r\n\tCashbackBonusReturn,\r\n\tCashbacksReturn,\r\n\tClaimCashbackBonusReturn,\r\n\tCreateAccountInput,\r\n\tCreateAccountReturn,\r\n\tCreateDepositInput,\r\n\tCreateDepositReturn,\r\n\tCreateGameSessionInput,\r\n\tCreateGameSessionReturn,\r\n\tCreateWithdrawalInput,\r\n\tCreateWithdrawalReturn,\r\n\tDeleteAccountReturn,\r\n\tDepositRecordsInput,\r\n\tDepositRecordsReturn,\r\n\tDepositReturn,\r\n\tDepositsCountReturn,\r\n\tEndGameSessionReturn,\r\n\tEndGameSessionReturn__Legacy,\r\n\tFileReturn,\r\n\tGamesByNameInput,\r\n\tGamesByNameReturn,\r\n\tGameSessionReturn,\r\n\tGamesInput,\r\n\tGamesReturn,\r\n\tLatestBetRecordsReturn,\r\n\tMayaSignInInput,\r\n\tMayaSignInReturn,\r\n\tMobileNumberSignInInput,\r\n\tMobileNumberSignInReturn,\r\n\tNameAndPasswordSignInInput,\r\n\tNameAndPasswordSignInReturn,\r\n\tPlatformReturn,\r\n\tPointsToCashConversionReturn,\r\n\tPointsWalletReturn,\r\n\tProfileCompletionReturn,\r\n\tPromosReturn,\r\n\tRemainingDailyWithdrawalsCountReturn,\r\n\tResetPasswordInput,\r\n\tResetPasswordReturn,\r\n\tSendVerificationCodeReturn,\r\n\tSessionReturn,\r\n\tSignInInput,\r\n\tSignInReturn,\r\n\tSubmitVerificationDetailsInput,\r\n\tSubmitVerificationDetailsReturn,\r\n\tTransactionRecordsInput,\r\n\tTransactionRecordsReturn,\r\n\tUpdateAccountInput,\r\n\tUpdateAccountReturn,\r\n\tUpdateVerificationDetailsInput,\r\n\tUpdateVerificationDetailsReturn,\r\n\tUploadImageFileInput,\r\n\tUploadImageFileReturn,\r\n\tVerificationDetailsReturn,\r\n\tVerifyMobileNumberReturn,\r\n\tWalletReturn,\r\n\tWatchSessionInput,\r\n\tWithdrawalRecordsInput,\r\n\tWithdrawalRecordsReturn,\r\n} from './types';\r\n\r\nexport interface SdkConfig {\r\n\tplatform: string;\r\n\t/**\r\n\t * @description Whether to use production or development endpoints.\r\n\t * @default \"development\"\r\n\t */\r\n\tenvironment?: 'production' | 'development';\r\n\t/**\r\n\t * @description Enables/disables logging.\r\n\t * @default false\r\n\t */\r\n\tlog?: boolean;\r\n}\r\n\r\nexport class Sdk {\r\n\tprivate gameService: GameService;\r\n\tprivate fileService: FileService;\r\n\tprivate walletService: WalletService;\r\n\tprivate reportService: ReportService;\r\n\tprivate portalService: PortalService;\r\n\tprivate accountService: AccountService;\r\n\tprivate sessionManager: SessionManager;\r\n\tprivate transformer: Transformer;\r\n\tprivate logger: Logger;\r\n\r\n\tconstructor(config: SdkConfig) {\r\n\t\tconst debug = config.environment === 'development';\r\n\r\n\t\tthis.sessionManager = new SessionManager({\r\n\t\t\tauthUrl: debug\r\n\t\t\t\t? import.meta.env.VITE_AUTH_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_AUTH_PRODUCTION_URL,\r\n\t\t\twalletUrl: debug\r\n\t\t\t\t? import.meta.env.VITE_WALLET_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_WALLET_PRODUCTION_URL,\r\n\t\t\tplatform: config.platform,\r\n\t\t\tlog: config.log,\r\n\t\t});\r\n\r\n\t\tconst graphqlClientConfig: GraphQLClientConfig = {\r\n\t\t\tmiddlewares: [this.authMiddleware],\r\n\t\t\tfetchOptions: {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\t'Platform-Code': config.platform,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tthis.gameService = new GameService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_GAME_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_GAME_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.fileService = new FileService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_FILE_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_FILE_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.walletService = new WalletService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_WALLET_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_WALLET_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.reportService = new ReportService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_REPORT_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_REPORT_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.accountService = new AccountService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_ACCOUNT_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_ACCOUNT_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.portalService = new PortalService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_PORTAL_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_PORTAL_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.transformer = new Transformer(config);\r\n\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: config.log ?? false,\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get authMiddleware(): GraphQLClientMiddleware {\r\n\t\treturn async (request) => {\r\n\t\t\tthis.logger.info('Checking for session');\r\n\r\n\t\t\tconst res = await this.sessionManager.get();\r\n\r\n\t\t\tif (res.data) {\r\n\t\t\t\trequest.headers.append('Authorization', `Bearer ${res.data.accessToken}`);\r\n\r\n\t\t\t\tthis.logger.info('Session found');\r\n\t\t\t\tthis.logger.success(\"Added 'Authorization' header\");\r\n\t\t\t} else {\r\n\t\t\t\tthis.logger.info('No session found');\r\n\t\t\t}\r\n\r\n\t\t\treturn request;\r\n\t\t};\r\n\t}\r\n\r\n\tasync signIn(input: NameAndPasswordSignInInput): Promise<NameAndPasswordSignInReturn>;\r\n\tasync signIn(input: MobileNumberSignInInput): Promise<MobileNumberSignInReturn>;\r\n\tasync signIn(input: MayaSignInInput): Promise<MayaSignInReturn>;\r\n\tasync signIn(input: SignInInput): Promise<SignInReturn> {\r\n\t\tswitch (input.type) {\r\n\t\t\tcase 'NAME_AND_PASSWORD': {\r\n\t\t\t\tconst res = await this.sessionManager.create({\r\n\t\t\t\t\t...input,\r\n\t\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!res.ok) return res;\r\n\t\t\t\tif (res.data) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t'2FAEnabled': true,\r\n\t\t\t\t\t\t\tauthenticator: res.data.authenticator,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t'2FAEnabled': false,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tdefault: {\r\n\t\t\t\tconst res = await this.sessionManager.create(input);\r\n\r\n\t\t\t\treturn res.ok ? { ok: true } : res;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const signInResult = await signIn({\r\n\t * \ttype: 'NAME_AND_PASSWORD',\r\n\t * \tname: data.name,\r\n\t * \tpassword: data.password,\r\n\t * });\r\n\t *\r\n\t * if (!signInResult.ok) {\r\n\t * \treturn window.alert(signInResult.error.message);\r\n\t * }\r\n\t *\r\n\t * if (!signInResult.data) {\r\n\t * \t// Signed in. No more steps needed\r\n\t * \treturn;\r\n\t * }\r\n\t *\r\n\t * const secretAnswer = window.prompt(SECRET_QUESTIONS_MAP[signInResult.secretQuestion]);\r\n\t *\r\n\t * const authResult = await sdk.authenticate({\r\n\t * \ttype: 'SECURITY_QUESTION',\r\n\t * \ttoken: signInResult.token,\r\n\t * \tsecretAnswer: secretAnswer,\r\n\t * });\r\n\t *\r\n\t * if (!authResult.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Signed in\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync authenticate(input: AuthenticateInput): Promise<AuthenticateReturn> {\r\n\t\tswitch (input.type) {\r\n\t\t\tcase 'SECURITY_QUESTION': {\r\n\t\t\t\treturn await this.sessionManager.createFromAuthenticator({\r\n\t\t\t\t\ttype: 'SECURITY_QUESTION',\r\n\t\t\t\t\ttoken: input.token,\r\n\t\t\t\t\tsecretAnswer: await sha256(input.secretAnswer),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefault: {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: {\r\n\t\t\t\t\t\tname: 'HttpBadRequest',\r\n\t\t\t\t\t\tmessage: \"Invalid input 'type'\",\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync signOut() {\r\n\t\tawait this.sessionManager.destroy();\r\n\t}\r\n\r\n\t/**\r\n\t * @description Watches the session if it is still valid whenever signed in.\r\n\t * @returns Unsubscribe function\r\n\t * @example\r\n\t * ```tsx\r\n\t * import * as React from 'react';\r\n\t * import { useAuthenticated } from '@lib/stores';\r\n\t *\r\n\t * function WatchSession() {\r\n\t * \tconst { setAuthenticated } = useAuthenticated();\r\n\t *\r\n\t * \tReact.useEffect(() => {\r\n\t * \t\tconst unsubscribe = sdk.watchSession({\r\n\t * \t\t\tinterval: 30000,\r\n\t * \t\t\tonInvalid() {\r\n\t * \t\t\t\tsetAuthenticated(false);\r\n\t * \t\t\t},\r\n\t * \t\t});\r\n\t *\r\n\t * \t\treturn unsubscribe;\r\n\t * \t}, []);\r\n\t * }\r\n\t * ```\r\n\t */\r\n\twatchSession(input: WatchSessionInput) {\r\n\t\tconst interval = clamp(input.interval ?? 30000, 30000, 60000);\r\n\r\n\t\tlet timeout: NodeJS.Timeout | null = null;\r\n\r\n\t\tconst assignTimeout = () => {\r\n\t\t\treturn setTimeout(async () => {\r\n\t\t\t\tconst v = await this.sessionManager.verify();\r\n\r\n\t\t\t\tif (!v) {\r\n\t\t\t\t\tawait input.onInvalid();\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttimeout = assignTimeout();\r\n\t\t\t}, interval);\r\n\t\t};\r\n\r\n\t\ttimeout = assignTimeout();\r\n\r\n\t\treturn function unsubscribe() {\r\n\t\t\tif (timeout) {\r\n\t\t\t\tclearTimeout(timeout);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tasync session(): Promise<SessionReturn> {\r\n\t\tconst res = await this.sessionManager.get();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data\r\n\t\t\t\t? {\r\n\t\t\t\t\t\tid: res.data.session.id,\r\n\t\t\t\t\t\tdateTimeCreated: new Date(res.data.session.dateTimeCreated),\r\n\t\t\t\t\t}\r\n\t\t\t\t: null,\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Platform\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync platform(): Promise<PlatformReturn> {\r\n\t\tconst res = await this.accountService.platform();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.platform(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Account\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync account(): Promise<AccountReturn> {\r\n\t\tconst [i, j] = await Promise.all([\r\n\t\t\tthis.accountService.memberAccount(),\r\n\t\t\tthis.reportService.member(),\r\n\t\t]);\r\n\r\n\t\tif (!i.ok) return { ok: false, error: i.error };\r\n\t\tif (!j.ok) return { ok: false, error: j.error };\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.account({\r\n\t\t\t\t...i.data,\r\n\t\t\t\t...j.data,\r\n\t\t\t}),\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createAccount({\r\n\t * \tid: ObjectId.generate(ObjectType.Account).toString(),\r\n\t * \tname: data.name,\r\n\t * \tpassword: data.password,\r\n\t * \tdateOfBirth: new Date(data.dateOfBirth),\r\n\t * \tmobileNumber: data.mobileNumber,\r\n\t * \tdomain: data.domain,\r\n\t * \tverificationCode: data.verificationCode,\r\n\t * \treCAPTCHAResponse: data.reCAPTCHAResponse,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createAccount(input: CreateAccountInput): Promise<CreateAccountReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Account).toString();\r\n\r\n\t\tconst res = await this.accountService.registerMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tname: input.name,\r\n\t\t\t\tbirthDay:\r\n\t\t\t\t\ttypeof input.dateOfBirth === 'string'\r\n\t\t\t\t\t\t? input.dateOfBirth\r\n\t\t\t\t\t\t: input.dateOfBirth.toISOString(),\r\n\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\tdomain: input.domain,\r\n\t\t\t\tbtag: input.referralCode,\r\n\t\t\t},\r\n\t\t\tverificationCode: input.verificationCode,\r\n\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.updateAccount(user.id, {\r\n\t * \tvalidId: data.validId,\r\n\t * \trealName: data.realName,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync updateAccount(id: string, input: UpdateAccountInput): Promise<UpdateAccountReturn> {\r\n\t\treturn await this.accountService.updateMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t...input,\r\n\t\t\t\t\tpassword: input.password ? await sha256(input.password) : undefined,\r\n\t\t\t\t\ttransactionPassword: input.transactionPassword\r\n\t\t\t\t\t\t? await sha256(input.transactionPassword)\r\n\t\t\t\t\t\t: undefined,\r\n\t\t\t\t\t...(input.mobileNumber && {\r\n\t\t\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tsecretAnswer: input.secretAnswer ? await sha256(input.secretAnswer) : undefined,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync deleteAccount(id: string): Promise<DeleteAccountReturn> {\r\n\t\treturn await this.accountService.deleteMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync verificationDetails(): Promise<VerificationDetailsReturn> {\r\n\t\tconst res = await this.accountService.memberVerification();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.verificationDetails(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.submitVerificationDetails({\r\n\t * \tid: ObjectId.generate(ObjectType.Verification).toString(),\r\n\t * \tidFrontImage: data.idFrontImage,\r\n\t * \tselfieImage: data.selfieImage,\r\n\t * \taddress: data.address,\r\n\t * \tsourceOfIncome: data.sourceOfIncome,\r\n\t * \tnatureOfWork: data.natureOfWork,\r\n\t * \tplaceOfBirth: data.placeOfBirth,\r\n\t * \tnationality: data.nationality,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync submitVerificationDetails(\r\n\t\tinput: SubmitVerificationDetailsInput,\r\n\t): Promise<SubmitVerificationDetailsReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Verification).toString();\r\n\r\n\t\tconst res = await this.accountService.createMemberVerification({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\t...input,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.submitVerificationDetails(verificationDetails.id, {\r\n\t * \tidFrontImage: data.idFrontImage,\r\n\t * \tselfieImage: data.selfieImage,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync updateVerificationDetails(\r\n\t\tid: string,\r\n\t\tinput: UpdateVerificationDetailsInput,\r\n\t): Promise<UpdateVerificationDetailsReturn> {\r\n\t\treturn await this.accountService.updateMemberVerification({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t...input,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync resetPassword(input: ResetPasswordInput): Promise<ResetPasswordReturn> {\r\n\t\treturn await this.accountService.resetPassword({\r\n\t\t\tinput: {\r\n\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\tnewPassword: await sha256(input.newPassword),\r\n\t\t\t},\r\n\t\t\tverificationCode: input.verificationCode,\r\n\t\t});\r\n\t}\r\n\r\n\tasync verifyMobileNumber(verificationCode: string): Promise<VerifyMobileNumberReturn> {\r\n\t\treturn await this.accountService.verifyMobileNumber({\r\n\t\t\tinput: {\r\n\t\t\t\tverificationCode,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync profileCompletion(): Promise<ProfileCompletionReturn> {\r\n\t\tconst res = await this.accountService.profileCompletion();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.profileCompletion(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\tasync sendVerificationCode(mobileNumber: string): Promise<SendVerificationCodeReturn> {\r\n\t\treturn await this.accountService.sendVerificationCode({\r\n\t\t\tinput: {\r\n\t\t\t\tchannel: 'SMS',\r\n\t\t\t\trecipient: this.addAreaCode(mobileNumber),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync wallet(): Promise<WalletReturn> {\r\n\t\tconst res = await this.walletService.wallet();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.wallet(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Announcement\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync announcements(input?: AnnouncementsInput): Promise<AnnouncementsReturn> {\r\n\t\tconst res = await this.accountService.announcements({\r\n\t\t\t...input,\r\n\t\t\tfilter: {\r\n\t\t\t\tvisibility: {\r\n\t\t\t\t\tin: ['MEMBER', 'GLOBAL'],\r\n\t\t\t\t},\r\n\t\t\t\tactivationStartDateTime: {\r\n\t\t\t\t\tgreaterThanOrEqual: new Date(),\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tannouncements: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.announcement(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as AnnouncementsReturn;\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Withdrawal\r\n\t * ========================================\r\n\t */\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createWithdrawal({\r\n\t * \tid: ObjectId.generate(ObjectType.Withdrawal).toString(),\r\n\t * \ttype: 'BANK',\r\n\t * \tamount: data.amount,\r\n\t * \ttransactionPassword: data.transactionPassword,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createWithdrawal(input: CreateWithdrawalInput): Promise<CreateWithdrawalReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Withdrawal).toString();\r\n\r\n\t\tif (input.type === 'BANK') {\r\n\t\t\tconst res = await this.walletService.createBankWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'GCASH') {\r\n\t\t\tconst res = await this.walletService.createGCashWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t\trecipientMobileNumber: this.addAreaCode(input.recipientMobileNumber),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA') {\r\n\t\t\tconst res = await this.walletService.createMayaWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t\trecipientMobileNumber: this.addAreaCode(input.recipientMobileNumber),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA_APP') {\r\n\t\t\tconst res = await this.walletService.createMayaAppWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\treturn { ok: true, data: { id } };\r\n\t}\r\n\r\n\tasync withdrawalRecords(input?: WithdrawalRecordsInput): Promise<WithdrawalRecordsReturn> {\r\n\t\tconst res = await this.reportService.withdrawalRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\twithdrawalRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.withdrawalRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as WithdrawalRecordsReturn;\r\n\t}\r\n\r\n\tasync remainingDailyWithdrawalsCount(): Promise<RemainingDailyWithdrawalsCountReturn> {\r\n\t\treturn await this.walletService.remainingDailyWithdrawalsCount();\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Deposit\r\n\t * ========================================\r\n\t */\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createDeposit({\r\n\t * \tid: ObjectId.generate(ObjectType.Deposit).toString(),\r\n\t * \ttype: 'GCASH',\r\n\t * \tamount: data.amount,\r\n\t * \tpromo: data.promo,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createDeposit(input: CreateDepositInput): Promise<CreateDepositReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Deposit).toString();\r\n\r\n\t\tif (input.type === 'MAYA') {\r\n\t\t\tconst res = await this.walletService.createMayaDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA_APP') {\r\n\t\t\tconst res = await this.walletService.createMayaAppDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'GCASH') {\r\n\t\t\tconst res = await this.walletService.createGCashDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\treturn { ok: true, data: { id } };\r\n\t}\r\n\r\n\tasync deposit(id: string): Promise<DepositReturn> {\r\n\t\tconst res = await this.walletService.deposit({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.deposit(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync depositRecords(input?: DepositRecordsInput): Promise<DepositRecordsReturn> {\r\n\t\tconst res = await this.reportService.depositRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tdepositRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.depositRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as DepositRecordsReturn;\r\n\t}\r\n\r\n\tasync depositsCount(): Promise<DepositsCountReturn> {\r\n\t\treturn await this.reportService.depositsCount();\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Bet\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync betRecords(input?: BetRecordsInput): Promise<BetRecordsReturn> {\r\n\t\tconst res = await this.reportService.betRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tbetRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.betRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as BetRecordsReturn;\r\n\t}\r\n\r\n\tasync latestBetRecords(): Promise<LatestBetRecordsReturn> {\r\n\t\tconst res = await this.portalService.latestBetRecords();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.latestBetRecord),\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Transaction\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync transactionRecords(input?: TransactionRecordsInput): Promise<TransactionRecordsReturn> {\r\n\t\tconst res = await this.reportService.transactionRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\ttransactionRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.transactionRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as TransactionRecordsReturn;\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Promos\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync promos(): Promise<PromosReturn> {\r\n\t\tconst res = await this.walletService.promos();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.promo),\r\n\t\t};\r\n\t}\r\n\r\n\tasync availablePromos(): Promise<AvailablePromosReturn> {\r\n\t\tconst res = await this.walletService.availablePromos();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.promo),\r\n\t\t};\r\n\t}\r\n\r\n\tasync cashbacks(): Promise<CashbacksReturn> {\r\n\t\tconst res = await this.walletService.cashbacks();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.cashback),\r\n\t\t};\r\n\t}\r\n\r\n\tasync bonus(): Promise<BonusReturn> {\r\n\t\tconst res = await this.walletService.bonus();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.bonus(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync cashbackBonuses(): Promise<CashbackBonusReturn> {\r\n\t\tconst res = await this.walletService.cashbackBonuses();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.cashbackBonus),\r\n\t\t};\r\n\t}\r\n\r\n\tasync claimCashbackBonus(id: string): Promise<ClaimCashbackBonusReturn> {\r\n\t\treturn await this.walletService.claimCashbackBonus({ input: { id } });\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Game\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync games(input?: GamesInput): Promise<GamesReturn> {\r\n\t\tconst res = await this.walletService.games(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.game(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t},\r\n\t\t} as GamesReturn;\r\n\t}\r\n\r\n\tasync games__legacy(input?: GamesInput): Promise<GamesReturn> {\r\n\t\tconst res = await this.gameService.games(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.game(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t},\r\n\t\t} as GamesReturn;\r\n\t}\r\n\r\n\tasync gamesByName(input?: GamesByNameInput): Promise<GamesByNameReturn> {\r\n\t\tconst res = await this.walletService.gamesByName(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.game),\r\n\t\t};\r\n\t}\r\n\r\n\tasync gamesByName__legacy(input?: GamesByNameInput): Promise<GamesByNameReturn> {\r\n\t\tconst res = await this.gameService.gamesByName(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.game),\r\n\t\t};\r\n\t}\r\n\r\n\tasync gameSession(id: string): Promise<GameSessionReturn> {\r\n\t\tconst res = await this.walletService.gameSession({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.gameSession(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync gameSession__legacy(id: string): Promise<GameSessionReturn> {\r\n\t\tconst res = await this.gameService.gameSession({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.gameSession(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createGameSession({\r\n\t * \tid: ObjectId.generate(ObjectType.GameSession).toString(),\r\n\t * \tgame: game.id,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createGameSession(input: CreateGameSessionInput): Promise<CreateGameSessionReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.GameSession).toString();\r\n\r\n\t\tconst res = await this.walletService.createGameSession({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tgame: input.game,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\tasync createGameSession__legacy(input: CreateGameSessionInput): Promise<CreateGameSessionReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.GameSession).toString();\r\n\r\n\t\tconst res = await this.gameService.createGameSession({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tgame: input.game,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\tasync endGameSession(id: string): Promise<EndGameSessionReturn> {\r\n\t\treturn await this.walletService.endGameSession({ input: { id } });\r\n\t}\r\n\r\n\tasync endGameSession__legacy(id: string): Promise<EndGameSessionReturn__Legacy> {\r\n\t\treturn await this.gameService.endGameSession({ input: { id } });\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * File\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync file(id: string): Promise<FileReturn> {\r\n\t\tconst res = await this.fileService.file({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.file(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.uploadImageFile({\r\n\t * \tid: ObjectId.generate(ObjectType.File).toString(),\r\n\t * \tfile: data.file,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync uploadImageFile(input: UploadImageFileInput): Promise<UploadImageFileReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.File).toString();\r\n\r\n\t\tconst res = await this.fileService.uploadPrivateImageFile({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tfile: input.file,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Points\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync pointsWallet(): Promise<PointsWalletReturn> {\r\n\t\tconst res = await this.walletService.pointsWallet();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.pointsWallet(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync pointsToCashConversion(amount: number): Promise<PointsToCashConversionReturn> {\r\n\t\treturn await this.walletService.pointsToCashConversion({\r\n\t\t\tinput: {\r\n\t\t\t\tamount: amount.toString(),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate addAreaCode(mobileNumber: string) {\r\n\t\tif (mobileNumber.startsWith('+63')) return mobileNumber;\r\n\t\tif (mobileNumber.startsWith('63')) return `+${mobileNumber}`;\r\n\t\tif (mobileNumber.startsWith('0')) return `+63${mobileNumber.substring(1)}`;\r\n\t\treturn `+63${mobileNumber}`;\r\n\t}\r\n}\r\n\r\nexport default Sdk;\r\n"],"names":["ObjectType","gql","strings","values","result","index","string","value","FILE_FRAGMENT","FILE_QUERY","UPLOAD_PRIVATE_IMAGE_FILE_MUTATION","WALLET_QUERY","POINTS_WALLET_QUERY","POINTS_TO_CASH_CONVERSION_MUTATION","GAME_FRAGMENT","GAMES_QUERY","GAMES_BY_NAME_QUERY","GAME_SESSION_QUERY","CREATE_GAME_SESSION_MUTATION","END_GAME_SESSION_MUTATION","END_GAME_SESSION_MUTATION__LEGACY","ANNOUNCEMENTS_QUERY","WITHDRAWAL_RECORDS_QUERY","CREATE_GCASH_WITHDRAWAL_MUTATION","CREATE_MAYA_WITHDRAWAL_MUTATION","CREATE_MAYA_APP_WITHDRAWAL_MUTATION","CREATE_BANK_WITHDRAWAL_MUTATION","REMAINING_DAILY_WITHDRAWALS_COUNT_QUERY","DEPOSIT_RECORDS_QUERY","CREATE_GCASH_DEPOSIT_MUTATION","CREATE_MAYA_DEPOSIT_MUTATION","CREATE_MAYA_APP_DEPOSIT_MUTATION","DEPOSIT_QUERY","DEPOSITS_COUNT_QUERY","BET_RECORDS_QUERY","LATEST_BET_RECORDS_QUERY","TRANSACTION_RECORDS_QUERY","PROMO_FRAGMENT","PROMOS_QUERY","AVAILABLE_PROMOS_QUERY","CASHBACK_FRAGMENT","CASHBACKS_QUERY","BONUS_QUERY","CASHBACK_BONUSES_QUERY","CLAIM_CASHBACK_BONUS_MUTATION","MEMBER_QUERY","MEMBER_ACCOUNT_QUERY","MEMBER_VERIFICATION_QUERY","REGISTER_MEMBER_ACCOUNT_MUTATION","UPDATE_MEMBER_ACCOUNT_MUTATION","RESET_PASSWORD_MUTATION","DELETE_MEMBER_ACCOUNT_MUTATION","VERIFY_MOBILE_NUMBER_MUTATION","CREATE_MEMBER_VERIFICATION_MUTATION","UPDATE_MEMBER_VERIFICATION_MUTATION","PROFILE_COMPLETION_QUERY","SEND_VERIFICATION_CODE_MUTATION","PLATFORM_QUERY","MAYA_SESSION_QUERY","createOperationError","code","AccountService","client","__publicField","res","variables","statusCodeToOperationError","message","e","ERROR_MAP","AuthService","config","input","headers","data","token","refreshToken","accessToken","FileService","ReportService","StaticService","args","WalletService","GameService","PortalService","clamp","min","max","isPlainObject","flatten","fn","o","parentKeys","k","v","arrayToObject","array","i","GraphQLClient","url","_a","query","body","req","request","json","error","_b","_c","_d","_e","_f","middleware","files","map","sha256","msgUint8","hashBuffer","b","Logger","cloneDate","date","addDays","days","addMinutes","minutes","isAfter","date1","date2","sleep","ms","resolve","pollable","func","until","interval","maxAttempt","repeater","m","r","subMinutes","SessionManager","r0","r1","now","val","obj","accessTokenExpiresAt","refreshTokenExpiresAt","s","parseDecimal","fallback","parsed","Transformer","debug","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","images","Sdk","graphqlClientConfig","timeout","assignTimeout","j","id","ObjectId","verificationCode","mobileNumber","cursor","node","amount"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/lib/sdk/object-type.ts","../src/lib/utils/gql.ts","../src/lib/services/queries.ts","../src/lib/services/utils.ts","../src/lib/services/account.service.ts","../src/lib/utils/status-code-to-operation-error.ts","../src/lib/services/auth.service.ts","../src/lib/services/file.service.ts","../src/lib/services/report.service.ts","../src/lib/services/static.service.ts","../src/lib/services/wallet.service.ts","../src/lib/services/cms-portal.service.ts","../src/lib/services/game.service.ts","../src/lib/services/portal.service.ts","../src/lib/utils/clamp.ts","../src/lib/utils/is-plain-object.ts","../src/lib/utils/flatten.ts","../src/lib/utils/graphql-client.ts","../src/lib/utils/sha256.ts","../src/lib/sdk/logger.ts","../src/lib/utils/clone-date.ts","../src/lib/utils/add-days.ts","../src/lib/utils/add-minutes.ts","../src/lib/utils/is-after.ts","../src/lib/utils/sleep.ts","../src/lib/utils/pollable.ts","../src/lib/utils/sub-minutes.ts","../src/lib/sdk/session-manager.ts","../src/lib/utils/compact.ts","../src/lib/utils/parse-decimal.ts","../src/lib/sdk/transformer.ts","../src/lib/sdk/sdk.ts"],"sourcesContent":["/*\r\n * ref: https://github.com/HighOutputVentures/opexa/blob/main/libs/shared/src/libs/object-type.ts\r\n */\r\n\r\nexport const ObjectType = {\r\n\tAccount: 8,\r\n\tDeposit: 9,\r\n\tWithdrawal: 14,\r\n\tVerification: 15,\r\n\tFile: 16,\r\n\tGameSession: 204,\r\n\tMayaSession: 230,\r\n};\r\n","export function gql(strings: TemplateStringsArray, ...values: unknown[]) {\r\n\tlet result = '';\r\n\r\n\tfor (const [index, string] of strings.entries()) {\r\n\t\tconst value = values.at(index) ?? '';\r\n\r\n\t\tresult = `${result}${string}${value}`;\r\n\t}\r\n\r\n\treturn result.trim();\r\n}\r\n","import { gql } from '../utils/gql';\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ FILE +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const FILE_FRAGMENT = gql`\r\n\tfragment FileFragment on File {\r\n\t\tid\r\n\t\turl\r\n\t\tstatus\r\n\t\tdateTimeCreated\r\n\t}\r\n`;\r\n\r\nexport const FILE_QUERY = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tquery File($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on File {\r\n\t\t\t\t...FileFragment\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const UPLOAD_PRIVATE_IMAGE_FILE_MUTATION = gql`\r\n\tmutation UploadPrivateImageFile($input: UploadFileInput!) {\r\n\t\tuploadPrivateImageFile(input: $input) {\r\n\t\t\t... on FileFormatNotSupportedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on FileNameTooLongError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on FileSizeTooBigError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ WALLET +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const WALLET_QUERY = gql`\r\n\tquery Wallet {\r\n\t\twallet {\r\n\t\t\tid\r\n\t\t\tbalance\r\n\t\t\tcurrency\r\n\t\t\tdateTimeCreated\r\n\t\t\tdateTimeLastUpdated\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ POINTS +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const POINTS_WALLET_QUERY = gql`\r\n\tquery PointsWallet {\r\n\t\tpointsWallet {\r\n\t\t\tid\r\n\t\t\tpoints\r\n\t\t\taccount\r\n\t\t\tdateTimeCreated\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const POINTS_TO_CASH_CONVERSION_MUTATION = gql`\r\n\tmutation PointsToCashConversion($input: PointsToCashConversionInput!) {\r\n\t\tpointsToCashConversion(input: $input) {\r\n\t\t\t... on InsufficientPointsError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ GAME +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const GAME_FRAGMENT = gql`\r\n\tfragment GameFragment on Game {\r\n\t\tid\r\n\t\ttype\r\n\t\tname\r\n\t\tprovider\r\n\t}\r\n`;\r\n\r\nexport const GAMES_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery Games($first: Int, $after: Cursor, $filter: GameFilterInput) {\r\n\t\tgames(first: $first, after: $after, filter: $filter) {\r\n\t\t\tedges {\r\n\t\t\t\tcursor\r\n\t\t\t\tnode {\r\n\t\t\t\t\t... on Game {\r\n\t\t\t\t\t\t...GameFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttotalCount\r\n\t\t\tpageInfo {\r\n\t\t\t\thasNextPage\r\n\t\t\t\tendCursor\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const GAMES_BY_NAME_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery GamesByName($first: Int, $search: String!, $filter: GameFilterInput) {\r\n\t\tgamesByName(first: $first, search: $search, filter: $filter) {\r\n\t\t\tid\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const GAME_SESSION_QUERY = gql`\r\n\tquery GameSession($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on GameSession {\r\n\t\t\t\tid\r\n\t\t\t\tgame\r\n\t\t\t\tstatus\r\n\t\t\t\tlaunchUrl\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_GAME_SESSION_MUTATION = gql`\r\n\tmutation CreateGameSession($input: CreateGameSessionInput!) {\r\n\t\tcreateGameSession(input: $input) {\r\n\t\t\t... on GameDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const END_GAME_SESSION_MUTATION = gql`\r\n\tmutation EndGameSession($input: EndGameSessionInput!) {\r\n\t\tendGameSession(input: $input)\r\n\t}\r\n`;\r\n\r\nexport const GAME_SESSION_QUERY_LEGACY = gql`\r\n\tquery GameSession($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on GameSession {\r\n\t\t\t\tid\r\n\t\t\t\tgame {\r\n\t\t\t\t\tid\r\n\t\t\t\t}\r\n\t\t\t\tstatus\r\n\t\t\t\tlaunchUrl\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const END_GAME_SESSION_MUTATION__LEGACY = gql`\r\n\tmutation EndGameSession($input: EndGameSessionInput!) {\r\n\t\tendGameSession(input: $input) {\r\n\t\t\t... on GameSessionDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on GameSessionAlreadyClosedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on GameProviderError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ ANNOUNCEMENT +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const ANNOUNCEMENTS_QUERY = gql`\r\n\tquery Announcements($first: Int, $after: Cursor, $filter: AnnouncementFilterInput) {\r\n\t\tannouncements(first: $first, after: $after, filter: $filter) {\r\n\t\t\tedges {\r\n\t\t\t\tcursor\r\n\t\t\t\tnode {\r\n\t\t\t\t\t... on Announcement {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\ttype\r\n\t\t\t\t\t\ttitle\r\n\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\tmessage\r\n\t\t\t\t\t\tactivationStartDateTime\r\n\t\t\t\t\t\tactivationEndDateTime\r\n\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttotalCount\r\n\t\t\tpageInfo {\r\n\t\t\t\thasNextPage\r\n\t\t\t\tendCursor\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ WITHDRAWAL +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const WITHDRAWAL_RECORDS_QUERY = gql`\r\n\tquery WithdrawalRecords($first: Int, $after: Cursor, $filter: WithdrawalRecordFilterInput) {\r\n\t\tmember {\r\n\t\t\twithdrawalRecords(first: $first, after: $after, filter: $filter) {\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on BankWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tbank\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on GCashWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\trecipientMobileNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on ManualWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on MayaAppWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttotalCount\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_GCASH_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateGCashWithdrawal($input: CreateGCashWithdrawalInput!) {\r\n\t\tcreateGCashWithdrawal(input: $input) {\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_MAYA_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateMayaWithdrawal($input: CreateMayaWithdrawalInput!) {\r\n\t\tcreateMayaWithdrawal(input: $input) {\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_MAYA_APP_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateMayaAppWithdrawal($input: CreateMayaAppWithdrawalInput!) {\r\n\t\tcreateMayaAppWithdrawal(input: $input) {\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_BANK_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateBankWithdrawal($input: CreateBankWithdrawalInput!) {\r\n\t\tcreateBankWithdrawal(input: $input) {\r\n\t\t\t... on MobileNumberNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const REMAINING_DAILY_WITHDRAWALS_COUNT_QUERY = gql`\r\n\tquery RemainingDailyWithdrawalsCount {\r\n\t\tremainingDailyWithdrawalsCount\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ DEPOSIT +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const DEPOSIT_RECORDS_QUERY = gql`\r\n\tquery DepositRecords($after: Cursor, $first: Int, $filter: DepositRecordFilterInput) {\r\n\t\tmember {\r\n\t\t\tdepositRecords(after: $after, first: $first, filter: $filter) {\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on DepositRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tdepositNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttotalCount\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_GCASH_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateGCashDeposit($input: CreateGCashDepositInput!) {\r\n\t\tcreateGCashDeposit(input: $input) {\r\n\t\t\t... on DepositPromoMaximumAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on DepositPromoMinimumAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on HasActiveBonusError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MaximumDepositAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumFirstDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on PromoNotEnabledError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WalletDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_MAYA_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateMayaDeposit($input: CreateMayaDepositInput!) {\r\n\t\tcreateMayaDeposit(input: $input) {\r\n\t\t\t... on DepositPromoMaximumAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on DepositPromoMinimumAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on HasActiveBonusError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MaximumDepositAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumFirstDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on PromoNotEnabledError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WalletDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_MAYA_APP_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateMayaAppDeposit($input: CreateMayaAppDepositInput!) {\r\n\t\tcreateMayaAppDeposit(input: $input) {\r\n\t\t\t... on DepositPromoMaximumAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on DepositPromoMinimumAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on HasActiveBonusError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MaximumDepositAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumFirstDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on PromoNotEnabledError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WalletDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const DEPOSIT_QUERY = gql`\r\n\tquery Deposit($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on GCashDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t\tcheckoutUrl\r\n\t\t\t}\r\n\t\t\t... on MayaDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t\tcheckoutUrl\r\n\t\t\t}\r\n\t\t\t... on MayaAppDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t}\r\n\t\t\t... on BankDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t}\r\n\t\t\t... on ManualDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const DEPOSITS_COUNT_QUERY = gql`\r\n\tquery DepositsCount {\r\n\t\tmember {\r\n\t\t\tdepositsCount\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ BET +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const BET_RECORDS_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery BetRecords($first: Int, $after: Cursor, $filter: BetRecordFilterInput) {\r\n\t\tmember {\r\n\t\t\tbetRecords(first: $first, after: $after, filter: $filter) {\r\n\t\t\t\ttotalCount\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on BetRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\tserialCode\r\n\t\t\t\t\t\t\tgame {\r\n\t\t\t\t\t\t\t\t...GameFragment\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbet\r\n\t\t\t\t\t\t\tpayout\r\n\t\t\t\t\t\t\twinloss\r\n\t\t\t\t\t\t\tjackpotPayout\r\n\t\t\t\t\t\t\tjackpotContribution\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeSettled\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t\tmetadata\r\n\t\t\t\t\t\t\tvendorRoundId\r\n\t\t\t\t\t\t\tbetContent\r\n\t\t\t\t\t\t\tcontestName\r\n\t\t\t\t\t\t\texternalCategory\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const LATEST_BET_RECORDS_QUERY = gql`\r\n\tquery LatestBetRecords {\r\n\t\tlatestBetRecords {\r\n\t\t\tid\r\n\t\t\tmember {\r\n\t\t\t\tid\r\n\t\t\t\tname\r\n\t\t\t}\r\n\t\t\tgame {\r\n\t\t\t\t...GameFragment\r\n\t\t\t}\r\n\t\t\tbet\r\n\t\t\tpayout\r\n\t\t\tvalidBet\r\n\t\t\tdateTimeSettled\r\n\t\t\tdateTimeCreated\r\n\t\t}\r\n\t}\r\n\r\n\t${GAME_FRAGMENT}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ TRANSACTIONS +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const TRANSACTION_RECORDS_QUERY = gql`\r\n\tquery TransactionRecords($first: Int, $after: Cursor, $filter: TransactionRecordFilter) {\r\n\t\tmember {\r\n\t\t\ttransactionRecords(first: $first, after: $after, filter: $filter) {\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on TransactionRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tcontent\r\n\t\t\t\t\t\t\tcurrentBalance\r\n\t\t\t\t\t\t\treferenceNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttotalCount\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ PROMO +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const PROMO_FRAGMENT = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tfragment PromoFragment on Promo {\r\n\t\tid\r\n\t\ttype\r\n\t\tname\r\n\t\tbanner {\r\n\t\t\t...FileFragment\r\n\t\t}\r\n\t\tstatus\r\n\t\tdescription\r\n\t\tmaximumBonusAmount\r\n\t\tminimumBonusAmount\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tdateTimeCreated\r\n\t\tdateTimeLastUpdated\r\n\t}\r\n`;\r\n\r\nexport const PROMOS_QUERY = gql`\r\n\t${PROMO_FRAGMENT}\r\n\r\n\tquery Promos {\r\n\t\tpromos {\r\n\t\t\t...PromoFragment\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const AVAILABLE_PROMOS_QUERY = gql`\r\n\t${PROMO_FRAGMENT}\r\n\r\n\tquery AvailablePromos($filter: PromoFilterInput) {\r\n\t\tavailablePromos(filter: $filter) {\r\n\t\t\t...PromoFragment\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CASHBACK_FRAGMENT = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tfragment CashbackFragment on Cashback {\r\n\t\tid\r\n\t\tname\r\n\t\tbanner {\r\n\t\t\t...FileFragment\r\n\t\t}\r\n\t\tstatus\r\n\t\tdescription\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tdateTimeCreated\r\n\t\tdateTimeLastUpdated\r\n\t}\r\n`;\r\n\r\nexport const CASHBACKS_QUERY = gql`\r\n\t${CASHBACK_FRAGMENT}\r\n\r\n\tquery Cashbacks {\r\n\t\tcashbacks {\r\n\t\t\t...CashbackFragment\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ BONUS +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const BONUS_QUERY = gql`\r\n\t${PROMO_FRAGMENT}\r\n\r\n\tquery Bonus {\r\n\t\tbonus {\r\n\t\t\tid\r\n\t\t\tpromo {\r\n\t\t\t\t...PromoFragment\r\n\t\t\t}\r\n\t\t\tdeposit {\r\n\t\t\t\ttype\r\n\t\t\t\tamount\r\n\t\t\t\tnetAmount\r\n\t\t\t\tfee\r\n\t\t\t\tstatus\r\n\t\t\t\treference\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t}\r\n\t\t\tamount\r\n\t\t\tbalance\r\n\t\t\tturnoverRequirement\r\n\t\t\tcurrentTurnoverRequirementContribution\r\n\t\t\tcurrentTurnoverRequirementContributionPercentage\r\n\t\t\texpiration\r\n\t\t\tdateTimeCreated\r\n\t\t\tdateTimeLastUpdated\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CASHBACK_BONUSES_QUERY = gql`\r\n\t${CASHBACK_FRAGMENT}\r\n\r\n\tquery CashbackBonuses {\r\n\t\tcashbackBonuses {\r\n\t\t\tid\r\n\t\t\tbalance\r\n\t\t\tcashback {\r\n\t\t\t\t...CashbackFragment\r\n\t\t\t}\r\n\t\t\tdateTimeCreated\r\n\t\t\tdateTimeLastUpdated\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CLAIM_CASHBACK_BONUS_MUTATION = gql`\r\n\tmutation ClaimCashbackBonus($input: ClaimCashbackBonusInput!) {\r\n\t\tclaimCashbackBonus(input: $input) {\r\n\t\t\t... on CashbackBonusDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ MEMBER +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const MEMBER_QUERY = gql`\r\n\tquery Member {\r\n\t\tmember {\r\n\t\t\tdateTimeLastActive\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**\r\n * _aka_ `Query.self`\r\n */\r\nexport const MEMBER_ACCOUNT_QUERY = gql`\r\n\tquery MemberAccount {\r\n\t\tmemberAccount: self {\r\n\t\t\t... on MemberAccount {\r\n\t\t\t\tid\r\n\t\t\t\tname\r\n\t\t\t\tstatus\r\n\t\t\t\trealName\r\n\t\t\t\temailAddress\r\n\t\t\t\tmobileNumber\r\n\t\t\t\tbirthDay\r\n\t\t\t\tverified\r\n\t\t\t\tverificationStatus\r\n\t\t\t\tnickName\r\n\t\t\t\tvalidId\r\n\t\t\t\tmobileNumberVerified\r\n\t\t\t\tmobileNumberVerificationRequired\r\n\t\t\t\ttransactionPassword\r\n\t\t\t\tsecretAnswerSubmitted\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const MEMBER_VERIFICATION_QUERY = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tquery MemberVerification {\r\n\t\tmemberAccount: self {\r\n\t\t\t... on MemberAccount {\r\n\t\t\t\tverification {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tstatus\r\n\t\t\t\t\taddress\r\n\t\t\t\t\tsourceOfIncome\r\n\t\t\t\t\tnatureOfWork\r\n\t\t\t\t\tnationality\r\n\t\t\t\t\tplaceOfBirth\r\n\t\t\t\t\tidFrontImage {\r\n\t\t\t\t\t\t...FileFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t\tselfieImage {\r\n\t\t\t\t\t\t...FileFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const REGISTER_MEMBER_ACCOUNT_MUTATION = gql`\r\n\tmutation RegisterMemberAccount(\r\n\t\t$input: RegisterMemberAccountInput!\r\n\t\t$referralCode: String\r\n\t\t$verificationCode: String\r\n\t\t$reCAPTCHAResponse: String\r\n\t) {\r\n\t\tregisterMemberAccount(\r\n\t\t\tinput: $input\r\n\t\t\treferralCode: $referralCode\r\n\t\t\tverificationCode: $verificationCode\r\n\t\t\treCAPTCHAResponse: $reCAPTCHAResponse\r\n\t\t) {\r\n\t\t\t... on AccountNameNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidReCAPTCHAResponseError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidSMSVerificationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumAgeRequirementError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const UPDATE_MEMBER_ACCOUNT_MUTATION = gql`\r\n\tmutation UpdateMemberAccount($input: UpdateMemberAccountInput!) {\r\n\t\tupdateMemberAccount(input: $input) {\r\n\t\t\t... on AccountNameNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on EmailAddressNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NickNameNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on RealNameAlreadySetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on ValidIdAlreadySetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const RESET_PASSWORD_MUTATION = gql`\r\n\tmutation ResetPassword($input: ResetPasswordInput!, $verificationCode: String) {\r\n\t\tresetPassword(input: $input, verificationCode: $verificationCode) {\r\n\t\t\t... on AccountNotFoundError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidVerificationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const DELETE_MEMBER_ACCOUNT_MUTATION = gql`\r\n\tmutation DeleteMemberAccount($input: DeleteMemberAccountInput!) {\r\n\t\tdeleteMemberAccount(input: $input)\r\n\t}\r\n`;\r\n\r\nexport const VERIFY_MOBILE_NUMBER_MUTATION = gql`\r\n\tmutation VerifyMobileNumber($input: VerifyMobileNumberInput!) {\r\n\t\tverifyMobileNumber(input: $input) {\r\n\t\t\t... on InvalidSMSVerificationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberAlreadyVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_MEMBER_VERIFICATION_MUTATION = gql`\r\n\tmutation CreateMemberVerification($input: CreateMemberVerificationInput!) {\r\n\t\tcreateMemberVerification(input: $input) {\r\n\t\t\t... on FileDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on FileNotReadyError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MemberVerificationAlreadyExistsError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const UPDATE_MEMBER_VERIFICATION_MUTATION = gql`\r\n\tmutation UpdateMemberVerification($input: UpdateMemberVerificationInput!) {\r\n\t\tupdateMemberVerification(input: $input) {\r\n\t\t\t... on FileDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on FileNotReadyError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MemberVerificationAlreadyApprovedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MemberVerificationDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const PROFILE_COMPLETION_QUERY = gql`\r\n\tquery ProfileCompletion {\r\n\t\tprofileCompletion {\r\n\t\t\tcompletionPercentage\r\n\t\t\tpersonalInformation\r\n\t\t\taccountVerification\r\n\t\t\tmobileNumberVerification\r\n\t\t\ttransactionPassword\r\n\t\t\taccountPassword\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const SEND_VERIFICATION_CODE_MUTATION = gql`\r\n\tmutation SendVerificationCode($input: SendVerificationCodeInput!) {\r\n\t\tsendVerificationCode(input: $input) {\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotReadyToSendVerficationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ PLATFORM +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const PLATFORM_QUERY = gql`\r\n\tfragment DepositGatewaySettingsCoreData on DepositGatewaySettings {\r\n\t\tminimumAmount\r\n\t\tmaximumAmount\r\n\t\tfixedFee\r\n\t\tpercentageFee\r\n\t\twebEnabled\r\n\t\tmobileWebEnabled\r\n\t\tandroidEnabled\r\n\t\tiosEnabled\r\n\t}\r\n\r\n\tfragment WithdrawalGatewaySettingsCoreData on WithdrawalGatewaySettings {\r\n\t\tminimumAmount\r\n\t\tmaximumAmount\r\n\t\tfixedFee\r\n\t\tpercentageFee\r\n\t\twebEnabled\r\n\t\tmobileWebEnabled\r\n\t\tandroidEnabled\r\n\t\tiosEnabled\r\n\t}\r\n\r\n\tquery Platform {\r\n\t\tminimumFirstDepositAmount\r\n\t\trestrictWithdrawalsToVerifiedMembers\r\n\t\tbankDepositGatewaySettings: depositGatewaySettings(gateway: BANK) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tgcashDepositGatewaySettings: depositGatewaySettings(gateway: GCASH) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaDepositGatewaySettings: depositGatewaySettings(gateway: MAYA) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaAppDepositGatewaySettings: depositGatewaySettings(gateway: MAYA_APP) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tbankWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: BANK) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tgcashWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: GCASH) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: MAYA) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaAppWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: MAYA_APP) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tpointsClubSettings {\r\n\t\t\tmultiplier\r\n\t\t}\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ SESSION +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const MAYA_SESSION_QUERY = gql`\r\n\tquery MayaSession($id: ObjectId!) {\r\n\t\tmayaSession(id: $id) {\r\n\t\t\tid\r\n\t\t\tmember\r\n\t\t\tdateTimeCreated\r\n\t\t}\r\n\t}\r\n`;\r\n","import type { OperationError } from '../utils/types';\r\nimport type {\r\n\tAuthenticateError,\r\n\tClaimCashbackBonusError,\r\n\tCreateDepositError,\r\n\tCreateGameSessionError,\r\n\tCreateMemberVerificationError,\r\n\tCreateSessionError,\r\n\tCreateWithdrawalError,\r\n\tEndGameSessionError__Legacy,\r\n\tPointsToCashConversionError,\r\n\tRefreshSessionError,\r\n\tRegisterMemberAccountError,\r\n\tResetPasswordError,\r\n\tSendVerificationCodeError,\r\n\tUpdateMemberAccountError,\r\n\tUpdateMemberVerificationError,\r\n\tUploadPrivateImageFileError,\r\n\tVerifyMobileNumberError,\r\n} from './types';\r\n\r\ntype E =\r\n\t| ClaimCashbackBonusError\r\n\t| CreateDepositError\r\n\t| UploadPrivateImageFileError\r\n\t| CreateGameSessionError\r\n\t| EndGameSessionError__Legacy\r\n\t| RegisterMemberAccountError\r\n\t| UpdateMemberAccountError\r\n\t| ResetPasswordError\r\n\t| SendVerificationCodeError\r\n\t| VerifyMobileNumberError\r\n\t| CreateMemberVerificationError\r\n\t| UpdateMemberVerificationError\r\n\t| PointsToCashConversionError\r\n\t| CreateWithdrawalError\r\n\t| CreateSessionError\r\n\t| RefreshSessionError\r\n\t| AuthenticateError;\r\n\r\nexport function createOperationError<T extends E>(code: T): OperationError<T> {\r\n\tconst messages: Record<E, string> = {\r\n\t\tAccountNameNotAvailableError: 'Username is no longer available',\r\n\t\tAccountNotFoundError: 'Account does not exist',\r\n\t\tAccountNotVerifiedError: 'Account is not verified',\r\n\t\tCashbackBonusDoesNotExistError: 'Cashback bonus does not exists',\r\n\t\tDepositPromoMaximumAmountExceededError: 'Deposit amount exceeds maximum amount',\r\n\t\tDepositPromoMinimumAmountNotMetError: 'Deposit amount does not meet minimum amount',\r\n\t\tEmailAddressNotAvailableError: 'Email is no longer available',\r\n\t\tFileDoesNotExistError: 'File does not exist',\r\n\t\tFileFormatNotSupportedError: 'File format is not supported',\r\n\t\tFileNameTooLongError: 'File name is too long',\r\n\t\tFileNotReadyError: 'File is not yet ready',\r\n\t\tFileSizeTooBigError: 'File size is too big',\r\n\t\tGameDoesNotExistError: 'Game does not exist',\r\n\t\tHasActiveBonusError: 'Account has active bonus',\r\n\t\tInsufficientPointsError: 'Insufficient points',\r\n\t\tInvalidPlatformError: 'Invalid platform',\r\n\t\tInvalidReCAPTCHAResponseError: 'Invalid reCAPTCHA',\r\n\t\tInvalidSMSVerificationCodeError: 'Invalid SMS verification code',\r\n\t\tInvalidTransactionPasswordError: 'Invalid transaction password',\r\n\t\tInvalidVerificationCodeError: 'Invalid verification code',\r\n\t\tInvalidWithdrawalAmountError: 'Invalid withdrawal amount',\r\n\t\tMaximumDepositAmountExceededError: 'Maximum deposit amount exceeded',\r\n\t\tMemberVerificationAlreadyApprovedError: 'Member verification is already approved',\r\n\t\tMemberVerificationAlreadyExistsError: 'Member verification already exists',\r\n\t\tMemberVerificationDoesNotExistError: 'Member verification does not exist',\r\n\t\tMinimumAgeRequirementError: 'Minimum age requirement not met',\r\n\t\tMinimumDepositAmountNotMetError: 'Minimum deposit amount not met',\r\n\t\tMinimumFirstDepositAmountNotMetError: 'Minimum first deposit amount not met',\r\n\t\tMobileNumberAlreadyVerifiedError: 'Mobile number is already verified',\r\n\t\tMobileNumberNotAvailableError: 'Mobile number is no longer available',\r\n\t\tMobileNumberNotVerifiedError: 'Mobile number is not verified',\r\n\t\tNickNameNotAvailableError: 'Nickname is no longer available',\r\n\t\tNotEnoughBalanceError: 'Insufficient balance',\r\n\t\tNotReadyToSendVerficationCodeError: 'Not ready to send verification code',\r\n\t\tPromoNotEnabledError: 'Promo is not enabled',\r\n\t\tRealNameAlreadySetError: 'Real name is already set',\r\n\t\tValidIdAlreadySetError: 'Valid ID is already set',\r\n\t\tWalletDoesNotExistError: 'Wallet does not exist',\r\n\t\tWithdrawalDailyLimitExceededError: 'Daily withdrawal limit exceeded',\r\n\t\tGameProviderError: 'Game provider error',\r\n\t\tGameSessionAlreadyClosedError: 'Game session is already closed',\r\n\t\tGameSessionDoesNotExistError: 'Game session does not exist',\r\n\r\n\t\tAccountBlacklisted: 'Account is blacklisted',\r\n\t\tAccountNotFound: 'Account not found',\r\n\t\tInvalidToken: 'Invalid token',\r\n\t\tInvalidTokenOrSecretAnswer: 'Invalid token or secret answer',\r\n\t\tSessionExpired: 'Session expired',\r\n\t};\r\n\r\n\treturn {\r\n\t\tname: code,\r\n\t\tmessage: messages[code],\r\n\t};\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tANNOUNCEMENTS_QUERY,\r\n\tCREATE_MEMBER_VERIFICATION_MUTATION,\r\n\tDELETE_MEMBER_ACCOUNT_MUTATION,\r\n\tMEMBER_ACCOUNT_QUERY,\r\n\tMEMBER_VERIFICATION_QUERY,\r\n\tPLATFORM_QUERY,\r\n\tPROFILE_COMPLETION_QUERY,\r\n\tREGISTER_MEMBER_ACCOUNT_MUTATION,\r\n\tRESET_PASSWORD_MUTATION,\r\n\tSEND_VERIFICATION_CODE_MUTATION,\r\n\tUPDATE_MEMBER_ACCOUNT_MUTATION,\r\n\tUPDATE_MEMBER_VERIFICATION_MUTATION,\r\n\tVERIFY_MOBILE_NUMBER_MUTATION,\r\n} from './queries';\r\nimport type {\r\n\tAnnouncement,\r\n\tAnnouncementsQuery,\r\n\tAnnouncementsQueryVariables,\r\n\tCreateMemberVerificationError,\r\n\tCreateMemberVerificationMutation,\r\n\tCreateMemberVerificationMutationVariables,\r\n\tDeleteMemberAccountMutation,\r\n\tDeleteMemberAccountMutationVariables,\r\n\tMemberAccount,\r\n\tMemberAccountQuery,\r\n\tMemberVerification,\r\n\tMemberVerificationQuery,\r\n\tPaginatedQueryResult,\r\n\tPlatform,\r\n\tPlatformQuery,\r\n\tProfileCompletion,\r\n\tProfileCompletionQuery,\r\n\tRegisterMemberAccountError,\r\n\tRegisterMemberAccountMutation,\r\n\tRegisterMemberAccountMutationVariables,\r\n\tResetPasswordError,\r\n\tResetPasswordMutation,\r\n\tResetPasswordMutationVariables,\r\n\tSendVerificationCodeError,\r\n\tSendVerificationCodeMutation,\r\n\tSendVerificationCodeMutationVariables,\r\n\tUpdateMemberAccountError,\r\n\tUpdateMemberAccountMutation,\r\n\tUpdateMemberAccountMutationVariables,\r\n\tUpdateMemberVerificationError,\r\n\tUpdateMemberVerificationMutation,\r\n\tUpdateMemberVerificationMutationVariables,\r\n\tVerifyMobileNumberError,\r\n\tVerifyMobileNumberMutation,\r\n\tVerifyMobileNumberMutationVariables,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class AccountService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\t/** aka `Query.self` */\r\n\tasync memberAccount(): Promise<OperationResult<never, MemberAccount>> {\r\n\t\tconst res = await this.client.request<MemberAccountQuery>(MEMBER_ACCOUNT_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.memberAccount,\r\n\t\t};\r\n\t}\r\n\r\n\tasync registerMemberAccount(\r\n\t\tvariables: RegisterMemberAccountMutationVariables,\r\n\t): Promise<OperationResult<RegisterMemberAccountError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRegisterMemberAccountMutation,\r\n\t\t\tRegisterMemberAccountMutationVariables\r\n\t\t>(REGISTER_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.registerMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.registerMemberAccount.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateMemberAccount(\r\n\t\tvariables: UpdateMemberAccountMutationVariables,\r\n\t): Promise<OperationResult<UpdateMemberAccountError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tUpdateMemberAccountMutation,\r\n\t\t\tUpdateMemberAccountMutationVariables\r\n\t\t>(UPDATE_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.updateMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.updateMemberAccount.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync deleteMemberAccount(\r\n\t\tvariables: DeleteMemberAccountMutationVariables,\r\n\t): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tDeleteMemberAccountMutation,\r\n\t\t\tDeleteMemberAccountMutationVariables\r\n\t\t>(DELETE_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.deleteMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync resetPassword(\r\n\t\tvariables: ResetPasswordMutationVariables,\r\n\t): Promise<OperationResult<ResetPasswordError>> {\r\n\t\tconst res = await this.client.request<ResetPasswordMutation, ResetPasswordMutationVariables>(\r\n\t\t\tRESET_PASSWORD_MUTATION,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.resetPassword) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.resetPassword.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync profileCompletion(): Promise<OperationResult<never, ProfileCompletion>> {\r\n\t\tconst res = await this.client.request<ProfileCompletionQuery>(PROFILE_COMPLETION_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.profileCompletion } : res;\r\n\t}\r\n\r\n\tasync platform(): Promise<OperationResult<never, Platform>> {\r\n\t\treturn await this.client.request<PlatformQuery>(PLATFORM_QUERY);\r\n\t}\r\n\r\n\tasync sendVerificationCode(\r\n\t\tvariables: SendVerificationCodeMutationVariables,\r\n\t): Promise<OperationResult<SendVerificationCodeError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tSendVerificationCodeMutation,\r\n\t\t\tSendVerificationCodeMutationVariables\r\n\t\t>(SEND_VERIFICATION_CODE_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.sendVerificationCode) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.sendVerificationCode.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync verifyMobileNumber(\r\n\t\tvariables: VerifyMobileNumberMutationVariables,\r\n\t): Promise<OperationResult<VerifyMobileNumberError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tVerifyMobileNumberMutation,\r\n\t\t\tVerifyMobileNumberMutationVariables\r\n\t\t>(VERIFY_MOBILE_NUMBER_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.verifyMobileNumber) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.verifyMobileNumber.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMemberVerification(\r\n\t\tvariables: CreateMemberVerificationMutationVariables,\r\n\t): Promise<OperationResult<CreateMemberVerificationError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMemberVerificationMutation,\r\n\t\t\tCreateMemberVerificationMutationVariables\r\n\t\t>(CREATE_MEMBER_VERIFICATION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMemberVerification) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMemberVerification.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateMemberVerification(\r\n\t\tvariables: UpdateMemberVerificationMutationVariables,\r\n\t): Promise<OperationResult<UpdateMemberVerificationError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tUpdateMemberVerificationMutation,\r\n\t\t\tUpdateMemberVerificationMutationVariables\r\n\t\t>(UPDATE_MEMBER_VERIFICATION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.updateMemberVerification) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.updateMemberVerification.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync memberVerification(): Promise<\r\n\t\tOperationResult<never, MemberVerification | null | undefined>\r\n\t> {\r\n\t\tconst res = await this.client.request<MemberVerificationQuery>(MEMBER_VERIFICATION_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.memberAccount.verification,\r\n\t\t};\r\n\t}\r\n\r\n\tasync announcements(\r\n\t\tvariables?: AnnouncementsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Announcement>>> {\r\n\t\tconst res = await this.client.request<AnnouncementsQuery, AnnouncementsQueryVariables>(\r\n\t\t\tANNOUNCEMENTS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.announcements,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { HttpError, OperationError } from './types';\r\n\r\nexport function statusCodeToOperationError(\r\n\tvalue: number,\r\n\tmessage?: string,\r\n): OperationError<HttpError> {\r\n\tconst e = ERROR_MAP[value] ? ERROR_MAP[value] : ERROR_MAP[500];\r\n\r\n\treturn {\r\n\t\tname: e.name,\r\n\t\tmessage: message ?? e.message,\r\n\t};\r\n}\r\n\r\nconst ERROR_MAP: Record<number, OperationError<HttpError>> = {\r\n\t400: { name: 'HttpBadRequest', message: 'Bad Request' },\r\n\t401: { name: 'HttpUnauthorized', message: 'Unauthorized' },\r\n\t403: { name: 'HttpForbidden', message: 'Forbidden' },\r\n\t404: { name: 'HttpNotFound', message: 'Not Found' },\r\n\t408: { name: 'HttpRequestTimeout', message: 'Request Timeout' },\r\n\t429: { name: 'HttpTooManyRequests', message: 'Too Many Requests' },\r\n\t500: { name: 'HttpInternalServerError', message: 'Internal Server Error' },\r\n};\r\n","import { statusCodeToOperationError } from '../utils/status-code-to-operation-error';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tAuthenticateError,\r\n\tAuthenticateInput,\r\n\tAuthenticateMutation,\r\n\tCreateSessionError,\r\n\tCreateSessionInput,\r\n\tCreateSessionMutation,\r\n\tRefreshSessionError,\r\n\tRefreshSessionMutation,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport interface AuthServiceConfig {\r\n\turl: string;\r\n\tplatform: string;\r\n}\r\n\r\nexport class AuthService {\r\n\tprivate url: string;\r\n\tprivate platform: string;\r\n\r\n\tconstructor(config: AuthServiceConfig) {\r\n\t\tthis.url = config.url;\r\n\t\tthis.platform = config.platform;\r\n\t}\r\n\r\n\tasync createSession(\r\n\t\tinput: CreateSessionInput,\r\n\t): Promise<OperationResult<CreateSessionError, CreateSessionMutation>> {\r\n\t\tconst headers = new Headers({\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t\t'Platform-Code': this.platform,\r\n\t\t\tRole: 'MEMBER',\r\n\t\t});\r\n\r\n\t\tif (input.name) {\r\n\t\t\tconst data = `${input.name}:${input.password}`;\r\n\t\t\tconst token = Buffer.from(data).toString('base64');\r\n\r\n\t\t\theaders.set('Authorization', `Basic ${token}`);\r\n\t\t}\r\n\r\n\t\tif (input.mobileNumber) {\r\n\t\t\tconst data = `${input.mobileNumber}:${input.verificationCode}`;\r\n\t\t\tconst token = Buffer.from(data).toString('base64');\r\n\r\n\t\t\theaders.set('Authorization', `MobileNumberOTP ${token}`);\r\n\t\t}\r\n\r\n\t\tif (input.sessionId) {\r\n\t\t\theaders.set('Authorization', `Maya ${input.sessionId}`);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/sessions`, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders,\r\n\t\t\t});\r\n\r\n\t\t\tconst data = await res.json();\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'ACCOUNT_BLACKLISTED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountBlacklisted'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync authenticate(\r\n\t\tinput: AuthenticateInput,\r\n\t): Promise<OperationResult<AuthenticateError, AuthenticateMutation>> {\r\n\t\tconst headers = new Headers({\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t\t'Platform-Code': this.platform,\r\n\t\t\tRole: 'MEMBER',\r\n\t\t});\r\n\r\n\t\tif (input.type === 'SECURITY_QUESTION') {\r\n\t\t\theaders.set('Authorization', `Bearer ${input.token}`);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await fetch(`${this.url}/session/${input.token}/authenticate`, {\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\theaders,\r\n\t\t\t\t\tbody: JSON.stringify({\r\n\t\t\t\t\t\tsecretAnswer: input.secretAnswer,\r\n\t\t\t\t\t}),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst data = await res.json();\r\n\r\n\t\t\t\tif (res.ok) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\tdata,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (res.status === 401 || res.status === 403) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\terror: createOperationError('InvalidTokenOrSecretAnswer'),\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t\t};\r\n\t\t\t} catch {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"Invalid input 'type'\");\r\n\t}\r\n\r\n\tasync refreshSession(\r\n\t\trefreshToken: string,\r\n\t): Promise<OperationResult<RefreshSessionError, RefreshSessionMutation>> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session:refresh`, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${refreshToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tconst data = await res.json();\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'ACCOUNT_BLACKLISTED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountBlacklisted'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (res.status === 403 || res.status === 401) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('InvalidToken'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync destroySession(accessToken: string): Promise<OperationResult> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session`, {\r\n\t\t\t\tmethod: 'DELETE',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${accessToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn res.ok ? { ok: true } : { ok: false, error: statusCodeToOperationError(res.status) };\r\n\t\t} catch {\r\n\t\t\treturn { ok: false, error: statusCodeToOperationError(500) };\r\n\t\t}\r\n\t}\r\n\r\n\tasync verifySession(accessToken: string) {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session`, {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${accessToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn res.ok;\r\n\t\t} catch {\r\n\t\t\t/*\r\n\t\t\t * For network or unknown errors fallback to true\r\n\t\t\t * so users don't get logged out\r\n\t\t\t */\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport { FILE_QUERY, UPLOAD_PRIVATE_IMAGE_FILE_MUTATION } from './queries';\r\nimport type {\r\n\tFile,\r\n\tFileQuery,\r\n\tFileQueryVariables,\r\n\tUploadPrivateImageFileError,\r\n\tUploadPrivateImageFileMutation,\r\n\tUploadPrivateImageFileMutationVariables,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class FileService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync file(\r\n\t\tvariables: FileQueryVariables,\r\n\t): Promise<OperationResult<never, File | null | undefined>> {\r\n\t\tconst res = await this.client.request<FileQuery, FileQueryVariables>(FILE_QUERY, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.node,\r\n\t\t};\r\n\t}\r\n\r\n\tasync uploadPrivateImageFile(\r\n\t\tvariables: UploadPrivateImageFileMutationVariables,\r\n\t): Promise<OperationResult<UploadPrivateImageFileError>> {\r\n\t\tconst res = await this.client.upload<\r\n\t\t\tUploadPrivateImageFileMutation,\r\n\t\t\tUploadPrivateImageFileMutationVariables\r\n\t\t>(UPLOAD_PRIVATE_IMAGE_FILE_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.uploadPrivateImageFile) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.uploadPrivateImageFile.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tBET_RECORDS_QUERY,\r\n\tDEPOSITS_COUNT_QUERY,\r\n\tDEPOSIT_RECORDS_QUERY,\r\n\tMEMBER_QUERY,\r\n\tTRANSACTION_RECORDS_QUERY,\r\n\tWITHDRAWAL_RECORDS_QUERY,\r\n} from './queries';\r\nimport type {\r\n\tBetRecord,\r\n\tBetRecordsQuery,\r\n\tBetRecordsQueryVariables,\r\n\tDepositRecord,\r\n\tDepositRecordsQuery,\r\n\tDepositRecordsQueryVariables,\r\n\tDepositsCountQuery,\r\n\tMember,\r\n\tMemberQuery,\r\n\tPaginatedQueryResult,\r\n\tTransactionRecord,\r\n\tTransactionRecordsQuery,\r\n\tTransactionRecordsQueryVariables,\r\n\tWithdrawalRecord,\r\n\tWithdrawalRecordsQuery,\r\n\tWithdrawalRecordsQueryVariables,\r\n} from './types';\r\n\r\nexport class ReportService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync betRecords(\r\n\t\tvariables?: BetRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<BetRecord>>> {\r\n\t\tconst res = await this.client.request<BetRecordsQuery, BetRecordsQueryVariables>(\r\n\t\t\tBET_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.betRecords } : res;\r\n\t}\r\n\r\n\tasync transactionRecords(\r\n\t\tvariables?: TransactionRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<TransactionRecord>>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tTransactionRecordsQuery,\r\n\t\t\tTransactionRecordsQueryVariables\r\n\t\t>(TRANSACTION_RECORDS_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.transactionRecords } : res;\r\n\t}\r\n\r\n\tasync withdrawalRecords(\r\n\t\tvariables?: WithdrawalRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<WithdrawalRecord>>> {\r\n\t\tconst res = await this.client.request<WithdrawalRecordsQuery, WithdrawalRecordsQueryVariables>(\r\n\t\t\tWITHDRAWAL_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.withdrawalRecords } : res;\r\n\t}\r\n\r\n\tasync depositRecords(\r\n\t\tvariables?: DepositRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<DepositRecord>>> {\r\n\t\tconst res = await this.client.request<DepositRecordsQuery, DepositRecordsQueryVariables>(\r\n\t\t\tDEPOSIT_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.depositRecords } : res;\r\n\t}\r\n\r\n\tasync depositsCount(): Promise<OperationResult<never, number>> {\r\n\t\tconst res = await this.client.request<DepositsCountQuery>(DEPOSITS_COUNT_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.depositsCount } : res;\r\n\t}\r\n\r\n\tasync member(): Promise<OperationResult<never, Member>> {\r\n\t\tconst res = await this.client.request<MemberQuery>(MEMBER_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member } : res;\r\n\t}\r\n}\r\n","interface StaticServiceConfig {\r\n\turl: string;\r\n}\r\n\r\nexport class StaticService {\r\n\tprivate url: string;\r\n\r\n\tconstructor(config: StaticServiceConfig) {\r\n\t\tthis.url = config.url;\r\n\t}\r\n\r\n\tgameThumbnails<\r\n\t\tT extends {\r\n\t\t\tid: string;\r\n\t\t\tprovider: string;\r\n\t\t},\r\n\t>(args: T) {\r\n\t\treturn [\r\n\t\t\t`${this.url}/images/${args.provider.toLowerCase()}/thumbnail-${args.id}.webp`,\r\n\t\t\t`${this.url}/images/${args.provider.toLowerCase()}/thumbnail-${args.provider.toLowerCase()}.webp`,\r\n\t\t];\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tAVAILABLE_PROMOS_QUERY,\r\n\tBONUS_QUERY,\r\n\tCASHBACK_BONUSES_QUERY,\r\n\tCASHBACKS_QUERY,\r\n\tCLAIM_CASHBACK_BONUS_MUTATION,\r\n\tCREATE_BANK_WITHDRAWAL_MUTATION,\r\n\tCREATE_GAME_SESSION_MUTATION,\r\n\tCREATE_GCASH_DEPOSIT_MUTATION,\r\n\tCREATE_GCASH_WITHDRAWAL_MUTATION,\r\n\tCREATE_MAYA_APP_DEPOSIT_MUTATION,\r\n\tCREATE_MAYA_APP_WITHDRAWAL_MUTATION,\r\n\tCREATE_MAYA_DEPOSIT_MUTATION,\r\n\tCREATE_MAYA_WITHDRAWAL_MUTATION,\r\n\tDEPOSIT_QUERY,\r\n\tEND_GAME_SESSION_MUTATION,\r\n\tGAME_SESSION_QUERY,\r\n\tGAMES_BY_NAME_QUERY,\r\n\tGAMES_QUERY,\r\n\tMAYA_SESSION_QUERY,\r\n\tPOINTS_TO_CASH_CONVERSION_MUTATION,\r\n\tPOINTS_WALLET_QUERY,\r\n\tPROMOS_QUERY,\r\n\tREMAINING_DAILY_WITHDRAWALS_COUNT_QUERY,\r\n\tWALLET_QUERY,\r\n} from './queries';\r\nimport type {\r\n\tAvailablePromosQuery,\r\n\tAvailablePromosQueryVariables,\r\n\tBonus,\r\n\tBonusQuery,\r\n\tCashback,\r\n\tCashbackBonus,\r\n\tCashbackBonusesQuery,\r\n\tCashbacksQuery,\r\n\tClaimCashbackBonusError,\r\n\tClaimCashbackBonusMutation,\r\n\tClaimCashbackBonusMutationVariables,\r\n\tCreateBankWithdrawalMutation,\r\n\tCreateBankWithdrawalMutationVariables,\r\n\tCreateDepositError,\r\n\tCreateGameSessionError,\r\n\tCreateGameSessionMutation,\r\n\tCreateGameSessionMutationVariables,\r\n\tCreateGCashDepositMutation,\r\n\tCreateGCashDepositMutationVariables,\r\n\tCreateGCashWithdrawalMutation,\r\n\tCreateGCashWithdrawalMutationVariables,\r\n\tCreateMayaAppDepositMutation,\r\n\tCreateMayaAppDepositMutationVariables,\r\n\tCreateMayaAppWithdrawalMutation,\r\n\tCreateMayaAppWithdrawalMutationVariables,\r\n\tCreateMayaDepositMutation,\r\n\tCreateMayaDepositMutationVariables,\r\n\tCreateMayaWithdrawalMutation,\r\n\tCreateMayaWithdrawalMutationVariables,\r\n\tCreateWithdrawalError,\r\n\tDeposit,\r\n\tDepositQuery,\r\n\tDepositQueryVariables,\r\n\tEndGameSessionMutation,\r\n\tEndGameSessionMutationVariables,\r\n\tGame,\r\n\tGamesByNameQuery,\r\n\tGamesByNameQueryVariables,\r\n\tGameSession,\r\n\tGameSessionQuery,\r\n\tGameSessionQueryVariables,\r\n\tGamesQuery,\r\n\tGamesQueryVariables,\r\n\tMayaSession,\r\n\tMayaSessionQuery,\r\n\tMayaSessionQueryVariables,\r\n\tPaginatedQueryResult,\r\n\tPointsToCashConversionError,\r\n\tPointsToCashConversionMutation,\r\n\tPointsToCashConversionMutationVariables,\r\n\tPointsWallet,\r\n\tPointsWalletQuery,\r\n\tPromo,\r\n\tPromosQuery,\r\n\tRemainingDailyWithdrawalsCountQuery,\r\n\tWallet,\r\n\tWalletQuery,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class WalletService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync promos(): Promise<OperationResult<never, Promo[]>> {\r\n\t\tconst res = await this.client.request<PromosQuery>(PROMOS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.promos } : res;\r\n\t}\r\n\r\n\tasync cashbacks(): Promise<OperationResult<never, Cashback[]>> {\r\n\t\tconst res = await this.client.request<CashbacksQuery>(CASHBACKS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.cashbacks } : res;\r\n\t}\r\n\r\n\tasync availablePromos(\r\n\t\tvariables?: AvailablePromosQueryVariables,\r\n\t): Promise<OperationResult<never, Promo[]>> {\r\n\t\tconst res = await this.client.request<AvailablePromosQuery, AvailablePromosQueryVariables>(\r\n\t\t\tAVAILABLE_PROMOS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.availablePromos } : res;\r\n\t}\r\n\r\n\tasync cashbackBonuses(): Promise<OperationResult<never, CashbackBonus[]>> {\r\n\t\tconst res = await this.client.request<CashbackBonusesQuery>(CASHBACK_BONUSES_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.cashbackBonuses } : res;\r\n\t}\r\n\r\n\tasync claimCashbackBonus(\r\n\t\tvariables: ClaimCashbackBonusMutationVariables,\r\n\t): Promise<OperationResult<ClaimCashbackBonusError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tClaimCashbackBonusMutation,\r\n\t\t\tClaimCashbackBonusMutationVariables\r\n\t\t>(CLAIM_CASHBACK_BONUS_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) {\r\n\t\t\treturn {\r\n\t\t\t\tok: res.ok,\r\n\t\t\t\terror: res.error,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (res.data.claimCashbackBonus) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.claimCashbackBonus.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync bonus(): Promise<OperationResult<never, Bonus | null | undefined>> {\r\n\t\tconst res = await this.client.request<BonusQuery>(BONUS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.bonus } : res;\r\n\t}\r\n\r\n\tasync wallet(): Promise<OperationResult<never, Wallet | null | undefined>> {\r\n\t\tconst res = await this.client.request<WalletQuery>(WALLET_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.wallet } : res;\r\n\t}\r\n\r\n\tasync deposit(\r\n\t\tvariables: DepositQueryVariables,\r\n\t): Promise<OperationResult<never, Deposit | null | undefined>> {\r\n\t\tconst res = await this.client.request<DepositQuery, DepositQueryVariables>(\r\n\t\t\tDEPOSIT_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync createGCashDeposit(\r\n\t\tvariables: CreateGCashDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGCashDepositMutation,\r\n\t\t\tCreateGCashDepositMutationVariables\r\n\t\t>(CREATE_GCASH_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGCashDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGCashDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaDeposit(\r\n\t\tvariables: CreateMayaDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaDepositMutation,\r\n\t\t\tCreateMayaDepositMutationVariables\r\n\t\t>(CREATE_MAYA_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaAppDeposit(\r\n\t\tvariables: CreateMayaAppDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaAppDepositMutation,\r\n\t\t\tCreateMayaAppDepositMutationVariables\r\n\t\t>(CREATE_MAYA_APP_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaAppDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaAppDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createGCashWithdrawal(\r\n\t\tvariables: CreateGCashWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGCashWithdrawalMutation,\r\n\t\t\tCreateGCashWithdrawalMutationVariables\r\n\t\t>(CREATE_GCASH_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGCashWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGCashWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaWithdrawal(\r\n\t\tvariables: CreateMayaWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaWithdrawalMutation,\r\n\t\t\tCreateMayaWithdrawalMutationVariables\r\n\t\t>(CREATE_MAYA_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaAppWithdrawal(\r\n\t\tvariables: CreateMayaAppWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaAppWithdrawalMutation,\r\n\t\t\tCreateMayaAppWithdrawalMutationVariables\r\n\t\t>(CREATE_MAYA_APP_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaAppWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaAppWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createBankWithdrawal(\r\n\t\tvariables: CreateBankWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateBankWithdrawalMutation,\r\n\t\t\tCreateBankWithdrawalMutationVariables\r\n\t\t>(CREATE_BANK_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createBankWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createBankWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync remainingDailyWithdrawalsCount(): Promise<OperationResult<never, number>> {\r\n\t\tconst res = await this.client.request<RemainingDailyWithdrawalsCountQuery>(\r\n\t\t\tREMAINING_DAILY_WITHDRAWALS_COUNT_QUERY,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.remainingDailyWithdrawalsCount } : res;\r\n\t}\r\n\r\n\tasync pointsWallet(): Promise<OperationResult<never, PointsWallet | null | undefined>> {\r\n\t\tconst res = await this.client.request<PointsWalletQuery>(POINTS_WALLET_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.pointsWallet } : res;\r\n\t}\r\n\r\n\tasync pointsToCashConversion(\r\n\t\tvariables: PointsToCashConversionMutationVariables,\r\n\t): Promise<OperationResult<PointsToCashConversionError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tPointsToCashConversionMutation,\r\n\t\t\tPointsToCashConversionMutationVariables\r\n\t\t>(POINTS_TO_CASH_CONVERSION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.pointsToCashConversion) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.pointsToCashConversion.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync mayaSession(\r\n\t\tvariables: MayaSessionQueryVariables,\r\n\t): Promise<OperationResult<never, MayaSession | null | undefined>> {\r\n\t\tconst res = await this.client.request<MayaSessionQuery, MayaSessionQueryVariables>(\r\n\t\t\tMAYA_SESSION_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.mayaSession } : res;\r\n\t}\r\n\r\n\tasync games(\r\n\t\tvariables?: GamesQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Game>>> {\r\n\t\tconst res = await this.client.request<GamesQuery, GamesQueryVariables>(GAMES_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.games } : res;\r\n\t}\r\n\r\n\tasync gamesByName(variables?: GamesByNameQueryVariables) {\r\n\t\tconst res = await this.client.request<GamesByNameQuery, GamesQueryVariables>(\r\n\t\t\tGAMES_BY_NAME_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.gamesByName } : res;\r\n\t}\r\n\r\n\tasync gameSession(\r\n\t\tvariables: GameSessionQueryVariables,\r\n\t): Promise<OperationResult<never, GameSession | null | undefined>> {\r\n\t\tconst res = await this.client.request<GameSessionQuery, GameSessionQueryVariables>(\r\n\t\t\tGAME_SESSION_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync createGameSession(\r\n\t\tvariables: CreateGameSessionMutationVariables,\r\n\t): Promise<OperationResult<CreateGameSessionError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGameSessionMutation,\r\n\t\t\tCreateGameSessionMutationVariables\r\n\t\t>(CREATE_GAME_SESSION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGameSession.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync endGameSession(variables: EndGameSessionMutationVariables): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<EndGameSessionMutation, EndGameSessionMutationVariables>(\r\n\t\t\tEND_GAME_SESSION_MUTATION,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.endGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n}\r\n","import { statusCodeToOperationError } from '../utils/status-code-to-operation-error';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tGame,\r\n\tGameQuery__Next,\r\n\tGamesQuery__Next,\r\n\tGamesQueryVariables,\r\n\tPaginatedQueryResult,\r\n\tSite,\r\n\tSiteQuery,\r\n} from './types';\r\n\r\nexport interface CmsPortalServiceConfig {\r\n\turl: string;\r\n\tsite: string;\r\n\tplatform: string;\r\n}\r\n\r\nexport class CmsPortalService {\r\n\tprivate url: string;\r\n\tprivate siteId: string;\r\n\tprivate platformId: string;\r\n\r\n\tconstructor(config: CmsPortalServiceConfig) {\r\n\t\tthis.url = config.url;\r\n\t\tthis.siteId = config.site;\r\n\t\tthis.platformId = config.platform;\r\n\t}\r\n\r\n\tasync siteInfo(): Promise<OperationResult<never, Site>> {\r\n\t\tconst request = new Request(`${this.url}/sites/${this.siteId}`, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: 'application/json',\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t'Platform-ID': this.platformId,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch(request);\r\n\r\n\t\t\tif (!response.ok) return { ok: false, error: statusCodeToOperationError(response.status) };\r\n\r\n\t\t\tconst { data }: SiteQuery = await response.json();\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync games(\r\n\t\tvariables?: GamesQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Game>>> {\r\n\t\tconst search = new URLSearchParams();\r\n\r\n\t\tif (variables?.first) search.set('first', variables.first.toString());\r\n\t\tif (variables?.after) search.set('after', variables.after);\r\n\r\n\t\tif (variables?.filter?.name?.equal) search.set('filter[name][eq]', variables.filter.name.equal);\r\n\t\tif (variables?.filter?.name?.notEqual)\r\n\t\t\tsearch.set('filter[name][neq]', variables.filter.name.notEqual);\r\n\t\tif (variables?.filter?.name?.in)\r\n\t\t\tsearch.set('filter[name][in]', variables.filter.name.in.join(','));\r\n\t\tif (variables?.filter?.name?.notIn)\r\n\t\t\tsearch.set('filter[name][nin]', variables.filter.name.notIn.join(','));\r\n\t\tif (variables?.filter?.name?.contains)\r\n\t\t\tsearch.set('filter[name][contains]', variables.filter.name.contains);\r\n\r\n\t\tif (variables?.filter?.type?.equal) search.set('filter[type][eq]', variables.filter.type.equal);\r\n\t\tif (variables?.filter?.type?.notEqual)\r\n\t\t\tsearch.set('filter[type][neq]', variables.filter.type.notEqual);\r\n\t\tif (variables?.filter?.type?.in)\r\n\t\t\tsearch.set('filter[type][in]', variables.filter.type.in.join(','));\r\n\t\tif (variables?.filter?.type?.notIn)\r\n\t\t\tsearch.set('filter[type][nin]', variables.filter.type.notIn.join(','));\r\n\r\n\t\tif (variables?.filter?.provider?.equal)\r\n\t\t\tsearch.set('filter[provider][eq]', variables.filter.provider.equal);\r\n\t\tif (variables?.filter?.provider?.notEqual)\r\n\t\t\tsearch.set('filter[provider][neq]', variables.filter.provider.notEqual);\r\n\t\tif (variables?.filter?.provider?.in)\r\n\t\t\tsearch.set('filter[provider][in]', variables.filter.provider.in.join(','));\r\n\t\tif (variables?.filter?.provider?.notIn)\r\n\t\t\tsearch.set('filter[provider][nin]', variables.filter.provider.notIn.join(','));\r\n\r\n\t\tconst request = new Request(`${this.url}/games?${search.toString()}`, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: 'application/json',\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t'Site-ID': this.siteId,\r\n\t\t\t\t'Platform-ID': this.platformId,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch(request);\r\n\r\n\t\t\tif (!response.ok) return { ok: false, error: statusCodeToOperationError(response.status) };\r\n\r\n\t\t\tconst data: GamesQuery__Next = await response.json();\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tedges: data.data.map((node) => ({\r\n\t\t\t\t\t\tnode,\r\n\t\t\t\t\t\tcursor: node.cursor,\r\n\t\t\t\t\t})),\r\n\t\t\t\t\tpageInfo: {\r\n\t\t\t\t\t\thasNextPage: Boolean(data.next),\r\n\t\t\t\t\t\tendCursor: data.next,\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttotalCount: data.totalCount,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync game(id: string): Promise<OperationResult<never, Game | null | undefined>> {\r\n\t\tconst request = new Request(`${this.url}/games/${id}`, {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: 'application/json',\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t'Site-ID': this.siteId,\r\n\t\t\t\t'Platform-ID': this.platformId,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch(request);\r\n\r\n\t\t\tif (response.status === 404) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata: null,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (!response.ok) return { ok: false, error: statusCodeToOperationError(response.status) };\r\n\r\n\t\t\tconst { data }: GameQuery__Next = await response.json();\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tCREATE_GAME_SESSION_MUTATION,\r\n\tEND_GAME_SESSION_MUTATION__LEGACY,\r\n\tGAME_SESSION_QUERY_LEGACY,\r\n\tGAMES_BY_NAME_QUERY,\r\n\tGAMES_QUERY,\r\n} from './queries';\r\nimport type {\r\n\tCreateGameSessionError,\r\n\tCreateGameSessionMutation,\r\n\tCreateGameSessionMutationVariables,\r\n\tEndGameSessionError__Legacy,\r\n\tEndGameSessionMutation__Legacy,\r\n\tEndGameSessionMutationVariables,\r\n\tGame,\r\n\tGamesByNameQuery,\r\n\tGamesByNameQueryVariables,\r\n\tGameSession__Legacy,\r\n\tGameSessionQuery__Legacy,\r\n\tGameSessionQueryVariables,\r\n\tGamesQuery,\r\n\tGamesQueryVariables,\r\n\tPaginatedQueryResult,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class GameService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync games(\r\n\t\tvariables?: GamesQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Game>>> {\r\n\t\tconst res = await this.client.request<GamesQuery, GamesQueryVariables>(GAMES_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.games } : res;\r\n\t}\r\n\r\n\tasync gamesByName(variables?: GamesByNameQueryVariables) {\r\n\t\tconst res = await this.client.request<GamesByNameQuery, GamesQueryVariables>(\r\n\t\t\tGAMES_BY_NAME_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.gamesByName } : res;\r\n\t}\r\n\r\n\tasync gameSession(\r\n\t\tvariables: GameSessionQueryVariables,\r\n\t): Promise<OperationResult<never, GameSession__Legacy | null | undefined>> {\r\n\t\tconst res = await this.client.request<GameSessionQuery__Legacy, GameSessionQueryVariables>(\r\n\t\t\tGAME_SESSION_QUERY_LEGACY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync createGameSession(\r\n\t\tvariables: CreateGameSessionMutationVariables,\r\n\t): Promise<OperationResult<CreateGameSessionError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGameSessionMutation,\r\n\t\t\tCreateGameSessionMutationVariables\r\n\t\t>(CREATE_GAME_SESSION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGameSession.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync endGameSession(\r\n\t\tvariables: EndGameSessionMutationVariables,\r\n\t): Promise<OperationResult<EndGameSessionError__Legacy>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tEndGameSessionMutation__Legacy,\r\n\t\t\tEndGameSessionMutationVariables\r\n\t\t>(END_GAME_SESSION_MUTATION__LEGACY, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.endGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.endGameSession.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport { LATEST_BET_RECORDS_QUERY } from './queries';\r\nimport type { LatestBetRecord, LatestBetRecordsQuery } from './types';\r\n\r\nexport class PortalService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync latestBetRecords(): Promise<OperationResult<never, LatestBetRecord[]>> {\r\n\t\tconst res = await this.client.request<LatestBetRecordsQuery>(LATEST_BET_RECORDS_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.latestBetRecords,\r\n\t\t};\r\n\t}\r\n}\r\n","export function clamp(value: number, min: number, max: number) {\r\n\tif (value < min) return min;\r\n\tif (value > max) return max;\r\n\treturn value;\r\n}\r\n","export function isPlainObject(value: unknown): value is Record<string, any> {\r\n\treturn Object.prototype.toString.call(value) === '[object Object]' && Object(value) === value;\r\n}\r\n","import { isPlainObject } from './is-plain-object';\r\n\r\nexport function flatten(value: Record<string, any> | any[]) {\r\n\tconst result: {\r\n\t\tkey: string[];\r\n\t\tvalue: any;\r\n\t}[] = [];\r\n\r\n\tfunction fn(o: Record<string, any>, parentKeys: string[] = []) {\r\n\t\tfor (const k in o) {\r\n\t\t\tconst v = o[k];\r\n\r\n\t\t\tif (isPlainObject(v)) {\r\n\t\t\t\tfn(v, [...parentKeys, k]);\r\n\t\t\t} else if (Array.isArray(v)) {\r\n\t\t\t\tfn(arrayToObject(v), [...parentKeys, k]);\r\n\t\t\t} else {\r\n\t\t\t\tresult.push({\r\n\t\t\t\t\tkey: [...parentKeys, k],\r\n\t\t\t\t\tvalue: v,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfn(value);\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction arrayToObject(array: unknown[]) {\r\n\treturn array.reduce<Record<string, any>>((o, v, i) => {\r\n\t\to[i] = v;\r\n\t\treturn o;\r\n\t}, {});\r\n}\r\n","import { flatten } from './flatten';\r\nimport { statusCodeToOperationError } from './status-code-to-operation-error';\r\nimport type { GenericObject, OperationResult } from './types';\r\n\r\ntype ModifiableKey =\r\n\t| 'mode'\r\n\t| 'cache'\r\n\t| 'signal'\r\n\t| 'headers'\r\n\t| 'integrity'\r\n\t| 'keepalive'\r\n\t| 'credentials';\r\n\r\ntype Modifiable = {\r\n\t[K in ModifiableKey]: Request[K];\r\n};\r\n\r\nexport interface ModifiedRequest extends Readonly<Omit<Request, ModifiableKey>>, Modifiable {}\r\n\r\nexport type GraphQLClientMiddleware = (\r\n\trequest: ModifiedRequest,\r\n) => ModifiedRequest | Promise<ModifiedRequest>;\r\n\r\nexport interface GraphQLClientFetchOptions extends Omit<RequestInit, 'body' | 'method'> {}\r\n\r\nexport interface GraphQLClientConfig {\r\n\tmiddlewares?: GraphQLClientMiddleware[];\r\n\tfetchOptions?: GraphQLClientFetchOptions;\r\n}\r\n\r\n/* ref: https://www.apollographql.com/docs/apollo-server/data/errors/#graphql_parse_failed */\r\ntype GraphQLErrorExtensionCode =\r\n\t| 'FORBIDDEN'\r\n\t| 'UNAUTHORIZED'\r\n\t| 'BAD_REQUEST'\r\n\t| 'BAD_USER_INPUT'\r\n\t| 'INTERNAL_SERVER_ERROR'\r\n\t| 'ACCESS_TOKEN_EXPIRED';\r\n\r\ninterface GraphQLErrorExtensions {\r\n\tcode: GraphQLErrorExtensionCode;\r\n\tstacktrace: string[];\r\n}\r\n\r\ninterface GraphQLErrorLocation {\r\n\tline: number;\r\n\tcolumn: number;\r\n}\r\n\r\ninterface GraphQLError {\r\n\tpath: string[];\r\n\tmessage?: string;\r\n\textensions?: GraphQLErrorExtensions;\r\n\tlocations: GraphQLErrorLocation[];\r\n}\r\n\r\nexport class GraphQLClient {\r\n\tprivate url: string;\r\n\tprivate options: GraphQLClientFetchOptions;\r\n\tprivate middlewares: GraphQLClientMiddleware[];\r\n\r\n\tconstructor(url: string, config?: GraphQLClientConfig) {\r\n\t\tconst headers = new Headers(config?.fetchOptions?.headers);\r\n\r\n\t\tthis.url = url;\r\n\t\tthis.options = { ...config?.fetchOptions, headers };\r\n\t\tthis.middlewares = config?.middlewares ?? [];\r\n\t}\r\n\r\n\tasync request<Data, Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables?: Variables,\r\n\t) {\r\n\t\tconst body = JSON.stringify({ query, variables });\r\n\t\tconst headers = new Headers(this.options.headers);\r\n\r\n\t\theaders.set('Content-Type', 'application/json');\r\n\t\theaders.set('Accept', 'application/json');\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(this.url, {\r\n\t\t\t\t...this.options,\r\n\t\t\t\tbody,\r\n\t\t\t\theaders,\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn await this.exec<Data>(req);\r\n\t}\r\n\r\n\t/** Single file upload */\r\n\tasync upload<Data, Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables: Variables,\r\n\t) {\r\n\t\tconst body = this.createUploadBody(query, variables);\r\n\t\tconst headers = new Headers(this.options.headers);\r\n\r\n\t\theaders.delete('Content-Type');\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(this.url, {\r\n\t\t\t\t...this.options,\r\n\t\t\t\tbody,\r\n\t\t\t\theaders,\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn await this.exec<Data>(req);\r\n\t}\r\n\r\n\tprivate async exec<T>(request: Request): Promise<OperationResult<never, T>> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(request);\r\n\r\n\t\t\tif (!res.ok) {\r\n\t\t\t\treturn { ok: false, error: statusCodeToOperationError(res.status) };\r\n\t\t\t}\r\n\r\n\t\t\tconst json = await res.json();\r\n\t\t\tconst data = json.data;\r\n\t\t\tconst error = json.errors?.at(0) as GraphQLError | undefined;\r\n\r\n\t\t\tif (error) {\r\n\t\t\t\tif (\r\n\t\t\t\t\terror.extensions?.code === 'FORBIDDEN' ||\r\n\t\t\t\t\terror.extensions?.code === 'ACCESS_TOKEN_EXPIRED'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(403, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (error.extensions?.code === 'UNAUTHORIZED') {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(401, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\terror.extensions?.code === 'BAD_USER_INPUT' ||\r\n\t\t\t\t\terror.extensions?.code === 'BAD_REQUEST'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(400, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Fallback for unknown error codes */\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(500, error.message),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async runMiddlewares(req: ModifiedRequest): Promise<ModifiedRequest> {\r\n\t\tlet result = req.clone();\r\n\r\n\t\tfor (const middleware of this.middlewares) {\r\n\t\t\tresult = await middleware(result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate createUploadBody<Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables: Variables,\r\n\t) {\r\n\t\tconst files = flatten(variables).filter(\r\n\t\t\t(o) => o.value instanceof File || o.value instanceof Blob,\r\n\t\t);\r\n\r\n\t\tconst body = new FormData();\r\n\r\n\t\tbody.append(\r\n\t\t\t'operations',\r\n\t\t\tJSON.stringify({\r\n\t\t\t\tquery,\r\n\t\t\t\tvariables,\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tconst map: GenericObject = {};\r\n\r\n\t\tfiles.forEach((o, i) => {\r\n\t\t\tmap[i.toString()] = [`variables.${o.key.join('.')}`];\r\n\t\t});\r\n\r\n\t\tbody.append('map', JSON.stringify(map));\r\n\r\n\t\tfiles.forEach((o, i) => {\r\n\t\t\tbody.append(i.toString(), o.value);\r\n\t\t});\r\n\r\n\t\treturn body;\r\n\t}\r\n}\r\n","export async function sha256(input: string) {\r\n\tconst msgUint8 = new TextEncoder().encode(input);\r\n\tconst hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);\r\n\tconst hashArray = Array.from(new Uint8Array(hashBuffer));\r\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\r\n\treturn hashHex;\r\n}\r\n","interface LoggerConfig {\r\n\t/**\r\n\t * @default true\r\n\t */\r\n\tenabled?: boolean;\r\n}\r\n\r\nexport class Logger {\r\n\tprivate enabled: boolean;\r\n\r\n\tconstructor(config?: LoggerConfig) {\r\n\t\tthis.enabled = config?.enabled ?? true;\r\n\t}\r\n\r\n\tinfo(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[34m[info] ${message}`);\r\n\t}\r\n\r\n\twarn(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[33m[warn] ${message}`);\r\n\t}\r\n\r\n\terror(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[31m[error] ${message}`);\r\n\t}\r\n\r\n\tsuccess(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[32m[success] ${message}`);\r\n\t}\r\n}\r\n","export function cloneDate(date: Date) {\r\n\treturn new Date(date.getTime());\r\n}\r\n","import { cloneDate } from './clone-date.js';\r\n\r\nexport function addDays(date: Date, days: number) {\r\n\tconst result = cloneDate(date);\r\n\tresult.setDate(result.getDate() + days);\r\n\treturn result;\r\n}\r\n","import { cloneDate } from './clone-date';\r\n\r\nexport function addMinutes(date: Date, minutes: number): Date {\r\n\tconst result = cloneDate(date);\r\n\tresult.setMinutes(result.getMinutes() + minutes);\r\n\treturn result;\r\n}\r\n","/**\r\n * is `date1` after `date2`?\r\n */\r\nexport function isAfter(date1: Date, date2: Date) {\r\n\treturn date1.getTime() > date2.getTime();\r\n}\r\n","export function sleep(ms: number) {\r\n\treturn new Promise<void>((resolve) => {\r\n\t\tsetTimeout(resolve, ms);\r\n\t});\r\n}\r\n","import { sleep } from './sleep';\r\n\r\ninterface Config<T> {\r\n\tuntil(response: T): boolean;\r\n\t/**\r\n\t * @default 1000\r\n\t */\r\n\tinterval?: number;\r\n\t/**\r\n\t * @default 3\r\n\t */\r\n\tmaxAttempt?: number;\r\n}\r\n\r\n/**\r\n * @example\r\n * ```ts\r\n * const poll = pollable(\r\n * fn,\r\n * {\r\n * until: (r) => r.ok,\r\n * interval: 1000,\r\n * maxAttempt: 5,\r\n * }\r\n * );\r\n *\r\n * poll()\r\n * ```\r\n */\r\nexport function pollable<Return, Args = never>(\r\n\tfunc: (...args: Args[]) => Promise<Return>,\r\n\tconfig: Config<Return>,\r\n) {\r\n\tconst {\r\n\t\tuntil,\r\n\t\tinterval = 1000,\r\n\t\tmaxAttempt = 3,\r\n\t\t/**/\r\n\t} = config;\r\n\r\n\tasync function repeater(args: Args[], max?: number) {\r\n\t\tconst m = max ?? maxAttempt;\r\n\t\tconst r = await func(...args);\r\n\t\tconst k = until(r);\r\n\r\n\t\tif (k) return r;\r\n\r\n\t\tif (m > 1) {\r\n\t\t\tawait sleep(interval * ((maxAttempt - m) / 2));\r\n\t\t\treturn repeater(args, m - 1);\r\n\t\t}\r\n\r\n\t\treturn r;\r\n\t}\r\n\r\n\treturn async (...args: Args[]): Promise<Return> => {\r\n\t\treturn await repeater(args);\r\n\t};\r\n}\r\n","import { cloneDate } from './clone-date';\r\n\r\nexport function subMinutes(date: Date, minutes: number) {\r\n\tconst result = cloneDate(date);\r\n\tresult.setMinutes(result.getMinutes() - minutes);\r\n\treturn result;\r\n}\r\n","import { AuthService, type AuthServiceConfig, WalletService } from '../services';\r\nimport { addDays } from '../utils/add-days';\r\nimport { addMinutes } from '../utils/add-minutes';\r\nimport { GraphQLClient } from '../utils/graphql-client';\r\nimport { isAfter } from '../utils/is-after';\r\nimport { pollable } from '../utils/pollable';\r\nimport { sleep } from '../utils/sleep';\r\nimport { subMinutes } from '../utils/sub-minutes';\r\nimport type { OperationResult } from '../utils/types';\r\nimport { Logger } from './logger';\r\nimport type {\r\n\tAuthenticateError,\r\n\tAuthenticateInput,\r\n\tAuthenticator,\r\n\tRefreshSessionError,\r\n\tSession,\r\n\tSignInError,\r\n\tSignInInput,\r\n} from './types';\r\n\r\ninterface Data {\r\n\tsession: Session;\r\n\taccessToken: string;\r\n\taccessTokenExpiresAt: number;\r\n\trefreshToken: string;\r\n\trefreshTokenExpiresAt: number;\r\n}\r\n\r\ninterface SessionManagerConfig extends Omit<AuthServiceConfig, 'url'> {\r\n\tauthUrl: string;\r\n\twalletUrl: string;\r\n\tplatform: string;\r\n\tlog?: boolean;\r\n}\r\n\r\nexport class SessionManager {\r\n\tprivate logger;\r\n\tprivate storageKey = 'session';\r\n\tprivate authService: AuthService;\r\n\tprivate walletService: WalletService;\r\n\tprivate _refreshing = false;\r\n\r\n\tconstructor(config: SessionManagerConfig) {\r\n\t\tthis.authService = new AuthService({\r\n\t\t\turl: config.authUrl,\r\n\t\t\tplatform: config.platform,\r\n\t\t});\r\n\r\n\t\tthis.walletService = new WalletService(\r\n\t\t\tnew GraphQLClient(config.walletUrl, {\r\n\t\t\t\tmiddlewares: [\r\n\t\t\t\t\t(req) => {\r\n\t\t\t\t\t\treq.headers.set('Platform', config.platform);\r\n\t\t\t\t\t\treq.headers.set('Role', 'MEMBER');\r\n\t\t\t\t\t\treturn req;\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: config.log ?? false,\r\n\t\t});\r\n\t}\r\n\r\n\tget refreshing() {\r\n\t\treturn this._refreshing;\r\n\t}\r\n\r\n\tset refreshing(value: boolean) {\r\n\t\tthis._refreshing = value;\r\n\t}\r\n\r\n\tasync create(\r\n\t\tinput: SignInInput,\r\n\t): Promise<OperationResult<SignInError, { authenticator: Authenticator } | null>> {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Server sign in is not supported.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Maya Sign In\r\n\t\t */\r\n\r\n\t\tif (input.type === 'MAYA') {\r\n\t\t\tconst f0 = () => this.walletService.mayaSession({ id: input.sessionId });\r\n\t\t\tconst r0 = await pollable(f0, {\r\n\t\t\t\tuntil: (r) => r.ok && r.data?.member != null,\r\n\t\t\t\tinterval: 1000,\r\n\t\t\t\tmaxAttempt: 5,\r\n\t\t\t})();\r\n\r\n\t\t\tif (!r0.ok) return r0;\r\n\r\n\t\t\tconst f1 = () => this.authService.createSession(input);\r\n\t\t\tconst r1 = await pollable(f1, {\r\n\t\t\t\tuntil: (r) => r.ok,\r\n\t\t\t\tinterval: 1000,\r\n\t\t\t\tmaxAttempt: 5,\r\n\t\t\t})();\r\n\r\n\t\t\tif (!r1.ok) return r1;\r\n\r\n\t\t\tconst now = new Date();\r\n\r\n\t\t\twindow.localStorage.setItem(\r\n\t\t\t\tthis.storageKey,\r\n\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t...r1.data,\r\n\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t}),\r\n\t\t\t);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: null,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Mobile Number Sign In\r\n\t\t */\r\n\r\n\t\tif (input.type === 'MOBILE_NUMBER') {\r\n\t\t\tconst res = await this.authService.createSession(input);\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\tconst now = new Date();\r\n\r\n\t\t\t\twindow.localStorage.setItem(\r\n\t\t\t\t\tthis.storageKey,\r\n\t\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t\t...res.data,\r\n\t\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata: null,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Name and Password Sign In\r\n\t\t */\r\n\r\n\t\tconst res = await this.authService.createSession(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\t/*\r\n\t\t * 2FA enabled\r\n\t\t */\r\n\t\tif (res.data.authenticator) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tauthenticator: res.data.authenticator,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst now = new Date();\r\n\r\n\t\twindow.localStorage.setItem(\r\n\t\t\tthis.storageKey,\r\n\t\t\tJSON.stringify({\r\n\t\t\t\t...res.data,\r\n\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createFromAuthenticator(\r\n\t\tinput: AuthenticateInput,\r\n\t): Promise<OperationResult<AuthenticateError>> {\r\n\t\tconst res = await this.authService.authenticate(input);\r\n\r\n\t\tif (res.ok) {\r\n\t\t\tconst now = new Date();\r\n\r\n\t\t\tif (this.isServer) {\r\n\t\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\t} else {\r\n\t\t\t\twindow.localStorage.setItem(\r\n\t\t\t\t\tthis.storageKey,\r\n\t\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t\t...res.data,\r\n\t\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn { ok: true };\r\n\t\t} else {\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tasync get(): Promise<OperationResult<RefreshSessionError, Data | null>> {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: null,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (this.refreshing) {\r\n\t\t\tawait sleep(1000);\r\n\t\t\treturn await this.get();\r\n\t\t}\r\n\r\n\t\tconst val = window.localStorage.getItem(this.storageKey);\r\n\r\n\t\tif (!val) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: null,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tlet obj: {\r\n\t\t\t\tsession: Session;\r\n\t\t\t\taccessToken: string;\r\n\t\t\t\taccessTokenExpiresAt: number;\r\n\t\t\t\trefreshToken: string;\r\n\t\t\t\trefreshTokenExpiresAt: number;\r\n\t\t\t} = JSON.parse(val);\r\n\r\n\t\t\tlet now = new Date();\r\n\r\n\t\t\tconst accessTokenExpiresAt = new Date(obj.accessTokenExpiresAt);\r\n\t\t\tconst refreshTokenExpiresAt = new Date(obj.refreshTokenExpiresAt);\r\n\r\n\t\t\t/* is refresh token expired? */\r\n\t\t\tif (isAfter(now, refreshTokenExpiresAt)) {\r\n\t\t\t\tthis.logger.warn('Session expired. Logging out..');\r\n\r\n\t\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: {\r\n\t\t\t\t\t\tname: 'SessionExpired',\r\n\t\t\t\t\t\tmessage: 'Session expired.',\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\t/* is access token expired? */\r\n\t\t\tif (isAfter(now, accessTokenExpiresAt)) {\r\n\t\t\t\tthis.logger.info('Refreshing session...');\r\n\r\n\t\t\t\tthis.refreshing = true;\r\n\r\n\t\t\t\tconst res = await this.authService.refreshSession(obj.refreshToken);\r\n\r\n\t\t\t\tthis.refreshing = false;\r\n\r\n\t\t\t\tif (!res.ok) {\r\n\t\t\t\t\tthis.logger.error(`Failed to refresh session: ${res.error.message}`);\r\n\r\n\t\t\t\t\t/* return previous session for all errors except \"InvalidToken\" and \"AccountBlacklisted\" */\r\n\t\t\t\t\tif (res.error.name === 'InvalidToken' || res.error.name === 'AccountBlacklisted') {\r\n\t\t\t\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\t\terror: res.error,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.logger.warn('Old session returned.');\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\t\tdata: obj,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.logger.success('Session refreshed!');\r\n\r\n\t\t\t\tnow = new Date();\r\n\t\t\t\tobj = {\r\n\t\t\t\t\t...obj,\r\n\t\t\t\t\t...res.data,\r\n\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.localStorage.setItem(this.storageKey, JSON.stringify(obj));\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: obj,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\t/* Did they modify session in localStorage? */\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync destroy() {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst res = await this.get();\r\n\r\n\t\tif (res.data?.accessToken) {\r\n\t\t\tawait this.authService.destroySession(res.data.accessToken);\r\n\t\t}\r\n\r\n\t\twindow.localStorage.removeItem(this.storageKey);\r\n\t}\r\n\r\n\tasync verify(): Promise<boolean> {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst s = await this.get();\r\n\r\n\t\tif (s.error?.name === 'InvalidToken') return false;\r\n\t\tif (s.error?.name === 'SessionExpired') return false;\r\n\t\tif (s.error?.name === 'AccountBlacklisted') return false;\r\n\r\n\t\t/* Not logged in or session is not expired */\r\n\t\tif (!s.data) return true;\r\n\r\n\t\tconst v = await this.authService.verifySession(s.data.accessToken);\r\n\r\n\t\t/* log out if session is no longer valid */\r\n\t\tif (!v) {\r\n\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\t\t}\r\n\r\n\t\treturn v;\r\n\t}\r\n\r\n\tprivate get isServer() {\r\n\t\treturn typeof window === 'undefined';\r\n\t}\r\n}\r\n","import { isPlainObject } from './is-plain-object';\r\n\r\nexport function compact<T>(obj: Record<string, any>) {\r\n\tconst output: Record<string, any> = {};\r\n\r\n\tfor (const k in obj) {\r\n\t\tconst v = obj[k];\r\n\r\n\t\tif (v === null) continue;\r\n\t\tif (v === undefined) continue;\r\n\r\n\t\tif (isPlainObject(v)) {\r\n\t\t\toutput[k] = compact(v);\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(v)) {\r\n\t\t\toutput[k] = v.map((i) => {\r\n\t\t\t\tif (isPlainObject(i)) {\r\n\t\t\t\t\treturn compact(i);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\toutput[k] = v;\r\n\t}\r\n\r\n\treturn output as T;\r\n}\r\n","export function parseDecimal(value: unknown): number | undefined;\r\nexport function parseDecimal(value: unknown, fallback: number): number;\r\nexport function parseDecimal(value: unknown, fallback?: number) {\r\n\tif (typeof value === 'number') {\r\n\t\tif (!Number.isNaN(value)) return value;\r\n\t}\r\n\r\n\tif (typeof value === 'string') {\r\n\t\tconst parsed = Number.parseFloat(value);\r\n\r\n\t\tif (!Number.isNaN(parsed)) {\r\n\t\t\treturn parsed;\r\n\t\t}\r\n\t}\r\n\r\n\treturn fallback;\r\n}\r\n","import type * as Internal from '../services';\r\nimport { StaticService } from '../services';\r\nimport { compact } from '../utils/compact';\r\nimport { parseDecimal } from '../utils/parse-decimal';\r\nimport type * as External from './types';\r\n\r\ninterface TransformerConfig {\r\n\tenvironment?: 'development' | 'production';\r\n}\r\n\r\nexport class Transformer {\r\n\tprivate staticService: StaticService;\r\n\r\n\tconstructor(config?: TransformerConfig) {\r\n\t\tconst debug = config?.environment === 'development';\r\n\r\n\t\tthis.staticService = new StaticService({\r\n\t\t\turl: debug\r\n\t\t\t\t? import.meta.env.VITE_STATIC_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_STATIC_PRODUCTION_URL,\r\n\t\t});\r\n\t}\r\n\r\n\tget transform() {\r\n\t\treturn {\r\n\t\t\tsite: this.site.bind(this),\r\n\t\t\tplatform: this.platform.bind(this),\r\n\t\t\taccount: this.account.bind(this),\r\n\t\t\twallet: this.wallet.bind(this),\r\n\t\t\tverificationDetails: this.verificationDetails.bind(this),\r\n\t\t\tprofileCompletion: this.profileCompletion.bind(this),\r\n\t\t\tannouncement: this.announcement.bind(this),\r\n\t\t\twithdrawalRecord: this.withdrawalRecord.bind(this),\r\n\t\t\tdeposit: this.deposit.bind(this),\r\n\t\t\tdepositRecord: this.depositRecord.bind(this),\r\n\t\t\tbetRecord: this.betRecord.bind(this),\r\n\t\t\tlatestBetRecord: this.latestBetRecord.bind(this),\r\n\t\t\ttransactionRecord: this.transactionRecord.bind(this),\r\n\t\t\tgame: this.game.bind(this),\r\n\t\t\tgameSession: this.gameSession.bind(this),\r\n\t\t\tpromo: this.promo.bind(this),\r\n\t\t\tcashback: this.cashback.bind(this),\r\n\t\t\tbonus: this.bonus.bind(this),\r\n\t\t\tcashbackBonus: this.cashbackBonus.bind(this),\r\n\t\t\tfile: this.file.bind(this),\r\n\t\t\tpointsWallet: this.pointsWallet.bind(this),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate site(data: Internal.Site): External.Site {\r\n\t\tconst o: External.Site = {\r\n\t\t\tid: data.id,\r\n\t\t\tname: data.name,\r\n\t\t\tlogo: data.logo ?? undefined,\r\n\t\t};\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate platform(data: Internal.Platform): External.Platform {\r\n\t\treturn {\r\n\t\t\tpaymentSettings: {\r\n\t\t\t\tminimumFirstDepositAmount: parseDecimal(data.minimumFirstDepositAmount),\r\n\t\t\t\trestrictWithdrawalsToVerifiedMembers: data.restrictWithdrawalsToVerifiedMembers,\r\n\t\t\t\tdepositGateway: {\r\n\t\t\t\t\tbank: {\r\n\t\t\t\t\t\tandroidEnabled: data.bankDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.bankDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.bankDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.bankDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.bankDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.bankDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgcash: {\r\n\t\t\t\t\t\tandroidEnabled: data.gcashDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.gcashDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.gcashDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.gcashDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.gcashDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.gcashDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaya: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmayaApp: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaAppDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaAppDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaAppDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaAppDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\twithdrawalGateway: {\r\n\t\t\t\t\tbank: {\r\n\t\t\t\t\t\tandroidEnabled: data.bankWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.bankWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.bankWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.bankWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgcash: {\r\n\t\t\t\t\t\tandroidEnabled: data.gcashWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.gcashWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.gcashWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.gcashWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.gcashWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\t\tdata.gcashWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t\t1000000,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaya: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmayaApp: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaAppWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaAppWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaAppWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaAppWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\t\tdata.mayaAppWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t\t1000000,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tpointsClubSettings: {\r\n\t\t\t\tmultiplier: parseDecimal(data.pointsClubSettings?.multiplier, 0),\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tprivate account(data: Internal.MemberAccount & Internal.Member): External.Account {\r\n\t\tconst o: External.Account = {\r\n\t\t\tid: data.id,\r\n\t\t\tname: data.name,\r\n\t\t\tstatus: data.status,\r\n\t\t\tverified: data.verified,\r\n\t\t\tnickName: data.nickName ?? undefined,\r\n\t\t\trealName: data.realName ?? undefined,\r\n\t\t\tdateOfBirth: data.birthDay ? new Date(data.birthDay) : undefined,\r\n\t\t\temailAddress: data.emailAddress ?? undefined,\r\n\t\t\tmobileNumber: data.mobileNumber ?? undefined,\r\n\t\t\tmobileNumberVerified: data.mobileNumberVerified ?? false,\r\n\t\t\tmobileNumberVerificationRequired: data.mobileNumberVerificationRequired ?? false,\r\n\t\t\tvalidId: data.validId ?? undefined,\r\n\t\t\tverificationStatus: data.verificationStatus,\r\n\t\t\ttransactionPassword: data.transactionPassword,\r\n\t\t\tsecretAnswerSubmitted: data.secretAnswerSubmitted ?? false,\r\n\t\t\tdateTimeLastActive: data.dateTimeLastActive ? new Date(data.dateTimeLastActive) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate wallet(data: Internal.Wallet): External.Wallet {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tcurrency: data.currency,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate verificationDetails(data: Internal.MemberVerification): External.VerificationDetails {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tstatus: data.status,\r\n\t\t\taddress: data.address,\r\n\t\t\tnationality: data.nationality,\r\n\t\t\tnatureOfWork: data.natureOfWork,\r\n\t\t\tplaceOfBirth: data.placeOfBirth,\r\n\t\t\tsourceOfIncome: data.sourceOfIncome,\r\n\t\t\tselfieImage: this.file(data.selfieImage) as External.File,\r\n\t\t\tidFrontImage: this.file(data.idFrontImage) as External.File,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate profileCompletion(data: Internal.ProfileCompletion): External.ProfileCompletion {\r\n\t\treturn {\r\n\t\t\taccountPassword: data.accountPassword ?? false,\r\n\t\t\taccountVerification: data.accountVerification ?? false,\r\n\t\t\tmobileNumberVerification: data.mobileNumberVerification ?? false,\r\n\t\t\tpersonalInformation: data.personalInformation ?? false,\r\n\t\t\ttransactionPassword: data.transactionPassword ?? false,\r\n\t\t\tcompletionPercentage: parseDecimal(data, 0),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate announcement(data: Internal.Announcement): External.Announcement {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\ttitle: data.title,\r\n\t\t\tstatus: data.status,\r\n\t\t\tmessage: data.message,\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate withdrawalRecord(data: Internal.WithdrawalRecord): External.WithdrawalRecord {\r\n\t\tconst o = {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\tbank: data.bank!,\r\n\t\t\tstatus: data.status,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tnetAmount: parseDecimal(data.netAmount, 0),\r\n\t\t\tfee: parseDecimal(data.fee, 0),\r\n\t\t\treference: data.reference ?? undefined,\r\n\t\t\twithdrawalNumber: data.withdrawalNumber,\r\n\t\t\trecipientMobileNumber: data.recipientMobileNumber ?? undefined,\r\n\t\t\tdateTimeConfirmed: data.dateTimeConfirmed ? new Date(data.dateTimeConfirmed) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t} as External.WithdrawalRecord;\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate deposit(data: Internal.Deposit): External.Deposit {\r\n\t\tconst o = {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\tstatus: data.status,\r\n\t\t\tcheckoutUrl: data.checkoutUrl ?? undefined,\r\n\t\t} as External.Deposit;\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate depositRecord(data: Internal.DepositRecord): External.DepositRecord {\r\n\t\tconst o: External.DepositRecord = {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\tstatus: data.status,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tfee: parseDecimal(data.fee, 0),\r\n\t\t\tnetAmount: parseDecimal(data.netAmount, 0),\r\n\t\t\treference: data.reference ?? undefined,\r\n\t\t\tdepositNumber: data.depositNumber,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate betRecord(data: Internal.BetRecord): External.BetRecord {\r\n\t\tconst o: External.BetRecord = {\r\n\t\t\tid: data.id,\r\n\t\t\tbet: parseDecimal(data.bet, 0),\r\n\t\t\tpayout: parseDecimal(data.payout, 0),\r\n\t\t\tstatus: data.status,\r\n\t\t\tjackpotContribution: parseDecimal(data.jackpotContribution, 0),\r\n\t\t\tjackpotPayout: parseDecimal(data.jackpotPayout, 0),\r\n\t\t\twinloss: parseDecimal(data.winloss),\r\n\t\t\tvalidBet: parseDecimal(data.validBet, 0),\r\n\t\t\tvendorRoundId: data.vendorRoundId ?? undefined,\r\n\t\t\tgame: this.game(data.game),\r\n\t\t\tserialCode: data.serialCode,\r\n\t\t\tdateTimeSettled: data.dateTimeSettled ? new Date(data.dateTimeSettled) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t\tbetContent: data.betContent ?? undefined,\r\n\t\t\tcontestName: data.contestName ?? undefined,\r\n\t\t\texternalCategory: data.externalCategory ?? undefined,\r\n\t\t\tmetadata: {\r\n\t\t\t\todds: data.metadata?.odds ?? undefined,\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate latestBetRecord(data: Internal.LatestBetRecord): External.LatestBetRecord {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tmember: data.member,\r\n\t\t\tgame: this.game(data.game),\r\n\t\t\tbet: parseDecimal(data.bet, 0),\r\n\t\t\tpayout: parseDecimal(data.payout, 0),\r\n\t\t\tvalidBet: parseDecimal(data.validBet, 0),\r\n\t\t\tdateTimeSettled: new Date(data.dateTimeSettled),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate transactionRecord(data: Internal.TransactionRecord): External.TransactionRecord {\r\n\t\tconst o: External.TransactionRecord = {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tcontent: data.content ?? undefined,\r\n\t\t\tcurrentBalance: parseDecimal(data.currentBalance, 0),\r\n\t\t\treferenceNumber: data.referenceNumber,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate game(data: Internal.Game): External.Game {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\tname: data.name,\r\n\t\t\timages: this.staticService.gameThumbnails(data),\r\n\t\t\tprovider: data.provider,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate gameSession(data: Internal.GameSession): External.GameSession {\r\n\t\tconst o = {\r\n\t\t\tid: data.id,\r\n\t\t\tstatus: data.status,\r\n\t\t\tlaunchUrl: data.launchUrl ?? undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t} as External.GameSession;\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate promo(data: Internal.Promo): External.Promo {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\tname: data.name,\r\n\t\t\tstatus: data.status,\r\n\t\t\tdescription: data.description,\r\n\t\t\tbanner: this.file(data.banner) as Extract<External.File, { status: 'READY' }>,\r\n\t\t\tmaximumBonusAmount: parseDecimal(data.maximumBonusAmount),\r\n\t\t\tminimumBonusAmount: parseDecimal(data.minimumBonusAmount),\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate cashback(data: Internal.Cashback): External.Cashback {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tname: data.name,\r\n\t\t\tdescription: data.description,\r\n\t\t\tstatus: data.status,\r\n\t\t\tbanner: this.file(data.banner) as Extract<External.File, { status: 'READY' }>,\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate bonus(data: Internal.Bonus): External.Bonus {\r\n\t\tconst o: External.Bonus = {\r\n\t\t\tid: data.id,\r\n\t\t\tpromo: this.promo(data.promo),\r\n\t\t\tdeposit: data.deposit\r\n\t\t\t\t? {\r\n\t\t\t\t\t\ttype: data.deposit.type,\r\n\t\t\t\t\t\tstatus: data.deposit.status,\r\n\t\t\t\t\t\tfee: parseDecimal(data.deposit.fee, 0),\r\n\t\t\t\t\t\tamount: parseDecimal(data.deposit.amount, 0),\r\n\t\t\t\t\t\tnetAmount: parseDecimal(data.deposit.netAmount, 0),\r\n\t\t\t\t\t\treference: data.deposit.reference ?? undefined,\r\n\t\t\t\t\t\tdateTimeCreated: new Date(data.deposit.dateTimeCreated),\r\n\t\t\t\t\t\tdateTimeLastUpdated: new Date(data.deposit.dateTimeLastUpdated),\r\n\t\t\t\t\t}\r\n\t\t\t\t: undefined,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\texpiration: new Date(data.expiration),\r\n\t\t\tturnoverRequirement: parseDecimal(data.turnoverRequirement, 0),\r\n\t\t\tcurrentTurnoverRequirementContribution: parseDecimal(\r\n\t\t\t\tdata.currentTurnoverRequirementContribution,\r\n\t\t\t\t0,\r\n\t\t\t),\r\n\t\t\tcurrentTurnoverRequirementContributionPercentage: parseDecimal(\r\n\t\t\t\tdata.currentTurnoverRequirementContributionPercentage,\r\n\t\t\t\t0,\r\n\t\t\t),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate cashbackBonus(data: Internal.CashbackBonus): External.CashbackBonus {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tcashback: this.cashback(data.cashback),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate file(data: Internal.File): External.File {\r\n\t\tconst o = {\r\n\t\t\tid: data.id,\r\n\t\t\turl: data.url ?? undefined,\r\n\t\t\tstatus: data.status,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t} as External.File;\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate pointsWallet(data: Internal.PointsWallet): External.PointsWallet {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tpoints: parseDecimal(data.points, 0),\r\n\t\t\taccount: data.account,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n}\r\n","import { AccountService, FileService, ReportService, WalletService } from '../services';\r\nimport { CmsPortalService } from '../services/cms-portal.service';\r\nimport { GameService } from '../services/game.service';\r\nimport { PortalService } from '../services/portal.service';\r\nimport { clamp } from '../utils/clamp';\r\nimport {\r\n\tGraphQLClient,\r\n\ttype GraphQLClientConfig,\r\n\ttype GraphQLClientMiddleware,\r\n} from '../utils/graphql-client';\r\nimport { sha256 } from '../utils/sha256';\r\nimport { Logger } from './logger';\r\nimport { ObjectId } from './object-id';\r\nimport { ObjectType } from './object-type';\r\nimport { SessionManager } from './session-manager';\r\nimport { Transformer } from './transformer';\r\nimport type {\r\n\tAccountReturn,\r\n\tAnnouncementsInput,\r\n\tAnnouncementsReturn,\r\n\tAuthenticateInput,\r\n\tAuthenticateReturn,\r\n\tAvailablePromosReturn,\r\n\tBetRecordsInput,\r\n\tBetRecordsReturn,\r\n\tBonusReturn,\r\n\tCashbackBonusReturn,\r\n\tCashbacksReturn,\r\n\tClaimCashbackBonusReturn,\r\n\tCreateAccountInput,\r\n\tCreateAccountReturn,\r\n\tCreateDepositInput,\r\n\tCreateDepositReturn,\r\n\tCreateGameSessionInput,\r\n\tCreateGameSessionReturn,\r\n\tCreateWithdrawalInput,\r\n\tCreateWithdrawalReturn,\r\n\tDeleteAccountReturn,\r\n\tDepositRecordsInput,\r\n\tDepositRecordsReturn,\r\n\tDepositReturn,\r\n\tDepositsCountReturn,\r\n\tEndGameSessionReturn,\r\n\tEndGameSessionReturn__Legacy,\r\n\tFileReturn,\r\n\tGameReturn,\r\n\tGamesByNameInput,\r\n\tGamesByNameReturn,\r\n\tGameSessionReturn,\r\n\tGamesInput,\r\n\tGamesReturn,\r\n\tLatestBetRecordsReturn,\r\n\tMayaSignInInput,\r\n\tMayaSignInReturn,\r\n\tMobileNumberSignInInput,\r\n\tMobileNumberSignInReturn,\r\n\tNameAndPasswordSignInInput,\r\n\tNameAndPasswordSignInReturn,\r\n\tPlatformReturn,\r\n\tPointsToCashConversionReturn,\r\n\tPointsWalletReturn,\r\n\tProfileCompletionReturn,\r\n\tPromosReturn,\r\n\tRemainingDailyWithdrawalsCountReturn,\r\n\tResetPasswordInput,\r\n\tResetPasswordReturn,\r\n\tSendVerificationCodeReturn,\r\n\tSessionReturn,\r\n\tSignInInput,\r\n\tSignInReturn,\r\n\tSiteReturn,\r\n\tSubmitVerificationDetailsInput,\r\n\tSubmitVerificationDetailsReturn,\r\n\tTransactionRecordsInput,\r\n\tTransactionRecordsReturn,\r\n\tUpdateAccountInput,\r\n\tUpdateAccountReturn,\r\n\tUpdateVerificationDetailsInput,\r\n\tUpdateVerificationDetailsReturn,\r\n\tUploadImageFileInput,\r\n\tUploadImageFileReturn,\r\n\tVerificationDetailsReturn,\r\n\tVerifyMobileNumberReturn,\r\n\tWalletReturn,\r\n\tWatchSessionInput,\r\n\tWithdrawalRecordsInput,\r\n\tWithdrawalRecordsReturn,\r\n} from './types';\r\n\r\nexport interface SdkConfig {\r\n\tsite: string;\r\n\tsitePlatform: string;\r\n\tplatform: string;\r\n\tenvironment?: 'production' | 'development';\r\n\tlog?: boolean;\r\n}\r\n\r\nexport class Sdk {\r\n\tprivate gameService: GameService;\r\n\tprivate fileService: FileService;\r\n\tprivate walletService: WalletService;\r\n\tprivate reportService: ReportService;\r\n\tprivate portalService: PortalService;\r\n\tprivate accountService: AccountService;\r\n\tprivate cmsPortalService: CmsPortalService;\r\n\tprivate sessionManager: SessionManager;\r\n\tprivate transformer: Transformer;\r\n\tprivate logger: Logger;\r\n\r\n\tconstructor(config: SdkConfig) {\r\n\t\tconst debug = config.environment === 'development';\r\n\r\n\t\tthis.sessionManager = new SessionManager({\r\n\t\t\tauthUrl: debug\r\n\t\t\t\t? import.meta.env.VITE_AUTH_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_AUTH_PRODUCTION_URL,\r\n\t\t\twalletUrl: debug\r\n\t\t\t\t? import.meta.env.VITE_WALLET_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_WALLET_PRODUCTION_URL,\r\n\t\t\tplatform: config.platform,\r\n\t\t\tlog: config.log,\r\n\t\t});\r\n\r\n\t\tthis.cmsPortalService = new CmsPortalService({\r\n\t\t\turl: debug\r\n\t\t\t\t? import.meta.env.VITE_CMS_PORTAL_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_CMS_PORTAL_PRODUCTION_URL,\r\n\t\t\tsite: config.site,\r\n\t\t\tplatform: config.sitePlatform,\r\n\t\t});\r\n\r\n\t\tconst graphqlClientConfig: GraphQLClientConfig = {\r\n\t\t\tmiddlewares: [this.authMiddleware],\r\n\t\t\tfetchOptions: {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\t'Platform-Code': config.platform,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tthis.gameService = new GameService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_GAME_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_GAME_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.fileService = new FileService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_FILE_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_FILE_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.walletService = new WalletService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_WALLET_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_WALLET_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.reportService = new ReportService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_REPORT_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_REPORT_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.accountService = new AccountService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_ACCOUNT_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_ACCOUNT_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.portalService = new PortalService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_PORTAL_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_PORTAL_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.transformer = new Transformer(config);\r\n\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: config.log ?? false,\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get authMiddleware(): GraphQLClientMiddleware {\r\n\t\treturn async (request) => {\r\n\t\t\tthis.logger.info('Checking for session');\r\n\r\n\t\t\tconst res = await this.sessionManager.get();\r\n\r\n\t\t\tif (res.data) {\r\n\t\t\t\trequest.headers.append('Authorization', `Bearer ${res.data.accessToken}`);\r\n\r\n\t\t\t\tthis.logger.info('Session found');\r\n\t\t\t\tthis.logger.success(\"Added 'Authorization' header\");\r\n\t\t\t} else {\r\n\t\t\t\tthis.logger.info('No session found');\r\n\t\t\t}\r\n\r\n\t\t\treturn request;\r\n\t\t};\r\n\t}\r\n\r\n\tasync signIn(input: NameAndPasswordSignInInput): Promise<NameAndPasswordSignInReturn>;\r\n\tasync signIn(input: MobileNumberSignInInput): Promise<MobileNumberSignInReturn>;\r\n\tasync signIn(input: MayaSignInInput): Promise<MayaSignInReturn>;\r\n\tasync signIn(input: SignInInput): Promise<SignInReturn> {\r\n\t\tswitch (input.type) {\r\n\t\t\tcase 'NAME_AND_PASSWORD': {\r\n\t\t\t\tconst res = await this.sessionManager.create({\r\n\t\t\t\t\t...input,\r\n\t\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!res.ok) return res;\r\n\t\t\t\tif (res.data) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t'2FAEnabled': true,\r\n\t\t\t\t\t\t\tauthenticator: res.data.authenticator,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t'2FAEnabled': false,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tdefault: {\r\n\t\t\t\tconst res = await this.sessionManager.create(input);\r\n\r\n\t\t\t\treturn res.ok ? { ok: true } : res;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const signInResult = await signIn({\r\n\t * \ttype: 'NAME_AND_PASSWORD',\r\n\t * \tname: data.name,\r\n\t * \tpassword: data.password,\r\n\t * });\r\n\t *\r\n\t * if (!signInResult.ok) {\r\n\t * \treturn window.alert(signInResult.error.message);\r\n\t * }\r\n\t *\r\n\t * if (!signInResult.data) {\r\n\t * \t// Signed in. No more steps needed\r\n\t * \treturn;\r\n\t * }\r\n\t *\r\n\t * const secretAnswer = window.prompt(SECRET_QUESTIONS_MAP[signInResult.secretQuestion]);\r\n\t *\r\n\t * const authResult = await sdk.authenticate({\r\n\t * \ttype: 'SECURITY_QUESTION',\r\n\t * \ttoken: signInResult.token,\r\n\t * \tsecretAnswer: secretAnswer,\r\n\t * });\r\n\t *\r\n\t * if (!authResult.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Signed in\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync authenticate(input: AuthenticateInput): Promise<AuthenticateReturn> {\r\n\t\tswitch (input.type) {\r\n\t\t\tcase 'SECURITY_QUESTION': {\r\n\t\t\t\treturn await this.sessionManager.createFromAuthenticator({\r\n\t\t\t\t\ttype: 'SECURITY_QUESTION',\r\n\t\t\t\t\ttoken: input.token,\r\n\t\t\t\t\tsecretAnswer: await sha256(input.secretAnswer),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefault: {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: {\r\n\t\t\t\t\t\tname: 'HttpBadRequest',\r\n\t\t\t\t\t\tmessage: \"Invalid input 'type'\",\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync signOut() {\r\n\t\tawait this.sessionManager.destroy();\r\n\t}\r\n\r\n\t/**\r\n\t * @description Watches the session if it is still valid whenever signed in.\r\n\t * @returns Unsubscribe function\r\n\t * @example\r\n\t * ```tsx\r\n\t * import * as React from 'react';\r\n\t * import { useAuthenticated } from '@lib/stores';\r\n\t *\r\n\t * function WatchSession() {\r\n\t * \tconst { setAuthenticated } = useAuthenticated();\r\n\t *\r\n\t * \tReact.useEffect(() => {\r\n\t * \t\tconst unsubscribe = sdk.watchSession({\r\n\t * \t\t\tinterval: 30000,\r\n\t * \t\t\tonInvalid() {\r\n\t * \t\t\t\tsetAuthenticated(false);\r\n\t * \t\t\t},\r\n\t * \t\t});\r\n\t *\r\n\t * \t\treturn unsubscribe;\r\n\t * \t}, []);\r\n\t * }\r\n\t * ```\r\n\t */\r\n\twatchSession(input: WatchSessionInput) {\r\n\t\tconst interval = clamp(input.interval ?? 30000, 30000, 60000);\r\n\r\n\t\tlet timeout: NodeJS.Timeout | null = null;\r\n\r\n\t\tconst assignTimeout = () => {\r\n\t\t\treturn setTimeout(async () => {\r\n\t\t\t\tconst v = await this.sessionManager.verify();\r\n\r\n\t\t\t\tif (!v) {\r\n\t\t\t\t\tawait input.onInvalid();\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttimeout = assignTimeout();\r\n\t\t\t}, interval);\r\n\t\t};\r\n\r\n\t\ttimeout = assignTimeout();\r\n\r\n\t\treturn function unsubscribe() {\r\n\t\t\tif (timeout) {\r\n\t\t\t\tclearTimeout(timeout);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tasync session(): Promise<SessionReturn> {\r\n\t\tconst res = await this.sessionManager.get();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data\r\n\t\t\t\t? {\r\n\t\t\t\t\t\tid: res.data.session.id,\r\n\t\t\t\t\t\tdateTimeCreated: new Date(res.data.session.dateTimeCreated),\r\n\t\t\t\t\t}\r\n\t\t\t\t: null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ SITE +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync site(): Promise<SiteReturn> {\r\n\t\tconst res = await this.cmsPortalService.siteInfo();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.site(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ PLATFORM +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync platform(): Promise<PlatformReturn> {\r\n\t\tconst res = await this.accountService.platform();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.platform(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ ACCOUNT +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync account(): Promise<AccountReturn> {\r\n\t\tconst [i, j] = await Promise.all([\r\n\t\t\tthis.accountService.memberAccount(),\r\n\t\t\tthis.reportService.member(),\r\n\t\t]);\r\n\r\n\t\tif (!i.ok) return { ok: false, error: i.error };\r\n\t\tif (!j.ok) return { ok: false, error: j.error };\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.account({\r\n\t\t\t\t...i.data,\r\n\t\t\t\t...j.data,\r\n\t\t\t}),\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createAccount({\r\n\t * \tid: ObjectId.generate(ObjectType.Account).toString(),\r\n\t * \tname: data.name,\r\n\t * \tpassword: data.password,\r\n\t * \tdateOfBirth: new Date(data.dateOfBirth),\r\n\t * \tmobileNumber: data.mobileNumber,\r\n\t * \tdomain: data.domain,\r\n\t * \tverificationCode: data.verificationCode,\r\n\t * \treCAPTCHAResponse: data.reCAPTCHAResponse,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createAccount(input: CreateAccountInput): Promise<CreateAccountReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Account).toString();\r\n\r\n\t\tconst res = await this.accountService.registerMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tname: input.name,\r\n\t\t\t\tbirthDay:\r\n\t\t\t\t\ttypeof input.dateOfBirth === 'string'\r\n\t\t\t\t\t\t? input.dateOfBirth\r\n\t\t\t\t\t\t: input.dateOfBirth.toISOString(),\r\n\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\tdomain: input.domain,\r\n\t\t\t\tbtag: input.referralCode,\r\n\t\t\t},\r\n\t\t\tverificationCode: input.verificationCode,\r\n\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.updateAccount(user.id, {\r\n\t * \tvalidId: data.validId,\r\n\t * \trealName: data.realName,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync updateAccount(id: string, input: UpdateAccountInput): Promise<UpdateAccountReturn> {\r\n\t\treturn await this.accountService.updateMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t...input,\r\n\t\t\t\t\tpassword: input.password ? await sha256(input.password) : undefined,\r\n\t\t\t\t\ttransactionPassword: input.transactionPassword\r\n\t\t\t\t\t\t? await sha256(input.transactionPassword)\r\n\t\t\t\t\t\t: undefined,\r\n\t\t\t\t\t...(input.mobileNumber && {\r\n\t\t\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tsecretAnswer: input.secretAnswer ? await sha256(input.secretAnswer) : undefined,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync deleteAccount(id: string): Promise<DeleteAccountReturn> {\r\n\t\treturn await this.accountService.deleteMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync verificationDetails(): Promise<VerificationDetailsReturn> {\r\n\t\tconst res = await this.accountService.memberVerification();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.verificationDetails(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.submitVerificationDetails({\r\n\t * \tid: ObjectId.generate(ObjectType.Verification).toString(),\r\n\t * \tidFrontImage: data.idFrontImage,\r\n\t * \tselfieImage: data.selfieImage,\r\n\t * \taddress: data.address,\r\n\t * \tsourceOfIncome: data.sourceOfIncome,\r\n\t * \tnatureOfWork: data.natureOfWork,\r\n\t * \tplaceOfBirth: data.placeOfBirth,\r\n\t * \tnationality: data.nationality,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync submitVerificationDetails(\r\n\t\tinput: SubmitVerificationDetailsInput,\r\n\t): Promise<SubmitVerificationDetailsReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Verification).toString();\r\n\r\n\t\tconst res = await this.accountService.createMemberVerification({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\t...input,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.submitVerificationDetails(verificationDetails.id, {\r\n\t * \tidFrontImage: data.idFrontImage,\r\n\t * \tselfieImage: data.selfieImage,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync updateVerificationDetails(\r\n\t\tid: string,\r\n\t\tinput: UpdateVerificationDetailsInput,\r\n\t): Promise<UpdateVerificationDetailsReturn> {\r\n\t\treturn await this.accountService.updateMemberVerification({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t...input,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync resetPassword(input: ResetPasswordInput): Promise<ResetPasswordReturn> {\r\n\t\treturn await this.accountService.resetPassword({\r\n\t\t\tinput: {\r\n\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\tnewPassword: await sha256(input.newPassword),\r\n\t\t\t},\r\n\t\t\tverificationCode: input.verificationCode,\r\n\t\t});\r\n\t}\r\n\r\n\tasync verifyMobileNumber(verificationCode: string): Promise<VerifyMobileNumberReturn> {\r\n\t\treturn await this.accountService.verifyMobileNumber({\r\n\t\t\tinput: {\r\n\t\t\t\tverificationCode,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync profileCompletion(): Promise<ProfileCompletionReturn> {\r\n\t\tconst res = await this.accountService.profileCompletion();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.profileCompletion(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\tasync sendVerificationCode(mobileNumber: string): Promise<SendVerificationCodeReturn> {\r\n\t\treturn await this.accountService.sendVerificationCode({\r\n\t\t\tinput: {\r\n\t\t\t\tchannel: 'SMS',\r\n\t\t\t\trecipient: this.addAreaCode(mobileNumber),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync wallet(): Promise<WalletReturn> {\r\n\t\tconst res = await this.walletService.wallet();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.wallet(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ ANNOUNCEMENT +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync announcements(input?: AnnouncementsInput): Promise<AnnouncementsReturn> {\r\n\t\tconst res = await this.accountService.announcements({\r\n\t\t\t...input,\r\n\t\t\tfilter: {\r\n\t\t\t\tvisibility: {\r\n\t\t\t\t\tin: ['MEMBER', 'GLOBAL'],\r\n\t\t\t\t},\r\n\t\t\t\tactivationStartDateTime: {\r\n\t\t\t\t\tgreaterThanOrEqual: new Date(),\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tannouncements: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.announcement(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as AnnouncementsReturn;\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ WITHDRAWAL +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createWithdrawal({\r\n\t * \tid: ObjectId.generate(ObjectType.Withdrawal).toString(),\r\n\t * \ttype: 'BANK',\r\n\t * \tamount: data.amount,\r\n\t * \ttransactionPassword: data.transactionPassword,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createWithdrawal(input: CreateWithdrawalInput): Promise<CreateWithdrawalReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Withdrawal).toString();\r\n\r\n\t\tif (input.type === 'BANK') {\r\n\t\t\tconst res = await this.walletService.createBankWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'GCASH') {\r\n\t\t\tconst res = await this.walletService.createGCashWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t\trecipientMobileNumber: this.addAreaCode(input.recipientMobileNumber),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA') {\r\n\t\t\tconst res = await this.walletService.createMayaWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t\trecipientMobileNumber: this.addAreaCode(input.recipientMobileNumber),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA_APP') {\r\n\t\t\tconst res = await this.walletService.createMayaAppWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\treturn { ok: true, data: { id } };\r\n\t}\r\n\r\n\tasync withdrawalRecords(input?: WithdrawalRecordsInput): Promise<WithdrawalRecordsReturn> {\r\n\t\tconst res = await this.reportService.withdrawalRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\twithdrawalRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.withdrawalRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as WithdrawalRecordsReturn;\r\n\t}\r\n\r\n\tasync remainingDailyWithdrawalsCount(): Promise<RemainingDailyWithdrawalsCountReturn> {\r\n\t\treturn await this.walletService.remainingDailyWithdrawalsCount();\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ DEPOSIT +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createDeposit({\r\n\t * \tid: ObjectId.generate(ObjectType.Deposit).toString(),\r\n\t * \ttype: 'GCASH',\r\n\t * \tamount: data.amount,\r\n\t * \tpromo: data.promo,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createDeposit(input: CreateDepositInput): Promise<CreateDepositReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Deposit).toString();\r\n\r\n\t\tif (input.type === 'MAYA') {\r\n\t\t\tconst res = await this.walletService.createMayaDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA_APP') {\r\n\t\t\tconst res = await this.walletService.createMayaAppDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'GCASH') {\r\n\t\t\tconst res = await this.walletService.createGCashDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\treturn { ok: true, data: { id } };\r\n\t}\r\n\r\n\tasync deposit(id: string): Promise<DepositReturn> {\r\n\t\tconst res = await this.walletService.deposit({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.deposit(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync depositRecords(input?: DepositRecordsInput): Promise<DepositRecordsReturn> {\r\n\t\tconst res = await this.reportService.depositRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tdepositRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.depositRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as DepositRecordsReturn;\r\n\t}\r\n\r\n\tasync depositsCount(): Promise<DepositsCountReturn> {\r\n\t\treturn await this.reportService.depositsCount();\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ BET +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync betRecords(input?: BetRecordsInput): Promise<BetRecordsReturn> {\r\n\t\tconst res = await this.reportService.betRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tbetRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.betRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as BetRecordsReturn;\r\n\t}\r\n\r\n\tasync latestBetRecords(): Promise<LatestBetRecordsReturn> {\r\n\t\tconst res = await this.portalService.latestBetRecords();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.latestBetRecord),\r\n\t\t};\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ TRANSACTION +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync transactionRecords(input?: TransactionRecordsInput): Promise<TransactionRecordsReturn> {\r\n\t\tconst res = await this.reportService.transactionRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\ttransactionRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.transactionRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as TransactionRecordsReturn;\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ PROMO +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync promos(): Promise<PromosReturn> {\r\n\t\tconst res = await this.walletService.promos();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.promo),\r\n\t\t};\r\n\t}\r\n\r\n\tasync availablePromos(): Promise<AvailablePromosReturn> {\r\n\t\tconst res = await this.walletService.availablePromos();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.promo),\r\n\t\t};\r\n\t}\r\n\r\n\tasync cashbacks(): Promise<CashbacksReturn> {\r\n\t\tconst res = await this.walletService.cashbacks();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.cashback),\r\n\t\t};\r\n\t}\r\n\r\n\tasync bonus(): Promise<BonusReturn> {\r\n\t\tconst res = await this.walletService.bonus();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.bonus(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync cashbackBonuses(): Promise<CashbackBonusReturn> {\r\n\t\tconst res = await this.walletService.cashbackBonuses();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.cashbackBonus),\r\n\t\t};\r\n\t}\r\n\r\n\tasync claimCashbackBonus(id: string): Promise<ClaimCashbackBonusReturn> {\r\n\t\treturn await this.walletService.claimCashbackBonus({ input: { id } });\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ GAME +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync game(id: string): Promise<GameReturn> {\r\n\t\tconst res = await this.cmsPortalService.game(id);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.game(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync games(input?: GamesInput): Promise<GamesReturn> {\r\n\t\tconst res = await this.walletService.games(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.game(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t},\r\n\t\t} as GamesReturn;\r\n\t}\r\n\r\n\tasync games__next(input?: GamesInput): Promise<GamesReturn> {\r\n\t\tconst res = await this.cmsPortalService.games(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.game(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t},\r\n\t\t} as GamesReturn;\r\n\t}\r\n\r\n\tasync games__legacy(input?: GamesInput): Promise<GamesReturn> {\r\n\t\tconst res = await this.gameService.games(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.game(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t\tendCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t},\r\n\t\t} as GamesReturn;\r\n\t}\r\n\r\n\tasync gamesByName(input?: GamesByNameInput): Promise<GamesByNameReturn> {\r\n\t\tconst res = await this.walletService.gamesByName(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.game),\r\n\t\t};\r\n\t}\r\n\r\n\tasync gamesByName__legacy(input?: GamesByNameInput): Promise<GamesByNameReturn> {\r\n\t\tconst res = await this.gameService.gamesByName(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.game),\r\n\t\t};\r\n\t}\r\n\r\n\tasync gameSession(id: string): Promise<GameSessionReturn> {\r\n\t\tconst res = await this.walletService.gameSession({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.gameSession(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync gameSession__legacy(id: string): Promise<GameSessionReturn> {\r\n\t\tconst res = await this.gameService.gameSession({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data\r\n\t\t\t\t? this.transformer.transform.gameSession({\r\n\t\t\t\t\t\t...res.data,\r\n\t\t\t\t\t\tgame: res.data.game.id,\r\n\t\t\t\t\t})\r\n\t\t\t\t: null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createGameSession({\r\n\t * \tid: ObjectId.generate(ObjectType.GameSession).toString(),\r\n\t * \tgame: game.id,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createGameSession(input: CreateGameSessionInput): Promise<CreateGameSessionReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.GameSession).toString();\r\n\r\n\t\tconst res = await this.walletService.createGameSession({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tgame: input.game,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\tasync createGameSession__legacy(input: CreateGameSessionInput): Promise<CreateGameSessionReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.GameSession).toString();\r\n\r\n\t\tconst res = await this.gameService.createGameSession({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tgame: input.game,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\tasync endGameSession(id: string): Promise<EndGameSessionReturn> {\r\n\t\treturn await this.walletService.endGameSession({ input: { id } });\r\n\t}\r\n\r\n\tasync endGameSession__legacy(id: string): Promise<EndGameSessionReturn__Legacy> {\r\n\t\treturn await this.gameService.endGameSession({ input: { id } });\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ FILE +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync file(id: string): Promise<FileReturn> {\r\n\t\tconst res = await this.fileService.file({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.file(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.uploadImageFile({\r\n\t * \tid: ObjectId.generate(ObjectType.File).toString(),\r\n\t * \tfile: data.file,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync uploadImageFile(input: UploadImageFileInput): Promise<UploadImageFileReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.File).toString();\r\n\r\n\t\tconst res = await this.fileService.uploadPrivateImageFile({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tfile: input.file,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ POINTS +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync pointsWallet(): Promise<PointsWalletReturn> {\r\n\t\tconst res = await this.walletService.pointsWallet();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.pointsWallet(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync pointsToCashConversion(amount: number): Promise<PointsToCashConversionReturn> {\r\n\t\treturn await this.walletService.pointsToCashConversion({\r\n\t\t\tinput: {\r\n\t\t\t\tamount: amount.toString(),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate addAreaCode(mobileNumber: string) {\r\n\t\tif (mobileNumber.startsWith('+63')) return mobileNumber;\r\n\t\tif (mobileNumber.startsWith('63')) return `+${mobileNumber}`;\r\n\t\tif (mobileNumber.startsWith('0')) return `+63${mobileNumber.substring(1)}`;\r\n\t\treturn `+63${mobileNumber}`;\r\n\t}\r\n}\r\n\r\nexport default Sdk;\r\n"],"names":["ObjectType","gql","strings","values","result","index","string","value","FILE_FRAGMENT","FILE_QUERY","UPLOAD_PRIVATE_IMAGE_FILE_MUTATION","WALLET_QUERY","POINTS_WALLET_QUERY","POINTS_TO_CASH_CONVERSION_MUTATION","GAME_FRAGMENT","GAMES_QUERY","GAMES_BY_NAME_QUERY","GAME_SESSION_QUERY","CREATE_GAME_SESSION_MUTATION","END_GAME_SESSION_MUTATION","GAME_SESSION_QUERY_LEGACY","END_GAME_SESSION_MUTATION__LEGACY","ANNOUNCEMENTS_QUERY","WITHDRAWAL_RECORDS_QUERY","CREATE_GCASH_WITHDRAWAL_MUTATION","CREATE_MAYA_WITHDRAWAL_MUTATION","CREATE_MAYA_APP_WITHDRAWAL_MUTATION","CREATE_BANK_WITHDRAWAL_MUTATION","REMAINING_DAILY_WITHDRAWALS_COUNT_QUERY","DEPOSIT_RECORDS_QUERY","CREATE_GCASH_DEPOSIT_MUTATION","CREATE_MAYA_DEPOSIT_MUTATION","CREATE_MAYA_APP_DEPOSIT_MUTATION","DEPOSIT_QUERY","DEPOSITS_COUNT_QUERY","BET_RECORDS_QUERY","LATEST_BET_RECORDS_QUERY","TRANSACTION_RECORDS_QUERY","PROMO_FRAGMENT","PROMOS_QUERY","AVAILABLE_PROMOS_QUERY","CASHBACK_FRAGMENT","CASHBACKS_QUERY","BONUS_QUERY","CASHBACK_BONUSES_QUERY","CLAIM_CASHBACK_BONUS_MUTATION","MEMBER_QUERY","MEMBER_ACCOUNT_QUERY","MEMBER_VERIFICATION_QUERY","REGISTER_MEMBER_ACCOUNT_MUTATION","UPDATE_MEMBER_ACCOUNT_MUTATION","RESET_PASSWORD_MUTATION","DELETE_MEMBER_ACCOUNT_MUTATION","VERIFY_MOBILE_NUMBER_MUTATION","CREATE_MEMBER_VERIFICATION_MUTATION","UPDATE_MEMBER_VERIFICATION_MUTATION","PROFILE_COMPLETION_QUERY","SEND_VERIFICATION_CODE_MUTATION","PLATFORM_QUERY","MAYA_SESSION_QUERY","createOperationError","code","AccountService","client","__publicField","res","variables","statusCodeToOperationError","message","e","ERROR_MAP","AuthService","config","input","headers","data","token","refreshToken","accessToken","FileService","ReportService","StaticService","args","WalletService","CmsPortalService","request","response","search","_b","_a","_d","_c","_f","_e","_h","_g","_j","_i","_l","_k","_n","_m","_p","_o","_r","_q","_t","_s","_v","_u","_x","_w","_z","_y","node","id","GameService","PortalService","clamp","min","max","isPlainObject","flatten","fn","o","parentKeys","k","v","arrayToObject","array","i","GraphQLClient","url","query","body","req","json","error","middleware","files","map","sha256","msgUint8","hashBuffer","b","Logger","cloneDate","date","addDays","days","addMinutes","minutes","isAfter","date1","date2","sleep","ms","resolve","pollable","func","until","interval","maxAttempt","repeater","m","r","subMinutes","SessionManager","r0","r1","now","val","obj","accessTokenExpiresAt","refreshTokenExpiresAt","s","compact","output","parseDecimal","fallback","parsed","Transformer","debug","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","Sdk","define_import_meta_env_default","graphqlClientConfig","timeout","assignTimeout","j","ObjectId","verificationCode","mobileNumber","cursor","amount"],"mappings":"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"}
|