@opexa/portal-sdk 0.0.140 → 0.0.141

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/lib/sdk/object-type.ts","../src/lib/utils/const.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/cms-portal.service.ts","../src/lib/services/file.service.ts","../src/lib/services/game.service.ts","../src/lib/services/portal.service.ts","../src/lib/services/report.service.ts","../src/lib/services/trigger.service.ts","../src/lib/services/wallet.service.ts","../src/lib/utils/clone-date.ts","../src/lib/utils/add-minutes.ts","../src/lib/utils/is-after.ts","../src/lib/utils/cache.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/locale.ts","../src/lib/utils/mobile-number.ts","../src/lib/utils/sha256.ts","../src/lib/sdk/logger.ts","../src/lib/utils/add-days.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\tGame: 203,\r\n\tGameSession: 204,\r\n\tMayaSession: 230,\r\n};\r\n","export const GRECAPTCHA_HEADER = 'google-recaptcha-response';\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 REDEEM_POINTS_TO_CASH_MUTATION = gql`\r\n\tmutation RedeemPointsToCash($input: RedeemPointsToCashInput!) {\r\n\t\tredeemPointsToCash(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\nexport const POINTS_WALLET_TRANSACTIONS_QUERY = gql`\r\n\tquery PointsWalletTransactions(\r\n\t\t$first: Int\r\n\t\t$after: Cursor\r\n\t\t$filter: MemberPointsWalletTransactionFilterInput\r\n\t) {\r\n\t\tmember {\r\n\t\t\tpointsWalletTransactions(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 PointsWalletTransaction {\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\tbalance\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/*+ GAME +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const GAME_SESSION_QUERY = {\r\n\tcurrent: gql`\r\n\t\tquery GameSession($id: ObjectId!) {\r\n\t\t\tnode(id: $id) {\r\n\t\t\t\t... on GameSession {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tgame\r\n\t\t\t\t\tstatus\r\n\t\t\t\t\tlaunchUrl\r\n\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t`,\r\n\tlegacy: gql`\r\n\t\tquery GameSession($id: ObjectId!) {\r\n\t\t\tnode(id: $id) {\r\n\t\t\t\t... on GameSession {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tgame {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstatus\r\n\t\t\t\t\tlaunchUrl\r\n\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\tdateTimeLastUpdated\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_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 = {\r\n\tcurrent: gql`\r\n\t\tmutation EndGameSession($input: EndGameSessionInput!) {\r\n\t\t\tendGameSession(input: $input)\r\n\t\t}\r\n\t`,\r\n\tlegacy: gql`\r\n\t\tmutation EndGameSession($input: EndGameSessionInput!) {\r\n\t\t\tendGameSession(input: $input) {\r\n\t\t\t\t... on GameSessionDoesNotExistError {\r\n\t\t\t\t\t__typename\r\n\t\t\t\t}\r\n\t\t\t\t... on GameSessionAlreadyClosedError {\r\n\t\t\t\t\t__typename\r\n\t\t\t\t}\r\n\t\t\t\t... on GameProviderError {\r\n\t\t\t\t\t__typename\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 RECOMMENDED_GAMES_QUERY = gql`\r\n\tquery RecommendedGames {\r\n\t\trecommendedGames {\r\n\t\t\tid\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\terror\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\terror\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\terror\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\terror\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 InstapayWithdrawalRecord {\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\terror\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\t... on ReCAPTCHAVerificationFailedError {\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}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_AIO_INSTAPAY_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateAIOInstapayWithdrawal($input: CreateAIOInstapayWithdrawalInput!) {\r\n\t\tcreateAIOInstapayWithdrawal(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 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 INSTAPAY_BANK_LIST_QUERY = gql`\r\n\tquery InstapayBankList {\r\n\t\tinstapayBankList {\r\n\t\t\tid\r\n\t\t\tcode\r\n\t\t\tname\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\t... on ReCAPTCHAVerificationFailedError {\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 CREATE_AIO_QRPH_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateAIOQRPHDeposit($input: CreateAIOQRPHDepositInput!) {\r\n\t\tcreateAIOQRPHDeposit(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\t... on ReCAPTCHAVerificationFailedError {\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_AIO_ONLINE_BANK_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateAIOOnlineBankDeposit($input: CreateAIOOnlineBankDepositInput!) {\r\n\t\tcreateAIOOnlineBankDeposit(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\t... on QRPHDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t\tqrCode\r\n\t\t\t}\r\n\t\t\t... on OnlineBankDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t\tvca\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\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\tid\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\tname\r\n\t\t\t}\r\n\t\t\tgame {\r\n\t\t\t\tid\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\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\tmaximumDepositAmount\r\n\t\tminimumDepositAmount\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 SPOT_BONUS_FRAGMENT = gql`\r\n\tfragment SpotBonusFragment on SpotBonusPromo {\r\n\t\tid\r\n\t\tname\r\n\t\ttype\r\n\t\tstatus\r\n\t\tdaysToClear\r\n\t\tzeroOutThreshold\r\n\t\tturnoverRequirementMultiplier\r\n\t\tturnoverRequirementType\r\n\t\tminimumTicketOddFactorPerSportsGameProvider\r\n\t\tturnoverRequirementContributionPercentagePerGameProvider\r\n\t\tbonusAmount\r\n\t\tenabledGameProviders\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tbanner {\r\n\t\t\tid\r\n\t\t\turl\r\n\t\t}\r\n\t\tdescription\r\n\t\tdateTimeCreated\r\n\t\tdateTimeLastUpdated\r\n\t\tdateTimeClosed\r\n\t\ttotalBonus\r\n\t\ttotalDeposit\r\n\t\ttotalBonusBalance\r\n\t\ttotalBet\r\n\t\ttotalBonusCashedOut\r\n\t\tbonusesCount\r\n\t\tclosedBonusesCount\r\n\t\tclosedBonusesCountPercentage\r\n\t\tactiveBonusesCount\r\n\t\tclearedBonusesCount\r\n\t\tzeroedOutBonusesCount\r\n\t\tcancelledBonusesCount\r\n\t\texpiredBonusesCount\r\n\t\tcode\r\n\t\tmaximumBonusesCountLimit\r\n\t}\r\n`;\r\n\r\nexport const PROMO_BY_CODE_QUERY = gql`\r\n\t${SPOT_BONUS_FRAGMENT}\r\n\r\n\tquery PromoByCode($code: String!) {\r\n\t\tpromoByCode(code: $code) {\r\n\t\t\t...SpotBonusFragment\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\tminimumCashback\r\n\t\tmaximumMonthlyCashback\r\n\t\tstatus\r\n\t\tdescription\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tturnoverContributionPercentagePerGameProvider\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 BONUSES_QUERY = gql`\r\n\t${PROMO_FRAGMENT}\r\n\r\n\tquery Bonuses {\r\n\t\tbonuses {\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\ttotal\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\tpermanentAddress\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\t... on ReCAPTCHAVerificationFailedError {\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 REGISTER_MEMBER_ACCOUNT_VIA_MOBILE_MUTATION = gql`\r\n\tmutation RegisterMemberAccountViaMobile(\r\n\t\t$input: RegisterMemberAccountViaMobileInput!\r\n\t\t$referralCode: String\r\n\t\t$reCAPTCHAResponse: String\r\n\t\t$verificationCode: String\r\n\t) {\r\n\t\tregisterMemberAccountViaMobile(\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 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 MobileNumberNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on ReCAPTCHAVerificationFailedError {\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 REGISTER_MEMBER_ACCOUNT_MUTATION__NEXT = gql`\r\n\tmutation RegisterMemberAccount(\r\n\t\t$input: RegisterMemberAccountInput_next!\r\n\t\t$reCAPTCHAResponse: String\r\n\t) {\r\n\t\tregisterMemberAccount: registerMemberAccount_next(\r\n\t\t\tinput: $input\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 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\t... on ReCAPTCHAVerificationFailedError {\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 REGISTER_MAYA_MEMBER_ACCOUNT_MUTATION = gql`\r\n\tmutation RegisterMayaMemberAccount($input: RegisterMayaMemberAccountInput!) {\r\n\t\tregisterMayaMemberAccount(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}\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\n/** @deprecated */\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\n/** @deprecated */\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\ttimezone\r\n\t\tcurrency\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\tonlineBankDepositGatewaySettings: depositGatewaySettings(gateway: ONLINE_BANK) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tqrphDepositGatewaySettings: depositGatewaySettings(gateway: QR_PH) {\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\tinstapayWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: INSTAPAY) {\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\nexport const PLATFORM_QUERY__NEXT = gql`\r\n\tquery Platform {\r\n\t\ttimezone\r\n\t\tcurrency\r\n\t}\r\n`;\r\n\r\nexport const PAYMENT_SETTINGS_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 PaymentSettings {\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\tonlineBankDepositGatewaySettings: depositGatewaySettings(gateway: ONLINE_BANK) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tqrphDepositGatewaySettings: depositGatewaySettings(gateway: QR_PH) {\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\tinstapayWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: INSTAPAY) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\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\r\nexport const VALIDATE_MAYA_SESSION_MUTATION = gql`\r\n\tmutation ValidateMayaSession {\r\n\t\tvalidateMayaSession: validMayaSession\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ ACTIVITY +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const ACTIVITY_RECORDS_QUERY = gql`\r\n\tquery ActivityRecords($after: Cursor, $first: Int, $filter: ActivityRecordsFilterInput) {\r\n\t\tmember {\r\n\t\t\tactivityRecords(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 MemberActivity {\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\tdomain\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tdetails\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/*+ REFERRAL +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const REFERRAL_CODE_QUERY = gql`\r\n\tquery ReferralCode {\r\n\t\treferralCode\r\n\t}\r\n`;\r\n\r\nexport const UPDATE_REFERRAL_CODE_MUTATION = gql`\r\n\tmutation UpdateReferralCode($input: UpdateReferralCodeInput!) {\r\n\t\tupdateReferralCode(input: $input) {\r\n\t\t\t... on ReferralCodeNotAvailableError {\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 REFERRAL_FRAGMENT = gql`\r\n\tfragment ReferralFragment on Referral {\r\n\t\tid\r\n\t\tupline {\r\n\t\t\tid\r\n\t\t\tname\r\n\t\t\trealName\r\n\t\t}\r\n\t\tdownline {\r\n\t\t\tid\r\n\t\t\tname\r\n\t\t\trealName\r\n\t\t}\r\n\t\tlevel\r\n\t\tturnover\r\n\t\tcommission\r\n\t\tdateTimeCreated\r\n\t}\r\n`;\r\n\r\nexport const REFERRALS_QUERY = gql`\r\n\tquery Referrals($first: Int, $after: Cursor, $filter: ReferralFilterInput) {\r\n\t\tmember {\r\n\t\t\treferrals(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 Referral {\r\n\t\t\t\t\t\t\t...ReferralFragment\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\t${REFERRAL_FRAGMENT}\r\n`;\r\n\r\nexport const UPLINES_BY_NAME_QUERY = gql`\r\n\tquery UplinesByName($search: String!, $first: Int) {\r\n\t\tuplinesByName(search: $search, first: $first) {\r\n\t\t\t...ReferralFragment\r\n\t\t}\r\n\t}\r\n\r\n\t${REFERRAL_FRAGMENT}\r\n`;\r\n\r\nexport const DOWNLINES_BY_NAME_QUERY = gql`\r\n\tquery DownlinesByName($search: String!, $first: Int) {\r\n\t\tdownlinesByName(search: $search, first: $first) {\r\n\t\t\t...ReferralFragment\r\n\t\t}\r\n\t}\r\n\r\n\t${REFERRAL_FRAGMENT}\r\n`;\r\n\r\nexport const REFERRAL_COMMISSION_QUERY = gql`\r\n\tquery ReferralCommission {\r\n\t\tmember {\r\n\t\t\treferralCommission {\r\n\t\t\t\tid\r\n\t\t\t\tcommission\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\tlevel1Commission\r\n\t\t\t\tlevel1ReferralsCount\r\n\t\t\t\tlevel2Commission\r\n\t\t\t\tlevel2ReferralsCount\r\n\t\t\t\tlevel3Commission\r\n\t\t\t\tlevel3ReferralsCount\r\n\t\t\t\treferralCode\r\n\t\t\t\treferralsCount\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const POINTS_CLUB_SETTINGS_QUERY = gql`\r\n\tquery PointsClubSettings {\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/*+ MESSAGES +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const MESSAGES_QUERY = gql`\r\n\tquery Messages($first: Int, $after: Cursor, $filter: MessageFilterInput) {\r\n\t\tmessages(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 Message {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\ticon\r\n\t\t\t\t\t\tlogo\r\n\t\t\t\t\t\timage\r\n\t\t\t\t\t\ttitle\r\n\t\t\t\t\t\tcontent\r\n\t\t\t\t\t\tpopup\r\n\t\t\t\t\t\tactions {\r\n\t\t\t\t\t\t\tname\r\n\t\t\t\t\t\t\turl\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmarkedAsRead\r\n\t\t\t\t\t\tdateTimeCreated\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 UNREAD_MESSAGES_COUNT_QUERY = gql`\r\n\tquery UnreadMessagesCount($filter: MessageFilterInput) {\r\n\t\tmessages(filter: $filter) {\r\n\t\t\ttotalCount\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const MARK_MESSAGE_AS_READ_MUTATION = gql`\r\n\tmutation MarkMessageAsRead($id: ObjectId!) {\r\n\t\tmarkMessageAsRead(id: $id)\r\n\t}\r\n`;\r\n\r\nexport const MARK_ALL_MESSAGE_AS_READ_MUTATION = gql`\r\n\tmutation MarkAllMessageAsRead {\r\n\t\tmarkAllMessageAsRead\r\n\t}\r\n`;\r\n\r\nexport const CLAIM_REWARD_MUTATION = gql`\r\n\tmutation ClaimReward($id: ObjectId!) {\r\n\t\tclaimReward(id: $id) {\r\n\t\t\t... on RewardAlreadyClaimedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on RewardAlreadyExpiredError {\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 CLAIM_SPOT_BONUS = gql`\r\n\tmutation ClaimSpotBonus($code: String!) {\r\n\t\tclaimSpotBonus(code: $code) {\r\n\t\t\t... on InvalidPromoCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MaximumBonusesCountLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on SpotBonusAlreadyClaimedError {\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/*+ ONBOARDING +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const ONBOARDING_STATUS_QUERY = gql`\r\n\tquery OnboardingStatus {\r\n\t\tonboardingStatus\r\n\t}\r\n`;\r\n\r\nexport const COMPLETE_ONBOARDING_MUTATION = gql`\r\n\tmutation CompleteOnboarding($input: CompleteOnboardingInput!) {\r\n\t\tcompleteOnboarding(input: $input)\r\n\t}\r\n`;\r\n\r\nexport const SKIP_ONBOARDING_MUTATION = gql`\r\n\tmutation SkipOnboarding {\r\n\t\tskipOnboarding\r\n\t}\r\n`;\r\n","import type { OperationError } from '../utils/types';\r\nimport type {\r\n\tAuthenticateError,\r\n\tClaimCashbackBonusError,\r\n\tClaimRewardError,\r\n\tClaimSpotBonusError,\r\n\tCreateDepositError,\r\n\tCreateGameSessionError,\r\n\tCreateMemberVerificationError,\r\n\tCreateSessionError,\r\n\tCreateWithdrawalError,\r\n\tEndGameSessionError,\r\n\tRedeemPointsToCashError,\r\n\tRefreshSessionError,\r\n\tRegisterMayaMemberAccountError,\r\n\tRegisterMemberAccountError,\r\n\tResetPasswordError,\r\n\tSendVerificationCodeError,\r\n\tSendVerificationCodeError__Next,\r\n\tUpdateMemberAccountError,\r\n\tUpdateMemberVerificationError,\r\n\tUpdateReferralCodeError,\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\r\n\t| RegisterMemberAccountError\r\n\t| RegisterMayaMemberAccountError\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| RedeemPointsToCashError\r\n\t| CreateWithdrawalError\r\n\t| CreateSessionError\r\n\t| RefreshSessionError\r\n\t| AuthenticateError\r\n\t| UpdateReferralCodeError\r\n\t| SendVerificationCodeError__Next\r\n\t| ClaimRewardError\r\n\t| ClaimSpotBonusError;\r\n\r\nexport function createOperationError<T extends E>(code: T): OperationError<T> {\r\n\tconst messages: Record<E, string> = {\r\n\t\tMaximumBonusesCountLimitExceededError: 'Maximum bonuses reached',\r\n\t\tInvalidPromoCodeError: 'Invalid Promo Code',\r\n\t\tSpotBonusAlreadyClaimedError:\r\n\t\t\t'This promo code has already been redeemed and cannot be used again',\r\n\t\tRewardAlreadyExpiredError: 'Reward is either expired or no longer available',\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\t\tReferralCodeNotAvailableError: 'Referral code is no longer available',\r\n\t\tAccountBlacklistedError: 'Account is blacklisted',\r\n\t\tInvalidTokenError: 'Invalid token',\r\n\t\tInvalidTokenOrSecretAnswerError: 'Invalid token or secret answer',\r\n\t\tSessionExpiredError: 'Session expired',\r\n\t\tRateLimitExceededError: 'Maximum number of requests reached',\r\n\t\tRewardAlreadyClaimedError: 'Reward is already claimed',\r\n\t\tReCAPTCHAVerificationFailedError: 'Invalid reCAPTCHA',\r\n\t\tAccountSuspendedError: 'Account is suspended',\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 { GRECAPTCHA_HEADER } from '../utils/const';\r\nimport 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\tPAYMENT_SETTINGS_QUERY,\r\n\tPLATFORM_QUERY,\r\n\tPOINTS_CLUB_SETTINGS_QUERY,\r\n\tPROFILE_COMPLETION_QUERY,\r\n\tREFERRAL_CODE_QUERY,\r\n\tREGISTER_MAYA_MEMBER_ACCOUNT_MUTATION,\r\n\tREGISTER_MEMBER_ACCOUNT_MUTATION,\r\n\tREGISTER_MEMBER_ACCOUNT_MUTATION__NEXT,\r\n\tREGISTER_MEMBER_ACCOUNT_VIA_MOBILE_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\tUPDATE_REFERRAL_CODE_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\tPaymentSettings,\r\n\tPaymentSettingsQuery,\r\n\tPlatform,\r\n\tPlatformQuery,\r\n\tPointsClubSettings,\r\n\tPointsClubSettingsQuery,\r\n\tProfileCompletion,\r\n\tProfileCompletionQuery,\r\n\tReferralCodeQuery,\r\n\tRegisterMayaMemberAccountError,\r\n\tRegisterMayaMemberAccountMutation,\r\n\tRegisterMayaMemberAccountMutationVariables,\r\n\tRegisterMemberAccountError,\r\n\tRegisterMemberAccountMutation,\r\n\tRegisterMemberAccountMutationVariables,\r\n\tRegisterMemberAccountMutationVariables__Next,\r\n\tRegisterMemberAccountViaMobileMutation,\r\n\tRegisterMemberAccountViaMobileMutationVariables,\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\tUpdateReferralCodeError,\r\n\tUpdateReferralCodeMutation,\r\n\tUpdateReferralCodeMutationVariables,\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 registerMemberAccountViaMobile(\r\n\t\tvariables: RegisterMemberAccountViaMobileMutationVariables,\r\n\t): Promise<OperationResult<RegisterMemberAccountError>> {\r\n\t\tconst { reCAPTCHAResponse, ...others } = variables;\r\n\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRegisterMemberAccountViaMobileMutation,\r\n\t\t\tRegisterMemberAccountViaMobileMutationVariables\r\n\t\t>(REGISTER_MEMBER_ACCOUNT_VIA_MOBILE_MUTATION, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\tif (res.data.registerMemberAccountViaMobile) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.registerMemberAccountViaMobile.__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 registerMemberAccount__next(\r\n\t\tvariables: RegisterMemberAccountMutationVariables__Next,\r\n\t): Promise<OperationResult<RegisterMemberAccountError>> {\r\n\t\tconst { reCAPTCHAResponse, ...others } = variables;\r\n\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRegisterMemberAccountMutation,\r\n\t\t\tRegisterMemberAccountMutationVariables__Next\r\n\t\t>(REGISTER_MEMBER_ACCOUNT_MUTATION__NEXT, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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\t/** @deprecated */\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\t/** @deprecated */\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 paymentSettings(): Promise<OperationResult<never, PaymentSettings>> {\r\n\t\treturn await this.client.request<PaymentSettingsQuery>(PAYMENT_SETTINGS_QUERY);\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\tasync registerMayaMemberAccount(\r\n\t\tvariables: RegisterMayaMemberAccountMutationVariables,\r\n\t): Promise<OperationResult<RegisterMayaMemberAccountError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRegisterMayaMemberAccountMutation,\r\n\t\t\tRegisterMayaMemberAccountMutationVariables\r\n\t\t>(REGISTER_MAYA_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.registerMayaMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.registerMayaMemberAccount.__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 referralCode(): Promise<OperationResult<never, string | null | undefined>> {\r\n\t\tconst res = await this.client.request<ReferralCodeQuery>(REFERRAL_CODE_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.referralCode,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateReferralCode(\r\n\t\tvariables: UpdateReferralCodeMutationVariables,\r\n\t): Promise<OperationResult<UpdateReferralCodeError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tUpdateReferralCodeMutation,\r\n\t\t\tUpdateReferralCodeMutationVariables\r\n\t\t>(UPDATE_REFERRAL_CODE_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.updateReferralCode) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.updateReferralCode.__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 pointsClubSettings(): Promise<\r\n\t\tOperationResult<never, PointsClubSettings | null | undefined>\r\n\t> {\r\n\t\tconst res = await this.client.request<PointsClubSettingsQuery>(POINTS_CLUB_SETTINGS_QUERY);\r\n\t\treturn res.ok ? { ok: true, data: res.data.pointsClubSettings } : res;\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 { GRECAPTCHA_HEADER } from '../utils/const';\r\nimport { 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\tSendVerificationCodeError__Next,\r\n\tSendVerificationCodeInput__Next,\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\tprivate get headers() {\r\n\t\tconst headers = new Headers();\r\n\r\n\t\theaders.append('Accept', 'application/json, text/plain');\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Platform-Code', this.platform);\r\n\t\theaders.append('Role', 'MEMBER');\r\n\r\n\t\treturn headers;\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(this.headers);\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\tconsole.log(`MobileNumberOTP ${token}`);\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', `MayaSession ${input.sessionId}`);\r\n\t\t}\r\n\r\n\t\tif (input.token) {\r\n\t\t\theaders.set('Authorization', `Token ${input.token}`);\r\n\t\t}\r\n\r\n\t\tif (input.reCAPTCHAResponse) {\r\n\t\t\theaders.set(GRECAPTCHA_HEADER, input.reCAPTCHAResponse);\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('AccountBlacklistedError'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'MEMBER_ACCOUNT_SUSPENDED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountSuspendedError'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'INVALID_RECAPTCHA_RESPONSE') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('InvalidReCAPTCHAResponseError'),\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(this.headers);\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('InvalidTokenOrSecretAnswerError'),\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\tconst headers = new Headers(this.headers);\r\n\r\n\t\theaders.append('Authorization', `Bearer ${refreshToken}`);\r\n\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});\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('AccountBlacklistedError'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'MEMBER_ACCOUNT_SUSPENDED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountSuspendedError'),\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('InvalidTokenError'),\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\tconst headers = new Headers(this.headers);\r\n\r\n\t\theaders.append('Authorization', `Bearer ${accessToken}`);\r\n\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});\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\tconst headers = new Headers(this.headers);\r\n\r\n\t\theaders.append('Authorization', `Bearer ${accessToken}`);\r\n\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});\r\n\r\n\t\t\treturn res.ok;\r\n\t\t} catch {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tasync sendVerificationCode(\r\n\t\tinput: SendVerificationCodeInput__Next,\r\n\t): Promise<OperationResult<SendVerificationCodeError__Next>> {\r\n\t\tif (input.channel === 'EMAIL') throw new Error('Email channel is not yet supported');\r\n\r\n\t\tfunction getErrorCode(message: string): SendVerificationCodeError__Next | null {\r\n\t\t\tswitch (message) {\r\n\t\t\t\tcase 'MEMBER_NOT_FOUND':\r\n\t\t\t\t\treturn 'AccountNotFoundError';\r\n\t\t\t\tcase 'RATE_LIMIT_REACH':\r\n\t\t\t\t\treturn 'RateLimitExceededError';\r\n\t\t\t\tcase 'NOT_READY_TO_SEND_VERIFICATION_ERROR':\r\n\t\t\t\t\treturn 'NotReadyToSendVerficationCodeError';\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/otps`, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: this.headers,\r\n\t\t\t\tbody: JSON.stringify(input),\r\n\t\t\t});\r\n\r\n\t\t\tif (res.status === 403) {\r\n\t\t\t\tconst data = await res.json();\r\n\t\t\t\tconst code = getErrorCode(data.message);\r\n\r\n\t\t\t\tif (code) {\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(code),\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, data.message),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (!res.ok) {\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}\r\n\r\n\t\t\treturn { ok: true };\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 { statusCodeToOperationError } from '../utils/status-code-to-operation-error';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tGame,\r\n\tGameQuery,\r\n\tGamesQuery,\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 self(): Promise<OperationResult<never, Site>> {\r\n\t\tconst res = await this.getJson<SiteQuery>(`/sites/${this.siteId}`);\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.data,\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\t\tif (variables?.search) search.set('search', variables.search);\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\tif (variables?.filter?.tags?.equal)\r\n\t\t\tsearch.set('filter[tags][eq]', variables.filter.tags.equal.toLowerCase());\r\n\t\tif (variables?.filter?.tags?.notEqual)\r\n\t\t\tsearch.set('filter[tags][neq]', variables.filter.tags.notEqual.toLowerCase());\r\n\t\tif (variables?.filter?.tags?.in)\r\n\t\t\tsearch.set(\r\n\t\t\t\t'filter[tags][in]',\r\n\t\t\t\tvariables.filter.tags.in.map((v) => v.toLowerCase()).join(','),\r\n\t\t\t);\r\n\t\tif (variables?.filter?.tags?.notIn)\r\n\t\t\tsearch.set(\r\n\t\t\t\t'filter[tags][nin]',\r\n\t\t\t\tvariables.filter.tags.notIn.map((v) => v.toLowerCase()).join(','),\r\n\t\t\t);\r\n\r\n\t\tif (variables?.filter?.reference?.equal)\r\n\t\t\tsearch.set('filter[reference][eq]', variables.filter.reference.equal);\r\n\t\tif (variables?.filter?.reference?.notEqual)\r\n\t\t\tsearch.set('filter[reference][neq]', variables.filter.reference.notEqual);\r\n\t\tif (variables?.filter?.reference?.in)\r\n\t\t\tsearch.set('filter[reference][in]', variables.filter.reference.in.join(','));\r\n\t\tif (variables?.filter?.reference?.notIn)\r\n\t\t\tsearch.set('filter[reference][nin]', variables.filter.reference.notIn.join(','));\r\n\r\n\t\tif (variables?.sort) search.set('sort[order]', variables.sort);\r\n\r\n\t\tconst res = await this.getJson<GamesQuery>('/games', search);\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\tedges: res.data.data.map((node) => ({\r\n\t\t\t\t\tnode,\r\n\t\t\t\t\tcursor: node.cursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount ?? 0,\r\n\t\t\t\tpageInfo: {\r\n\t\t\t\t\thasNextPage: Boolean(res.data.next),\r\n\t\t\t\t\tendCursor: res.data.next,\r\n\t\t\t\t},\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 res = await this.getJson<GameQuery>(`/games/${id}`);\r\n\r\n\t\tif (res.error?.name === 'HttpNotFound') {\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 (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.data,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate async getJson<T>(\r\n\t\tpath: string,\r\n\t\tparams?: URLSearchParams,\r\n\t): Promise<OperationResult<never, T>> {\r\n\t\tconst req = new Request(`${this.url}${path}?${params?.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 res = await fetch(req);\r\n\r\n\t\t\tif (!res.ok) {\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}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: await res.json(),\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 { 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\tCREATE_GAME_SESSION_MUTATION,\r\n\tEND_GAME_SESSION_MUTATION,\r\n\tGAME_SESSION_QUERY,\r\n} from './queries';\r\nimport type {\r\n\tCreateGameSessionError,\r\n\tCreateGameSessionMutation,\r\n\tCreateGameSessionMutationVariables,\r\n\tEndGameSessionMutation,\r\n\tEndGameSessionMutationVariables,\r\n\tGameSession,\r\n\tGameSessionQuery,\r\n\tGameSessionQueryVariables,\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 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<true>, GameSessionQueryVariables>(\r\n\t\t\tGAME_SESSION_QUERY.legacy,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tconst data = !res.data.node ? null : { ...res.data.node, game: res.data.node.game.id };\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata,\r\n\t\t};\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\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<\r\n\t\t\tEndGameSessionMutation<true>,\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: {\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\tCOMPLETE_ONBOARDING_MUTATION,\r\n\tLATEST_BET_RECORDS_QUERY,\r\n\tONBOARDING_STATUS_QUERY,\r\n\tPLATFORM_QUERY__NEXT,\r\n\tRECOMMENDED_GAMES_QUERY,\r\n\tSKIP_ONBOARDING_MUTATION,\r\n} from './queries';\r\nimport type {\r\n\tCompleteOnboardingMutation,\r\n\tCompleteOnboardingMutationVariables,\r\n\tLatestBetRecord,\r\n\tLatestBetRecordsQuery,\r\n\tOnboardingStatus,\r\n\tOnboardingStatusQuery,\r\n\tPlatformQuery__Next,\r\n\tRecommendedGame,\r\n\tRecommendedGamesQuery,\r\n\tSkipOnboardingMutation,\r\n} 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\tasync platform(): Promise<OperationResult<never, PlatformQuery__Next>> {\r\n\t\tconst res = await this.client.request<PlatformQuery__Next>(PLATFORM_QUERY__NEXT);\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};\r\n\t}\r\n\r\n\tasync recommendedGames(): Promise<OperationResult<never, RecommendedGame[]>> {\r\n\t\tconst res = await this.client.request<RecommendedGamesQuery>(RECOMMENDED_GAMES_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.recommendedGames,\r\n\t\t};\r\n\t}\r\n\tasync onboardingStatus(): Promise<OperationResult<never, OnboardingStatus>> {\r\n\t\tconst res = await this.client.request<OnboardingStatusQuery>(ONBOARDING_STATUS_QUERY);\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.onboardingStatus ?? [] } : res;\r\n\t}\r\n\r\n\tasync completeOnboarding(\r\n\t\tvariables: CompleteOnboardingMutationVariables,\r\n\t): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCompleteOnboardingMutation,\r\n\t\t\tCompleteOnboardingMutationVariables\r\n\t\t>(COMPLETE_ONBOARDING_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.completeOnboarding) {\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 skipOnboarding(): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<SkipOnboardingMutation>(SKIP_ONBOARDING_MUTATION);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.skipOnboarding) {\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\tACTIVITY_RECORDS_QUERY,\r\n\tBET_RECORDS_QUERY,\r\n\tDEPOSITS_COUNT_QUERY,\r\n\tDEPOSIT_RECORDS_QUERY,\r\n\tDOWNLINES_BY_NAME_QUERY,\r\n\tPOINTS_WALLET_TRANSACTIONS_QUERY,\r\n\tPROMO_BY_CODE_QUERY,\r\n\tREFERRALS_QUERY,\r\n\tREFERRAL_COMMISSION_QUERY,\r\n\tTRANSACTION_RECORDS_QUERY,\r\n\tUPLINES_BY_NAME_QUERY,\r\n\tWITHDRAWAL_RECORDS_QUERY,\r\n} from './queries';\r\nimport type {\r\n\tActivityRecord,\r\n\tActivityRecordsQuery,\r\n\tActivityRecordsQueryVariables,\r\n\tBetRecord,\r\n\tBetRecordsQuery,\r\n\tBetRecordsQueryVariables,\r\n\tDepositRecord,\r\n\tDepositRecordsQuery,\r\n\tDepositRecordsQueryVariables,\r\n\tDepositsCountQuery,\r\n\tDownlinesByNameQuery,\r\n\tDownlinesByNameQueryVariables,\r\n\tPaginatedQueryResult,\r\n\tPointsWalletTransaction,\r\n\tPointsWalletTransactionsQuery,\r\n\tPointsWalletTransactionsQueryVariables,\r\n\tPromoByCodeQuery,\r\n\tPromoByCodeQueryVariables,\r\n\tReferral,\r\n\tReferralCommission,\r\n\tReferralCommissionQuery,\r\n\tReferralsQuery,\r\n\tReferralsQueryVariables,\r\n\tSpotBonusPromo,\r\n\tTransactionRecord,\r\n\tTransactionRecordsQuery,\r\n\tTransactionRecordsQueryVariables,\r\n\tUplinesByNameQuery,\r\n\tUplinesByNameQueryVariables,\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 pointsWalletTransactions(\r\n\t\tvariables?: PointsWalletTransactionsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<PointsWalletTransaction>>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tPointsWalletTransactionsQuery,\r\n\t\t\tPointsWalletTransactionsQueryVariables\r\n\t\t>(POINTS_WALLET_TRANSACTIONS_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.pointsWalletTransactions } : res;\r\n\t}\r\n\r\n\tasync activityRecords(\r\n\t\tvariables?: ActivityRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<ActivityRecord>>> {\r\n\t\tconst res = await this.client.request<ActivityRecordsQuery, ActivityRecordsQueryVariables>(\r\n\t\t\tACTIVITY_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.activityRecords } : res;\r\n\t}\r\n\r\n\tasync referrals(\r\n\t\tvariables?: ReferralsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Referral>>> {\r\n\t\tconst res = await this.client.request<ReferralsQuery, ReferralsQueryVariables>(\r\n\t\t\tREFERRALS_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.referrals } : res;\r\n\t}\r\n\r\n\tasync referralCommission(): Promise<\r\n\t\tOperationResult<never, ReferralCommission | null | undefined>\r\n\t> {\r\n\t\tconst res = await this.client.request<ReferralCommissionQuery>(REFERRAL_COMMISSION_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.referralCommission } : res;\r\n\t}\r\n\r\n\tasync uplinesByName(\r\n\t\tvariables: UplinesByNameQueryVariables,\r\n\t): Promise<OperationResult<never, Referral[]>> {\r\n\t\tconst res = await this.client.request<UplinesByNameQuery, UplinesByNameQueryVariables>(\r\n\t\t\tUPLINES_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.uplinesByName } : res;\r\n\t}\r\n\tasync downlinesByName(\r\n\t\tvariables: DownlinesByNameQueryVariables,\r\n\t): Promise<OperationResult<never, Referral[]>> {\r\n\t\tconst res = await this.client.request<DownlinesByNameQuery, DownlinesByNameQueryVariables>(\r\n\t\t\tDOWNLINES_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.downlinesByName } : res;\r\n\t}\r\n\r\n\tasync promoByCode(\r\n\t\tvariables: PromoByCodeQueryVariables,\r\n\t): Promise<OperationResult<never, SpotBonusPromo>> {\r\n\t\tconst res = await this.client.request<PromoByCodeQuery, PromoByCodeQueryVariables>(\r\n\t\t\tPROMO_BY_CODE_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.promoByCode } : res;\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\tMARK_ALL_MESSAGE_AS_READ_MUTATION,\r\n\tMARK_MESSAGE_AS_READ_MUTATION,\r\n\tMESSAGES_QUERY,\r\n\tUNREAD_MESSAGES_COUNT_QUERY,\r\n\tCLAIM_REWARD_MUTATION,\r\n} from './queries';\r\nimport type {\r\n\tClaimRewardError,\r\n\tClaimRewardMutation,\r\n\tClaimRewardMutationVariables,\r\n\tClaimRewardQueryVariables,\r\n\tMarkAllMessageAsReadMutation,\r\n\tMarkMessageAsReadMutation,\r\n\tMarkMessageAsReadMutationVariables,\r\n\tMessage,\r\n\tMessagesQuery,\r\n\tMessagesQueryVariables,\r\n\tPaginatedQueryResult,\r\n\tUnreadMessagesCountQuery,\r\n\tUnreadMessagesCountQueryVariables,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class TriggerService {\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 messages(\r\n\t\tvariables?: MessagesQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Message>>> {\r\n\t\tconst res = await this.client.request<MessagesQuery, MessagesQueryVariables>(\r\n\t\t\tMESSAGES_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.messages } : res;\r\n\t}\r\n\r\n\tasync unreadMessagesCount(\r\n\t\tvariables?: UnreadMessagesCountQueryVariables,\r\n\t): Promise<OperationResult<never, number>> {\r\n\t\tconst res = await this.client.request<UnreadMessagesCountQuery, MessagesQueryVariables>(\r\n\t\t\tUNREAD_MESSAGES_COUNT_QUERY,\r\n\t\t\t{\r\n\t\t\t\t...variables,\r\n\t\t\t\tfilter: {\r\n\t\t\t\t\t...variables?.filter,\r\n\t\t\t\t\tmarkedAsRead: {\r\n\t\t\t\t\t\tequal: false,\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\treturn res.ok ? { ok: res.ok, data: res.data.messages.totalCount } : res;\r\n\t}\r\n\r\n\tasync markMessageAsRead(variables: MarkMessageAsReadMutationVariables): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tMarkMessageAsReadMutation,\r\n\t\t\tMarkMessageAsReadMutationVariables\r\n\t\t>(MARK_MESSAGE_AS_READ_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\t\tif (!res.data.markMessageAsRead) {\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 markAllMessageAsRead(): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<MarkAllMessageAsReadMutation>(\r\n\t\t\tMARK_ALL_MESSAGE_AS_READ_MUTATION,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\t\tif (!res.data.markAllMessageAsRead) {\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 claimReward(\r\n\t\tvariables: ClaimRewardMutationVariables,\r\n\t): Promise<OperationResult<ClaimRewardError>> {\r\n\t\tconst res = await this.client.request<ClaimRewardMutation, ClaimRewardQueryVariables>(\r\n\t\t\tCLAIM_REWARD_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.claimReward) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.claimReward.__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 { GRECAPTCHA_HEADER } from '../utils/const';\r\nimport type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tAVAILABLE_PROMOS_QUERY,\r\n\tBONUSES_QUERY,\r\n\tBONUS_QUERY,\r\n\tCASHBACKS_QUERY,\r\n\tCASHBACK_BONUSES_QUERY,\r\n\tCLAIM_CASHBACK_BONUS_MUTATION,\r\n\tCLAIM_SPOT_BONUS,\r\n\tCREATE_AIO_INSTAPAY_WITHDRAWAL_MUTATION,\r\n\tCREATE_AIO_ONLINE_BANK_DEPOSIT_MUTATION,\r\n\tCREATE_AIO_QRPH_DEPOSIT_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\tINSTAPAY_BANK_LIST_QUERY,\r\n\tMAYA_SESSION_QUERY,\r\n\tPOINTS_WALLET_QUERY,\r\n\tPROMOS_QUERY,\r\n\tREDEEM_POINTS_TO_CASH_MUTATION,\r\n\tREMAINING_DAILY_WITHDRAWALS_COUNT_QUERY,\r\n\tVALIDATE_MAYA_SESSION_MUTATION,\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\tBonusesQuery,\r\n\tCashback,\r\n\tCashbackBonus,\r\n\tCashbackBonusesQuery,\r\n\tCashbacksQuery,\r\n\tClaimCashbackBonusError,\r\n\tClaimCashbackBonusMutation,\r\n\tClaimCashbackBonusMutationVariables,\r\n\tClaimSpotBonusError,\r\n\tClaimSpotBonusMutation,\r\n\tClaimSpotBonusMutationVariable,\r\n\tCreateAIOInstapayWithdrawalMutation,\r\n\tCreateAIOInstapayWithdrawalMutationVariables,\r\n\tCreateAIOOnlineBankDepositMutation,\r\n\tCreateAIOOnlineBankDepositMutationVariables,\r\n\tCreateAIOQRPHDepositMutation,\r\n\tCreateAIOQRPHDepositMutationVariables,\r\n\tCreateBankWithdrawalMutation,\r\n\tCreateBankWithdrawalMutationVariables,\r\n\tCreateDepositError,\r\n\tCreateGCashDepositMutation,\r\n\tCreateGCashDepositMutationVariables,\r\n\tCreateGCashWithdrawalMutation,\r\n\tCreateGCashWithdrawalMutationVariables,\r\n\tCreateGameSessionError,\r\n\tCreateGameSessionMutation,\r\n\tCreateGameSessionMutationVariables,\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\tGameSession,\r\n\tGameSessionQuery,\r\n\tGameSessionQueryVariables,\r\n\tInstapayBank,\r\n\tInstapayBankListQuery,\r\n\tMayaSession,\r\n\tMayaSessionQuery,\r\n\tMayaSessionQueryVariables,\r\n\tPointsWallet,\r\n\tPointsWalletQuery,\r\n\tPromo,\r\n\tPromosQuery,\r\n\tRedeemPointsToCashError,\r\n\tRedeemPointsToCashMutation,\r\n\tRedeemPointsToCashMutationVariables,\r\n\tRemainingDailyWithdrawalsCountQuery,\r\n\tValidateMayaSessionMutation,\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 createAIOQRPHDeposit(\r\n\t\tvariables: CreateAIOQRPHDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst { reCAPTCHAResponse, ...others } = variables;\r\n\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateAIOQRPHDepositMutation,\r\n\t\t\tCreateAIOQRPHDepositMutationVariables\r\n\t\t>(CREATE_AIO_QRPH_DEPOSIT_MUTATION, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\tif (res.data.createAIOQRPHDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createAIOQRPHDeposit.__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 createAIOOnlineBankDeposit(\r\n\t\tvariables: CreateAIOOnlineBankDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst { reCAPTCHAResponse, ...others } = variables;\r\n\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateAIOOnlineBankDepositMutation,\r\n\t\t\tCreateAIOOnlineBankDepositMutationVariables\r\n\t\t>(CREATE_AIO_ONLINE_BANK_DEPOSIT_MUTATION, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\tif (res.data.createAIOOnlineBankDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createAIOOnlineBankDeposit.__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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 createAIOInstapayWithdrawal(\r\n\t\tvariables: CreateAIOInstapayWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst { reCAPTCHAResponse, ...others } = variables;\r\n\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateAIOInstapayWithdrawalMutation,\r\n\t\t\tCreateAIOInstapayWithdrawalMutationVariables\r\n\t\t>(CREATE_AIO_INSTAPAY_WITHDRAWAL_MUTATION, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\tif (res.data.createAIOInstapayWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createAIOInstapayWithdrawal.__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 instapayBankList(): Promise<OperationResult<never, InstapayBank[]>> {\r\n\t\tconst res = await this.client.request<InstapayBankListQuery>(INSTAPAY_BANK_LIST_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.instapayBankList } : res;\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 redeemPointsToCash(\r\n\t\tvariables: RedeemPointsToCashMutationVariables,\r\n\t): Promise<OperationResult<RedeemPointsToCashError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRedeemPointsToCashMutation,\r\n\t\t\tRedeemPointsToCashMutationVariables\r\n\t\t>(REDEEM_POINTS_TO_CASH_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.redeemPointsToCash) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.redeemPointsToCash.__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 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.current,\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.current,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\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\tasync validateMayaSession(): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<ValidateMayaSessionMutation>(\r\n\t\t\tVALIDATE_MAYA_SESSION_MUTATION,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.validateMayaSession) {\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 bonuses(): Promise<OperationResult<never, Bonus[]>> {\r\n\t\tconst res = await this.client.request<BonusesQuery>(BONUSES_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.bonuses ?? [] } : res;\r\n\t}\r\n\r\n\tasync claimSpotBonus(\r\n\t\tvariable: ClaimSpotBonusMutationVariable,\r\n\t): Promise<OperationResult<ClaimSpotBonusError>> {\r\n\t\tconst res = await this.client.request<ClaimSpotBonusMutation, ClaimSpotBonusMutationVariable>(\r\n\t\t\tCLAIM_SPOT_BONUS,\r\n\t\t\tvariable,\r\n\t\t);\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.claimSpotBonus) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.claimSpotBonus.__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","export function cloneDate(date: Date) {\r\n\treturn new Date(date.getTime());\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","import { addMinutes } from './add-minutes';\r\nimport { isAfter } from './is-after';\r\n\r\ninterface CacheValue<T> {\r\n\tvalue: T;\r\n\tvalidUntil: Date;\r\n}\r\n\r\ninterface CacheConfig {\r\n\t/**\r\n\t * @description The number in minutes the cache is valid\r\n\t * @default 5\r\n\t */\r\n\tcacheTime: number;\r\n}\r\n\r\nexport class Cache<T = unknown> {\r\n\tprivate config: CacheConfig;\r\n\tprivate cache: Record<string, CacheValue<T>>;\r\n\r\n\tconstructor(config?: CacheConfig) {\r\n\t\tthis.cache = {};\r\n\t\tthis.config = {\r\n\t\t\tcacheTime: 5,\r\n\t\t\t...config,\r\n\t\t};\r\n\t}\r\n\r\n\tset(key: string, value: T) {\r\n\t\tconst validUntil = addMinutes(new Date(), this.config.cacheTime);\r\n\r\n\t\tthis.cache[key] = {\r\n\t\t\tvalue,\r\n\t\t\tvalidUntil,\r\n\t\t};\r\n\t}\r\n\r\n\tget<V = never>(key: string): [V] extends [never] ? T | null : V | null {\r\n\t\tconst o = this.cache[key];\r\n\t\tif (!o) return null;\r\n\t\tif (isAfter(new Date(), o.validUntil)) return null;\r\n\t\treturn o.value as any;\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\toptions?: GraphQLClientFetchOptions,\r\n\t) {\r\n\t\tconst opts = mergeFetchOptions(this.options, options);\r\n\t\tconst body = JSON.stringify({\r\n\t\t\tquery,\r\n\t\t\tvariables,\r\n\t\t});\r\n\r\n\t\tconst headers = new Headers(opts.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 url = new URL(this.url);\r\n\t\tconst operationInfo = getOperationInfo(query);\r\n\r\n\t\tif (operationInfo) {\r\n\t\t\turl.searchParams.set(`_${operationInfo.type}`, operationInfo.name);\r\n\t\t}\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(url, {\r\n\t\t\t\t...opts,\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\toptions?: GraphQLClientFetchOptions,\r\n\t) {\r\n\t\tconst opts = mergeFetchOptions(this.options, options);\r\n\t\tconst body = this.createUploadBody(query, variables);\r\n\r\n\t\tconst headers = new Headers(opts.headers);\r\n\r\n\t\theaders.delete('Content-Type');\r\n\r\n\t\tconst url = new URL(this.url);\r\n\t\tconst operationInfo = getOperationInfo(query);\r\n\r\n\t\tif (operationInfo) {\r\n\t\t\turl.searchParams.set(`_${operationInfo.type}`, operationInfo.name);\r\n\t\t}\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(url, {\r\n\t\t\t\t...opts,\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\r\nfunction getOperationInfo(query: string) {\r\n\tconst l = query.match(/(query|mutation)\\s+(\\w+)/);\r\n\r\n\tif (!l) return null;\r\n\r\n\tconst k = l.at(1);\r\n\tconst v = l.at(2);\r\n\r\n\treturn k && v ? { type: k, name: v } : null;\r\n}\r\n\r\nfunction mergeFetchOptions(\r\n\ti: GraphQLClientFetchOptions | undefined,\r\n\tj: GraphQLClientFetchOptions | undefined,\r\n): GraphQLClientFetchOptions {\r\n\tif (!i) return j ?? {};\r\n\tif (!j) return i ?? {};\r\n\r\n\treturn {\r\n\t\t...i,\r\n\t\t...j,\r\n\r\n\t\theaders: mergeHeaders(i.headers, j.headers),\r\n\t};\r\n}\r\n\r\nfunction mergeHeaders(i: HeadersInit | undefined, j: HeadersInit | undefined) {\r\n\tif (!i) return j;\r\n\tif (!j) return i;\r\n\r\n\tconst h = new Headers();\r\n\r\n\tnew Headers(i).forEach((v, k) => h.append(k, v));\r\n\tnew Headers(j).forEach((v, k) => h.append(k, v));\r\n\r\n\treturn h;\r\n}\r\n","import type { Currency, Locale } from '../sdk';\r\n\r\nexport function getLocaleByCurrency(currency: Currency): Locale {\r\n\tif (currency === 'INR') return 'en-IN';\r\n\tif (currency === 'MYR') return 'en-MY';\r\n\tif (currency === 'IDR') return 'en-ID';\r\n\tif (currency === 'USD') return 'en-US';\r\n\treturn 'en-PH';\r\n}\r\n\r\n/*\r\n * +63 (Philippines)\r\n * +91 (India)\r\n * +60 (Malaysia)\r\n * +62 (Indonesia)\r\n * +1 (UnitedStates)\r\n */\r\nexport function getAreaCodeByLocale(locale: Locale) {\r\n\tif (locale === 'en-IN') return '+91';\r\n\tif (locale === 'en-MY') return '+60';\r\n\tif (locale === 'en-ID') return '+62';\r\n\tif (locale === 'en-US') return '+1';\r\n\treturn '+63';\r\n}\r\n","import type { Locale } from '../sdk';\r\nimport { getAreaCodeByLocale } from './locale';\r\n\r\n/**\r\n * @description Ensures mobile number has complete area code\r\n * @example\r\n * ```ts\r\n * addAreaCode('9190010001', 'en-PH'); // +639190010001\r\n * addAreaCode('09190010001', 'en-PH'); // +639190010001\r\n * addAreaCode('639190010001', 'en-PH'); // +639190010001\r\n * addAreaCode('+639190010001', 'en-PH'); // +639190010001\r\n * ```\r\n */\r\nexport function addAreaCode(mobileNumber: string, locale: Locale) {\r\n\tconst areaCode = getAreaCodeByLocale(locale);\r\n\r\n\t/* starts with area code */\r\n\tif (mobileNumber.startsWith(areaCode)) return mobileNumber;\r\n\t/* starts with area code without \"+\" */\r\n\tif (mobileNumber.startsWith(areaCode.substring(1))) return `+${mobileNumber}`;\r\n\t/* starts with zero */\r\n\tif (mobileNumber.startsWith('0')) return `${areaCode}${mobileNumber.substring(1)}`;\r\n\r\n\treturn `${areaCode}${mobileNumber}`;\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","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","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 type { AuthService, WalletService } from '../services';\r\nimport { addDays } from '../utils/add-days';\r\nimport { addMinutes } from '../utils/add-minutes';\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 {\r\n\tlogs?: boolean;\r\n\tauthService: AuthService;\r\n\twalletService: WalletService;\r\n}\r\n\r\nexport class SessionManager {\r\n\tprivate logger: 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 = config.authService;\r\n\t\tthis.walletService = config.walletService;\r\n\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: config.logs ?? 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\t\t\tif (!r0.data?.member) {\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: 'HttpForbidden',\r\n\t\t\t\t\t\tmessage: 'Forbidden',\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\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 * Token sign up (for 3rd party sign in)\r\n\t\t */\r\n\r\n\t\tif (input.type === 'TOKEN') {\r\n\t\t\tconst res = await this.authService.createSession({ token: input.token });\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\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: 'SessionExpiredError',\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/*\r\n\t\t\t\t\t * return previous session for all errors except \"InvalidTokenError\" and \"AccountBlacklistedError\"\r\n\t\t\t\t\t */\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tres.error.name === 'InvalidTokenError' ||\r\n\t\t\t\t\t\tres.error.name === 'AccountBlacklistedError'\r\n\t\t\t\t\t) {\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 === 'InvalidTokenError') return false;\r\n\t\tif (s.error?.name === 'SessionExpiredError') return false;\r\n\t\tif (s.error?.name === 'AccountBlacklistedError') 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","type MaybeNumber = number | string | undefined | null;\r\n\r\nexport function parseDecimal(value: MaybeNumber): number | undefined;\r\nexport function parseDecimal(value: MaybeNumber, fallback: number): number;\r\nexport function parseDecimal(value: MaybeNumber, 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 { compact } from '../utils/compact';\r\nimport { getLocaleByCurrency } from '../utils/locale';\r\nimport { parseDecimal } from '../utils/parse-decimal';\r\nimport type { Assign } from '../utils/types';\r\nimport type * as External from './types';\r\n\r\nexport class Transformer {\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\tpointsWalletTransaction: this.pointsWalletTransaction.bind(this),\r\n\t\t\tactivityRecord: this.activityRecord.bind(this),\r\n\t\t\treferral: this.referral.bind(this),\r\n\t\t\treferralCommission: this.referralCommission.bind(this),\r\n\t\t\tplatform__next: this.platform__next.bind(this),\r\n\t\t\tpointsClubSettings: this.pointsClubSettings.bind(this),\r\n\t\t\tpaymentSettings: this.paymentSettings.bind(this),\r\n\t\t\tmessage: this.message.bind(this),\r\n\t\t\tinstapayBank: this.instapayBank.bind(this),\r\n\t\t\tpromoByCode: this.promoByCode.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\tfields: data.config.fields,\r\n\t\t};\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\t/** @deprecated */\r\n\tprivate platform(data: Internal.Platform): External.Platform {\r\n\t\treturn {\r\n\t\t\ttimezone: data.timezone,\r\n\t\t\tcurrency: data.currency,\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\tonlineBank: {\r\n\t\t\t\t\t\tandroidEnabled: data.onlineBankDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.onlineBankDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.onlineBankDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.onlineBankDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.onlineBankDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.onlineBankDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tqrph: {\r\n\t\t\t\t\t\tandroidEnabled: data.qrphDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.qrphDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.qrphDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.qrphDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.qrphDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.qrphDepositGatewaySettings?.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\tinstapay: {\r\n\t\t\t\t\t\tandroidEnabled: data.instapayWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.instapayWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.instapayWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.instapayWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.instapayWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\t\tdata.instapayWithdrawalGatewaySettings?.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 platform__next(data: Internal.Platform__Next): External.Platform__Next {\r\n\t\treturn {\r\n\t\t\tcurrency: data.currency,\r\n\t\t\ttimezone: data.timezone,\r\n\t\t\tlocale: getLocaleByCurrency(data.currency),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate pointsClubSettings(data: Internal.PointsClubSettings): External.PointsClubSettings {\r\n\t\treturn {\r\n\t\t\tmultiplier: parseDecimal(data.multiplier, 0),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate paymentSettings(data: Internal.PaymentSettings): External.PaymentSettings {\r\n\t\treturn {\r\n\t\t\tminimumFirstDepositAmount: parseDecimal(data.minimumFirstDepositAmount),\r\n\t\t\trestrictWithdrawalsToVerifiedMembers: data.restrictWithdrawalsToVerifiedMembers,\r\n\t\t\tdepositGateway: {\r\n\t\t\t\tbank: {\r\n\t\t\t\t\tandroidEnabled: data.bankDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.bankDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.bankDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.bankDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.bankDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.bankDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tgcash: {\r\n\t\t\t\t\tandroidEnabled: data.gcashDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.gcashDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.gcashDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.gcashDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.gcashDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.gcashDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tmaya: {\r\n\t\t\t\t\tandroidEnabled: data.mayaDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.mayaDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.mayaDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.mayaDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.mayaDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tmayaApp: {\r\n\t\t\t\t\tandroidEnabled: data.mayaAppDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.mayaAppDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.mayaAppDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.mayaAppDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tonlineBank: {\r\n\t\t\t\t\tandroidEnabled: data.onlineBankDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.onlineBankDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.onlineBankDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.onlineBankDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.onlineBankDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.onlineBankDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tqrph: {\r\n\t\t\t\t\tandroidEnabled: data.qrphDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.qrphDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.qrphDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.qrphDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.qrphDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.qrphDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\twithdrawalGateway: {\r\n\t\t\t\tbank: {\r\n\t\t\t\t\tandroidEnabled: data.bankWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.bankWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.bankWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.bankWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tgcash: {\r\n\t\t\t\t\tandroidEnabled: data.gcashWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.gcashWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.gcashWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.gcashWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.gcashWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.gcashWithdrawalGatewaySettings?.maximumAmount, 1000000),\r\n\t\t\t\t},\r\n\t\t\t\tmaya: {\r\n\t\t\t\t\tandroidEnabled: data.mayaWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.mayaWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.mayaWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.mayaWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tmayaApp: {\r\n\t\t\t\t\tandroidEnabled: data.mayaAppWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.mayaAppWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.mayaAppWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.mayaAppWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\tdata.mayaAppWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t1000000,\r\n\t\t\t\t\t),\r\n\t\t\t\t},\r\n\t\t\t\tinstapay: {\r\n\t\t\t\t\tandroidEnabled: data.instapayWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.instapayWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.instapayWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.instapayWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.instapayWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\tdata.instapayWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t1000000,\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\tprivate account(data: Internal.MemberAccount): 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\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\tconst o: External.Wallet = {\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\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate verificationDetails(data: Internal.MemberVerification): External.VerificationDetails {\r\n\t\tconst o: External.VerificationDetails = {\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\tpermanentAddress: data.permanentAddress,\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\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate profileCompletion(data: Internal.ProfileCompletion): External.ProfileCompletion {\r\n\t\tconst o: External.ProfileCompletion = {\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.completionPercentage, 0),\r\n\t\t};\r\n\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate announcement(data: Internal.Announcement): External.Announcement {\r\n\t\tconst o: External.Announcement = {\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\r\n\t\treturn o;\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\terror: data.error ?? 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: External.Deposit = {\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\tvca: data.vca ?? undefined,\r\n\t\t\tqrCode: data.qrCode ?? undefined,\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\terror: data.error ?? undefined,\r\n\t\t};\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate betRecord(\r\n\t\tdata: Assign<Internal.BetRecord, { game?: Internal.Game }>,\r\n\t): 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: data.game ? this.game(data.game) : undefined,\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(\r\n\t\tdata: Assign<Internal.LatestBetRecord, { game?: Internal.Game }>,\r\n\t): External.LatestBetRecord {\r\n\t\tconst o: External.LatestBetRecord = {\r\n\t\t\tid: data.id,\r\n\t\t\tmember: data.member,\r\n\t\t\tgame: data.game ? this.game(data.game) : undefined,\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\r\n\t\treturn o;\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\tconst o: External.Game = {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\ttags: data.tags ?? [],\r\n\t\t\tname: data.name,\r\n\t\t\timages: [data.customImage, data.image].filter(Boolean) as string[],\r\n\t\t\tprovider: data.provider,\r\n\t\t\treference: data.reference,\r\n\t\t};\r\n\r\n\t\treturn o;\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: !data.banner\r\n\t\t\t\t? null\r\n\t\t\t\t: (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\tmaximumDepositAmount: parseDecimal(data.maximumDepositAmount),\r\n\t\t\tminimumDepositAmount: parseDecimal(data.minimumDepositAmount),\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\tconst o: External.Cashback = {\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\tminimumCashback: parseDecimal(data.minimumCashback, 0),\r\n\t\t\tmaximumMonthlyCashback: parseDecimal(data.maximumMonthlyCashback),\r\n\t\t\tbanner: !data.banner\r\n\t\t\t\t? null\r\n\t\t\t\t: (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\tturnoverContributionPercentagePerGameProvider: Object.entries(\r\n\t\t\t\tdata.turnoverContributionPercentagePerGameProvider,\r\n\t\t\t).reduce<Partial<Record<External.GameProvider, number>>>((o, [k, v]) => {\r\n\t\t\t\to[k as External.GameProvider] = parseDecimal(v, 0);\r\n\t\t\t\treturn o;\r\n\t\t\t}, {}),\r\n\t\t};\r\n\r\n\t\treturn o;\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? undefined\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\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\tconst o: External.CashbackBonus = {\r\n\t\t\tid: data.id,\r\n\t\t\ttotal: parseDecimal(data.total, 0),\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\r\n\t\treturn o;\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\tconst o: External.PointsWallet = {\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\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate pointsWalletTransaction(\r\n\t\tdata: Internal.PointsWalletTransaction,\r\n\t): External.PointsWalletTransaction {\r\n\t\tconst o: External.PointsWalletTransaction = {\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\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate activityRecord(data: Internal.ActivityRecord): External.ActivityRecord {\r\n\t\tconst o: External.ActivityRecord = {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\tamount: data.amount ? parseDecimal(data.amount, 0) : undefined,\r\n\t\t\tdomain: data.domain ?? undefined,\r\n\t\t\tdetails: data.details,\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 referral(data: Internal.Referral): External.Referral {\r\n\t\tconst o: External.Referral = {\r\n\t\t\tid: data.id,\r\n\t\t\tlevel: data.level,\r\n\t\t\tupline: data.upline,\r\n\t\t\tdownline: data.downline,\r\n\t\t\tturnover: parseDecimal(data.turnover, 0),\r\n\t\t\tcommission: parseDecimal(data.commission, 0),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate referralCommission(data: Internal.ReferralCommission): External.ReferralCommission {\r\n\t\tconst o: External.ReferralCommission = {\r\n\t\t\tid: data.id,\r\n\t\t\tcommission: parseDecimal(data.commission, 0),\r\n\t\t\tlevel1Commission: parseDecimal(data.level1Commission, 0),\r\n\t\t\tlevel2Commission: parseDecimal(data.level2Commission, 0),\r\n\t\t\tlevel3Commission: parseDecimal(data.level3Commission, 0),\r\n\t\t\treferralsCount: data.referralsCount,\r\n\t\t\tlevel1ReferralsCount: data.level1ReferralsCount,\r\n\t\t\tlevel2ReferralsCount: data.level2ReferralsCount,\r\n\t\t\tlevel3ReferralsCount: data.level3ReferralsCount,\r\n\t\t\treferralCode: data.referralCode,\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 o;\r\n\t}\r\n\r\n\tprivate message(data: Internal.Message): External.Message {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\ticon: data.icon,\r\n\t\t\tlogo: data.logo,\r\n\t\t\timage: data.image,\r\n\t\t\ttitle: data.title,\r\n\t\t\tpopup: data.popup,\r\n\t\t\tcontent: data.content,\r\n\t\t\tactions: data.actions,\r\n\t\t\tmarkedAsRead: data.markedAsRead,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate instapayBank(data: Internal.InstapayBank): External.InstapayBank {\r\n\t\treturn data;\r\n\t}\r\n\r\n\tprivate promoByCode(data: Internal.SpotBonusPromo): External.SpotBonusPromo {\r\n\t\treturn {\r\n\t\t\tactiveBonusesCount: data.activeBonusesCount,\r\n\t\t\tbonusesCount: data.bonusesCount,\r\n\t\t\tcancelledBonusesCount: data.cancelledBonusesCount,\r\n\t\t\tclearedBonusesCount: data.clearedBonusesCount,\r\n\t\t\tclosedBonusesCount: data.closedBonusesCount,\r\n\t\t\tclosedBonusesCountPercentage: parseDecimal(data.closedBonusesCountPercentage, 0),\r\n\t\t\tcode: data.code,\r\n\t\t\tdaysToClear: data.daysToClear,\r\n\t\t\tenabledGameProviders: data.enabledGameProviders,\r\n\t\t\tid: data.id,\r\n\t\t\texpiredBonusesCount: data.expiredBonusesCount,\r\n\t\t\tmaximumBonusesCountLimit: data.maximumBonusesCountLimit,\r\n\t\t\tname: data.name,\r\n\t\t\tstatus: data.status,\r\n\t\t\ttotalBet: parseDecimal(data.totalBet, 0),\r\n\t\t\ttotalBonus: parseDecimal(data.totalBonus, 0),\r\n\t\t\ttotalBonusBalance: parseDecimal(data.totalBonusBalance, 0),\r\n\t\t\ttotalBonusCashedOut: parseDecimal(data.totalBonusCashedOut, 0),\r\n\t\t\ttotalDeposit: parseDecimal(data.totalDeposit, 0),\r\n\t\t\tturnoverRequirementMultiplier: parseDecimal(data.turnoverRequirementMultiplier, 0),\r\n\t\t\ttype: data.type,\r\n\t\t\tzeroedOutBonusesCount: data.zeroedOutBonusesCount,\r\n\t\t\tzeroOutThreshold: parseDecimal(data.zeroOutThreshold, 0),\r\n\t\t\tbonusAmount: parseDecimal(data.bonusAmount, 0),\r\n\t\t\tdescription: data.description,\r\n\t\t\tturnoverRequirementType: data.turnoverRequirementType,\r\n\t\t\tactivationEndDateTime: data.activationEndDateTime\r\n\t\t\t\t? new Date(data.activationEndDateTime)\r\n\t\t\t\t: undefined,\r\n\t\t\tactivationStartDateTime: data.activationStartDateTime\r\n\t\t\t\t? new Date(data.activationStartDateTime)\r\n\t\t\t\t: undefined,\r\n\t\t\tdateTimeClosed: data.dateTimeClosed ? new Date(data.dateTimeClosed) : undefined,\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tturnoverRequirementContributionPercentagePerGameProvider: Object.entries(\r\n\t\t\t\tdata.turnoverRequirementContributionPercentagePerGameProvider,\r\n\t\t\t).reduce<Partial<Record<External.GameProvider, number>>>((o, [k, v]) => {\r\n\t\t\t\to[k as External.GameProvider] = parseDecimal(v, 0);\r\n\t\t\t\treturn o;\r\n\t\t\t}, {}),\r\n\t\t\tminimumTicketOddFactorPerSportsGameProvider: Object.entries(\r\n\t\t\t\tdata.minimumTicketOddFactorPerSportsGameProvider,\r\n\t\t\t).reduce<Partial<Record<External.GameProvider, number>>>((o, [k, v]) => {\r\n\t\t\t\to[k as External.GameProvider] = parseDecimal(v, 0);\r\n\t\t\t\treturn o;\r\n\t\t\t}, {}),\r\n\t\t\tbanner: data.banner,\r\n\t\t};\r\n\t}\r\n}\r\n","import {\r\n\tAccountService,\r\n\tAuthService,\r\n\tCmsPortalService,\r\n\tFileService,\r\n\tGameService,\r\n\tPortalService,\r\n\tReportService,\r\n\tTriggerService,\r\n\tWalletService,\r\n} from '../services';\r\nimport { Cache } from '../utils/cache';\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 { addAreaCode } from '../utils/mobile-number';\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\tActivityRecordsInput,\r\n\tActivityRecordsReturn,\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\tBonusesReturn,\r\n\tCashbackBonusReturn,\r\n\tCashbacksReturn,\r\n\tClaimCashbackBonusReturn,\r\n\tClaimRewardReturn,\r\n\tClaimSpotBonusReturn,\r\n\tCompleteOnboardingInput,\r\n\tCompleteOnboardingReturn,\r\n\tCreateAccountInput,\r\n\tCreateAccountInput__Next,\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\tDownlinesByNameInput,\r\n\tDownlinesByNameReturn,\r\n\tEndGameSessionReturn,\r\n\tFileReturn,\r\n\tGameReturn,\r\n\tGameSessionReturn,\r\n\tGamesInput,\r\n\tGamesReturn,\r\n\tInstapayBankListReturn,\r\n\tLatestBetRecordsReturn,\r\n\tLocale,\r\n\tMarkAllMessagesAsReadReturn,\r\n\tMarkMessageAsReadReturn,\r\n\tMayaSignInInput,\r\n\tMayaSignInReturn,\r\n\tMessagesInput,\r\n\tMessagesReturn,\r\n\tMobileNumberSignInInput,\r\n\tMobileNumberSignInReturn,\r\n\tNameAndPasswordSignInInput,\r\n\tNameAndPasswordSignInReturn,\r\n\tOnboardingStatusReturn,\r\n\tPaymentSettingsReturn,\r\n\tPlatformReturn,\r\n\tPlatformReturn__Next,\r\n\tPointsClubSettingsReturn,\r\n\tPointsWalletReturn,\r\n\tPointsWalletTransactionsInput,\r\n\tPointsWalletTransactionsReturn,\r\n\tProfileCompletionReturn,\r\n\tPromoByCodeReturn,\r\n\tPromosReturn,\r\n\tRecommendedGamesInput,\r\n\tRecommendedGamesReturn,\r\n\tRedeemPointsInput,\r\n\tRedeemPointsReturn,\r\n\tReferralCodeReturn,\r\n\tReferralCommissionReturn,\r\n\tReferralsInput,\r\n\tReferralsReturn,\r\n\tRegisterMayaAccountInput,\r\n\tRegisterMayaAccountReturn,\r\n\tRemainingDailyWithdrawalsCountReturn,\r\n\tResetPasswordInput,\r\n\tResetPasswordReturn,\r\n\tSendVerificationCodeInput__Next,\r\n\tSendVerificationCodeReturn,\r\n\tSendVerificationCodeReturn__Next,\r\n\tSessionReturn,\r\n\tSignInInput,\r\n\tSignInReturn,\r\n\tSiteReturn,\r\n\tSkipOnboardingReturn,\r\n\tSubmitVerificationDetailsInput,\r\n\tSubmitVerificationDetailsReturn,\r\n\tTokenSignInInput,\r\n\tTokenSignInReturn,\r\n\tTransactionRecordsInput,\r\n\tTransactionRecordsReturn,\r\n\tUnreadMessagesCountInput,\r\n\tUnreadMessagesCountReturn,\r\n\tUpdateAccountInput,\r\n\tUpdateAccountReturn,\r\n\tUpdateReferralCodeInput,\r\n\tUpdateReferralCodeReturn,\r\n\tUpdateVerificationDetailsInput,\r\n\tUpdateVerificationDetailsReturn,\r\n\tUplinesByNameInput,\r\n\tUplinesByNameReturn,\r\n\tUploadImageFileInput,\r\n\tUploadImageFileReturn,\r\n\tValidateMayaSessionReturn,\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\tlogs?: boolean;\r\n}\r\n\r\nexport class Sdk {\r\n\tprivate cmsPortalService: CmsPortalService;\r\n\tprivate authService: AuthService;\r\n\tprivate gameService: GameService;\r\n\tprivate fileService: FileService;\r\n\tprivate walletService: WalletService;\r\n\tprivate accountService: AccountService;\r\n\tprivate reportService: ReportService;\r\n\tprivate portalService: PortalService;\r\n\tprivate triggerService: TriggerService;\r\n\tprivate sessionManager: SessionManager;\r\n\tprivate transformer: Transformer;\r\n\tprivate logger: Logger;\r\n\r\n\tprivate cache: Cache;\r\n\r\n\tconstructor(config: SdkConfig) {\r\n\t\tconst {\r\n\t\t\t/**/\r\n\t\t\tsite,\r\n\t\t\tsitePlatform,\r\n\t\t\tplatform,\r\n\t\t\tenvironment,\r\n\t\t\tlogs,\r\n\t\t} = config;\r\n\r\n\t\tconst production = environment === 'production';\r\n\r\n\t\tthis.transformer = new Transformer();\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: logs ?? false,\r\n\t\t});\r\n\r\n\t\tconst authUrl = production\r\n\t\t\t? import.meta.env.VITE_AUTH_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_AUTH_DEVELOPMENT_URL;\r\n\r\n\t\tconst walletUrl = production\r\n\t\t\t? import.meta.env.VITE_WALLET_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_WALLET_DEVELOPMENT_URL;\r\n\r\n\t\tconst reportUrl = production\r\n\t\t\t? import.meta.env.VITE_REPORT_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_REPORT_DEVELOPMENT_URL;\r\n\r\n\t\tconst accountUrl = production\r\n\t\t\t? import.meta.env.VITE_ACCOUNT_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_ACCOUNT_DEVELOPMENT_URL;\r\n\r\n\t\tconst portalUrl = production\r\n\t\t\t? import.meta.env.VITE_PORTAL_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_PORTAL_DEVELOPMENT_URL;\r\n\r\n\t\tconst fileUrl = production\r\n\t\t\t? import.meta.env.VITE_FILE_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_FILE_DEVELOPMENT_URL;\r\n\r\n\t\tconst gameUrl = production\r\n\t\t\t? import.meta.env.VITE_GAME_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_GAME_DEVELOPMENT_URL;\r\n\r\n\t\tconst triggerUrl = production\r\n\t\t\t? import.meta.env.VITE_TRIGGER_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_TRIGGER_DEVELOPMENT_URL;\r\n\r\n\t\t/*\r\n\t\tconst cmsPortalUrl = production\r\n\t\t\t? import.meta.env.VITE_CMS_PORTAL_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_CMS_PORTAL_DEVELOPMENT_URL;\r\n\t\t*/\r\n\r\n\t\tconst cmsPortalUrl = import.meta.env.VITE_CMS_PORTAL_PRODUCTION_URL;\r\n\r\n\t\tconst cmsPortalService = new CmsPortalService({\r\n\t\t\turl: cmsPortalUrl,\r\n\t\t\tsite,\r\n\t\t\tplatform: 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': platform,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconst gameService = new GameService(new GraphQLClient(gameUrl, graphqlClientConfig));\r\n\t\tconst fileService = new FileService(new GraphQLClient(fileUrl, graphqlClientConfig));\r\n\t\tconst walletService = new WalletService(new GraphQLClient(walletUrl, graphqlClientConfig));\r\n\t\tconst accountService = new AccountService(new GraphQLClient(accountUrl, graphqlClientConfig));\r\n\t\tconst reportService = new ReportService(new GraphQLClient(reportUrl, graphqlClientConfig));\r\n\t\tconst portalService = new PortalService(new GraphQLClient(portalUrl, graphqlClientConfig));\r\n\t\tconst triggerService = new TriggerService(new GraphQLClient(triggerUrl, graphqlClientConfig));\r\n\r\n\t\tconst authService = new AuthService({\r\n\t\t\turl: authUrl,\r\n\t\t\tplatform,\r\n\t\t});\r\n\r\n\t\tconst sessionManager = new SessionManager({\r\n\t\t\tlogs,\r\n\t\t\tauthService,\r\n\t\t\twalletService,\r\n\t\t});\r\n\r\n\t\tthis.authService = authService;\r\n\t\tthis.gameService = gameService;\r\n\t\tthis.fileService = fileService;\r\n\t\tthis.walletService = walletService;\r\n\t\tthis.accountService = accountService;\r\n\t\tthis.reportService = reportService;\r\n\t\tthis.portalService = portalService;\r\n\t\tthis.triggerService = triggerService;\r\n\t\tthis.sessionManager = sessionManager;\r\n\t\tthis.cmsPortalService = cmsPortalService;\r\n\r\n\t\tthis.cache = new Cache();\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\tprivate get locale() {\r\n\t\treturn new Promise<Locale>((resolve) => {\r\n\t\t\tconst cacheKey = 'locale';\r\n\t\t\tconst cacheValue = this.cache.get<Locale>(cacheKey);\r\n\r\n\t\t\tif (cacheValue) return resolve(cacheValue);\r\n\r\n\t\t\tthis.platform__next().then((res) => {\r\n\t\t\t\tif (res.ok) {\r\n\t\t\t\t\tthis.cache.set(cacheKey, res.data.locale);\r\n\t\t\t\t\tresolve(res.data.locale);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.logger.warn(\"Failed to fetch currency. Using 'PH' as fallback\");\r\n\t\t\t\t\tresolve('en-PH');\r\n\t\t\t\t}\r\n\t\t\t});\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: TokenSignInInput): Promise<TokenSignInReturn>;\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\tcase 'TOKEN': {\r\n\t\t\t\tconst res = await this.sessionManager.create({\r\n\t\t\t\t\ttype: 'TOKEN',\r\n\t\t\t\t\ttoken: input.token,\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res.ok ? { ok: true } : res;\r\n\t\t\t}\r\n\r\n\t\t\tcase 'MOBILE_NUMBER': {\r\n\t\t\t\tconst res = await this.sessionManager.create({\r\n\t\t\t\t\ttype: 'MOBILE_NUMBER',\r\n\t\t\t\t\tmobileNumber: addAreaCode(input.mobileNumber, await this.locale),\r\n\t\t\t\t\tverificationCode: input.verificationCode,\r\n\t\t\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res.ok ? { ok: true } : res;\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\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\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\tasync validateMayaSession(): Promise<ValidateMayaSessionReturn> {\r\n\t\treturn await this.walletService.validateMayaSession();\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.self();\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\t/** @deprecated */\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\tasync platform__next(): Promise<PlatformReturn__Next> {\r\n\t\tconst res = await this.portalService.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__next(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\tasync paymentSettings(): Promise<PaymentSettingsReturn> {\r\n\t\tconst res = await this.accountService.paymentSettings();\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.paymentSettings(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 r = await this.accountService.memberAccount();\r\n\r\n\t\tif (!r.ok) return r;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.account(r.data),\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated use `createAccount__next`\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\tbtag: input.btag,\r\n\t\t\t\tname: input.name,\r\n\t\t\t\tdomain: input.domain,\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: this.formatYmd(input.dateOfBirth),\r\n\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\tmobileNumber: addAreaCode(input.mobileNumber, await this.locale),\r\n\t\t\t},\r\n\t\t\treferralCode: input.referralCode,\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\tasync createAccount__next(input: CreateAccountInput__Next): Promise<CreateAccountReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Account).toString();\r\n\r\n\t\tif (input.type === 'MOBILE_NUMBER') {\r\n\t\t\tconst res = await this.accountService.registerMemberAccountViaMobile({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tbtag: input.btag,\r\n\t\t\t\t\tdomain: input.domain,\r\n\t\t\t\t\tmobileNumber: addAreaCode(input.mobileNumber, await this.locale),\r\n\t\t\t\t},\r\n\t\t\t\treferralCode: input.referralCode,\r\n\t\t\t\tverificationCode: input.verificationCode,\r\n\t\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\r\n\t\t\t});\r\n\r\n\t\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t\t}\r\n\r\n\t\tconst res = await this.accountService.registerMemberAccount__next({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tname: input.name,\r\n\t\t\t\tbtag: input.btag,\r\n\t\t\t\tdomain: input.domain,\r\n\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\tmobileNumber: input.mobileNumber\r\n\t\t\t\t\t? addAreaCode(input.mobileNumber, await this.locale)\r\n\t\t\t\t\t: undefined,\r\n\t\t\t},\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\tasync registerMayaAccount(input: RegisterMayaAccountInput): Promise<RegisterMayaAccountReturn> {\r\n\t\treturn await this.accountService.registerMayaMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tname: input.name,\r\n\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\tdomain: input.domain,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync updateAccount(id: string, input: UpdateAccountInput): Promise<UpdateAccountReturn> {\r\n\t\tconst {\r\n\t\t\t/**/\r\n\t\t\tpassword,\r\n\t\t\tdateOfBirth,\r\n\t\t\tmobileNumber,\r\n\t\t\tsecretAnswer,\r\n\t\t\ttransactionPassword,\r\n\t\t\t...others\r\n\t\t} = input;\r\n\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...others,\r\n\t\t\t\t\tpassword: password ? await sha256(password) : undefined,\r\n\t\t\t\t\ttransactionPassword: transactionPassword ? await sha256(transactionPassword) : undefined,\r\n\t\t\t\t\tmobileNumber: mobileNumber ? addAreaCode(mobileNumber, await this.locale) : undefined,\r\n\t\t\t\t\tsecretAnswer: secretAnswer ? await sha256(secretAnswer) : undefined,\r\n\t\t\t\t\tbirthDay: dateOfBirth\r\n\t\t\t\t\t\t? typeof dateOfBirth === 'string'\r\n\t\t\t\t\t\t\t? dateOfBirth\r\n\t\t\t\t\t\t\t: this.formatYmd(dateOfBirth)\r\n\t\t\t\t\t\t: 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\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\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: addAreaCode(input.mobileNumber, await this.locale),\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\t/**\r\n\t * @deprecated use `sendVerificationCode__next`\r\n\t */\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: addAreaCode(mobileNumber, await this.locale),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync sendVerificationCode__next(\r\n\t\tinput: SendVerificationCodeInput__Next,\r\n\t): Promise<SendVerificationCodeReturn__Next> {\r\n\t\tif (input.type === 'SMS') {\r\n\t\t\treturn this.authService.sendVerificationCode({\r\n\t\t\t\tchannel: 'SMS',\r\n\t\t\t\trecipient: addAreaCode(input.mobileNumber, await this.locale),\r\n\t\t\t\t...(input.strict && {\r\n\t\t\t\t\tverificationType: 'MEMBER',\r\n\t\t\t\t}),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"'Email' verification code is not yet supported\");\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\t...input?.filter,\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},\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\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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: addAreaCode(input.recipientMobileNumber, await this.locale),\r\n\t\t\t\t},\r\n\t\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\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: addAreaCode(input.recipientMobileNumber, await this.locale),\r\n\t\t\t\t},\r\n\t\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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 === 'AIO_INSTAPAY') {\r\n\t\t\tconst res = await this.walletService.createAIOInstapayWithdrawal({\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\tbankCode: input.bankCode,\r\n\t\t\t\t\taccountNumber: input.accountNumber,\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t},\r\n\t\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\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\tasync instapayBankList(): Promise<InstapayBankListReturn> {\r\n\t\tconst res = await this.walletService.instapayBankList();\r\n\t\tif (!res.ok) return res;\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.instapayBank),\r\n\t\t};\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\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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 === 'AIO_ONLINE_BANK') {\r\n\t\t\tconst res = await this.walletService.createAIOOnlineBankDeposit({\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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 === 'AIO_QRPH') {\r\n\t\t\tconst res = await this.walletService.createAIOQRPHDeposit({\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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 res0 = await this.reportService.betRecords({\r\n\t\t\t...input,\r\n\t\t\t...(input?.filter && {\r\n\t\t\t\tfilter: {\r\n\t\t\t\t\t...(input.filter.status && {\r\n\t\t\t\t\t\tstatus: input.filter.status,\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...(input.filter.serialCode && {\r\n\t\t\t\t\t\tserialCode: input.filter.serialCode,\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...(input.filter.vendorRoundId && {\r\n\t\t\t\t\t\tvendorRoundId: input.filter.vendorRoundId,\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...(input.filter.gameType && {\r\n\t\t\t\t\t\tgame__type: input.filter.gameType,\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...(input.filter.gameProvider && {\r\n\t\t\t\t\t\tgame__provider: input.filter.gameProvider,\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...(input.filter.dateTimeCreated && {\r\n\t\t\t\t\t\tdateTimeCreated: input.filter.dateTimeCreated,\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\tif (!res0.ok) return res0;\r\n\r\n\t\tconst ids = [...new Set(res0.data.edges.map((e) => e.node.game.id))];\r\n\r\n\t\tif (ids.length <= 0) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tbetRecords: [],\r\n\t\t\t\t\ttotalCount: 0,\r\n\t\t\t\t\tendCursor: undefined,\r\n\t\t\t\t\thasNextPage: false,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst res1 = await this.cmsPortalService.games({\r\n\t\t\tfilter: {\r\n\t\t\t\treference: {\r\n\t\t\t\t\tin: ids,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (!res1.ok) return res1;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tbetRecords: res0.data.edges.map(({ cursor, node }) => {\r\n\t\t\t\t\tconst game = res1.data.edges.find((e) => node.game.id === e.node.reference)?.node;\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\t...this.transformer.transform.betRecord({\r\n\t\t\t\t\t\t\t...node,\r\n\t\t\t\t\t\t\tgame,\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tcursor,\r\n\t\t\t\t\t};\r\n\t\t\t\t}),\r\n\t\t\t\ttotalCount: res0.data.totalCount,\r\n\t\t\t\tendCursor: res0.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res0.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 res0 = await this.portalService.latestBetRecords();\r\n\r\n\t\tif (!res0.ok) return res0;\r\n\r\n\t\tconst ids = [...new Set(res0.data.map((o) => o.game.id))];\r\n\r\n\t\tif (ids.length <= 0) {\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}\r\n\r\n\t\tconst res1 = await this.cmsPortalService.games({\r\n\t\t\tfilter: {\r\n\t\t\t\treference: {\r\n\t\t\t\t\tin: ids,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (!res1.ok) return res1;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res0.data.map((o) => {\r\n\t\t\t\tconst game = res1.data.edges.find((e) => e.node.reference === o.game.id)?.node;\r\n\r\n\t\t\t\treturn this.transformer.transform.latestBetRecord({\r\n\t\t\t\t\t...o,\r\n\t\t\t\t\tgame,\r\n\t\t\t\t});\r\n\t\t\t}),\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\tasync claimSpotBonus(code: string): Promise<ClaimSpotBonusReturn> {\r\n\t\treturn await this.walletService.claimSpotBonus({ code: code });\r\n\t}\r\n\r\n\tasync promoByCode(code: string): Promise<PromoByCodeReturn> {\r\n\t\tconst res = await this.reportService.promoByCode({ code: code });\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.promoByCode(res.data),\r\n\t\t};\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.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 recommendedGames(input?: RecommendedGamesInput): Promise<RecommendedGamesReturn> {\r\n\t\tconst res0 = await this.portalService.recommendedGames();\r\n\r\n\t\tif (!res0.ok) return res0;\r\n\r\n\t\tconst ids = [...new Set(res0.data.map((o) => o.id))];\r\n\r\n\t\tif (ids.length <= 0) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tgames: [],\r\n\t\t\t\t\ttotalCount: 0,\r\n\t\t\t\t\thasNextPage: false,\r\n\t\t\t\t\tendCursor: undefined,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst res1 = await this.cmsPortalService.games({\r\n\t\t\tfirst: input?.first,\r\n\t\t\tafter: input?.after,\r\n\t\t\tfilter: {\r\n\t\t\t\treference: {\r\n\t\t\t\t\tin: ids,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (!res1.ok) return res1;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res1.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: res1.data.totalCount,\r\n\t\t\t\thasNextPage: res1.data.pageInfo.hasNextPage,\r\n\t\t\t\tendCursor: res1.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t},\r\n\t\t} as RecommendedGamesReturn;\r\n\t}\r\n\r\n\tasync gameSession(id: string): Promise<GameSessionReturn> {\r\n\t\tconst res0 = await this.walletService.gameSession({ id });\r\n\r\n\t\tif (!res0.ok) return res0;\r\n\r\n\t\tif (res0.data) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: this.transformer.transform.gameSession(res0.data),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst res1 = await this.gameService.gameSession({ id });\r\n\r\n\t\tif (!res1.ok) return res1;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res1.data ? this.transformer.transform.gameSession(res1.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createGameSession(input: CreateGameSessionInput): Promise<CreateGameSessionReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.GameSession).toString();\r\n\t\tconst isSports = input.game.startsWith('SPORTS:');\r\n\r\n\t\tif (isSports) {\r\n\t\t\tconst game = await ObjectId.generateFromKey(ObjectType.Game, input.game).then(\r\n\t\t\t\t(generatedId) => {\r\n\t\t\t\t\treturn generatedId.toString();\r\n\t\t\t\t},\r\n\t\t\t);\r\n\r\n\t\t\tconst res0 = await this.gameService.createGameSession({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tgame,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn res0.ok ? { ok: true, data: { id } } : res0;\r\n\t\t}\r\n\r\n\t\tconst res0 = await this.game(input.game);\r\n\r\n\t\tif (!res0.data) {\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: 'GameDoesNotExistError',\r\n\t\t\t\t\tmessage: 'Game does not exist',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst { provider, reference } = res0.data;\r\n\r\n\t\tconst isNew = [\r\n\t\t\t/**/\r\n\t\t\t'RTG',\r\n\t\t\t'DARWIN',\r\n\t\t\t'DRBINGO',\r\n\t\t\t'MEGABALL',\r\n\t\t\t'EVOLUTION',\r\n\t\t\t'EVOLUTION_NETENT',\r\n\t\t\t'EVOLUTION_REDTIGER',\r\n\t\t\t'HOLLYWOODTV',\r\n\t\t].includes(provider);\r\n\r\n\t\tconst res1 = isNew\r\n\t\t\t? await this.walletService.createGameSession({ input: { id, game: reference } })\r\n\t\t\t: await this.gameService.createGameSession({ input: { id, game: reference } });\r\n\r\n\t\treturn res1.ok ? { ok: true, data: { id } } : res1;\r\n\t}\r\n\r\n\tasync endGameSession(id: string): Promise<EndGameSessionReturn> {\r\n\t\tconst res0 = await this.walletService.endGameSession({ input: { id } });\r\n\t\tif (res0.ok) return res0;\r\n\t\tconst res1 = await this.gameService.endGameSession({ input: { id } });\r\n\t\treturn res1;\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\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 redeemPoints(input: RedeemPointsInput): Promise<RedeemPointsReturn> {\r\n\t\treturn await this.walletService.redeemPointsToCash({\r\n\t\t\tinput: {\r\n\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync pointsWalletTransactions(\r\n\t\tinput?: PointsWalletTransactionsInput,\r\n\t): Promise<PointsWalletTransactionsReturn> {\r\n\t\tconst res = await this.reportService.pointsWalletTransactions(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\tpointsWalletTransactions: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.pointsWalletTransaction(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 PointsWalletTransactionsReturn;\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ ACTIVITY +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync activityRecords(input?: ActivityRecordsInput): Promise<ActivityRecordsReturn> {\r\n\t\tconst res = await this.reportService.activityRecords(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\tactivityRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.activityRecord(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 ActivityRecordsReturn;\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ REFERRAL +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync referralCode(): Promise<ReferralCodeReturn> {\r\n\t\tconst res = await this.accountService.referralCode();\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 ?? null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateReferralCode(input: UpdateReferralCodeInput): Promise<UpdateReferralCodeReturn> {\r\n\t\treturn await this.accountService.updateReferralCode({ input });\r\n\t}\r\n\r\n\tasync referrals(input?: ReferralsInput): Promise<ReferralsReturn> {\r\n\t\tconst res = await this.reportService.referrals(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\treferrals: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.referral(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 ReferralsReturn;\r\n\t}\r\n\r\n\tasync referralCommission(): Promise<ReferralCommissionReturn> {\r\n\t\tconst res = await this.reportService.referralCommission();\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.referralCommission(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync uplinesByName(input: UplinesByNameInput): Promise<UplinesByNameReturn> {\r\n\t\tconst res = await this.reportService.uplinesByName(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.referral),\r\n\t\t};\r\n\t}\r\n\r\n\tasync downlinesByName(input: DownlinesByNameInput): Promise<DownlinesByNameReturn> {\r\n\t\tconst res = await this.reportService.downlinesByName(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.referral),\r\n\t\t};\r\n\t}\r\n\r\n\tasync pointsClubSettings(): Promise<PointsClubSettingsReturn> {\r\n\t\tconst res = await this.accountService.pointsClubSettings();\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.pointsClubSettings(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ MESSAGES +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync messages(input?: MessagesInput): Promise<MessagesReturn> {\r\n\t\tconst res = await this.triggerService.messages(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\tmessages: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.message(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 MessagesReturn;\r\n\t}\r\n\r\n\tasync unreadMessagesCount(input?: UnreadMessagesCountInput): Promise<UnreadMessagesCountReturn> {\r\n\t\treturn await this.triggerService.unreadMessagesCount(input);\r\n\t}\r\n\r\n\tasync markMessageAsRead(id: string): Promise<MarkMessageAsReadReturn> {\r\n\t\treturn await this.triggerService.markMessageAsRead({ id });\r\n\t}\r\n\r\n\tasync markAllMessageAsRead(): Promise<MarkAllMessagesAsReadReturn> {\r\n\t\treturn await this.triggerService.markAllMessageAsRead();\r\n\t}\r\n\r\n\tasync claimReward(id: string): Promise<ClaimRewardReturn> {\r\n\t\treturn await this.triggerService.claimReward({ id });\r\n\t}\r\n\r\n\tasync bonuses(): Promise<BonusesReturn> {\r\n\t\tconst res = await this.walletService.bonuses();\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.bonus),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate formatYmd(date: Date): string {\r\n\t\tconst ensure2Digits = (n: number) => n.toString().padStart(2, '0');\r\n\r\n\t\tconst y = date.getFullYear();\r\n\t\tconst m = ensure2Digits(date.getMonth() + 1);\r\n\t\tconst d = ensure2Digits(date.getDate());\r\n\r\n\t\treturn `${y}-${m}-${d}`;\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ ONBOARDING +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync onboardingStatus(): Promise<OnboardingStatusReturn> {\r\n\t\tconst res = await this.portalService.onboardingStatus();\r\n\t\tif (!res.ok) return res;\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data,\r\n\t\t};\r\n\t}\r\n\r\n\tasync completeOnboarding(input: CompleteOnboardingInput): Promise<CompleteOnboardingReturn> {\r\n\t\treturn await this.portalService.completeOnboarding({\r\n\t\t\tinput: {\r\n\t\t\t\tfavoriteGameTypes: input.favoriteGameTypes,\r\n\t\t\t\tplayerExperience: input.playerExperience,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync skipOnboarding(): Promise<SkipOnboardingReturn> {\r\n\t\treturn await this.portalService.skipOnboarding();\r\n\t}\r\n}\r\n\r\nexport default Sdk;\r\n"],"names":["ObjectType","GRECAPTCHA_HEADER","gql","strings","values","result","index","string","value","FILE_FRAGMENT","FILE_QUERY","UPLOAD_PRIVATE_IMAGE_FILE_MUTATION","WALLET_QUERY","POINTS_WALLET_QUERY","REDEEM_POINTS_TO_CASH_MUTATION","POINTS_WALLET_TRANSACTIONS_QUERY","GAME_SESSION_QUERY","CREATE_GAME_SESSION_MUTATION","END_GAME_SESSION_MUTATION","RECOMMENDED_GAMES_QUERY","ANNOUNCEMENTS_QUERY","WITHDRAWAL_RECORDS_QUERY","CREATE_GCASH_WITHDRAWAL_MUTATION","CREATE_MAYA_WITHDRAWAL_MUTATION","CREATE_MAYA_APP_WITHDRAWAL_MUTATION","CREATE_BANK_WITHDRAWAL_MUTATION","CREATE_AIO_INSTAPAY_WITHDRAWAL_MUTATION","INSTAPAY_BANK_LIST_QUERY","REMAINING_DAILY_WITHDRAWALS_COUNT_QUERY","DEPOSIT_RECORDS_QUERY","CREATE_GCASH_DEPOSIT_MUTATION","CREATE_MAYA_DEPOSIT_MUTATION","CREATE_MAYA_APP_DEPOSIT_MUTATION","CREATE_AIO_QRPH_DEPOSIT_MUTATION","CREATE_AIO_ONLINE_BANK_DEPOSIT_MUTATION","DEPOSIT_QUERY","DEPOSITS_COUNT_QUERY","BET_RECORDS_QUERY","LATEST_BET_RECORDS_QUERY","TRANSACTION_RECORDS_QUERY","PROMO_FRAGMENT","PROMOS_QUERY","AVAILABLE_PROMOS_QUERY","SPOT_BONUS_FRAGMENT","PROMO_BY_CODE_QUERY","CASHBACK_FRAGMENT","CASHBACKS_QUERY","BONUS_QUERY","BONUSES_QUERY","CASHBACK_BONUSES_QUERY","CLAIM_CASHBACK_BONUS_MUTATION","MEMBER_ACCOUNT_QUERY","MEMBER_VERIFICATION_QUERY","REGISTER_MEMBER_ACCOUNT_MUTATION","REGISTER_MEMBER_ACCOUNT_VIA_MOBILE_MUTATION","REGISTER_MEMBER_ACCOUNT_MUTATION__NEXT","REGISTER_MAYA_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","PLATFORM_QUERY__NEXT","PAYMENT_SETTINGS_QUERY","MAYA_SESSION_QUERY","VALIDATE_MAYA_SESSION_MUTATION","ACTIVITY_RECORDS_QUERY","REFERRAL_CODE_QUERY","UPDATE_REFERRAL_CODE_MUTATION","REFERRAL_FRAGMENT","REFERRALS_QUERY","UPLINES_BY_NAME_QUERY","DOWNLINES_BY_NAME_QUERY","REFERRAL_COMMISSION_QUERY","POINTS_CLUB_SETTINGS_QUERY","MESSAGES_QUERY","UNREAD_MESSAGES_COUNT_QUERY","MARK_MESSAGE_AS_READ_MUTATION","MARK_ALL_MESSAGE_AS_READ_MUTATION","CLAIM_REWARD_MUTATION","CLAIM_SPOT_BONUS","ONBOARDING_STATUS_QUERY","COMPLETE_ONBOARDING_MUTATION","SKIP_ONBOARDING_MUTATION","createOperationError","code","AccountService","client","__publicField","res","variables","reCAPTCHAResponse","others","statusCodeToOperationError","message","e","ERROR_MAP","AuthService","config","headers","input","data","token","refreshToken","accessToken","getErrorCode","CmsPortalService","search","_b","_a","_d","_c","_f","_e","_h","_g","_j","_i","_l","_k","_n","_m","_p","_o","_r","_q","_t","_s","_v","_u","v","_x","_w","_z","_y","_B","_A","_D","_C","_F","_E","node","id","path","params","req","FileService","GameService","PortalService","ReportService","TriggerService","WalletService","variable","cloneDate","date","addMinutes","minutes","isAfter","date1","date2","Cache","key","validUntil","o","clamp","min","max","isPlainObject","flatten","fn","parentKeys","k","arrayToObject","array","i","GraphQLClient","url","query","options","opts","mergeFetchOptions","body","operationInfo","getOperationInfo","request","json","error","middleware","files","map","l","j","mergeHeaders","h","getLocaleByCurrency","currency","getAreaCodeByLocale","locale","addAreaCode","mobileNumber","areaCode","sha256","msgUint8","hashBuffer","b","Logger","addDays","days","sleep","ms","resolve","pollable","func","until","interval","maxAttempt","repeater","args","m","r","subMinutes","SessionManager","r0","r1","now","val","obj","accessTokenExpiresAt","refreshTokenExpiresAt","s","compact","output","parseDecimal","fallback","parsed","Transformer","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","Sdk","site","sitePlatform","platform","environment","logs","production","authUrl","walletUrl","reportUrl","accountUrl","portalUrl","fileUrl","gameUrl","triggerUrl","cmsPortalUrl","cmsPortalService","graphqlClientConfig","gameService","fileService","walletService","accountService","reportService","portalService","triggerService","authService","sessionManager","cacheKey","cacheValue","timeout","assignTimeout","ObjectId","password","dateOfBirth","secretAnswer","transactionPassword","verificationCode","cursor","res0","ids","res1","game","generatedId","provider","reference","ensure2Digits","n","y","d"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/lib/sdk/object-type.ts","../src/lib/utils/const.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/cms-portal.service.ts","../src/lib/services/file.service.ts","../src/lib/services/game.service.ts","../src/lib/services/portal.service.ts","../src/lib/services/report.service.ts","../src/lib/services/trigger.service.ts","../src/lib/services/wallet.service.ts","../src/lib/utils/clone-date.ts","../src/lib/utils/add-minutes.ts","../src/lib/utils/is-after.ts","../src/lib/utils/cache.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/locale.ts","../src/lib/utils/mobile-number.ts","../src/lib/utils/sha256.ts","../src/lib/sdk/logger.ts","../src/lib/utils/add-days.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\tGame: 203,\r\n\tGameSession: 204,\r\n\tMayaSession: 230,\r\n};\r\n","export const GRECAPTCHA_HEADER = 'google-recaptcha-response';\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 REDEEM_POINTS_TO_CASH_MUTATION = gql`\r\n\tmutation RedeemPointsToCash($input: RedeemPointsToCashInput!) {\r\n\t\tredeemPointsToCash(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\nexport const POINTS_WALLET_TRANSACTIONS_QUERY = gql`\r\n\tquery PointsWalletTransactions(\r\n\t\t$first: Int\r\n\t\t$after: Cursor\r\n\t\t$filter: MemberPointsWalletTransactionFilterInput\r\n\t) {\r\n\t\tmember {\r\n\t\t\tpointsWalletTransactions(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 PointsWalletTransaction {\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\tbalance\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/*+ GAME +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const GAME_SESSION_QUERY = {\r\n\tcurrent: gql`\r\n\t\tquery GameSession($id: ObjectId!) {\r\n\t\t\tnode(id: $id) {\r\n\t\t\t\t... on GameSession {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tgame\r\n\t\t\t\t\tstatus\r\n\t\t\t\t\tlaunchUrl\r\n\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t`,\r\n\tlegacy: gql`\r\n\t\tquery GameSession($id: ObjectId!) {\r\n\t\t\tnode(id: $id) {\r\n\t\t\t\t... on GameSession {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tgame {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstatus\r\n\t\t\t\t\tlaunchUrl\r\n\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\tdateTimeLastUpdated\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_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 = {\r\n\tcurrent: gql`\r\n\t\tmutation EndGameSession($input: EndGameSessionInput!) {\r\n\t\t\tendGameSession(input: $input)\r\n\t\t}\r\n\t`,\r\n\tlegacy: gql`\r\n\t\tmutation EndGameSession($input: EndGameSessionInput!) {\r\n\t\t\tendGameSession(input: $input) {\r\n\t\t\t\t... on GameSessionDoesNotExistError {\r\n\t\t\t\t\t__typename\r\n\t\t\t\t}\r\n\t\t\t\t... on GameSessionAlreadyClosedError {\r\n\t\t\t\t\t__typename\r\n\t\t\t\t}\r\n\t\t\t\t... on GameProviderError {\r\n\t\t\t\t\t__typename\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 RECOMMENDED_GAMES_QUERY = gql`\r\n\tquery RecommendedGames {\r\n\t\trecommendedGames {\r\n\t\t\tid\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\terror\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\terror\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\terror\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\terror\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 InstapayWithdrawalRecord {\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\terror\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\t... on ReCAPTCHAVerificationFailedError {\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}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_AIO_INSTAPAY_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateAIOInstapayWithdrawal($input: CreateAIOInstapayWithdrawalInput!) {\r\n\t\tcreateAIOInstapayWithdrawal(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 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 INSTAPAY_BANK_LIST_QUERY = gql`\r\n\tquery InstapayBankList {\r\n\t\tinstapayBankList {\r\n\t\t\tid\r\n\t\t\tcode\r\n\t\t\tname\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\t... on ReCAPTCHAVerificationFailedError {\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 CREATE_AIO_QRPH_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateAIOQRPHDeposit($input: CreateAIOQRPHDepositInput!) {\r\n\t\tcreateAIOQRPHDeposit(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\t... on ReCAPTCHAVerificationFailedError {\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_AIO_ONLINE_BANK_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateAIOOnlineBankDeposit($input: CreateAIOOnlineBankDepositInput!) {\r\n\t\tcreateAIOOnlineBankDeposit(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\t... on QRPHDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t\tqrCode\r\n\t\t\t}\r\n\t\t\t... on OnlineBankDeposit {\r\n\t\t\t\tid\r\n\t\t\t\ttype\r\n\t\t\t\tstatus\r\n\t\t\t\tvca\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\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\tid\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\tname\r\n\t\t\t}\r\n\t\t\tgame {\r\n\t\t\t\tid\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\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\tmaximumDepositAmount\r\n\t\tminimumDepositAmount\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 SPOT_BONUS_FRAGMENT = gql`\r\n\tfragment SpotBonusFragment on SpotBonusPromo {\r\n\t\tid\r\n\t\tname\r\n\t\ttype\r\n\t\tstatus\r\n\t\tdaysToClear\r\n\t\tzeroOutThreshold\r\n\t\tturnoverRequirementMultiplier\r\n\t\tturnoverRequirementType\r\n\t\tminimumTicketOddFactorPerSportsGameProvider\r\n\t\tturnoverRequirementContributionPercentagePerGameProvider\r\n\t\tbonusAmount\r\n\t\tenabledGameProviders\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tbanner {\r\n\t\t\tid\r\n\t\t\turl\r\n\t\t}\r\n\t\tdescription\r\n\t\tdateTimeCreated\r\n\t\tdateTimeLastUpdated\r\n\t\tdateTimeClosed\r\n\t\ttotalBonus\r\n\t\ttotalDeposit\r\n\t\ttotalBonusBalance\r\n\t\ttotalBet\r\n\t\ttotalBonusCashedOut\r\n\t\tbonusesCount\r\n\t\tclosedBonusesCount\r\n\t\tclosedBonusesCountPercentage\r\n\t\tactiveBonusesCount\r\n\t\tclearedBonusesCount\r\n\t\tzeroedOutBonusesCount\r\n\t\tcancelledBonusesCount\r\n\t\texpiredBonusesCount\r\n\t\tcode\r\n\t\tmaximumBonusesCountLimit\r\n\t}\r\n`;\r\n\r\nexport const PROMO_BY_CODE_QUERY = gql`\r\n\t${SPOT_BONUS_FRAGMENT}\r\n\r\n\tquery PromoByCode($code: String!) {\r\n\t\tpromoByCode(code: $code) {\r\n\t\t\t...SpotBonusFragment\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\tminimumCashback\r\n\t\tmaximumMonthlyCashback\r\n\t\tstatus\r\n\t\tdescription\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tturnoverContributionPercentagePerGameProvider\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 BONUSES_QUERY = gql`\r\n\t${PROMO_FRAGMENT}\r\n\r\n\tquery Bonuses {\r\n\t\tbonuses {\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\ttotal\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\tpermanentAddress\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\t... on ReCAPTCHAVerificationFailedError {\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 REGISTER_MEMBER_ACCOUNT_VIA_MOBILE_MUTATION = gql`\r\n\tmutation RegisterMemberAccountViaMobile(\r\n\t\t$input: RegisterMemberAccountViaMobileInput!\r\n\t\t$referralCode: String\r\n\t\t$reCAPTCHAResponse: String\r\n\t\t$verificationCode: String\r\n\t) {\r\n\t\tregisterMemberAccountViaMobile(\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 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 MobileNumberNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on ReCAPTCHAVerificationFailedError {\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 REGISTER_MEMBER_ACCOUNT_MUTATION__NEXT = gql`\r\n\tmutation RegisterMemberAccount(\r\n\t\t$input: RegisterMemberAccountInput_next!\r\n\t\t$reCAPTCHAResponse: String\r\n\t) {\r\n\t\tregisterMemberAccount: registerMemberAccount_next(\r\n\t\t\tinput: $input\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 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\t... on ReCAPTCHAVerificationFailedError {\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 REGISTER_MAYA_MEMBER_ACCOUNT_MUTATION = gql`\r\n\tmutation RegisterMayaMemberAccount($input: RegisterMayaMemberAccountInput!) {\r\n\t\tregisterMayaMemberAccount(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}\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\n/** @deprecated */\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\n/** @deprecated */\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\ttimezone\r\n\t\tcurrency\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\tonlineBankDepositGatewaySettings: depositGatewaySettings(gateway: ONLINE_BANK) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tqrphDepositGatewaySettings: depositGatewaySettings(gateway: QR_PH) {\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\tinstapayWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: INSTAPAY) {\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\nexport const PLATFORM_QUERY__NEXT = gql`\r\n\tquery Platform {\r\n\t\ttimezone\r\n\t\tcurrency\r\n\t}\r\n`;\r\n\r\nexport const PAYMENT_SETTINGS_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 PaymentSettings {\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\tonlineBankDepositGatewaySettings: depositGatewaySettings(gateway: ONLINE_BANK) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tqrphDepositGatewaySettings: depositGatewaySettings(gateway: QR_PH) {\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\tinstapayWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: INSTAPAY) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\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\r\nexport const VALIDATE_MAYA_SESSION_MUTATION = gql`\r\n\tmutation ValidateMayaSession {\r\n\t\tvalidateMayaSession: validMayaSession\r\n\t}\r\n`;\r\n\r\n/**/\r\n/*+----------------------------------------+*/\r\n/*+ ACTIVITY +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const ACTIVITY_RECORDS_QUERY = gql`\r\n\tquery ActivityRecords($after: Cursor, $first: Int, $filter: ActivityRecordsFilterInput) {\r\n\t\tmember {\r\n\t\t\tactivityRecords(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 MemberActivity {\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\tdomain\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tdetails\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/*+ REFERRAL +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const REFERRAL_CODE_QUERY = gql`\r\n\tquery ReferralCode {\r\n\t\treferralCode\r\n\t}\r\n`;\r\n\r\nexport const UPDATE_REFERRAL_CODE_MUTATION = gql`\r\n\tmutation UpdateReferralCode($input: UpdateReferralCodeInput!) {\r\n\t\tupdateReferralCode(input: $input) {\r\n\t\t\t... on ReferralCodeNotAvailableError {\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 REFERRAL_FRAGMENT = gql`\r\n\tfragment ReferralFragment on Referral {\r\n\t\tid\r\n\t\tupline {\r\n\t\t\tid\r\n\t\t\tname\r\n\t\t\trealName\r\n\t\t}\r\n\t\tdownline {\r\n\t\t\tid\r\n\t\t\tname\r\n\t\t\trealName\r\n\t\t}\r\n\t\tlevel\r\n\t\tturnover\r\n\t\tcommission\r\n\t\tdateTimeCreated\r\n\t}\r\n`;\r\n\r\nexport const REFERRALS_QUERY = gql`\r\n\tquery Referrals($first: Int, $after: Cursor, $filter: ReferralFilterInput) {\r\n\t\tmember {\r\n\t\t\treferrals(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 Referral {\r\n\t\t\t\t\t\t\t...ReferralFragment\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\t${REFERRAL_FRAGMENT}\r\n`;\r\n\r\nexport const UPLINES_BY_NAME_QUERY = gql`\r\n\tquery UplinesByName($search: String!, $first: Int) {\r\n\t\tuplinesByName(search: $search, first: $first) {\r\n\t\t\t...ReferralFragment\r\n\t\t}\r\n\t}\r\n\r\n\t${REFERRAL_FRAGMENT}\r\n`;\r\n\r\nexport const DOWNLINES_BY_NAME_QUERY = gql`\r\n\tquery DownlinesByName($search: String!, $first: Int) {\r\n\t\tdownlinesByName(search: $search, first: $first) {\r\n\t\t\t...ReferralFragment\r\n\t\t}\r\n\t}\r\n\r\n\t${REFERRAL_FRAGMENT}\r\n`;\r\n\r\nexport const REFERRAL_COMMISSION_QUERY = gql`\r\n\tquery ReferralCommission {\r\n\t\tmember {\r\n\t\t\treferralCommission {\r\n\t\t\t\tid\r\n\t\t\t\tcommission\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\tlevel1Commission\r\n\t\t\t\tlevel1ReferralsCount\r\n\t\t\t\tlevel2Commission\r\n\t\t\t\tlevel2ReferralsCount\r\n\t\t\t\tlevel3Commission\r\n\t\t\t\tlevel3ReferralsCount\r\n\t\t\t\treferralCode\r\n\t\t\t\treferralsCount\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const POINTS_CLUB_SETTINGS_QUERY = gql`\r\n\tquery PointsClubSettings {\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/*+ MESSAGES +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const MESSAGES_QUERY = gql`\r\n\tquery Messages($first: Int, $after: Cursor, $filter: MessageFilterInput) {\r\n\t\tmessages(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 Message {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\ticon\r\n\t\t\t\t\t\tlogo\r\n\t\t\t\t\t\timage\r\n\t\t\t\t\t\ttitle\r\n\t\t\t\t\t\tcontent\r\n\t\t\t\t\t\tpopup\r\n\t\t\t\t\t\tactions {\r\n\t\t\t\t\t\t\tname\r\n\t\t\t\t\t\t\turl\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmarkedAsRead\r\n\t\t\t\t\t\tdateTimeCreated\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 UNREAD_MESSAGES_COUNT_QUERY = gql`\r\n\tquery UnreadMessagesCount($filter: MessageFilterInput) {\r\n\t\tmessages(filter: $filter) {\r\n\t\t\ttotalCount\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const MARK_MESSAGE_AS_READ_MUTATION = gql`\r\n\tmutation MarkMessageAsRead($id: ObjectId!) {\r\n\t\tmarkMessageAsRead(id: $id)\r\n\t}\r\n`;\r\n\r\nexport const MARK_ALL_MESSAGE_AS_READ_MUTATION = gql`\r\n\tmutation MarkAllMessageAsRead {\r\n\t\tmarkAllMessageAsRead\r\n\t}\r\n`;\r\n\r\nexport const CLAIM_REWARD_MUTATION = gql`\r\n\tmutation ClaimReward($id: ObjectId!) {\r\n\t\tclaimReward(id: $id) {\r\n\t\t\t... on RewardAlreadyClaimedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on RewardAlreadyExpiredError {\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 CLAIM_SPOT_BONUS = gql`\r\n\tmutation ClaimSpotBonus($code: String!) {\r\n\t\tclaimSpotBonus(code: $code) {\r\n\t\t\t... on InvalidPromoCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MaximumBonusesCountLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on SpotBonusAlreadyClaimedError {\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/*+ ONBOARDING +*/\r\n/*+----------------------------------------+*/\r\n/**/\r\n\r\nexport const ONBOARDING_STATUS_QUERY = gql`\r\n\tquery OnboardingStatus {\r\n\t\tonboardingStatus\r\n\t}\r\n`;\r\n\r\nexport const COMPLETE_ONBOARDING_MUTATION = gql`\r\n\tmutation CompleteOnboarding($input: CompleteOnboardingInput!) {\r\n\t\tcompleteOnboarding(input: $input)\r\n\t}\r\n`;\r\n\r\nexport const SKIP_ONBOARDING_MUTATION = gql`\r\n\tmutation SkipOnboarding {\r\n\t\tskipOnboarding\r\n\t}\r\n`;\r\n","import type { OperationError } from '../utils/types';\r\nimport type {\r\n\tAuthenticateError,\r\n\tClaimCashbackBonusError,\r\n\tClaimRewardError,\r\n\tClaimSpotBonusError,\r\n\tCreateDepositError,\r\n\tCreateGameSessionError,\r\n\tCreateMemberVerificationError,\r\n\tCreateSessionError,\r\n\tCreateWithdrawalError,\r\n\tEndGameSessionError,\r\n\tRedeemPointsToCashError,\r\n\tRefreshSessionError,\r\n\tRegisterMayaMemberAccountError,\r\n\tRegisterMemberAccountError,\r\n\tResetPasswordError,\r\n\tSendVerificationCodeError,\r\n\tSendVerificationCodeError__Next,\r\n\tUpdateMemberAccountError,\r\n\tUpdateMemberVerificationError,\r\n\tUpdateReferralCodeError,\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\r\n\t| RegisterMemberAccountError\r\n\t| RegisterMayaMemberAccountError\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| RedeemPointsToCashError\r\n\t| CreateWithdrawalError\r\n\t| CreateSessionError\r\n\t| RefreshSessionError\r\n\t| AuthenticateError\r\n\t| UpdateReferralCodeError\r\n\t| SendVerificationCodeError__Next\r\n\t| ClaimRewardError\r\n\t| ClaimSpotBonusError;\r\n\r\nexport function createOperationError<T extends E>(code: T): OperationError<T> {\r\n\tconst messages: Record<E, string> = {\r\n\t\tMaximumBonusesCountLimitExceededError: 'Maximum bonuses reached',\r\n\t\tInvalidPromoCodeError: 'Invalid Promo Code',\r\n\t\tSpotBonusAlreadyClaimedError:\r\n\t\t\t'This promo code has already been redeemed and cannot be used again',\r\n\t\tRewardAlreadyExpiredError: 'Reward is either expired or no longer available',\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\t\tReferralCodeNotAvailableError: 'Referral code is no longer available',\r\n\t\tAccountBlacklistedError: 'Account is blacklisted',\r\n\t\tInvalidTokenError: 'Invalid token',\r\n\t\tInvalidTokenOrSecretAnswerError: 'Invalid token or secret answer',\r\n\t\tSessionExpiredError: 'Session expired',\r\n\t\tRateLimitExceededError: 'Maximum number of requests reached',\r\n\t\tRewardAlreadyClaimedError: 'Reward is already claimed',\r\n\t\tReCAPTCHAVerificationFailedError: 'Invalid reCAPTCHA',\r\n\t\tAccountSuspendedError: 'Account is suspended',\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 { GRECAPTCHA_HEADER } from '../utils/const';\r\nimport 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\tPAYMENT_SETTINGS_QUERY,\r\n\tPLATFORM_QUERY,\r\n\tPOINTS_CLUB_SETTINGS_QUERY,\r\n\tPROFILE_COMPLETION_QUERY,\r\n\tREFERRAL_CODE_QUERY,\r\n\tREGISTER_MAYA_MEMBER_ACCOUNT_MUTATION,\r\n\tREGISTER_MEMBER_ACCOUNT_MUTATION,\r\n\tREGISTER_MEMBER_ACCOUNT_MUTATION__NEXT,\r\n\tREGISTER_MEMBER_ACCOUNT_VIA_MOBILE_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\tUPDATE_REFERRAL_CODE_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\tPaymentSettings,\r\n\tPaymentSettingsQuery,\r\n\tPlatform,\r\n\tPlatformQuery,\r\n\tPointsClubSettings,\r\n\tPointsClubSettingsQuery,\r\n\tProfileCompletion,\r\n\tProfileCompletionQuery,\r\n\tReferralCodeQuery,\r\n\tRegisterMayaMemberAccountError,\r\n\tRegisterMayaMemberAccountMutation,\r\n\tRegisterMayaMemberAccountMutationVariables,\r\n\tRegisterMemberAccountError,\r\n\tRegisterMemberAccountMutation,\r\n\tRegisterMemberAccountMutationVariables,\r\n\tRegisterMemberAccountMutationVariables__Next,\r\n\tRegisterMemberAccountViaMobileMutation,\r\n\tRegisterMemberAccountViaMobileMutationVariables,\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\tUpdateReferralCodeError,\r\n\tUpdateReferralCodeMutation,\r\n\tUpdateReferralCodeMutationVariables,\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 registerMemberAccountViaMobile(\r\n\t\tvariables: RegisterMemberAccountViaMobileMutationVariables,\r\n\t): Promise<OperationResult<RegisterMemberAccountError>> {\r\n\t\tconst { reCAPTCHAResponse, ...others } = variables;\r\n\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRegisterMemberAccountViaMobileMutation,\r\n\t\t\tRegisterMemberAccountViaMobileMutationVariables\r\n\t\t>(REGISTER_MEMBER_ACCOUNT_VIA_MOBILE_MUTATION, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\tif (res.data.registerMemberAccountViaMobile) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.registerMemberAccountViaMobile.__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 registerMemberAccount__next(\r\n\t\tvariables: RegisterMemberAccountMutationVariables__Next,\r\n\t): Promise<OperationResult<RegisterMemberAccountError>> {\r\n\t\tconst { reCAPTCHAResponse, ...others } = variables;\r\n\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRegisterMemberAccountMutation,\r\n\t\t\tRegisterMemberAccountMutationVariables__Next\r\n\t\t>(REGISTER_MEMBER_ACCOUNT_MUTATION__NEXT, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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\t/** @deprecated */\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\t/** @deprecated */\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 paymentSettings(): Promise<OperationResult<never, PaymentSettings>> {\r\n\t\treturn await this.client.request<PaymentSettingsQuery>(PAYMENT_SETTINGS_QUERY);\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\tasync registerMayaMemberAccount(\r\n\t\tvariables: RegisterMayaMemberAccountMutationVariables,\r\n\t): Promise<OperationResult<RegisterMayaMemberAccountError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRegisterMayaMemberAccountMutation,\r\n\t\t\tRegisterMayaMemberAccountMutationVariables\r\n\t\t>(REGISTER_MAYA_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.registerMayaMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.registerMayaMemberAccount.__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 referralCode(): Promise<OperationResult<never, string | null | undefined>> {\r\n\t\tconst res = await this.client.request<ReferralCodeQuery>(REFERRAL_CODE_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.referralCode,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateReferralCode(\r\n\t\tvariables: UpdateReferralCodeMutationVariables,\r\n\t): Promise<OperationResult<UpdateReferralCodeError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tUpdateReferralCodeMutation,\r\n\t\t\tUpdateReferralCodeMutationVariables\r\n\t\t>(UPDATE_REFERRAL_CODE_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.updateReferralCode) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.updateReferralCode.__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 pointsClubSettings(): Promise<\r\n\t\tOperationResult<never, PointsClubSettings | null | undefined>\r\n\t> {\r\n\t\tconst res = await this.client.request<PointsClubSettingsQuery>(POINTS_CLUB_SETTINGS_QUERY);\r\n\t\treturn res.ok ? { ok: true, data: res.data.pointsClubSettings } : res;\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 { GRECAPTCHA_HEADER } from '../utils/const';\r\nimport { 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\tSendVerificationCodeError__Next,\r\n\tSendVerificationCodeInput__Next,\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\tprivate get headers() {\r\n\t\tconst headers = new Headers();\r\n\r\n\t\theaders.append('Accept', 'application/json, text/plain');\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Platform-Code', this.platform);\r\n\t\theaders.append('Role', 'MEMBER');\r\n\r\n\t\treturn headers;\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(this.headers);\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\tconsole.log(`MobileNumberOTP ${token}`);\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', `MayaSession ${input.sessionId}`);\r\n\t\t}\r\n\r\n\t\tif (input.token) {\r\n\t\t\theaders.set('Authorization', `Token ${input.token}`);\r\n\t\t}\r\n\r\n\t\tif (input.reCAPTCHAResponse) {\r\n\t\t\theaders.set(GRECAPTCHA_HEADER, input.reCAPTCHAResponse);\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('AccountBlacklistedError'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'MEMBER_ACCOUNT_SUSPENDED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountSuspendedError'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'INVALID_RECAPTCHA_RESPONSE') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('InvalidReCAPTCHAResponseError'),\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(this.headers);\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('InvalidTokenOrSecretAnswerError'),\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\tconst headers = new Headers(this.headers);\r\n\r\n\t\theaders.append('Authorization', `Bearer ${refreshToken}`);\r\n\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});\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('AccountBlacklistedError'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'MEMBER_ACCOUNT_SUSPENDED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountSuspendedError'),\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('InvalidTokenError'),\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\tconst headers = new Headers(this.headers);\r\n\r\n\t\theaders.append('Authorization', `Bearer ${accessToken}`);\r\n\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});\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\tconst headers = new Headers(this.headers);\r\n\r\n\t\theaders.append('Authorization', `Bearer ${accessToken}`);\r\n\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});\r\n\r\n\t\t\treturn res.ok;\r\n\t\t} catch {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tasync sendVerificationCode(\r\n\t\tinput: SendVerificationCodeInput__Next,\r\n\t): Promise<OperationResult<SendVerificationCodeError__Next>> {\r\n\t\tif (input.channel === 'EMAIL') throw new Error('Email channel is not yet supported');\r\n\r\n\t\tfunction getErrorCode(message: string): SendVerificationCodeError__Next | null {\r\n\t\t\tswitch (message) {\r\n\t\t\t\tcase 'MEMBER_NOT_FOUND':\r\n\t\t\t\t\treturn 'AccountNotFoundError';\r\n\t\t\t\tcase 'RATE_LIMIT_REACH':\r\n\t\t\t\t\treturn 'RateLimitExceededError';\r\n\t\t\t\tcase 'NOT_READY_TO_SEND_VERIFICATION_ERROR':\r\n\t\t\t\t\treturn 'NotReadyToSendVerficationCodeError';\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/otps`, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: this.headers,\r\n\t\t\t\tbody: JSON.stringify(input),\r\n\t\t\t});\r\n\r\n\t\t\tif (res.status === 403) {\r\n\t\t\t\tconst data = await res.json();\r\n\t\t\t\tconst code = getErrorCode(data.message);\r\n\r\n\t\t\t\tif (code) {\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(code),\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, data.message),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (!res.ok) {\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}\r\n\r\n\t\t\treturn { ok: true };\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 { statusCodeToOperationError } from '../utils/status-code-to-operation-error';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tGame,\r\n\tGameQuery,\r\n\tGamesQuery,\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 self(): Promise<OperationResult<never, Site>> {\r\n\t\tconst res = await this.getJson<SiteQuery>(`/sites/${this.siteId}`);\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.data,\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\t\tif (variables?.search) search.set('search', variables.search);\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\tif (variables?.filter?.tags?.equal)\r\n\t\t\tsearch.set('filter[tags][eq]', variables.filter.tags.equal.toLowerCase());\r\n\t\tif (variables?.filter?.tags?.notEqual)\r\n\t\t\tsearch.set('filter[tags][neq]', variables.filter.tags.notEqual.toLowerCase());\r\n\t\tif (variables?.filter?.tags?.in)\r\n\t\t\tsearch.set(\r\n\t\t\t\t'filter[tags][in]',\r\n\t\t\t\tvariables.filter.tags.in.map((v) => v.toLowerCase()).join(','),\r\n\t\t\t);\r\n\t\tif (variables?.filter?.tags?.notIn)\r\n\t\t\tsearch.set(\r\n\t\t\t\t'filter[tags][nin]',\r\n\t\t\t\tvariables.filter.tags.notIn.map((v) => v.toLowerCase()).join(','),\r\n\t\t\t);\r\n\r\n\t\tif (variables?.filter?.reference?.equal)\r\n\t\t\tsearch.set('filter[reference][eq]', variables.filter.reference.equal);\r\n\t\tif (variables?.filter?.reference?.notEqual)\r\n\t\t\tsearch.set('filter[reference][neq]', variables.filter.reference.notEqual);\r\n\t\tif (variables?.filter?.reference?.in)\r\n\t\t\tsearch.set('filter[reference][in]', variables.filter.reference.in.join(','));\r\n\t\tif (variables?.filter?.reference?.notIn)\r\n\t\t\tsearch.set('filter[reference][nin]', variables.filter.reference.notIn.join(','));\r\n\r\n\t\tif (variables?.sort) search.set('sort[order]', variables.sort);\r\n\r\n\t\tconst res = await this.getJson<GamesQuery>('/games', search);\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\tedges: res.data.data.map((node) => ({\r\n\t\t\t\t\tnode,\r\n\t\t\t\t\tcursor: node.cursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount ?? 0,\r\n\t\t\t\tpageInfo: {\r\n\t\t\t\t\thasNextPage: Boolean(res.data.next),\r\n\t\t\t\t\tendCursor: res.data.next,\r\n\t\t\t\t},\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 res = await this.getJson<GameQuery>(`/games/${id}`);\r\n\r\n\t\tif (res.error?.name === 'HttpNotFound') {\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 (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.data,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate async getJson<T>(\r\n\t\tpath: string,\r\n\t\tparams?: URLSearchParams,\r\n\t): Promise<OperationResult<never, T>> {\r\n\t\tconst req = new Request(`${this.url}${path}?${params?.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 res = await fetch(req);\r\n\r\n\t\t\tif (!res.ok) {\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}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: await res.json(),\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 { 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\tCREATE_GAME_SESSION_MUTATION,\r\n\tEND_GAME_SESSION_MUTATION,\r\n\tGAME_SESSION_QUERY,\r\n} from './queries';\r\nimport type {\r\n\tCreateGameSessionError,\r\n\tCreateGameSessionMutation,\r\n\tCreateGameSessionMutationVariables,\r\n\tEndGameSessionMutation,\r\n\tEndGameSessionMutationVariables,\r\n\tGameSession,\r\n\tGameSessionQuery,\r\n\tGameSessionQueryVariables,\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 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<true>, GameSessionQueryVariables>(\r\n\t\t\tGAME_SESSION_QUERY.legacy,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tconst data = !res.data.node ? null : { ...res.data.node, game: res.data.node.game.id };\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata,\r\n\t\t};\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\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<\r\n\t\t\tEndGameSessionMutation<true>,\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: {\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\tCOMPLETE_ONBOARDING_MUTATION,\r\n\tLATEST_BET_RECORDS_QUERY,\r\n\tONBOARDING_STATUS_QUERY,\r\n\tPLATFORM_QUERY__NEXT,\r\n\tRECOMMENDED_GAMES_QUERY,\r\n\tSKIP_ONBOARDING_MUTATION,\r\n} from './queries';\r\nimport type {\r\n\tCompleteOnboardingMutation,\r\n\tCompleteOnboardingMutationVariables,\r\n\tLatestBetRecord,\r\n\tLatestBetRecordsQuery,\r\n\tOnboardingStatus,\r\n\tOnboardingStatusQuery,\r\n\tPlatformQuery__Next,\r\n\tRecommendedGame,\r\n\tRecommendedGamesQuery,\r\n\tSkipOnboardingMutation,\r\n} 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\tasync platform(): Promise<OperationResult<never, PlatformQuery__Next>> {\r\n\t\tconst res = await this.client.request<PlatformQuery__Next>(PLATFORM_QUERY__NEXT);\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};\r\n\t}\r\n\r\n\tasync recommendedGames(): Promise<OperationResult<never, RecommendedGame[]>> {\r\n\t\tconst res = await this.client.request<RecommendedGamesQuery>(RECOMMENDED_GAMES_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.recommendedGames,\r\n\t\t};\r\n\t}\r\n\tasync onboardingStatus(): Promise<OperationResult<never, OnboardingStatus>> {\r\n\t\tconst res = await this.client.request<OnboardingStatusQuery>(ONBOARDING_STATUS_QUERY);\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.onboardingStatus ?? [] } : res;\r\n\t}\r\n\r\n\tasync completeOnboarding(\r\n\t\tvariables: CompleteOnboardingMutationVariables,\r\n\t): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCompleteOnboardingMutation,\r\n\t\t\tCompleteOnboardingMutationVariables\r\n\t\t>(COMPLETE_ONBOARDING_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.completeOnboarding) {\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 skipOnboarding(): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<SkipOnboardingMutation>(SKIP_ONBOARDING_MUTATION);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.skipOnboarding) {\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\tACTIVITY_RECORDS_QUERY,\r\n\tBET_RECORDS_QUERY,\r\n\tDEPOSITS_COUNT_QUERY,\r\n\tDEPOSIT_RECORDS_QUERY,\r\n\tDOWNLINES_BY_NAME_QUERY,\r\n\tPOINTS_WALLET_TRANSACTIONS_QUERY,\r\n\tPROMO_BY_CODE_QUERY,\r\n\tREFERRALS_QUERY,\r\n\tREFERRAL_COMMISSION_QUERY,\r\n\tTRANSACTION_RECORDS_QUERY,\r\n\tUPLINES_BY_NAME_QUERY,\r\n\tWITHDRAWAL_RECORDS_QUERY,\r\n} from './queries';\r\nimport type {\r\n\tActivityRecord,\r\n\tActivityRecordsQuery,\r\n\tActivityRecordsQueryVariables,\r\n\tBetRecord,\r\n\tBetRecordsQuery,\r\n\tBetRecordsQueryVariables,\r\n\tDepositRecord,\r\n\tDepositRecordsQuery,\r\n\tDepositRecordsQueryVariables,\r\n\tDepositsCountQuery,\r\n\tDownlinesByNameQuery,\r\n\tDownlinesByNameQueryVariables,\r\n\tPaginatedQueryResult,\r\n\tPointsWalletTransaction,\r\n\tPointsWalletTransactionsQuery,\r\n\tPointsWalletTransactionsQueryVariables,\r\n\tPromoByCodeQuery,\r\n\tPromoByCodeQueryVariables,\r\n\tReferral,\r\n\tReferralCommission,\r\n\tReferralCommissionQuery,\r\n\tReferralsQuery,\r\n\tReferralsQueryVariables,\r\n\tSpotBonusPromo,\r\n\tTransactionRecord,\r\n\tTransactionRecordsQuery,\r\n\tTransactionRecordsQueryVariables,\r\n\tUplinesByNameQuery,\r\n\tUplinesByNameQueryVariables,\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 pointsWalletTransactions(\r\n\t\tvariables?: PointsWalletTransactionsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<PointsWalletTransaction>>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tPointsWalletTransactionsQuery,\r\n\t\t\tPointsWalletTransactionsQueryVariables\r\n\t\t>(POINTS_WALLET_TRANSACTIONS_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.pointsWalletTransactions } : res;\r\n\t}\r\n\r\n\tasync activityRecords(\r\n\t\tvariables?: ActivityRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<ActivityRecord>>> {\r\n\t\tconst res = await this.client.request<ActivityRecordsQuery, ActivityRecordsQueryVariables>(\r\n\t\t\tACTIVITY_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.activityRecords } : res;\r\n\t}\r\n\r\n\tasync referrals(\r\n\t\tvariables?: ReferralsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Referral>>> {\r\n\t\tconst res = await this.client.request<ReferralsQuery, ReferralsQueryVariables>(\r\n\t\t\tREFERRALS_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.referrals } : res;\r\n\t}\r\n\r\n\tasync referralCommission(): Promise<\r\n\t\tOperationResult<never, ReferralCommission | null | undefined>\r\n\t> {\r\n\t\tconst res = await this.client.request<ReferralCommissionQuery>(REFERRAL_COMMISSION_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.referralCommission } : res;\r\n\t}\r\n\r\n\tasync uplinesByName(\r\n\t\tvariables: UplinesByNameQueryVariables,\r\n\t): Promise<OperationResult<never, Referral[]>> {\r\n\t\tconst res = await this.client.request<UplinesByNameQuery, UplinesByNameQueryVariables>(\r\n\t\t\tUPLINES_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.uplinesByName } : res;\r\n\t}\r\n\tasync downlinesByName(\r\n\t\tvariables: DownlinesByNameQueryVariables,\r\n\t): Promise<OperationResult<never, Referral[]>> {\r\n\t\tconst res = await this.client.request<DownlinesByNameQuery, DownlinesByNameQueryVariables>(\r\n\t\t\tDOWNLINES_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.downlinesByName } : res;\r\n\t}\r\n\r\n\tasync promoByCode(\r\n\t\tvariables: PromoByCodeQueryVariables,\r\n\t): Promise<OperationResult<never, SpotBonusPromo>> {\r\n\t\tconst res = await this.client.request<PromoByCodeQuery, PromoByCodeQueryVariables>(\r\n\t\t\tPROMO_BY_CODE_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.promoByCode } : res;\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\tMARK_ALL_MESSAGE_AS_READ_MUTATION,\r\n\tMARK_MESSAGE_AS_READ_MUTATION,\r\n\tMESSAGES_QUERY,\r\n\tUNREAD_MESSAGES_COUNT_QUERY,\r\n\tCLAIM_REWARD_MUTATION,\r\n} from './queries';\r\nimport type {\r\n\tClaimRewardError,\r\n\tClaimRewardMutation,\r\n\tClaimRewardMutationVariables,\r\n\tClaimRewardQueryVariables,\r\n\tMarkAllMessageAsReadMutation,\r\n\tMarkMessageAsReadMutation,\r\n\tMarkMessageAsReadMutationVariables,\r\n\tMessage,\r\n\tMessagesQuery,\r\n\tMessagesQueryVariables,\r\n\tPaginatedQueryResult,\r\n\tUnreadMessagesCountQuery,\r\n\tUnreadMessagesCountQueryVariables,\r\n} from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class TriggerService {\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 messages(\r\n\t\tvariables?: MessagesQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Message>>> {\r\n\t\tconst res = await this.client.request<MessagesQuery, MessagesQueryVariables>(\r\n\t\t\tMESSAGES_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.messages } : res;\r\n\t}\r\n\r\n\tasync unreadMessagesCount(\r\n\t\tvariables?: UnreadMessagesCountQueryVariables,\r\n\t): Promise<OperationResult<never, number>> {\r\n\t\tconst res = await this.client.request<UnreadMessagesCountQuery, MessagesQueryVariables>(\r\n\t\t\tUNREAD_MESSAGES_COUNT_QUERY,\r\n\t\t\t{\r\n\t\t\t\t...variables,\r\n\t\t\t\tfilter: {\r\n\t\t\t\t\t...variables?.filter,\r\n\t\t\t\t\tmarkedAsRead: {\r\n\t\t\t\t\t\tequal: false,\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\treturn res.ok ? { ok: res.ok, data: res.data.messages.totalCount } : res;\r\n\t}\r\n\r\n\tasync markMessageAsRead(variables: MarkMessageAsReadMutationVariables): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tMarkMessageAsReadMutation,\r\n\t\t\tMarkMessageAsReadMutationVariables\r\n\t\t>(MARK_MESSAGE_AS_READ_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\t\tif (!res.data.markMessageAsRead) {\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 markAllMessageAsRead(): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<MarkAllMessageAsReadMutation>(\r\n\t\t\tMARK_ALL_MESSAGE_AS_READ_MUTATION,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\t\tif (!res.data.markAllMessageAsRead) {\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 claimReward(\r\n\t\tvariables: ClaimRewardMutationVariables,\r\n\t): Promise<OperationResult<ClaimRewardError>> {\r\n\t\tconst res = await this.client.request<ClaimRewardMutation, ClaimRewardQueryVariables>(\r\n\t\t\tCLAIM_REWARD_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.claimReward) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.claimReward.__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 { GRECAPTCHA_HEADER } from '../utils/const';\r\nimport type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tAVAILABLE_PROMOS_QUERY,\r\n\tBONUSES_QUERY,\r\n\tBONUS_QUERY,\r\n\tCASHBACKS_QUERY,\r\n\tCASHBACK_BONUSES_QUERY,\r\n\tCLAIM_CASHBACK_BONUS_MUTATION,\r\n\tCLAIM_SPOT_BONUS,\r\n\tCREATE_AIO_INSTAPAY_WITHDRAWAL_MUTATION,\r\n\tCREATE_AIO_ONLINE_BANK_DEPOSIT_MUTATION,\r\n\tCREATE_AIO_QRPH_DEPOSIT_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\tINSTAPAY_BANK_LIST_QUERY,\r\n\tMAYA_SESSION_QUERY,\r\n\tPOINTS_WALLET_QUERY,\r\n\tPROMOS_QUERY,\r\n\tREDEEM_POINTS_TO_CASH_MUTATION,\r\n\tREMAINING_DAILY_WITHDRAWALS_COUNT_QUERY,\r\n\tVALIDATE_MAYA_SESSION_MUTATION,\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\tBonusesQuery,\r\n\tCashback,\r\n\tCashbackBonus,\r\n\tCashbackBonusesQuery,\r\n\tCashbacksQuery,\r\n\tClaimCashbackBonusError,\r\n\tClaimCashbackBonusMutation,\r\n\tClaimCashbackBonusMutationVariables,\r\n\tClaimSpotBonusError,\r\n\tClaimSpotBonusMutation,\r\n\tClaimSpotBonusMutationVariable,\r\n\tCreateAIOInstapayWithdrawalMutation,\r\n\tCreateAIOInstapayWithdrawalMutationVariables,\r\n\tCreateAIOOnlineBankDepositMutation,\r\n\tCreateAIOOnlineBankDepositMutationVariables,\r\n\tCreateAIOQRPHDepositMutation,\r\n\tCreateAIOQRPHDepositMutationVariables,\r\n\tCreateBankWithdrawalMutation,\r\n\tCreateBankWithdrawalMutationVariables,\r\n\tCreateDepositError,\r\n\tCreateGCashDepositMutation,\r\n\tCreateGCashDepositMutationVariables,\r\n\tCreateGCashWithdrawalMutation,\r\n\tCreateGCashWithdrawalMutationVariables,\r\n\tCreateGameSessionError,\r\n\tCreateGameSessionMutation,\r\n\tCreateGameSessionMutationVariables,\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\tGameSession,\r\n\tGameSessionQuery,\r\n\tGameSessionQueryVariables,\r\n\tInstapayBank,\r\n\tInstapayBankListQuery,\r\n\tMayaSession,\r\n\tMayaSessionQuery,\r\n\tMayaSessionQueryVariables,\r\n\tPointsWallet,\r\n\tPointsWalletQuery,\r\n\tPromo,\r\n\tPromosQuery,\r\n\tRedeemPointsToCashError,\r\n\tRedeemPointsToCashMutation,\r\n\tRedeemPointsToCashMutationVariables,\r\n\tRemainingDailyWithdrawalsCountQuery,\r\n\tValidateMayaSessionMutation,\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 createAIOQRPHDeposit(\r\n\t\tvariables: CreateAIOQRPHDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst { reCAPTCHAResponse, ...others } = variables;\r\n\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateAIOQRPHDepositMutation,\r\n\t\t\tCreateAIOQRPHDepositMutationVariables\r\n\t\t>(CREATE_AIO_QRPH_DEPOSIT_MUTATION, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\tif (res.data.createAIOQRPHDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createAIOQRPHDeposit.__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 createAIOOnlineBankDeposit(\r\n\t\tvariables: CreateAIOOnlineBankDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst { reCAPTCHAResponse, ...others } = variables;\r\n\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateAIOOnlineBankDepositMutation,\r\n\t\t\tCreateAIOOnlineBankDepositMutationVariables\r\n\t\t>(CREATE_AIO_ONLINE_BANK_DEPOSIT_MUTATION, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\tif (res.data.createAIOOnlineBankDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createAIOOnlineBankDeposit.__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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 { reCAPTCHAResponse, ...others } = variables;\r\n\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, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\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 createAIOInstapayWithdrawal(\r\n\t\tvariables: CreateAIOInstapayWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst { reCAPTCHAResponse, ...others } = variables;\r\n\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateAIOInstapayWithdrawalMutation,\r\n\t\t\tCreateAIOInstapayWithdrawalMutationVariables\r\n\t\t>(CREATE_AIO_INSTAPAY_WITHDRAWAL_MUTATION, others, {\r\n\t\t\theaders: {\r\n\t\t\t\t...(reCAPTCHAResponse && {\r\n\t\t\t\t\t[GRECAPTCHA_HEADER]: reCAPTCHAResponse,\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\tif (res.data.createAIOInstapayWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createAIOInstapayWithdrawal.__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 instapayBankList(): Promise<OperationResult<never, InstapayBank[]>> {\r\n\t\tconst res = await this.client.request<InstapayBankListQuery>(INSTAPAY_BANK_LIST_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.instapayBankList } : res;\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 redeemPointsToCash(\r\n\t\tvariables: RedeemPointsToCashMutationVariables,\r\n\t): Promise<OperationResult<RedeemPointsToCashError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRedeemPointsToCashMutation,\r\n\t\t\tRedeemPointsToCashMutationVariables\r\n\t\t>(REDEEM_POINTS_TO_CASH_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.redeemPointsToCash) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.redeemPointsToCash.__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 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.current,\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.current,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\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\tasync validateMayaSession(): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<ValidateMayaSessionMutation>(\r\n\t\t\tVALIDATE_MAYA_SESSION_MUTATION,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.validateMayaSession) {\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 bonuses(): Promise<OperationResult<never, Bonus[]>> {\r\n\t\tconst res = await this.client.request<BonusesQuery>(BONUSES_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.bonuses ?? [] } : res;\r\n\t}\r\n\r\n\tasync claimSpotBonus(\r\n\t\tvariable: ClaimSpotBonusMutationVariable,\r\n\t): Promise<OperationResult<ClaimSpotBonusError>> {\r\n\t\tconst res = await this.client.request<ClaimSpotBonusMutation, ClaimSpotBonusMutationVariable>(\r\n\t\t\tCLAIM_SPOT_BONUS,\r\n\t\t\tvariable,\r\n\t\t);\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.claimSpotBonus) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.claimSpotBonus.__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","export function cloneDate(date: Date) {\r\n\treturn new Date(date.getTime());\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","import { addMinutes } from './add-minutes';\r\nimport { isAfter } from './is-after';\r\n\r\ninterface CacheValue<T> {\r\n\tvalue: T;\r\n\tvalidUntil: Date;\r\n}\r\n\r\ninterface CacheConfig {\r\n\t/**\r\n\t * @description The number in minutes the cache is valid\r\n\t * @default 5\r\n\t */\r\n\tcacheTime: number;\r\n}\r\n\r\nexport class Cache<T = unknown> {\r\n\tprivate config: CacheConfig;\r\n\tprivate cache: Record<string, CacheValue<T>>;\r\n\r\n\tconstructor(config?: CacheConfig) {\r\n\t\tthis.cache = {};\r\n\t\tthis.config = {\r\n\t\t\tcacheTime: 5,\r\n\t\t\t...config,\r\n\t\t};\r\n\t}\r\n\r\n\tset(key: string, value: T) {\r\n\t\tconst validUntil = addMinutes(new Date(), this.config.cacheTime);\r\n\r\n\t\tthis.cache[key] = {\r\n\t\t\tvalue,\r\n\t\t\tvalidUntil,\r\n\t\t};\r\n\t}\r\n\r\n\tget<V = never>(key: string): [V] extends [never] ? T | null : V | null {\r\n\t\tconst o = this.cache[key];\r\n\t\tif (!o) return null;\r\n\t\tif (isAfter(new Date(), o.validUntil)) return null;\r\n\t\treturn o.value as any;\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\toptions?: GraphQLClientFetchOptions,\r\n\t) {\r\n\t\tconst opts = mergeFetchOptions(this.options, options);\r\n\t\tconst body = JSON.stringify({\r\n\t\t\tquery,\r\n\t\t\tvariables,\r\n\t\t});\r\n\r\n\t\tconst headers = new Headers(opts.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 url = new URL(this.url);\r\n\t\tconst operationInfo = getOperationInfo(query);\r\n\r\n\t\tif (operationInfo) {\r\n\t\t\turl.searchParams.set(`_${operationInfo.type}`, operationInfo.name);\r\n\t\t}\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(url, {\r\n\t\t\t\t...opts,\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\toptions?: GraphQLClientFetchOptions,\r\n\t) {\r\n\t\tconst opts = mergeFetchOptions(this.options, options);\r\n\t\tconst body = this.createUploadBody(query, variables);\r\n\r\n\t\tconst headers = new Headers(opts.headers);\r\n\r\n\t\theaders.delete('Content-Type');\r\n\r\n\t\tconst url = new URL(this.url);\r\n\t\tconst operationInfo = getOperationInfo(query);\r\n\r\n\t\tif (operationInfo) {\r\n\t\t\turl.searchParams.set(`_${operationInfo.type}`, operationInfo.name);\r\n\t\t}\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(url, {\r\n\t\t\t\t...opts,\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\r\nfunction getOperationInfo(query: string) {\r\n\tconst l = query.match(/(query|mutation)\\s+(\\w+)/);\r\n\r\n\tif (!l) return null;\r\n\r\n\tconst k = l.at(1);\r\n\tconst v = l.at(2);\r\n\r\n\treturn k && v ? { type: k, name: v } : null;\r\n}\r\n\r\nfunction mergeFetchOptions(\r\n\ti: GraphQLClientFetchOptions | undefined,\r\n\tj: GraphQLClientFetchOptions | undefined,\r\n): GraphQLClientFetchOptions {\r\n\tif (!i) return j ?? {};\r\n\tif (!j) return i ?? {};\r\n\r\n\treturn {\r\n\t\t...i,\r\n\t\t...j,\r\n\r\n\t\theaders: mergeHeaders(i.headers, j.headers),\r\n\t};\r\n}\r\n\r\nfunction mergeHeaders(i: HeadersInit | undefined, j: HeadersInit | undefined) {\r\n\tif (!i) return j;\r\n\tif (!j) return i;\r\n\r\n\tconst h = new Headers();\r\n\r\n\tnew Headers(i).forEach((v, k) => h.append(k, v));\r\n\tnew Headers(j).forEach((v, k) => h.append(k, v));\r\n\r\n\treturn h;\r\n}\r\n","import type { Currency, Locale } from '../sdk';\r\n\r\nexport function getLocaleByCurrency(currency: Currency): Locale {\r\n\tif (currency === 'INR') return 'en-IN';\r\n\tif (currency === 'MYR') return 'en-MY';\r\n\tif (currency === 'IDR') return 'en-ID';\r\n\tif (currency === 'USD') return 'en-US';\r\n\treturn 'en-PH';\r\n}\r\n\r\n/*\r\n * +63 (Philippines)\r\n * +91 (India)\r\n * +60 (Malaysia)\r\n * +62 (Indonesia)\r\n * +1 (UnitedStates)\r\n */\r\nexport function getAreaCodeByLocale(locale: Locale) {\r\n\tif (locale === 'en-IN') return '+91';\r\n\tif (locale === 'en-MY') return '+60';\r\n\tif (locale === 'en-ID') return '+62';\r\n\tif (locale === 'en-US') return '+1';\r\n\treturn '+63';\r\n}\r\n","import type { Locale } from '../sdk';\r\nimport { getAreaCodeByLocale } from './locale';\r\n\r\n/**\r\n * @description Ensures mobile number has complete area code\r\n * @example\r\n * ```ts\r\n * addAreaCode('9190010001', 'en-PH'); // +639190010001\r\n * addAreaCode('09190010001', 'en-PH'); // +639190010001\r\n * addAreaCode('639190010001', 'en-PH'); // +639190010001\r\n * addAreaCode('+639190010001', 'en-PH'); // +639190010001\r\n * ```\r\n */\r\nexport function addAreaCode(mobileNumber: string, locale: Locale) {\r\n\tconst areaCode = getAreaCodeByLocale(locale);\r\n\r\n\t/* starts with area code */\r\n\tif (mobileNumber.startsWith(areaCode)) return mobileNumber;\r\n\t/* starts with area code without \"+\" */\r\n\tif (mobileNumber.startsWith(areaCode.substring(1))) return `+${mobileNumber}`;\r\n\t/* starts with zero */\r\n\tif (mobileNumber.startsWith('0')) return `${areaCode}${mobileNumber.substring(1)}`;\r\n\r\n\treturn `${areaCode}${mobileNumber}`;\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","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","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 type { AuthService, WalletService } from '../services';\r\nimport { addDays } from '../utils/add-days';\r\nimport { addMinutes } from '../utils/add-minutes';\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 {\r\n\tlogs?: boolean;\r\n\tauthService: AuthService;\r\n\twalletService: WalletService;\r\n}\r\n\r\nexport class SessionManager {\r\n\tprivate logger: 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 = config.authService;\r\n\t\tthis.walletService = config.walletService;\r\n\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: config.logs ?? 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\t\t\tif (!r0.data?.member) {\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: 'HttpForbidden',\r\n\t\t\t\t\t\tmessage: 'Forbidden',\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\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 * Token sign up (for 3rd party sign in)\r\n\t\t */\r\n\r\n\t\tif (input.type === 'TOKEN') {\r\n\t\t\tconst res = await this.authService.createSession({ token: input.token });\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\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: 'SessionExpiredError',\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/*\r\n\t\t\t\t\t * return previous session for all errors except \"InvalidTokenError\" and \"AccountBlacklistedError\"\r\n\t\t\t\t\t */\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tres.error.name === 'InvalidTokenError' ||\r\n\t\t\t\t\t\tres.error.name === 'AccountBlacklistedError'\r\n\t\t\t\t\t) {\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 === 'InvalidTokenError') return false;\r\n\t\tif (s.error?.name === 'SessionExpiredError') return false;\r\n\t\tif (s.error?.name === 'AccountBlacklistedError') 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","type MaybeNumber = number | string | undefined | null;\r\n\r\nexport function parseDecimal(value: MaybeNumber): number | undefined;\r\nexport function parseDecimal(value: MaybeNumber, fallback: number): number;\r\nexport function parseDecimal(value: MaybeNumber, 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 { compact } from '../utils/compact';\r\nimport { getLocaleByCurrency } from '../utils/locale';\r\nimport { parseDecimal } from '../utils/parse-decimal';\r\nimport type { Assign } from '../utils/types';\r\nimport type * as External from './types';\r\n\r\nexport class Transformer {\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\tpointsWalletTransaction: this.pointsWalletTransaction.bind(this),\r\n\t\t\tactivityRecord: this.activityRecord.bind(this),\r\n\t\t\treferral: this.referral.bind(this),\r\n\t\t\treferralCommission: this.referralCommission.bind(this),\r\n\t\t\tplatform__next: this.platform__next.bind(this),\r\n\t\t\tpointsClubSettings: this.pointsClubSettings.bind(this),\r\n\t\t\tpaymentSettings: this.paymentSettings.bind(this),\r\n\t\t\tmessage: this.message.bind(this),\r\n\t\t\tinstapayBank: this.instapayBank.bind(this),\r\n\t\t\tpromoByCode: this.promoByCode.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\tfields: data.config.fields,\r\n\t\t};\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\t/** @deprecated */\r\n\tprivate platform(data: Internal.Platform): External.Platform {\r\n\t\treturn {\r\n\t\t\ttimezone: data.timezone,\r\n\t\t\tcurrency: data.currency,\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\tonlineBank: {\r\n\t\t\t\t\t\tandroidEnabled: data.onlineBankDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.onlineBankDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.onlineBankDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.onlineBankDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.onlineBankDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.onlineBankDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tqrph: {\r\n\t\t\t\t\t\tandroidEnabled: data.qrphDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.qrphDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.qrphDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.qrphDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.qrphDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.qrphDepositGatewaySettings?.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\tinstapay: {\r\n\t\t\t\t\t\tandroidEnabled: data.instapayWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.instapayWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.instapayWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.instapayWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.instapayWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\t\tdata.instapayWithdrawalGatewaySettings?.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 platform__next(data: Internal.Platform__Next): External.Platform__Next {\r\n\t\treturn {\r\n\t\t\tcurrency: data.currency,\r\n\t\t\ttimezone: data.timezone,\r\n\t\t\tlocale: getLocaleByCurrency(data.currency),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate pointsClubSettings(data: Internal.PointsClubSettings): External.PointsClubSettings {\r\n\t\treturn {\r\n\t\t\tmultiplier: parseDecimal(data.multiplier, 0),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate paymentSettings(data: Internal.PaymentSettings): External.PaymentSettings {\r\n\t\treturn {\r\n\t\t\tminimumFirstDepositAmount: parseDecimal(data.minimumFirstDepositAmount),\r\n\t\t\trestrictWithdrawalsToVerifiedMembers: data.restrictWithdrawalsToVerifiedMembers,\r\n\t\t\tdepositGateway: {\r\n\t\t\t\tbank: {\r\n\t\t\t\t\tandroidEnabled: data.bankDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.bankDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.bankDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.bankDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.bankDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.bankDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tgcash: {\r\n\t\t\t\t\tandroidEnabled: data.gcashDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.gcashDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.gcashDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.gcashDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.gcashDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.gcashDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tmaya: {\r\n\t\t\t\t\tandroidEnabled: data.mayaDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.mayaDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.mayaDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.mayaDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.mayaDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tmayaApp: {\r\n\t\t\t\t\tandroidEnabled: data.mayaAppDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.mayaAppDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.mayaAppDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.mayaAppDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tonlineBank: {\r\n\t\t\t\t\tandroidEnabled: data.onlineBankDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.onlineBankDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.onlineBankDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.onlineBankDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.onlineBankDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.onlineBankDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tqrph: {\r\n\t\t\t\t\tandroidEnabled: data.qrphDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.qrphDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.qrphDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.qrphDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.qrphDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.qrphDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\twithdrawalGateway: {\r\n\t\t\t\tbank: {\r\n\t\t\t\t\tandroidEnabled: data.bankWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.bankWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.bankWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.bankWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tgcash: {\r\n\t\t\t\t\tandroidEnabled: data.gcashWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.gcashWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.gcashWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.gcashWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.gcashWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.gcashWithdrawalGatewaySettings?.maximumAmount, 1000000),\r\n\t\t\t\t},\r\n\t\t\t\tmaya: {\r\n\t\t\t\t\tandroidEnabled: data.mayaWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.mayaWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.mayaWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.mayaWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t},\r\n\t\t\t\tmayaApp: {\r\n\t\t\t\t\tandroidEnabled: data.mayaAppWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.mayaAppWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.mayaAppWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.mayaAppWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\tdata.mayaAppWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t1000000,\r\n\t\t\t\t\t),\r\n\t\t\t\t},\r\n\t\t\t\tinstapay: {\r\n\t\t\t\t\tandroidEnabled: data.instapayWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\tiosEnabled: data.instapayWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\twebEnabled: data.instapayWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\tmobileWebEnabled: data.instapayWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\tminimumAmount: parseDecimal(data.instapayWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\tdata.instapayWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t1000000,\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\tprivate account(data: Internal.MemberAccount): 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\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\tconst o: External.Wallet = {\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\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate verificationDetails(data: Internal.MemberVerification): External.VerificationDetails {\r\n\t\tconst o: External.VerificationDetails = {\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\tpermanentAddress: data.permanentAddress,\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\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate profileCompletion(data: Internal.ProfileCompletion): External.ProfileCompletion {\r\n\t\tconst o: External.ProfileCompletion = {\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.completionPercentage, 0),\r\n\t\t};\r\n\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate announcement(data: Internal.Announcement): External.Announcement {\r\n\t\tconst o: External.Announcement = {\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\r\n\t\treturn o;\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\terror: data.error ?? 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: External.Deposit = {\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\tvca: data.vca ?? undefined,\r\n\t\t\tqrCode: data.qrCode ?? undefined,\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\terror: data.error ?? undefined,\r\n\t\t};\r\n\r\n\t\treturn compact(o);\r\n\t}\r\n\r\n\tprivate betRecord(\r\n\t\tdata: Assign<Internal.BetRecord, { game?: Internal.Game }>,\r\n\t): 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: data.game ? this.game(data.game) : undefined,\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(\r\n\t\tdata: Assign<Internal.LatestBetRecord, { game?: Internal.Game }>,\r\n\t): External.LatestBetRecord {\r\n\t\tconst o: External.LatestBetRecord = {\r\n\t\t\tid: data.id,\r\n\t\t\tmember: data.member,\r\n\t\t\tgame: data.game ? this.game(data.game) : undefined,\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\r\n\t\treturn o;\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\tconst o: External.Game = {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\ttags: data.tags ?? [],\r\n\t\t\tname: data.name,\r\n\t\t\timages: [data.customImage, data.image].filter(Boolean) as string[],\r\n\t\t\tprovider: data.provider,\r\n\t\t\treference: data.reference,\r\n\t\t};\r\n\r\n\t\treturn o;\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: !data.banner\r\n\t\t\t\t? null\r\n\t\t\t\t: (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\tmaximumDepositAmount: parseDecimal(data.maximumDepositAmount),\r\n\t\t\tminimumDepositAmount: parseDecimal(data.minimumDepositAmount),\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\tconst o: External.Cashback = {\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\tminimumCashback: parseDecimal(data.minimumCashback, 0),\r\n\t\t\tmaximumMonthlyCashback: parseDecimal(data.maximumMonthlyCashback),\r\n\t\t\tbanner: !data.banner\r\n\t\t\t\t? null\r\n\t\t\t\t: (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\tturnoverContributionPercentagePerGameProvider: Object.entries(\r\n\t\t\t\tdata.turnoverContributionPercentagePerGameProvider,\r\n\t\t\t).reduce<Partial<Record<External.GameProvider, number>>>((o, [k, v]) => {\r\n\t\t\t\to[k as External.GameProvider] = parseDecimal(v, 0);\r\n\t\t\t\treturn o;\r\n\t\t\t}, {}),\r\n\t\t};\r\n\r\n\t\treturn o;\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? undefined\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\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\tconst o: External.CashbackBonus = {\r\n\t\t\tid: data.id,\r\n\t\t\ttotal: parseDecimal(data.total, 0),\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\r\n\t\treturn o;\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\tconst o: External.PointsWallet = {\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\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate pointsWalletTransaction(\r\n\t\tdata: Internal.PointsWalletTransaction,\r\n\t): External.PointsWalletTransaction {\r\n\t\tconst o: External.PointsWalletTransaction = {\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\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate activityRecord(data: Internal.ActivityRecord): External.ActivityRecord {\r\n\t\tconst o: External.ActivityRecord = {\r\n\t\t\tid: data.id,\r\n\t\t\ttype: data.type,\r\n\t\t\tamount: data.amount ? parseDecimal(data.amount, 0) : undefined,\r\n\t\t\tdomain: data.domain ?? undefined,\r\n\t\t\tdetails: data.details,\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 referral(data: Internal.Referral): External.Referral {\r\n\t\tconst o: External.Referral = {\r\n\t\t\tid: data.id,\r\n\t\t\tlevel: data.level,\r\n\t\t\tupline: data.upline,\r\n\t\t\tdownline: data.downline,\r\n\t\t\tturnover: parseDecimal(data.turnover, 0),\r\n\t\t\tcommission: parseDecimal(data.commission, 0),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\r\n\t\treturn o;\r\n\t}\r\n\r\n\tprivate referralCommission(data: Internal.ReferralCommission): External.ReferralCommission {\r\n\t\tconst o: External.ReferralCommission = {\r\n\t\t\tid: data.id,\r\n\t\t\tcommission: parseDecimal(data.commission, 0),\r\n\t\t\tlevel1Commission: parseDecimal(data.level1Commission, 0),\r\n\t\t\tlevel2Commission: parseDecimal(data.level2Commission, 0),\r\n\t\t\tlevel3Commission: parseDecimal(data.level3Commission, 0),\r\n\t\t\treferralsCount: data.referralsCount,\r\n\t\t\tlevel1ReferralsCount: data.level1ReferralsCount,\r\n\t\t\tlevel2ReferralsCount: data.level2ReferralsCount,\r\n\t\t\tlevel3ReferralsCount: data.level3ReferralsCount,\r\n\t\t\treferralCode: data.referralCode,\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 o;\r\n\t}\r\n\r\n\tprivate message(data: Internal.Message): External.Message {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\ticon: data.icon,\r\n\t\t\tlogo: data.logo,\r\n\t\t\timage: data.image,\r\n\t\t\ttitle: data.title,\r\n\t\t\tpopup: data.popup,\r\n\t\t\tcontent: data.content,\r\n\t\t\tactions: data.actions,\r\n\t\t\tmarkedAsRead: data.markedAsRead,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate instapayBank(data: Internal.InstapayBank): External.InstapayBank {\r\n\t\treturn data;\r\n\t}\r\n\r\n\tprivate promoByCode(data: Internal.SpotBonusPromo): External.SpotBonusPromo {\r\n\t\treturn {\r\n\t\t\tactiveBonusesCount: data.activeBonusesCount,\r\n\t\t\tbonusesCount: data.bonusesCount,\r\n\t\t\tcancelledBonusesCount: data.cancelledBonusesCount,\r\n\t\t\tclearedBonusesCount: data.clearedBonusesCount,\r\n\t\t\tclosedBonusesCount: data.closedBonusesCount,\r\n\t\t\tclosedBonusesCountPercentage: parseDecimal(data.closedBonusesCountPercentage, 0),\r\n\t\t\tcode: data.code,\r\n\t\t\tdaysToClear: data.daysToClear,\r\n\t\t\tenabledGameProviders: data.enabledGameProviders,\r\n\t\t\tid: data.id,\r\n\t\t\texpiredBonusesCount: data.expiredBonusesCount,\r\n\t\t\tmaximumBonusesCountLimit: data.maximumBonusesCountLimit,\r\n\t\t\tname: data.name,\r\n\t\t\tstatus: data.status,\r\n\t\t\ttotalBet: parseDecimal(data.totalBet, 0),\r\n\t\t\ttotalBonus: parseDecimal(data.totalBonus, 0),\r\n\t\t\ttotalBonusBalance: parseDecimal(data.totalBonusBalance, 0),\r\n\t\t\ttotalBonusCashedOut: parseDecimal(data.totalBonusCashedOut, 0),\r\n\t\t\ttotalDeposit: parseDecimal(data.totalDeposit, 0),\r\n\t\t\tturnoverRequirementMultiplier: parseDecimal(data.turnoverRequirementMultiplier, 0),\r\n\t\t\ttype: data.type,\r\n\t\t\tzeroedOutBonusesCount: data.zeroedOutBonusesCount,\r\n\t\t\tzeroOutThreshold: parseDecimal(data.zeroOutThreshold, 0),\r\n\t\t\tbonusAmount: parseDecimal(data.bonusAmount, 0),\r\n\t\t\tdescription: data.description,\r\n\t\t\tturnoverRequirementType: data.turnoverRequirementType,\r\n\t\t\tactivationEndDateTime: data.activationEndDateTime\r\n\t\t\t\t? new Date(data.activationEndDateTime)\r\n\t\t\t\t: undefined,\r\n\t\t\tactivationStartDateTime: data.activationStartDateTime\r\n\t\t\t\t? new Date(data.activationStartDateTime)\r\n\t\t\t\t: undefined,\r\n\t\t\tdateTimeClosed: data.dateTimeClosed ? new Date(data.dateTimeClosed) : undefined,\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tturnoverRequirementContributionPercentagePerGameProvider: Object.entries(\r\n\t\t\t\tdata.turnoverRequirementContributionPercentagePerGameProvider,\r\n\t\t\t).reduce<Partial<Record<External.GameProvider, number>>>((o, [k, v]) => {\r\n\t\t\t\to[k as External.GameProvider] = parseDecimal(v, 0);\r\n\t\t\t\treturn o;\r\n\t\t\t}, {}),\r\n\t\t\tminimumTicketOddFactorPerSportsGameProvider: Object.entries(\r\n\t\t\t\tdata.minimumTicketOddFactorPerSportsGameProvider,\r\n\t\t\t).reduce<Partial<Record<External.GameProvider, number>>>((o, [k, v]) => {\r\n\t\t\t\to[k as External.GameProvider] = parseDecimal(v, 0);\r\n\t\t\t\treturn o;\r\n\t\t\t}, {}),\r\n\t\t\tbanner: data.banner,\r\n\t\t};\r\n\t}\r\n}\r\n","import {\r\n\tAccountService,\r\n\tAuthService,\r\n\tCmsPortalService,\r\n\tFileService,\r\n\tGameService,\r\n\tPortalService,\r\n\tReportService,\r\n\tTriggerService,\r\n\tWalletService,\r\n} from '../services';\r\nimport { Cache } from '../utils/cache';\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 { addAreaCode } from '../utils/mobile-number';\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\tActivityRecordsInput,\r\n\tActivityRecordsReturn,\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\tBonusesReturn,\r\n\tCashbackBonusReturn,\r\n\tCashbacksReturn,\r\n\tClaimCashbackBonusReturn,\r\n\tClaimRewardReturn,\r\n\tClaimSpotBonusReturn,\r\n\tCompleteOnboardingInput,\r\n\tCompleteOnboardingReturn,\r\n\tCreateAccountInput,\r\n\tCreateAccountInput__Next,\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\tDownlinesByNameInput,\r\n\tDownlinesByNameReturn,\r\n\tEndGameSessionReturn,\r\n\tFileReturn,\r\n\tGameReturn,\r\n\tGameSessionReturn,\r\n\tGamesInput,\r\n\tGamesReturn,\r\n\tInstapayBankListReturn,\r\n\tLatestBetRecordsReturn,\r\n\tLocale,\r\n\tMarkAllMessagesAsReadReturn,\r\n\tMarkMessageAsReadReturn,\r\n\tMayaSignInInput,\r\n\tMayaSignInReturn,\r\n\tMessagesInput,\r\n\tMessagesReturn,\r\n\tMobileNumberSignInInput,\r\n\tMobileNumberSignInReturn,\r\n\tNameAndPasswordSignInInput,\r\n\tNameAndPasswordSignInReturn,\r\n\tOnboardingStatusReturn,\r\n\tPaymentSettingsReturn,\r\n\tPlatformReturn,\r\n\tPlatformReturn__Next,\r\n\tPointsClubSettingsReturn,\r\n\tPointsWalletReturn,\r\n\tPointsWalletTransactionsInput,\r\n\tPointsWalletTransactionsReturn,\r\n\tProfileCompletionReturn,\r\n\tPromoByCodeReturn,\r\n\tPromosReturn,\r\n\tRecommendedGamesInput,\r\n\tRecommendedGamesReturn,\r\n\tRedeemPointsInput,\r\n\tRedeemPointsReturn,\r\n\tReferralCodeReturn,\r\n\tReferralCommissionReturn,\r\n\tReferralsInput,\r\n\tReferralsReturn,\r\n\tRegisterMayaAccountInput,\r\n\tRegisterMayaAccountReturn,\r\n\tRemainingDailyWithdrawalsCountReturn,\r\n\tResetPasswordInput,\r\n\tResetPasswordReturn,\r\n\tSendVerificationCodeInput__Next,\r\n\tSendVerificationCodeReturn,\r\n\tSendVerificationCodeReturn__Next,\r\n\tSessionReturn,\r\n\tSignInInput,\r\n\tSignInReturn,\r\n\tSiteReturn,\r\n\tSkipOnboardingReturn,\r\n\tSubmitVerificationDetailsInput,\r\n\tSubmitVerificationDetailsReturn,\r\n\tTokenSignInInput,\r\n\tTokenSignInReturn,\r\n\tTransactionRecordsInput,\r\n\tTransactionRecordsReturn,\r\n\tUnreadMessagesCountInput,\r\n\tUnreadMessagesCountReturn,\r\n\tUpdateAccountInput,\r\n\tUpdateAccountReturn,\r\n\tUpdateReferralCodeInput,\r\n\tUpdateReferralCodeReturn,\r\n\tUpdateVerificationDetailsInput,\r\n\tUpdateVerificationDetailsReturn,\r\n\tUplinesByNameInput,\r\n\tUplinesByNameReturn,\r\n\tUploadImageFileInput,\r\n\tUploadImageFileReturn,\r\n\tValidateMayaSessionReturn,\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\tlogs?: boolean;\r\n}\r\n\r\nexport class Sdk {\r\n\tprivate cmsPortalService: CmsPortalService;\r\n\tprivate authService: AuthService;\r\n\tprivate gameService: GameService;\r\n\tprivate fileService: FileService;\r\n\tprivate walletService: WalletService;\r\n\tprivate accountService: AccountService;\r\n\tprivate reportService: ReportService;\r\n\tprivate portalService: PortalService;\r\n\tprivate triggerService: TriggerService;\r\n\tprivate sessionManager: SessionManager;\r\n\tprivate transformer: Transformer;\r\n\tprivate logger: Logger;\r\n\r\n\tprivate cache: Cache;\r\n\r\n\tconstructor(config: SdkConfig) {\r\n\t\tconst {\r\n\t\t\t/**/\r\n\t\t\tsite,\r\n\t\t\tsitePlatform,\r\n\t\t\tplatform,\r\n\t\t\tenvironment,\r\n\t\t\tlogs,\r\n\t\t} = config;\r\n\r\n\t\tconst production = environment === 'production';\r\n\r\n\t\tthis.transformer = new Transformer();\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: logs ?? false,\r\n\t\t});\r\n\r\n\t\tconst authUrl = production\r\n\t\t\t? import.meta.env.VITE_AUTH_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_AUTH_DEVELOPMENT_URL;\r\n\r\n\t\tconst walletUrl = production\r\n\t\t\t? import.meta.env.VITE_WALLET_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_WALLET_DEVELOPMENT_URL;\r\n\r\n\t\tconst reportUrl = production\r\n\t\t\t? import.meta.env.VITE_REPORT_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_REPORT_DEVELOPMENT_URL;\r\n\r\n\t\tconst accountUrl = production\r\n\t\t\t? import.meta.env.VITE_ACCOUNT_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_ACCOUNT_DEVELOPMENT_URL;\r\n\r\n\t\tconst portalUrl = production\r\n\t\t\t? import.meta.env.VITE_PORTAL_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_PORTAL_DEVELOPMENT_URL;\r\n\r\n\t\tconst fileUrl = production\r\n\t\t\t? import.meta.env.VITE_FILE_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_FILE_DEVELOPMENT_URL;\r\n\r\n\t\tconst gameUrl = production\r\n\t\t\t? import.meta.env.VITE_GAME_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_GAME_DEVELOPMENT_URL;\r\n\r\n\t\tconst triggerUrl = production\r\n\t\t\t? import.meta.env.VITE_TRIGGER_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_TRIGGER_DEVELOPMENT_URL;\r\n\r\n\t\t/*\r\n\t\tconst cmsPortalUrl = production\r\n\t\t\t? import.meta.env.VITE_CMS_PORTAL_PRODUCTION_URL\r\n\t\t\t: import.meta.env.VITE_CMS_PORTAL_DEVELOPMENT_URL;\r\n\t\t*/\r\n\r\n\t\tconst cmsPortalUrl = import.meta.env.VITE_CMS_PORTAL_PRODUCTION_URL;\r\n\r\n\t\tconst cmsPortalService = new CmsPortalService({\r\n\t\t\turl: cmsPortalUrl,\r\n\t\t\tsite,\r\n\t\t\tplatform: 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': platform,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconst gameService = new GameService(new GraphQLClient(gameUrl, graphqlClientConfig));\r\n\t\tconst fileService = new FileService(new GraphQLClient(fileUrl, graphqlClientConfig));\r\n\t\tconst walletService = new WalletService(new GraphQLClient(walletUrl, graphqlClientConfig));\r\n\t\tconst accountService = new AccountService(new GraphQLClient(accountUrl, graphqlClientConfig));\r\n\t\tconst reportService = new ReportService(new GraphQLClient(reportUrl, graphqlClientConfig));\r\n\t\tconst portalService = new PortalService(new GraphQLClient(portalUrl, graphqlClientConfig));\r\n\t\tconst triggerService = new TriggerService(new GraphQLClient(triggerUrl, graphqlClientConfig));\r\n\r\n\t\tconst authService = new AuthService({\r\n\t\t\turl: authUrl,\r\n\t\t\tplatform,\r\n\t\t});\r\n\r\n\t\tconst sessionManager = new SessionManager({\r\n\t\t\tlogs,\r\n\t\t\tauthService,\r\n\t\t\twalletService,\r\n\t\t});\r\n\r\n\t\tthis.authService = authService;\r\n\t\tthis.gameService = gameService;\r\n\t\tthis.fileService = fileService;\r\n\t\tthis.walletService = walletService;\r\n\t\tthis.accountService = accountService;\r\n\t\tthis.reportService = reportService;\r\n\t\tthis.portalService = portalService;\r\n\t\tthis.triggerService = triggerService;\r\n\t\tthis.sessionManager = sessionManager;\r\n\t\tthis.cmsPortalService = cmsPortalService;\r\n\r\n\t\tthis.cache = new Cache();\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\tprivate get locale() {\r\n\t\treturn new Promise<Locale>((resolve) => {\r\n\t\t\tconst cacheKey = 'locale';\r\n\t\t\tconst cacheValue = this.cache.get<Locale>(cacheKey);\r\n\r\n\t\t\tif (cacheValue) return resolve(cacheValue);\r\n\r\n\t\t\tthis.platform__next().then((res) => {\r\n\t\t\t\tif (res.ok) {\r\n\t\t\t\t\tthis.cache.set(cacheKey, res.data.locale);\r\n\t\t\t\t\tresolve(res.data.locale);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.logger.warn(\"Failed to fetch currency. Using 'PH' as fallback\");\r\n\t\t\t\t\tresolve('en-PH');\r\n\t\t\t\t}\r\n\t\t\t});\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: TokenSignInInput): Promise<TokenSignInReturn>;\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\tcase 'TOKEN': {\r\n\t\t\t\tconst res = await this.sessionManager.create({\r\n\t\t\t\t\ttype: 'TOKEN',\r\n\t\t\t\t\ttoken: input.token,\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res.ok ? { ok: true } : res;\r\n\t\t\t}\r\n\r\n\t\t\tcase 'MOBILE_NUMBER': {\r\n\t\t\t\tconst res = await this.sessionManager.create({\r\n\t\t\t\t\ttype: 'MOBILE_NUMBER',\r\n\t\t\t\t\tmobileNumber: addAreaCode(input.mobileNumber, await this.locale),\r\n\t\t\t\t\tverificationCode: input.verificationCode,\r\n\t\t\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res.ok ? { ok: true } : res;\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\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\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\tasync validateMayaSession(): Promise<ValidateMayaSessionReturn> {\r\n\t\treturn await this.walletService.validateMayaSession();\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.self();\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\t/** @deprecated */\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\tasync platform__next(): Promise<PlatformReturn__Next> {\r\n\t\tconst res = await this.portalService.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__next(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\tasync paymentSettings(): Promise<PaymentSettingsReturn> {\r\n\t\tconst res = await this.accountService.paymentSettings();\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.paymentSettings(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 r = await this.accountService.memberAccount();\r\n\r\n\t\tif (!r.ok) return r;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.account(r.data),\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated use `createAccount__next`\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\tbtag: input.btag,\r\n\t\t\t\tname: input.name,\r\n\t\t\t\tdomain: input.domain,\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: this.formatYmd(input.dateOfBirth),\r\n\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\tmobileNumber: addAreaCode(input.mobileNumber, await this.locale),\r\n\t\t\t},\r\n\t\t\treferralCode: input.referralCode,\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\tasync createAccount__next(input: CreateAccountInput__Next): Promise<CreateAccountReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Account).toString();\r\n\r\n\t\tif (input.type === 'MOBILE_NUMBER') {\r\n\t\t\tconst res = await this.accountService.registerMemberAccountViaMobile({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tbtag: input.btag,\r\n\t\t\t\t\tdomain: input.domain,\r\n\t\t\t\t\tmobileNumber: addAreaCode(input.mobileNumber, await this.locale),\r\n\t\t\t\t},\r\n\t\t\t\treferralCode: input.referralCode,\r\n\t\t\t\tverificationCode: input.verificationCode,\r\n\t\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\r\n\t\t\t});\r\n\r\n\t\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t\t}\r\n\r\n\t\tconst res = await this.accountService.registerMemberAccount__next({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tname: input.name,\r\n\t\t\t\tbtag: input.btag,\r\n\t\t\t\tdomain: input.domain,\r\n\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\tmobileNumber: input.mobileNumber\r\n\t\t\t\t\t? addAreaCode(input.mobileNumber, await this.locale)\r\n\t\t\t\t\t: undefined,\r\n\t\t\t},\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\tasync registerMayaAccount(input: RegisterMayaAccountInput): Promise<RegisterMayaAccountReturn> {\r\n\t\treturn await this.accountService.registerMayaMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tname: input.name,\r\n\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\tdomain: input.domain,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync updateAccount(id: string, input: UpdateAccountInput): Promise<UpdateAccountReturn> {\r\n\t\tconst {\r\n\t\t\t/**/\r\n\t\t\tpassword,\r\n\t\t\tdateOfBirth,\r\n\t\t\tmobileNumber,\r\n\t\t\tsecretAnswer,\r\n\t\t\ttransactionPassword,\r\n\t\t\t...others\r\n\t\t} = input;\r\n\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...others,\r\n\t\t\t\t\tpassword: password ? await sha256(password) : undefined,\r\n\t\t\t\t\ttransactionPassword: transactionPassword ? await sha256(transactionPassword) : undefined,\r\n\t\t\t\t\tmobileNumber: mobileNumber ? addAreaCode(mobileNumber, await this.locale) : undefined,\r\n\t\t\t\t\tsecretAnswer: secretAnswer ? await sha256(secretAnswer) : undefined,\r\n\t\t\t\t\tbirthDay: dateOfBirth\r\n\t\t\t\t\t\t? typeof dateOfBirth === 'string'\r\n\t\t\t\t\t\t\t? dateOfBirth\r\n\t\t\t\t\t\t\t: this.formatYmd(dateOfBirth)\r\n\t\t\t\t\t\t: 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\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\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: addAreaCode(input.mobileNumber, await this.locale),\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\t/**\r\n\t * @deprecated use `sendVerificationCode__next`\r\n\t */\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: addAreaCode(mobileNumber, await this.locale),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync sendVerificationCode__next(\r\n\t\tinput: SendVerificationCodeInput__Next,\r\n\t): Promise<SendVerificationCodeReturn__Next> {\r\n\t\tif (input.type === 'SMS') {\r\n\t\t\treturn this.authService.sendVerificationCode({\r\n\t\t\t\tchannel: 'SMS',\r\n\t\t\t\trecipient: addAreaCode(input.mobileNumber, await this.locale),\r\n\t\t\t\t...(input.strict && {\r\n\t\t\t\t\tverificationType: 'MEMBER',\r\n\t\t\t\t}),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"'Email' verification code is not yet supported\");\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\t...input?.filter,\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},\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\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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: addAreaCode(input.recipientMobileNumber, await this.locale),\r\n\t\t\t\t},\r\n\t\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\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: addAreaCode(input.recipientMobileNumber, await this.locale),\r\n\t\t\t\t},\r\n\t\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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 === 'AIO_INSTAPAY') {\r\n\t\t\tconst res = await this.walletService.createAIOInstapayWithdrawal({\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\tbankCode: input.bankCode,\r\n\t\t\t\t\taccountNumber: input.accountNumber,\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t},\r\n\t\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\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\tasync instapayBankList(): Promise<InstapayBankListReturn> {\r\n\t\tconst res = await this.walletService.instapayBankList();\r\n\t\tif (!res.ok) return res;\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.instapayBank),\r\n\t\t};\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\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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 === 'AIO_ONLINE_BANK') {\r\n\t\t\tconst res = await this.walletService.createAIOOnlineBankDeposit({\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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 === 'AIO_QRPH') {\r\n\t\t\tconst res = await this.walletService.createAIOQRPHDeposit({\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\treCAPTCHAResponse: input.reCAPTCHAResponse,\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 res0 = await this.reportService.betRecords({\r\n\t\t\t...input,\r\n\t\t\t...(input?.filter && {\r\n\t\t\t\tfilter: {\r\n\t\t\t\t\t...(input.filter.status && {\r\n\t\t\t\t\t\tstatus: input.filter.status,\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...(input.filter.serialCode && {\r\n\t\t\t\t\t\tserialCode: input.filter.serialCode,\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...(input.filter.vendorRoundId && {\r\n\t\t\t\t\t\tvendorRoundId: input.filter.vendorRoundId,\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...(input.filter.gameType && {\r\n\t\t\t\t\t\tgame__type: input.filter.gameType,\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...(input.filter.gameProvider && {\r\n\t\t\t\t\t\tgame__provider: input.filter.gameProvider,\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...(input.filter.dateTimeCreated && {\r\n\t\t\t\t\t\tdateTimeCreated: input.filter.dateTimeCreated,\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\tif (!res0.ok) return res0;\r\n\r\n\t\tconst ids = [...new Set(res0.data.edges.map((e) => e.node.game.id))];\r\n\r\n\t\tif (ids.length <= 0) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tbetRecords: [],\r\n\t\t\t\t\ttotalCount: 0,\r\n\t\t\t\t\tendCursor: undefined,\r\n\t\t\t\t\thasNextPage: false,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst res1 = await this.cmsPortalService.games({\r\n\t\t\tfilter: {\r\n\t\t\t\treference: {\r\n\t\t\t\t\tin: ids,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (!res1.ok) return res1;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tbetRecords: res0.data.edges.map(({ cursor, node }) => {\r\n\t\t\t\t\tconst game = res1.data.edges.find((e) => node.game.id === e.node.reference)?.node;\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\t...this.transformer.transform.betRecord({\r\n\t\t\t\t\t\t\t...node,\r\n\t\t\t\t\t\t\tgame,\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tcursor,\r\n\t\t\t\t\t};\r\n\t\t\t\t}),\r\n\t\t\t\ttotalCount: res0.data.totalCount,\r\n\t\t\t\tendCursor: res0.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res0.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 res0 = await this.portalService.latestBetRecords();\r\n\r\n\t\tif (!res0.ok) return res0;\r\n\r\n\t\tconst ids = [...new Set(res0.data.map((o) => o.game.id))];\r\n\r\n\t\tif (ids.length <= 0) {\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}\r\n\r\n\t\tconst res1 = await this.cmsPortalService.games({\r\n\t\t\tfilter: {\r\n\t\t\t\treference: {\r\n\t\t\t\t\tin: ids,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (!res1.ok) return res1;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res0.data.map((o) => {\r\n\t\t\t\tconst game = res1.data.edges.find((e) => e.node.reference === o.game.id)?.node;\r\n\r\n\t\t\t\treturn this.transformer.transform.latestBetRecord({\r\n\t\t\t\t\t...o,\r\n\t\t\t\t\tgame,\r\n\t\t\t\t});\r\n\t\t\t}),\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\t/** @deprecated */\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\tasync claimSpotBonus(code: string): Promise<ClaimSpotBonusReturn> {\r\n\t\treturn await this.walletService.claimSpotBonus({ code: code });\r\n\t}\r\n\r\n\tasync promoByCode(code: string): Promise<PromoByCodeReturn> {\r\n\t\tconst res = await this.reportService.promoByCode({ code: code });\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.promoByCode(res.data),\r\n\t\t};\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.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 recommendedGames(input?: RecommendedGamesInput): Promise<RecommendedGamesReturn> {\r\n\t\tconst res0 = await this.portalService.recommendedGames();\r\n\r\n\t\tif (!res0.ok) return res0;\r\n\r\n\t\tconst ids = [...new Set(res0.data.map((o) => o.id))];\r\n\r\n\t\tif (ids.length <= 0) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tgames: [],\r\n\t\t\t\t\ttotalCount: 0,\r\n\t\t\t\t\thasNextPage: false,\r\n\t\t\t\t\tendCursor: undefined,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst res1 = await this.cmsPortalService.games({\r\n\t\t\tfirst: input?.first,\r\n\t\t\tafter: input?.after,\r\n\t\t\tfilter: {\r\n\t\t\t\treference: {\r\n\t\t\t\t\tin: ids,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (!res1.ok) return res1;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res1.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: res1.data.totalCount,\r\n\t\t\t\thasNextPage: res1.data.pageInfo.hasNextPage,\r\n\t\t\t\tendCursor: res1.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t},\r\n\t\t} as RecommendedGamesReturn;\r\n\t}\r\n\r\n\tasync gameSession(id: string): Promise<GameSessionReturn> {\r\n\t\tconst res0 = await this.walletService.gameSession({ id });\r\n\r\n\t\tif (!res0.ok) return res0;\r\n\r\n\t\tif (res0.data) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: this.transformer.transform.gameSession(res0.data),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst res1 = await this.gameService.gameSession({ id });\r\n\r\n\t\tif (!res1.ok) return res1;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res1.data ? this.transformer.transform.gameSession(res1.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createGameSession(input: CreateGameSessionInput): Promise<CreateGameSessionReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.GameSession).toString();\r\n\t\tconst isSports = input.game.startsWith('SPORTS:');\r\n\r\n\t\tif (isSports) {\r\n\t\t\tconst game = await ObjectId.generateFromKey(ObjectType.Game, input.game).then(\r\n\t\t\t\t(generatedId) => {\r\n\t\t\t\t\treturn generatedId.toString();\r\n\t\t\t\t},\r\n\t\t\t);\r\n\r\n\t\t\tconst res0 = await this.gameService.createGameSession({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tgame,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn res0.ok ? { ok: true, data: { id } } : res0;\r\n\t\t}\r\n\r\n\t\tconst res0 = await this.game(input.game);\r\n\r\n\t\tif (!res0.data) {\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: 'GameDoesNotExistError',\r\n\t\t\t\t\tmessage: 'Game does not exist',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst { provider, reference } = res0.data;\r\n\r\n\t\tconst isNew = [\r\n\t\t\t/**/\r\n\t\t\t'RTG',\r\n\t\t\t'DARWIN',\r\n\t\t\t'DRBINGO',\r\n\t\t\t'MEGABALL',\r\n\t\t\t'EVOLUTION',\r\n\t\t\t'EVOLUTION_NETENT',\r\n\t\t\t'EVOLUTION_REDTIGER',\r\n\t\t\t'HOLLYWOODTV',\r\n\t\t].includes(provider);\r\n\r\n\t\tconst res1 = isNew\r\n\t\t\t? await this.walletService.createGameSession({ input: { id, game: reference } })\r\n\t\t\t: await this.gameService.createGameSession({ input: { id, game: reference } });\r\n\r\n\t\treturn res1.ok ? { ok: true, data: { id } } : res1;\r\n\t}\r\n\r\n\tasync endGameSession(id: string): Promise<EndGameSessionReturn> {\r\n\t\tconst res0 = await this.walletService.endGameSession({ input: { id } });\r\n\t\tif (res0.ok) return res0;\r\n\t\tconst res1 = await this.gameService.endGameSession({ input: { id } });\r\n\t\treturn res1;\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\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 redeemPoints(input: RedeemPointsInput): Promise<RedeemPointsReturn> {\r\n\t\treturn await this.walletService.redeemPointsToCash({\r\n\t\t\tinput: {\r\n\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync pointsWalletTransactions(\r\n\t\tinput?: PointsWalletTransactionsInput,\r\n\t): Promise<PointsWalletTransactionsReturn> {\r\n\t\tconst res = await this.reportService.pointsWalletTransactions(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\tpointsWalletTransactions: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.pointsWalletTransaction(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 PointsWalletTransactionsReturn;\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ ACTIVITY +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync activityRecords(input?: ActivityRecordsInput): Promise<ActivityRecordsReturn> {\r\n\t\tconst res = await this.reportService.activityRecords(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\tactivityRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.activityRecord(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 ActivityRecordsReturn;\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ REFERRAL +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync referralCode(): Promise<ReferralCodeReturn> {\r\n\t\tconst res = await this.accountService.referralCode();\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 ?? null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateReferralCode(input: UpdateReferralCodeInput): Promise<UpdateReferralCodeReturn> {\r\n\t\treturn await this.accountService.updateReferralCode({ input });\r\n\t}\r\n\r\n\tasync referrals(input?: ReferralsInput): Promise<ReferralsReturn> {\r\n\t\tconst res = await this.reportService.referrals(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\treferrals: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.referral(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 ReferralsReturn;\r\n\t}\r\n\r\n\tasync referralCommission(): Promise<ReferralCommissionReturn> {\r\n\t\tconst res = await this.reportService.referralCommission();\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.referralCommission(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync uplinesByName(input: UplinesByNameInput): Promise<UplinesByNameReturn> {\r\n\t\tconst res = await this.reportService.uplinesByName(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.referral),\r\n\t\t};\r\n\t}\r\n\r\n\tasync downlinesByName(input: DownlinesByNameInput): Promise<DownlinesByNameReturn> {\r\n\t\tconst res = await this.reportService.downlinesByName(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.referral),\r\n\t\t};\r\n\t}\r\n\r\n\tasync pointsClubSettings(): Promise<PointsClubSettingsReturn> {\r\n\t\tconst res = await this.accountService.pointsClubSettings();\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.pointsClubSettings(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ MESSAGES +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync messages(input?: MessagesInput): Promise<MessagesReturn> {\r\n\t\tconst res = await this.triggerService.messages(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\tmessages: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.message(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 MessagesReturn;\r\n\t}\r\n\r\n\tasync unreadMessagesCount(input?: UnreadMessagesCountInput): Promise<UnreadMessagesCountReturn> {\r\n\t\treturn await this.triggerService.unreadMessagesCount(input);\r\n\t}\r\n\r\n\tasync markMessageAsRead(id: string): Promise<MarkMessageAsReadReturn> {\r\n\t\treturn await this.triggerService.markMessageAsRead({ id });\r\n\t}\r\n\r\n\tasync markAllMessageAsRead(): Promise<MarkAllMessagesAsReadReturn> {\r\n\t\treturn await this.triggerService.markAllMessageAsRead();\r\n\t}\r\n\r\n\tasync claimReward(id: string): Promise<ClaimRewardReturn> {\r\n\t\treturn await this.triggerService.claimReward({ id });\r\n\t}\r\n\r\n\tasync bonuses(): Promise<BonusesReturn> {\r\n\t\tconst res = await this.walletService.bonuses();\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.bonus),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate formatYmd(date: Date): string {\r\n\t\tconst ensure2Digits = (n: number) => n.toString().padStart(2, '0');\r\n\r\n\t\tconst y = date.getFullYear();\r\n\t\tconst m = ensure2Digits(date.getMonth() + 1);\r\n\t\tconst d = ensure2Digits(date.getDate());\r\n\r\n\t\treturn `${y}-${m}-${d}`;\r\n\t}\r\n\r\n\t/**/\r\n\t/*+----------------------------------------+*/\r\n\t/*+ ONBOARDING +*/\r\n\t/*+----------------------------------------+*/\r\n\t/**/\r\n\r\n\tasync onboardingStatus(): Promise<OnboardingStatusReturn> {\r\n\t\tconst res = await this.portalService.onboardingStatus();\r\n\t\tif (!res.ok) return res;\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data,\r\n\t\t};\r\n\t}\r\n\r\n\tasync completeOnboarding(input: CompleteOnboardingInput): Promise<CompleteOnboardingReturn> {\r\n\t\treturn await this.portalService.completeOnboarding({\r\n\t\t\tinput: {\r\n\t\t\t\tfavoriteGameTypes: input.favoriteGameTypes,\r\n\t\t\t\tplayerExperience: input.playerExperience,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync skipOnboarding(): Promise<SkipOnboardingReturn> {\r\n\t\treturn await this.portalService.skipOnboarding();\r\n\t}\r\n}\r\n\r\nexport default Sdk;\r\n"],"names":["ObjectType","GRECAPTCHA_HEADER","gql","strings","values","result","index","string","value","FILE_FRAGMENT","FILE_QUERY","UPLOAD_PRIVATE_IMAGE_FILE_MUTATION","WALLET_QUERY","POINTS_WALLET_QUERY","REDEEM_POINTS_TO_CASH_MUTATION","POINTS_WALLET_TRANSACTIONS_QUERY","GAME_SESSION_QUERY","CREATE_GAME_SESSION_MUTATION","END_GAME_SESSION_MUTATION","RECOMMENDED_GAMES_QUERY","ANNOUNCEMENTS_QUERY","WITHDRAWAL_RECORDS_QUERY","CREATE_GCASH_WITHDRAWAL_MUTATION","CREATE_MAYA_WITHDRAWAL_MUTATION","CREATE_MAYA_APP_WITHDRAWAL_MUTATION","CREATE_BANK_WITHDRAWAL_MUTATION","CREATE_AIO_INSTAPAY_WITHDRAWAL_MUTATION","INSTAPAY_BANK_LIST_QUERY","REMAINING_DAILY_WITHDRAWALS_COUNT_QUERY","DEPOSIT_RECORDS_QUERY","CREATE_GCASH_DEPOSIT_MUTATION","CREATE_MAYA_DEPOSIT_MUTATION","CREATE_MAYA_APP_DEPOSIT_MUTATION","CREATE_AIO_QRPH_DEPOSIT_MUTATION","CREATE_AIO_ONLINE_BANK_DEPOSIT_MUTATION","DEPOSIT_QUERY","DEPOSITS_COUNT_QUERY","BET_RECORDS_QUERY","LATEST_BET_RECORDS_QUERY","TRANSACTION_RECORDS_QUERY","PROMO_FRAGMENT","PROMOS_QUERY","AVAILABLE_PROMOS_QUERY","SPOT_BONUS_FRAGMENT","PROMO_BY_CODE_QUERY","CASHBACK_FRAGMENT","CASHBACKS_QUERY","BONUS_QUERY","BONUSES_QUERY","CASHBACK_BONUSES_QUERY","CLAIM_CASHBACK_BONUS_MUTATION","MEMBER_ACCOUNT_QUERY","MEMBER_VERIFICATION_QUERY","REGISTER_MEMBER_ACCOUNT_MUTATION","REGISTER_MEMBER_ACCOUNT_VIA_MOBILE_MUTATION","REGISTER_MEMBER_ACCOUNT_MUTATION__NEXT","REGISTER_MAYA_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","PLATFORM_QUERY__NEXT","PAYMENT_SETTINGS_QUERY","MAYA_SESSION_QUERY","VALIDATE_MAYA_SESSION_MUTATION","ACTIVITY_RECORDS_QUERY","REFERRAL_CODE_QUERY","UPDATE_REFERRAL_CODE_MUTATION","REFERRAL_FRAGMENT","REFERRALS_QUERY","UPLINES_BY_NAME_QUERY","DOWNLINES_BY_NAME_QUERY","REFERRAL_COMMISSION_QUERY","POINTS_CLUB_SETTINGS_QUERY","MESSAGES_QUERY","UNREAD_MESSAGES_COUNT_QUERY","MARK_MESSAGE_AS_READ_MUTATION","MARK_ALL_MESSAGE_AS_READ_MUTATION","CLAIM_REWARD_MUTATION","CLAIM_SPOT_BONUS","ONBOARDING_STATUS_QUERY","COMPLETE_ONBOARDING_MUTATION","SKIP_ONBOARDING_MUTATION","createOperationError","code","AccountService","client","__publicField","res","variables","reCAPTCHAResponse","others","statusCodeToOperationError","message","e","ERROR_MAP","AuthService","config","headers","input","data","token","refreshToken","accessToken","getErrorCode","CmsPortalService","search","_b","_a","_d","_c","_f","_e","_h","_g","_j","_i","_l","_k","_n","_m","_p","_o","_r","_q","_t","_s","_v","_u","v","_x","_w","_z","_y","_B","_A","_D","_C","_F","_E","node","id","path","params","req","FileService","GameService","PortalService","ReportService","TriggerService","WalletService","variable","cloneDate","date","addMinutes","minutes","isAfter","date1","date2","Cache","key","validUntil","o","clamp","min","max","isPlainObject","flatten","fn","parentKeys","k","arrayToObject","array","i","GraphQLClient","url","query","options","opts","mergeFetchOptions","body","operationInfo","getOperationInfo","request","json","error","middleware","files","map","l","j","mergeHeaders","h","getLocaleByCurrency","currency","getAreaCodeByLocale","locale","addAreaCode","mobileNumber","areaCode","sha256","msgUint8","hashBuffer","b","Logger","addDays","days","sleep","ms","resolve","pollable","func","until","interval","maxAttempt","repeater","args","m","r","subMinutes","SessionManager","r0","r1","now","val","obj","accessTokenExpiresAt","refreshTokenExpiresAt","s","compact","output","parseDecimal","fallback","parsed","Transformer","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","Sdk","site","sitePlatform","platform","environment","logs","production","authUrl","walletUrl","reportUrl","accountUrl","portalUrl","fileUrl","gameUrl","triggerUrl","cmsPortalUrl","cmsPortalService","graphqlClientConfig","gameService","fileService","walletService","accountService","reportService","portalService","triggerService","authService","sessionManager","cacheKey","cacheValue","timeout","assignTimeout","ObjectId","password","dateOfBirth","secretAnswer","transactionPassword","verificationCode","cursor","res0","ids","res1","game","generatedId","provider","reference","ensure2Digits","n","y","d"],"mappings":"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"}