@opexa/portal-sdk 0.0.16 → 0.0.17
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 +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/services/withdrawal.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/lib/sdk/object-type.ts","../src/lib/utils/gql.ts","../src/lib/services/announcement.ts","../src/lib/services/game.ts","../src/lib/services/bet-record.ts","../src/lib/services/file.ts","../src/lib/services/cashback.ts","../src/lib/services/promo.ts","../src/lib/services/bonus.ts","../src/lib/services/deposit.ts","../src/lib/services/member.ts","../src/lib/services/platform.ts","../src/lib/services/points.ts","../src/lib/services/session.ts","../src/lib/services/transaction.ts","../src/lib/services/wallet.ts","../src/lib/services/withdrawal.ts","../src/lib/services/utils.ts","../src/lib/services/account.service.ts","../src/lib/utils/status-code-to-operation-error.ts","../src/lib/services/auth.service.ts","../src/lib/services/file.service.ts","../src/lib/services/game.service.ts","../src/lib/services/report.service.ts","../src/lib/services/static.service.ts","../src/lib/services/wallet.service.ts","../src/lib/services/portal.service.ts","../src/lib/utils/is-plain-object.ts","../src/lib/utils/flatten.ts","../src/lib/utils/graphql-client.ts","../src/lib/utils/sha256.ts","../src/lib/sdk/logger.ts","../src/lib/utils/clone-date.ts","../src/lib/utils/add-days.ts","../src/lib/utils/add-minutes.ts","../src/lib/utils/is-after.ts","../src/lib/utils/sleep.ts","../src/lib/utils/sub-minutes.ts","../src/lib/sdk/session-manager.ts","../src/lib/utils/parse-decimal.ts","../src/lib/sdk/transformer.ts","../src/lib/sdk/sdk.ts"],"sourcesContent":["/*\r\n * ref: https://github.com/HighOutputVentures/opexa/blob/main/libs/shared/src/libs/object-type.ts\r\n */\r\n\r\nexport const ObjectType = {\r\n\tAccount: 8,\r\n\tDeposit: 9,\r\n\tWithdrawal: 14,\r\n\tVerification: 15,\r\n\tFile: 16,\r\n\tGameSession: 204,\r\n\tMayaSession: 230,\r\n};\r\n","export function gql(strings: TemplateStringsArray, ...values: unknown[]) {\r\n\tlet result = '';\r\n\r\n\tfor (const [index, string] of strings.entries()) {\r\n\t\tconst value = values.at(index) ?? '';\r\n\r\n\t\tresult = `${result}${string}${value}`;\r\n\t}\r\n\r\n\treturn result.trim();\r\n}\r\n","import { gql } from '../utils/gql';\r\nimport type { DateFilterField, DateString, EnumFilterField, Html, PaginatedQuery } from './types';\r\n\r\nexport type AnnouncementType = 'RELEASE' | 'SCHEDULED_MAINTENANCE';\r\n\r\nexport type AnnouncementStatus = 'ACTIVE' | 'INACTIVE';\r\n\r\nexport type AnnouncementVisibility = 'MEMBER' | 'OPERATOR' | 'GLOBAL';\r\n\r\nexport interface Announcement {\r\n\tid: string;\r\n\ttype: AnnouncementType;\r\n\ttitle: string;\r\n\tstatus: AnnouncementStatus;\r\n\tmessage: Html;\r\n\tactivationStartDateTime: DateString;\r\n\tactivationEndDateTime: DateString;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface AnnouncementsQuery extends PaginatedQuery<'announcements', Announcement> {}\r\n\r\nexport interface AnnouncementsQueryVariables {\r\n\tfirst?: number;\r\n\tafter?: string;\r\n\tfilter?: {\r\n\t\ttype?: EnumFilterField<AnnouncementType>;\r\n\t\tvisibility?: EnumFilterField<AnnouncementVisibility>;\r\n\t\tactivationStartDateTime?: DateFilterField;\r\n\t\tactivationEndDateTime?: DateFilterField;\r\n\t};\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","import { gql } from '../utils/gql';\r\nimport type {\r\n\tDateString,\r\n\tEnumFilterField,\r\n\tObjectIdFilterField,\r\n\tPaginatedQuery,\r\n\tStringFilterField,\r\n} from './types';\r\n\r\nexport type GameType = 'SLOTS' | 'SPORTS' | 'BINGO' | 'FISHING' | 'LIVE' | 'GAMES';\r\n\r\nexport type GameProvider__Next = 'DARWIN' | 'MEGABALL' | 'DRBINGO' | 'RTG';\r\n\r\nexport type GameProvider =\r\n\t| 'JILI'\r\n\t| 'PGSOFT'\r\n\t| 'FACHAI'\r\n\t| 'PLAYTECH'\r\n\t| 'CQ9'\r\n\t| 'JDB'\r\n\t| 'BOOONGO'\r\n\t| 'HABANERO'\r\n\t| 'RELAXGAMING'\r\n\t| 'DG'\r\n\t| 'E2E'\r\n\t| 'BTI'\r\n\t| GameProvider__Next;\r\n\r\nexport interface Game {\r\n\tid: string;\r\n\tname: string;\r\n\ttype: GameType;\r\n\tprovider: GameProvider;\r\n}\r\n\r\nexport interface GamesQuery extends PaginatedQuery<'games', Game> {}\r\n\r\nexport interface GamesQueryVariables {\r\n\tafter?: string;\r\n\tfirst?: number;\r\n\tfilter?: {\r\n\t\tid?: ObjectIdFilterField;\r\n\t\tname?: StringFilterField;\r\n\t\ttype?: EnumFilterField<GameType>;\r\n\t\tprovider?: EnumFilterField<GameProvider>;\r\n\t};\r\n}\r\n\r\nexport const GAME_FRAGMENT = gql`\r\n\tfragment GameFragment on Game {\r\n\t\tid\r\n\t\ttype\r\n\t\tname\r\n\t\tprovider\r\n\t}\r\n`;\r\n\r\nexport interface GameQuery {\r\n\tnode?: Game | null;\r\n}\r\n\r\nexport interface GameQueryVariables {\r\n\tid: string;\r\n}\r\n\r\nexport const GAME_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery Game($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on Game {\r\n\t\t\t\t...GameFragment\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const GAMES_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery Games($after: Cursor, $first: Int, $filter: GameFilterInput) {\r\n\t\tgames(after: $after, first: $first, filter: $filter) {\r\n\t\t\ttotalCount\r\n\t\t\tedges {\r\n\t\t\t\tcursor\r\n\t\t\t\tnode {\r\n\t\t\t\t\t... on Game {\r\n\t\t\t\t\t\t...GameFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\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 interface GamesByNameQuery {\r\n\tgamesByName: Game[];\r\n}\r\n\r\nexport interface GamesByNameQueryVariables {\r\n\tsearch: string;\r\n\tfirst?: number;\r\n\tfilter?: GamesQueryVariables['filter'];\r\n}\r\n\r\nexport const GAMES_BY_NAME_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery GamesByName($search: String!, $filter: GameFilterInput, $first: Int) {\r\n\t\tgamesByName(search: $search, filter: $filter, first: $first) {\r\n\t\t\t...GameFragment\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type GameSessionStatus = 'PENDING' | 'STARTING' | 'READY' | 'ENDED' | 'CANCELLED';\r\n\r\ninterface GameSession__Common {\r\n\tid: string;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface GameSession__Pending extends GameSession__Common {\r\n\tstatus: 'PENDING';\r\n\tlaunchUrl?: never;\r\n}\r\n\r\nexport interface GameSession__Starting extends GameSession__Common {\r\n\tstatus: 'STARTING';\r\n\tlaunchUrl?: never;\r\n}\r\n\r\nexport interface GameSession__Ready extends GameSession__Common {\r\n\tstatus: 'READY';\r\n\tlaunchUrl: string;\r\n}\r\n\r\nexport interface GameSession__Ended extends GameSession__Common {\r\n\tstatus: 'ENDED';\r\n\tlaunchUrl?: string | null;\r\n}\r\n\r\nexport interface GameSession__Cancelled extends GameSession__Common {\r\n\tstatus: 'CANCELLED';\r\n\tlaunchUrl?: never;\r\n}\r\n\r\nexport type GameSession =\r\n\t| GameSession__Ready\r\n\t| GameSession__Pending\r\n\t| GameSession__Starting\r\n\t| GameSession__Ended\r\n\t| GameSession__Cancelled;\r\n\r\nexport interface GameSessionQuery {\r\n\tnode?: GameSession | null;\r\n}\r\n\r\nexport interface GameSessionQueryVariables {\r\n\tid: string;\r\n}\r\n\r\nexport const GAME_SESSION_QUERY = gql`\r\n\tquery GameSession($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on GameSession {\r\n\t\t\t\tid\r\n\t\t\t\tstatus\r\n\t\t\t\tlaunchUrl\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type CreateGameSessionError = 'GameDoesNotExistError';\r\n\r\nexport interface CreateGameSessionMutation {\r\n\tcreateGameSession?: null | { __typename: CreateGameSessionError };\r\n}\r\n\r\nexport interface CreateGameSessionMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tgame: string;\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 interface EndGameSessionMutation {\r\n\tendGameSession: boolean;\r\n}\r\n\r\nexport interface EndGameSessionMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t};\r\n}\r\n\r\nexport const END_GAME_SESSION_MUTATION = gql`\r\n\tmutation EndGameSession($input: EndGameSessionInput!) {\r\n\t\tendGameSession(input: $input)\r\n\t}\r\n`;\r\n","import { gql } from '../utils/gql';\r\nimport type { GameType } from './game';\r\nimport { GAME_FRAGMENT, type Game } from './game';\r\nimport type {\r\n\tDateFilterField,\r\n\tDateString,\r\n\tDecimal,\r\n\tEnumFilterField,\r\n\tObjectIdFilterField,\r\n\tPaginatedQuery,\r\n\tSortOrder,\r\n\tStringFilterField,\r\n} from './types';\r\n\r\nexport type BetRecordStatus = 'STARTED' | 'SETTLED' | 'CANCELLED';\r\n\r\nexport interface BetRecordMetadata {\r\n\todds?: string | null;\r\n}\r\n\r\nexport interface BetRecord {\r\n\tid: string;\r\n\tgame: Game;\r\n\tstatus: BetRecordStatus;\r\n\tserialCode: string;\r\n\tvendorRoundId?: string | null;\r\n\tbet: Decimal;\r\n\tpayout: Decimal;\r\n\tvalidBet: Decimal;\r\n\tjackpotContribution: Decimal;\r\n\tjackpotPayout: Decimal;\r\n\twinloss?: Decimal | null;\r\n\tdateTimeSettled?: DateString | null;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n\tbetContent?: string | null;\r\n\tcontestName?: string | null;\r\n\texternalCategory?: string | null;\r\n\tmetadata?: BetRecordMetadata | null;\r\n}\r\n\r\nexport interface BetRecordsQuery {\r\n\tmember: PaginatedQuery<'betRecords', BetRecord>;\r\n}\r\n\r\nexport interface BetRecordsQueryVariables {\r\n\tfirst?: number;\r\n\tafter?: string;\r\n\tsort?: SortOrder;\r\n\tfilter?: {\r\n\t\tserialCode?: StringFilterField;\r\n\t\tgame?: ObjectIdFilterField;\r\n\t\tgame__externalId?: StringFilterField;\r\n\t\tgame__type?: EnumFilterField<GameType>;\r\n\t\tgame__provider?: EnumFilterField<string>;\r\n\t\tdateTimeCreated?: DateFilterField;\r\n\t\tvendorRoundId?: StringFilterField;\r\n\t\tstatus?: EnumFilterField<BetRecordStatus>;\r\n\t};\r\n\tstartDateTime?: DateFilterField;\r\n\tendDateTime?: DateFilterField;\r\n}\r\n\r\nexport const BET_RECORDS_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery BetRecords($first: Int, $after: Cursor, $filter: BetRecordFilterInput) {\r\n\t\tmember {\r\n\t\t\tbetRecords(first: $first, after: $after, filter: $filter) {\r\n\t\t\t\ttotalCount\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on BetRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\tserialCode\r\n\t\t\t\t\t\t\tgame {\r\n\t\t\t\t\t\t\t\t...GameFragment\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbet\r\n\t\t\t\t\t\t\tpayout\r\n\t\t\t\t\t\t\twinloss\r\n\t\t\t\t\t\t\tjackpotPayout\r\n\t\t\t\t\t\t\tjackpotContribution\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeSettled\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t\tmetadata\r\n\t\t\t\t\t\t\tvendorRoundId\r\n\t\t\t\t\t\t\tbetContent\r\n\t\t\t\t\t\t\tcontestName\r\n\t\t\t\t\t\t\texternalCategory\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface LatestBetRecord {\r\n\tid: string;\r\n\tmember: {\r\n\t\tid: string;\r\n\t\tname: string;\r\n\t};\r\n\tgame: Game;\r\n\tbet: Decimal;\r\n\tpayout: Decimal;\r\n\tvalidBet: Decimal;\r\n\tdateTimeSettled: DateString;\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface LatestBetRecordsQuery {\r\n\tlatestBetRecords: LatestBetRecord[];\r\n}\r\n\r\nexport const LATEST_BET_RECORDS_QUERY = gql`\r\n\tquery LatestBetRecords {\r\n\t\tlatestBetRecords {\r\n\t\t\tid\r\n\t\t\tmember {\r\n\t\t\t\tid\r\n\t\t\t\tname\r\n\t\t\t}\r\n\t\t\tgame {\r\n\t\t\t\t...GameFragment\r\n\t\t\t}\r\n\t\t\tbet\r\n\t\t\tpayout\r\n\t\t\tvalidBet\r\n\t\t\tdateTimeSettled\r\n\t\t\tdateTimeCreated\r\n\t\t}\r\n\t}\r\n\r\n\t${GAME_FRAGMENT}\r\n`;\r\n","import { gql } from '../utils/gql';\r\nimport type { DateString } from './types';\r\n\r\nexport type FileStatus = 'UPLOADING' | 'READY' | 'FAILED' | 'DELETED';\r\n\r\nexport interface File__Uploading {\r\n\tid: string;\r\n\turl?: never;\r\n\tstatus: 'UPLOADING';\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface File__Failed {\r\n\tid: string;\r\n\turl?: never;\r\n\tstatus: 'FAILED';\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface File__Deleted {\r\n\tid: string;\r\n\turl?: string | null;\r\n\tstatus: 'DELETED';\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface File__Ready {\r\n\tid: string;\r\n\turl: string;\r\n\tstatus: 'READY';\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport type File = File__Uploading | File__Failed | File__Deleted | File__Ready;\r\n\r\nexport interface FileQuery {\r\n\tnode?: File | null;\r\n}\r\n\r\nexport interface FileQueryVariables {\r\n\tid: string;\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 type UploadPrivateImageFileError =\r\n\t| 'FileFormatNotSupportedError'\r\n\t| 'FileNameTooLongError'\r\n\t| 'FileSizeTooBigError';\r\n\r\nexport interface UploadPrivateImageFileMutation {\r\n\tuploadPrivateImageFile?: null | { __typename: UploadPrivateImageFileError };\r\n}\r\n\r\nexport interface UploadPrivateImageFileMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tfile: globalThis.File;\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","import { gql } from '../utils/gql';\r\nimport { type File__Ready, FILE_FRAGMENT } from './file';\r\nimport type { DateString, Html } from './types';\r\n\r\nexport type CashbackStatus = 'ACTIVE' | 'INACTIVE';\r\n\r\nexport interface Cashback {\r\n\tid: string;\r\n\tname: string;\r\n\tbanner: File__Ready;\r\n\tstatus: CashbackStatus;\r\n\tdescription: Html;\r\n\tactivationStartDateTime: DateString;\r\n\tactivationEndDateTime: DateString;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface CashbacksQuery {\r\n\tcashbacks: Cashback[];\r\n}\r\n\r\nexport const CASHBACK_FRAGMENT = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tfragment CashbackFragment on Cashback {\r\n\t\tid\r\n\t\tname\r\n\t\tbanner {\r\n\t\t\t...FileFragment\r\n\t\t}\r\n\t\tstatus\r\n\t\tdescription\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tdateTimeCreated\r\n\t\tdateTimeLastUpdated\r\n\t}\r\n`;\r\n\r\nexport const CASHBACKS_QUERY = gql`\r\n\t${CASHBACK_FRAGMENT}\r\n\r\n\tquery Cashbacks {\r\n\t\tcashbacks {\r\n\t\t\t...CashbackFragment\r\n\t\t}\r\n\t}\r\n`;\r\n","import { gql } from '../utils/gql';\r\nimport { type File__Ready, FILE_FRAGMENT } from './file';\r\nimport type { DateString, EnumFilterField, Html } from './types';\r\n\r\nexport type PromoType = 'DEPOSIT';\r\n\r\nexport type PromoStatus = 'ACTIVE' | 'INACTIVE' | 'DISABLED';\r\n\r\nexport interface Promo {\r\n\tid: string;\r\n\ttype: PromoType;\r\n\tname: string;\r\n\tbanner: File__Ready;\r\n\tstatus: PromoStatus;\r\n\tdescription: Html;\r\n\tminimumBonusAmount?: string | null;\r\n\tmaximumBonusAmount?: string | null;\r\n\tactivationStartDateTime: DateString;\r\n\tactivationEndDateTime: DateString;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface PromosQuery {\r\n\tpromos: Promo[];\r\n}\r\n\r\nexport const PROMO_FRAGMENT = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tfragment PromoFragment on Promo {\r\n\t\tid\r\n\t\ttype\r\n\t\tname\r\n\t\tbanner {\r\n\t\t\t...FileFragment\r\n\t\t}\r\n\t\tstatus\r\n\t\tdescription\r\n\t\tmaximumBonusAmount\r\n\t\tminimumBonusAmount\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tdateTimeCreated\r\n\t\tdateTimeLastUpdated\r\n\t}\r\n`;\r\n\r\nexport const PROMOS_QUERY = gql`\r\n\t${PROMO_FRAGMENT}\r\n\r\n\tquery Promos {\r\n\t\tpromos {\r\n\t\t\t...PromoFragment\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface AvailablePromosQuery {\r\n\tavailablePromos: Promo[];\r\n}\r\n\r\nexport interface AvailablePromosQueryVariables {\r\n\tfilter?: {\r\n\t\ttype?: EnumFilterField<PromoType>;\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","import type { DepositRecord } from '..';\r\nimport { gql } from '../utils/gql';\r\nimport type { Cashback } from './cashback';\r\nimport { CASHBACK_FRAGMENT } from './cashback';\r\nimport { PROMO_FRAGMENT, type Promo } from './promo';\r\nimport type { DateString, Decimal } from './types';\r\n\r\nexport interface Bonus {\r\n\tid: string;\r\n\tpromo: Promo;\r\n\tdeposit?: Omit<DepositRecord, 'id' | 'depositNumber'> | null;\r\n\tamount: Decimal;\r\n\tbalance: Decimal;\r\n\tturnoverRequirement: Decimal;\r\n\tcurrentTurnoverRequirementContribution: Decimal;\r\n\tcurrentTurnoverRequirementContributionPercentage: Decimal;\r\n\texpiration: DateString;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface BonusQuery {\r\n\tbonus?: Bonus | null;\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 interface CashbackBonus {\r\n\tid: string;\r\n\tbalance: Decimal;\r\n\tcashback: Cashback;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface CashbackBonusesQuery {\r\n\tcashbackBonuses: CashbackBonus[];\r\n}\r\n\r\nexport const CASHBACK_BONUSES_QUERY = gql`\r\n\t${CASHBACK_FRAGMENT}\r\n\r\n\tquery CashbackBonuses {\r\n\t\tcashbackBonuses {\r\n\t\t\tid\r\n\t\t\tbalance\r\n\t\t\tcashback {\r\n\t\t\t\t...CashbackFragment\r\n\t\t\t}\r\n\t\t\tdateTimeCreated\r\n\t\t\tdateTimeLastUpdated\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type ClaimCashbackBonusError = 'CashbackBonusDoesNotExistError';\r\n\r\nexport interface ClaimCashbackBonusMutation {\r\n\tclaimCashbackBonus?: null | { __typename: ClaimCashbackBonusError };\r\n}\r\n\r\nexport interface ClaimCashbackBonusMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\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","import { gql } from '../utils/gql';\r\nimport type {\r\n\tDateFilterField,\r\n\tDateString,\r\n\tDecimal,\r\n\tEnumFilterField,\r\n\tPaginatedQuery,\r\n\tStringFilterField,\r\n} from './types';\r\n\r\nexport type DepositRecordType = 'BANK' | 'GCASH' | 'MANUAL' | 'MAYA' | 'MAYA_APP';\r\n\r\nexport type DepositRecordStatus =\r\n\t| 'PENDING'\r\n\t| 'ACCEPTED'\r\n\t| 'APPROVED'\r\n\t| 'REJECTED'\r\n\t| 'CONFIRMED'\r\n\t| 'CANCELLED';\r\n\r\nexport interface DepositRecord {\r\n\tid: string;\r\n\ttype: DepositRecordType;\r\n\tstatus: DepositRecordStatus;\r\n\tamount: Decimal;\r\n\tnetAmount: Decimal;\r\n\tfee: Decimal;\r\n\treference?: string | null;\r\n\tdepositNumber: string;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface DepositRecordsQuery {\r\n\tmember: PaginatedQuery<'depositRecords', DepositRecord>;\r\n}\r\n\r\nexport interface DepositRecordsQueryVariables {\r\n\tfirst?: number;\r\n\tafter?: string;\r\n\tfilter?: {\r\n\t\tdepositNumber?: StringFilterField;\r\n\t\ttype?: EnumFilterField<DepositRecordType>;\r\n\t\treference?: StringFilterField;\r\n\t\tstatus?: EnumFilterField<DepositRecordStatus>;\r\n\t\tdateTimeCreated?: DateFilterField;\r\n\t\tdateTimeLastUpdated?: DateFilterField;\r\n\t};\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 type CreateDepositError =\r\n\t| 'DepositPromoMaximumAmountExceededError'\r\n\t| 'DepositPromoMinimumAmountNotMetError'\r\n\t| 'HasActiveBonusError'\r\n\t| 'MaximumDepositAmountExceededError'\r\n\t| 'MinimumDepositAmountNotMetError'\r\n\t| 'MinimumFirstDepositAmountNotMetError'\r\n\t| 'PromoNotEnabledError'\r\n\t| 'WalletDoesNotExistError';\r\n\r\nexport interface CreateGCashDepositMutation {\r\n\tcreateGCashDeposit?: null | { __typename: CreateDepositError };\r\n}\r\n\r\nexport interface CreateGCashDepositMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\tpromo?: string;\r\n\t};\r\n}\r\n\r\nexport const CREATE_GCASH_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateGCashDeposit($input: CreateGCashDepositInput!) {\r\n\t\tcreateGCashDeposit(input: $input) {\r\n\t\t\t... on DepositPromoMaximumAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on DepositPromoMinimumAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on HasActiveBonusError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MaximumDepositAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumFirstDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on PromoNotEnabledError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WalletDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface CreateMayaDepositMutation {\r\n\tcreateMayaDeposit?: null | { __typename: CreateDepositError };\r\n}\r\n\r\nexport interface CreateMayaDepositMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\tpromo?: string;\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 interface CreateMayaAppDepositMutation {\r\n\tcreateMayaAppDeposit?: null | { __typename: CreateDepositError };\r\n}\r\n\r\nexport interface CreateMayaAppDepositMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\tpromo?: string;\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 type DepositType = 'GCASH' | 'MAYA' | 'MAYA_APP';\r\n\r\nexport interface Deposit extends Omit<DepositRecord, 'type' | 'depositNumber'> {\r\n\ttype: DepositType;\r\n\tcheckoutUrl?: string;\r\n}\r\n\r\nexport interface DepositQuery {\r\n\tnode?: Deposit | null;\r\n}\r\n\r\nexport interface DepositQueryVariables {\r\n\tid: string;\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\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\tcheckoutUrl\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\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\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\tcheckoutUrl\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\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\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}\r\n\t}\r\n`;\r\n\r\nexport interface DepositsCountQuery {\r\n\tmember: {\r\n\t\tdepositsCount: number;\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","import { gql } from '../utils/gql';\r\nimport { FILE_FRAGMENT, type File } from './file';\r\nimport type { SecretQuestion } from './session';\r\nimport type { DateString, Decimal } from './types';\r\n\r\nexport interface Member {\r\n\tdateTimeLastActive?: DateString | null;\r\n}\r\n\r\nexport interface MemberQuery {\r\n\tmember: Member;\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\nexport type MemberAccountStatus = 'ACTIVE' | 'DISABLED' | 'BLACKLISTED';\r\n\r\nexport type MemberAccountVerificationStatus = 'UNVERIFIED' | 'PENDING' | 'VERIFIED';\r\n\r\nexport type MemberVerificationStatus =\r\n\t| 'PENDING'\r\n\t| 'APPROVED'\r\n\t| 'REJECTED'\r\n\t| 'VERIFIED'\r\n\t| 'UNVERIFIED';\r\n\r\n/* [account] Query.self */\r\nexport interface MemberAccount {\r\n\tid: string;\r\n\tname: string;\r\n\tstatus: MemberAccountStatus;\r\n\trealName?: string | null;\r\n\tnickName?: string | null;\r\n\tbirthDay?: DateString | null;\r\n\tvalidId?: string | null;\r\n\temailAddress?: string | null;\r\n\tmobileNumber?: string | null;\r\n\tverified: boolean;\r\n\tverificationStatus: MemberAccountVerificationStatus;\r\n\tmobileNumberVerified?: boolean | null;\r\n\tmobileNumberVerificationRequired?: boolean | null;\r\n\ttransactionPassword: boolean;\r\n\tsecretAnswerSubmitted?: boolean | null;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface MemberAccountQuery {\r\n\tmemberAccount: MemberAccount;\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 interface MemberVerification {\r\n\tid: string;\r\n\tstatus: MemberVerificationStatus;\r\n\taddress: string;\r\n\tsourceOfIncome: string;\r\n\tnatureOfWork: string;\r\n\tnationality: string;\r\n\tplaceOfBirth: string;\r\n\tidFrontImage: File;\r\n\tselfieImage: File;\r\n}\r\n\r\nexport interface MemberVerificationQuery {\r\n\tmemberAccount: {\r\n\t\tverification?: MemberVerification | null;\r\n\t};\r\n}\r\n\r\nexport const MEMBER_VERIFICATION_QUERY = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tquery MemberVerification {\r\n\t\tmemberAccount: self {\r\n\t\t\t... on MemberAccount {\r\n\t\t\t\tverification {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tstatus\r\n\t\t\t\t\taddress\r\n\t\t\t\t\tsourceOfIncome\r\n\t\t\t\t\tnatureOfWork\r\n\t\t\t\t\tnationality\r\n\t\t\t\t\tplaceOfBirth\r\n\t\t\t\t\tidFrontImage {\r\n\t\t\t\t\t\t...FileFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t\tselfieImage {\r\n\t\t\t\t\t\t...FileFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type RegisterMemberAccountError =\r\n\t| 'AccountNameNotAvailableError'\r\n\t| 'InvalidPlatformError'\r\n\t| 'InvalidReCAPTCHAResponseError'\r\n\t| 'InvalidSMSVerificationCodeError'\r\n\t| 'MinimumAgeRequirementError'\r\n\t| 'MobileNumberNotAvailableError';\r\n\r\nexport interface RegisterMemberAccountMutation {\r\n\tregisterMemberAccount?: null | { __typename: RegisterMemberAccountError };\r\n}\r\n\r\nexport interface RegisterMemberAccountMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tname: string;\r\n\t\tpassword: string;\r\n\t\tmobileNumber: string;\r\n\t\tbirthDay: string;\r\n\t\tdomain?: string;\r\n\t\tbtag?: string;\r\n\t};\r\n\tverificationCode?: string;\r\n\treCAPTCHAResponse?: string;\r\n}\r\n\r\nexport const REGISTER_MEMBER_ACCOUNT_MUTATION = gql`\r\n\tmutation RegisterMemberAccount(\r\n\t\t$input: RegisterMemberAccountInput!\r\n\t\t$referralCode: String\r\n\t\t$verificationCode: String\r\n\t\t$reCAPTCHAResponse: String\r\n\t) {\r\n\t\tregisterMemberAccount(\r\n\t\t\tinput: $input\r\n\t\t\treferralCode: $referralCode\r\n\t\t\tverificationCode: $verificationCode\r\n\t\t\treCAPTCHAResponse: $reCAPTCHAResponse\r\n\t\t) {\r\n\t\t\t... on AccountNameNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidReCAPTCHAResponseError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidSMSVerificationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumAgeRequirementError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type UpdateMemberAccountError =\r\n\t| 'AccountNameNotAvailableError'\r\n\t| 'EmailAddressNotAvailableError'\r\n\t| 'InvalidTransactionPasswordError'\r\n\t| 'MobileNumberNotAvailableError'\r\n\t| 'NickNameNotAvailableError'\r\n\t| 'RealNameAlreadySetError'\r\n\t| 'ValidIdAlreadySetError';\r\n\r\nexport interface UpdateMemberAccountMutation {\r\n\tupdateMemberAccount?: null | { __typename: UpdateMemberAccountError };\r\n}\r\n\r\nexport interface UpdateMemberAccountMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tdata: {\r\n\t\t\tname?: string;\r\n\t\t\tpassword?: string;\r\n\t\t\temailAddress?: string;\r\n\t\t\tmobileNumber?: string;\r\n\t\t\trealName?: string;\r\n\t\t\tnickName?: string;\r\n\t\t\ttransactionPassword?: string;\r\n\t\t\tvalidId?: string;\r\n\t\t\tmobileNumberVerificationRequired?: boolean;\r\n\t\t\tsecretQuestion?: SecretQuestion;\r\n\t\t\tsecretAnswer?: string;\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 type ResetPasswordError = 'AccountNotFoundError' | 'InvalidVerificationCodeError';\r\n\r\nexport interface ResetPasswordMutation {\r\n\tresetPassword?: null | { __typename: ResetPasswordError };\r\n}\r\n\r\nexport interface ResetPasswordMutationVariables {\r\n\tinput: {\r\n\t\tmobileNumber: string;\r\n\t\tnewPassword: string;\r\n\t};\r\n\tverificationCode: string;\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 interface DeleteMemberAccountMutation {\r\n\tdeleteMemberAccount: boolean;\r\n}\r\n\r\nexport interface DeleteMemberAccountMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\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 type SendVerificationCodeError =\r\n\t| 'InvalidPlatformError'\r\n\t| 'NotReadyToSendVerficationCodeError';\r\n\r\nexport interface SendVerificationCodeMutation {\r\n\tsendVerificationCode?: null | { __typename: SendVerificationCodeError };\r\n}\r\n\r\nexport interface SendVerificationCodeMutationVariables {\r\n\tinput: {\r\n\t\tchannel: 'SMS' | 'EMAIL';\r\n\t\trecipient: string;\r\n\t};\r\n}\r\n\r\nexport const SEND_VERIFICATION_CODE_MUTATION = gql`\r\n\tmutation SendVerificationCode($input: SendVerificationCodeInput!) {\r\n\t\tsendVerificationCode(input: $input) {\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotReadyToSendVerficationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type VerifyMobileNumberError =\r\n\t| 'InvalidSMSVerificationCodeError'\r\n\t| 'MobileNumberAlreadyVerifiedError';\r\n\r\nexport interface VerifyMobileNumberMutation {\r\n\tverifyMobileNumber?: null | { __typename: VerifyMobileNumberError };\r\n}\r\n\r\nexport interface VerifyMobileNumberMutationVariables {\r\n\tinput: {\r\n\t\tverificationCode: string;\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 type CreateMemberVerificationError =\r\n\t| 'FileDoesNotExistError'\r\n\t| 'FileNotReadyError'\r\n\t| 'MemberVerificationAlreadyExistsError';\r\n\r\nexport interface CreateMemberVerificationMutation {\r\n\tcreateMemberVerification?: null | { __typename: CreateMemberVerificationError };\r\n}\r\n\r\nexport interface CreateMemberVerificationMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tidFrontImage: string;\r\n\t\tselfieImage: string;\r\n\t\taddress: string;\r\n\t\tsourceOfIncome: string;\r\n\t\tnatureOfWork: string;\r\n\t\tnationality: string;\r\n\t\tplaceOfBirth: string;\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 type UpdateMemberVerificationError =\r\n\t| 'FileDoesNotExistError'\r\n\t| 'FileNotReadyError'\r\n\t| 'MemberVerificationAlreadyApprovedError'\r\n\t| 'MemberVerificationDoesNotExistError';\r\n\r\nexport interface UpdateMemberVerificationMutation {\r\n\tupdateMemberVerification?: null | { __typename: UpdateMemberVerificationError };\r\n}\r\n\r\nexport interface UpdateMemberVerificationMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tdata: {\r\n\t\t\tidFrontImage?: string;\r\n\t\t\tselfieImage?: string;\r\n\t\t\taddress?: string;\r\n\t\t\tsourceOfIncome?: string;\r\n\t\t\tnatureOfWork?: string;\r\n\t\t\tnationality?: string;\r\n\t\t\tplaceOfBirth?: string;\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 interface ProfileCompletion {\r\n\tcompletionPercentage: Decimal;\r\n\tpersonalInformation: boolean;\r\n\taccountVerification: boolean;\r\n\tmobileNumberVerification: boolean;\r\n\ttransactionPassword: boolean;\r\n\taccountPassword: boolean;\r\n}\r\n\r\nexport interface ProfileCompletionQuery {\r\n\tprofileCompletion: ProfileCompletion;\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","import { gql } from '../utils/gql';\r\nimport type { Decimal } from './types';\r\n\r\nexport interface DepositGatewaySettings {\r\n\tminimumAmount: string;\r\n\tmaximumAmount: string;\r\n\twebEnabled: boolean;\r\n\tmobileWebEnabled: boolean;\r\n\tandroidEnabled: boolean;\r\n\tiosEnabled: boolean;\r\n}\r\n\r\nexport interface WithdrawalGatewaySettings {\r\n\tminimumAmount: Decimal;\r\n\tmaximumAmount: Decimal;\r\n\tfixedFee?: Decimal | null;\r\n\tpercentageFee?: Decimal | null;\r\n\twebEnabled: boolean;\r\n\tmobileWebEnabled: boolean;\r\n\tandroidEnabled: boolean;\r\n\tiosEnabled: boolean;\r\n}\r\n\r\nexport interface PointsClubSettings {\r\n\tmultiplier: Decimal;\r\n}\r\n\r\nexport interface Platform {\r\n\trestrictWithdrawalsToVerifiedMembers: boolean;\r\n\tminimumFirstDepositAmount: Decimal;\r\n\tbankDepositGatewaySettings?: DepositGatewaySettings | null;\r\n\tgcashDepositGatewaySettings?: DepositGatewaySettings | null;\r\n\tmayaDepositGatewaySettings?: DepositGatewaySettings | null;\r\n\tmayaAppDepositGatewaySettings?: DepositGatewaySettings | null;\r\n\tbankWithdrawalGatewaySettings?: WithdrawalGatewaySettings | null;\r\n\tgcashWithdrawalGatewaySettings?: WithdrawalGatewaySettings | null;\r\n\tmayaWithdrawalGatewaySettings?: WithdrawalGatewaySettings | null;\r\n\tmayaAppWithdrawalGatewaySettings?: WithdrawalGatewaySettings | null;\r\n\tpointsClubSettings?: PointsClubSettings | null;\r\n}\r\n\r\nexport type PlatformQuery = Platform;\r\n\r\nexport const PLATFORM_QUERY = gql`\r\n\tfragment DepositGatewaySettingsCoreData on DepositGatewaySettings {\r\n\t\tminimumAmount\r\n\t\tmaximumAmount\r\n\t\tfixedFee\r\n\t\tpercentageFee\r\n\t\twebEnabled\r\n\t\tmobileWebEnabled\r\n\t\tandroidEnabled\r\n\t\tiosEnabled\r\n\t}\r\n\r\n\tfragment WithdrawalGatewaySettingsCoreData on WithdrawalGatewaySettings {\r\n\t\tminimumAmount\r\n\t\tmaximumAmount\r\n\t\tfixedFee\r\n\t\tpercentageFee\r\n\t\twebEnabled\r\n\t\tmobileWebEnabled\r\n\t\tandroidEnabled\r\n\t\tiosEnabled\r\n\t}\r\n\r\n\tquery Platform {\r\n\t\tminimumFirstDepositAmount\r\n\t\trestrictWithdrawalsToVerifiedMembers\r\n\t\tbankDepositGatewaySettings: depositGatewaySettings(gateway: BANK) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tgcashDepositGatewaySettings: depositGatewaySettings(gateway: GCASH) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaDepositGatewaySettings: depositGatewaySettings(gateway: MAYA) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaAppDepositGatewaySettings: depositGatewaySettings(gateway: MAYA_APP) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tbankWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: BANK) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tgcashWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: GCASH) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: MAYA) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaAppWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: MAYA_APP) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tpointsClubSettings {\r\n\t\t\tmultiplier\r\n\t\t}\r\n\t}\r\n`;\r\n","import { gql } from '../utils/gql';\r\nimport type { DateString, Decimal } from './types';\r\n\r\nexport interface PointsWallet {\r\n\tid: string;\r\n\tpoints: Decimal;\r\n\taccount: string;\r\n\tdateTimeCreated: DateString;\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 interface PointsWalletQuery {\r\n\tpointsWallet?: PointsWallet | null;\r\n}\r\n\r\nexport const POINTS_TO_CASH_CONVERSION_MUTATION = gql`\r\n\tmutation PointsToCashConversion($input: PointsToCashConversionInput!) {\r\n\t\tpointsToCashConversion(input: $input) {\r\n\t\t\t... on InsufficientPointsError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface PointsToCashConversionMutationVariables {\r\n\tinput: {\r\n\t\tamount: Decimal;\r\n\t};\r\n}\r\n\r\nexport type PointsToCashConversionError = 'InsufficientPointsError';\r\n\r\nexport interface PointsToCashConversionMutation {\r\n\tpointsToCashConversion?: null | { __typename: PointsToCashConversionError };\r\n}\r\n","import { gql } from '../utils/gql';\r\nimport type { DateString } from './types';\r\n\r\nexport interface Session {\r\n\tid: string;\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface CreateSessionInput__NameAndPassword {\r\n\ttype: 'NAME_AND_PASSWORD';\r\n\tname: string;\r\n\tpassword: string;\r\n}\r\n\r\nexport interface CreateSessionInput__MobileNumber {\r\n\ttype: 'MOBILE_NUMBER';\r\n\tmobileNumber: string;\r\n\tverificationCode: string;\r\n}\r\n\r\nexport interface CreateSessionInput__Maya {\r\n\ttype: 'MAYA';\r\n\tsessionId: string;\r\n}\r\n\r\nexport type CreateSessionInput =\r\n\t| CreateSessionInput__NameAndPassword\r\n\t| CreateSessionInput__MobileNumber\r\n\t| CreateSessionInput__Maya;\r\n\r\nexport type SecretQuestion =\r\n\t| 'FIRST_PET'\r\n\t| 'FIRST_CAR'\r\n\t| 'FIRST_SCHOOL'\r\n\t| 'FAVORITE_BOOK'\r\n\t| 'FAVORITE_TEACHER'\r\n\t| 'BEST_CHILDHOOD_FRIEND'\r\n\t| 'BIRTH_PLACE'\r\n\t| 'MOTHERS_MAIDEN_NAME'\r\n\t| 'PARENTS_MET_CITY'\r\n\t| 'FAVORITE_MOVIE';\r\n\r\nexport interface Authenticator__SecurityQuestion {\r\n\ttype: 'SECURITY_QUESTION';\r\n\ttoken: string;\r\n\tsecretQuestion: SecretQuestion;\r\n}\r\n\r\nexport type Authenticator = Authenticator__SecurityQuestion;\r\n\r\nexport type CreateSessionMutation__NameAndPassword =\r\n\t| {\r\n\t\t\tsession: Session;\r\n\t\t\taccessToken?: never;\r\n\t\t\trefreshToken?: never;\r\n\t\t\tauthenticator: Authenticator;\r\n\t }\r\n\t| {\r\n\t\t\tsession: Session;\r\n\t\t\taccessToken: string;\r\n\t\t\trefreshToken: string;\r\n\t\t\tauthenticator?: never;\r\n\t };\r\n\r\nexport interface CreateSessionMutation__MobileNumber {\r\n\tsession: Session;\r\n\taccessToken: string;\r\n\trefreshToken: string;\r\n}\r\n\r\nexport interface CreateSessionMutation__Maya {\r\n\tsession: Session;\r\n\taccessToken: string;\r\n\trefreshToken: string;\r\n}\r\n\r\nexport type CreateSessionMutation =\r\n\t| CreateSessionMutation__NameAndPassword\r\n\t| CreateSessionMutation__MobileNumber\r\n\t| CreateSessionMutation__Maya;\r\n\r\nexport type CreateSessionError = 'AccountNotFound' | 'AccountBlacklisted';\r\nexport type RefreshSessionError = 'InvalidToken' | 'AccountBlacklisted' | 'SessionExpired';\r\n\r\nexport interface RefreshSessionMutation {\r\n\taccessToken: string;\r\n\trefreshToken: string;\r\n}\r\n\r\nexport interface AuthenticateInput__SecurityQuestion {\r\n\ttype: 'SECURITY_QUESTION';\r\n\ttoken: string;\r\n\tsecretAnswer: string;\r\n}\r\n\r\nexport type AuthenticateInput = AuthenticateInput__SecurityQuestion;\r\nexport type AuthenticateError = 'InvalidTokenOrSecretAnswer';\r\n\r\nexport interface AuthenticateMutation {\r\n\tsession: Session;\r\n\taccessToken: string;\r\n\trefreshToken: string;\r\n}\r\n\r\nexport interface MayaSession {\r\n\tid: string;\r\n\tmember?: string;\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface MayaSessionQuery {\r\n\tmayaSession?: MayaSession | null;\r\n}\r\n\r\nexport interface MayaSessionQueryVariables {\r\n\tid: string;\r\n}\r\n\r\nexport const MAYA_SESSION_QUERY = gql`\r\n\tquery MayaSession($id: ObjectId!) {\r\n\t\tmayaSession(id: $id) {\r\n\t\t\tid\r\n\t\t\tmember\r\n\t\t\tdateTimeCreated\r\n\t\t}\r\n\t}\r\n`;\r\n","import { gql } from '../utils/gql';\r\nimport type {\r\n\tDateFilterField,\r\n\tDateString,\r\n\tDecimal,\r\n\tEnumFilterField,\r\n\tPaginatedQuery,\r\n\tStringFilterField,\r\n} from './types';\r\n\r\nexport type TransactionRecordType =\r\n\t| 'DEPOSIT'\r\n\t| 'PAYOUT'\r\n\t| 'WITHDRAWAL_REFUND'\r\n\t| 'TRANSFER_IN'\r\n\t| 'WITHDRAWAL'\r\n\t| 'BET'\r\n\t| 'TRANSFER_OUT'\r\n\t| 'ROLLBACK'\r\n\t| 'BET_REFUND'\r\n\t| 'PAYOUT_REFUND'\r\n\t| 'CASHBACK_BONUS'\r\n\t| 'BONUS'\r\n\t| 'RESERVE'\r\n\t| 'REJECT_WITHDRAWAL'\r\n\t| 'MANUAL_DEPOSIT'\r\n\t| 'GCASH_DEPOSIT'\r\n\t| 'MANUAL_WITHDRAWAL'\r\n\t| 'BANK_WITHDRAWAL'\r\n\t| 'GCASH_WITHDRAWAL'\r\n\t| 'COMMIT_RESERVE'\r\n\t| 'ROLLBACK_PAYOUT'\r\n\t| 'ROLLBACK_RESERVE';\r\n\r\nexport interface TransactionRecord {\r\n\tid: string;\r\n\ttype: TransactionRecordType;\r\n\tamount: Decimal;\r\n\tcontent?: string | null;\r\n\tcurrentBalance: Decimal;\r\n\treferenceNumber: string;\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface TransactionRecordsQuery {\r\n\tmember: PaginatedQuery<'transactionRecords', TransactionRecord>;\r\n}\r\n\r\nexport interface TransactionRecordsQueryVariables {\r\n\tfirst?: number;\r\n\tafter?: string;\r\n\tfilter?: {\r\n\t\treferenceNumber?: StringFilterField;\r\n\t\ttype?: EnumFilterField<TransactionRecordType>;\r\n\t\tdateTimeCreated?: DateFilterField;\r\n\t};\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","import { gql } from '../utils/gql';\r\nimport type { DateString, Decimal } from './types';\r\n\r\nexport type Currency = 'PHP' | 'USD';\r\n\r\nexport interface Wallet {\r\n\tid: string;\r\n\tbalance: Decimal;\r\n\tcurrency: Currency;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface WalletQuery {\r\n\twallet?: Wallet | null;\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","import { gql } from '../utils/gql';\r\nimport type {\r\n\tDateFilterField,\r\n\tDateString,\r\n\tDecimal,\r\n\tEnumFilterField,\r\n\tPaginatedQuery,\r\n\tStringFilterField,\r\n} from './types';\r\n\r\nexport type Bank = 'AUBKPHMM' | 'MBTCPHMM' | 'BNORPHMM' | 'MKRUPHM1';\r\n\r\nexport type WithdrawalRecordStatus =\r\n\t| 'PENDING'\r\n\t| 'APPROVED'\r\n\t| 'REJECTED'\r\n\t| 'CONFIRMED'\r\n\t| 'CANCELLED';\r\n\r\nexport type WithdrawalRecordType = 'MANUAL' | 'BANK' | 'GCASH' | 'MAYA_APP';\r\n\r\ninterface Common {\r\n\tid: string;\r\n\tfee: Decimal;\r\n\tamount: Decimal;\r\n\tnetAmount: Decimal;\r\n\tstatus: WithdrawalRecordStatus;\r\n\treference?: string | null;\r\n\twithdrawalNumber: string;\r\n\tdateTimeConfirmed?: DateString | null;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface ManualWithdrawalRecord extends Common {\r\n\ttype: 'MANUAL';\r\n\tbank?: never;\r\n\trecipientMobileNumber?: never;\r\n}\r\n\r\nexport interface BankWithdrawalRecord extends Common {\r\n\ttype: 'BANK';\r\n\tbank: Bank;\r\n\trecipientMobileNumber?: never;\r\n}\r\n\r\nexport interface GCashWithdrawalRecord extends Common {\r\n\ttype: 'GCASH';\r\n\tbank?: never;\r\n\trecipientMobileNumber: string;\r\n}\r\n\r\nexport interface MayaAppWithdrawalRecord extends Common {\r\n\ttype: 'MAYA_APP';\r\n\tbank?: never;\r\n\trecipientMobileNumber?: never;\r\n}\r\n\r\nexport type WithdrawalRecord =\r\n\t| ManualWithdrawalRecord\r\n\t| BankWithdrawalRecord\r\n\t| GCashWithdrawalRecord\r\n\t| MayaAppWithdrawalRecord;\r\n\r\nexport interface WithdrawalRecordsQuery {\r\n\tmember: PaginatedQuery<'withdrawalRecords', WithdrawalRecord>;\r\n}\r\n\r\nexport interface WithdrawalRecordsQueryVariables {\r\n\tfirst?: number;\r\n\tafter?: string;\r\n\tfilter?: {\r\n\t\twithdrawalNumber?: StringFilterField;\r\n\t\ttype?: EnumFilterField<WithdrawalRecordType>;\r\n\t\treference?: StringFilterField;\r\n\t\tstatus?: EnumFilterField<WithdrawalRecordStatus>;\r\n\t\tdateTimeCreated?: DateFilterField;\r\n\t\tdateTimeLastUpdated?: DateFilterField;\r\n\t};\r\n}\r\n\r\nexport const WITHDRAWAL_RECORDS_QUERY = gql`\r\n\tquery WithdrawalRecords($first: Int, $after: Cursor, $filter: WithdrawalRecordFilterInput) {\r\n\t\tmember {\r\n\t\t\twithdrawalRecords(first: $first, after: $after, filter: $filter) {\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on BankWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tbank\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on GCashWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\trecipientMobileNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on ManualWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on MayaAppWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttotalCount\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type CreateWithdrawalError =\r\n\t| 'AccountNotVerifiedError'\r\n\t| 'InvalidTransactionPasswordError'\r\n\t| 'InvalidWithdrawalAmountError'\r\n\t| 'MobileNumberNotVerifiedError'\r\n\t| 'NotEnoughBalanceError'\r\n\t| 'WithdrawalDailyLimitExceededError';\r\n\r\nexport interface CreateGCashWithdrawalMutation {\r\n\tcreateGCashWithdrawal?: null | { __typename: CreateWithdrawalError };\r\n}\r\n\r\nexport interface CreateGCashWithdrawalMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\ttransactionPassword: string;\r\n\t\trecipientMobileNumber: string;\r\n\t};\r\n}\r\n\r\nexport const CREATE_GCASH_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateGCashWithdrawal($input: CreateGCashWithdrawalInput!) {\r\n\t\tcreateGCashWithdrawal(input: $input) {\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface CreateMayaWithdrawalMutation {\r\n\tcreateMayaWithdrawal?: null | { __typename: CreateWithdrawalError };\r\n}\r\n\r\nexport interface CreateMayaWithdrawalMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\ttransactionPassword: string;\r\n\t\trecipientMobileNumber: string;\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 interface CreateMayaAppWithdrawalMutation {\r\n\tcreateMayaAppWithdrawal?: null | { __typename: CreateWithdrawalError };\r\n}\r\n\r\nexport interface CreateMayaAppWithdrawalMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\ttransactionPassword: string;\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 interface CreateBankWithdrawalMutation {\r\n\tcreateBankWithdrawal?: null | { __typename: CreateWithdrawalError };\r\n}\r\n\r\nexport interface CreateBankWithdrawalMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\ttransactionPassword: string;\r\n\t};\r\n}\r\n\r\nexport const CREATE_BANK_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateBankWithdrawal($input: CreateBankWithdrawalInput!) {\r\n\t\tcreateBankWithdrawal(input: $input) {\r\n\t\t\t... on MobileNumberNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface RemainingDailyWithdrawalsCountQuery {\r\n\tremainingDailyWithdrawalsCount: number;\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","import type { OperationError } from '../utils/types';\r\nimport type { ClaimCashbackBonusError } from './bonus';\r\nimport type { CreateDepositError } from './deposit';\r\nimport type { UploadPrivateImageFileError } from './file';\r\nimport type { CreateGameSessionError } from './game';\r\nimport type {\r\n\tCreateMemberVerificationError,\r\n\tRegisterMemberAccountError,\r\n\tResetPasswordError,\r\n\tSendVerificationCodeError,\r\n\tUpdateMemberAccountError,\r\n\tUpdateMemberVerificationError,\r\n\tVerifyMobileNumberError,\r\n} from './member';\r\nimport type { PointsToCashConversionError } from './points';\r\nimport type { AuthenticateError, CreateSessionError, RefreshSessionError } from './session';\r\nimport type { CreateWithdrawalError } from './withdrawal';\r\n\r\ntype E =\r\n\t| ClaimCashbackBonusError\r\n\t| CreateDepositError\r\n\t| UploadPrivateImageFileError\r\n\t| CreateGameSessionError\r\n\t| RegisterMemberAccountError\r\n\t| UpdateMemberAccountError\r\n\t| ResetPasswordError\r\n\t| SendVerificationCodeError\r\n\t| VerifyMobileNumberError\r\n\t| CreateMemberVerificationError\r\n\t| UpdateMemberVerificationError\r\n\t| PointsToCashConversionError\r\n\t| CreateWithdrawalError\r\n\t| CreateSessionError\r\n\t| RefreshSessionError\r\n\t| AuthenticateError;\r\n\r\nexport function createOperationError<T extends E>(code: T): OperationError<T> {\r\n\tconst messages: Record<E, string> = {\r\n\t\tAccountNameNotAvailableError: 'Username is no longer available',\r\n\t\tAccountNotFoundError: 'Account does not exist',\r\n\t\tAccountNotVerifiedError: 'Account is not verified',\r\n\t\tCashbackBonusDoesNotExistError: 'Cashback bonus does not exists',\r\n\t\tDepositPromoMaximumAmountExceededError: 'Deposit amount exceeds maximum amount',\r\n\t\tDepositPromoMinimumAmountNotMetError: 'Deposit amount does not meet minimum amount',\r\n\t\tEmailAddressNotAvailableError: 'Email is no longer available',\r\n\t\tFileDoesNotExistError: 'File does not exist',\r\n\t\tFileFormatNotSupportedError: 'File format is not supported',\r\n\t\tFileNameTooLongError: 'File name is too long',\r\n\t\tFileNotReadyError: 'File is not yet ready',\r\n\t\tFileSizeTooBigError: 'File size is too big',\r\n\t\tGameDoesNotExistError: 'Game does not exist',\r\n\t\tHasActiveBonusError: 'Account has active bonus',\r\n\t\tInsufficientPointsError: 'Insufficient points',\r\n\t\tInvalidPlatformError: 'Invalid platform',\r\n\t\tInvalidReCAPTCHAResponseError: 'Invalid reCAPTCHA',\r\n\t\tInvalidSMSVerificationCodeError: 'Invalid SMS verification code',\r\n\t\tInvalidTransactionPasswordError: 'Invalid transaction password',\r\n\t\tInvalidVerificationCodeError: 'Invalid verification code',\r\n\t\tInvalidWithdrawalAmountError: 'Invalid withdrawal amount',\r\n\t\tMaximumDepositAmountExceededError: 'Maximum deposit amount exceeded',\r\n\t\tMemberVerificationAlreadyApprovedError: 'Member verification is already approved',\r\n\t\tMemberVerificationAlreadyExistsError: 'Member verification already exists',\r\n\t\tMemberVerificationDoesNotExistError: 'Member verification does not exist',\r\n\t\tMinimumAgeRequirementError: 'Minimum age requirement not met',\r\n\t\tMinimumDepositAmountNotMetError: 'Minimum deposit amount not met',\r\n\t\tMinimumFirstDepositAmountNotMetError: 'Minimum first deposit amount not met',\r\n\t\tMobileNumberAlreadyVerifiedError: 'Mobile number is already verified',\r\n\t\tMobileNumberNotAvailableError: 'Mobile number is no longer available',\r\n\t\tMobileNumberNotVerifiedError: 'Mobile number is not verified',\r\n\t\tNickNameNotAvailableError: 'Nickname is no longer available',\r\n\t\tNotEnoughBalanceError: 'Insufficient balance',\r\n\t\tNotReadyToSendVerficationCodeError: 'Not ready to send verification code',\r\n\t\tPromoNotEnabledError: 'Promo is not enabled',\r\n\t\tRealNameAlreadySetError: 'Real name is already set',\r\n\t\tValidIdAlreadySetError: 'Valid ID is already set',\r\n\t\tWalletDoesNotExistError: 'Wallet does not exist',\r\n\t\tWithdrawalDailyLimitExceededError: 'Daily withdrawal limit exceeded',\r\n\r\n\t\tAccountBlacklisted: 'Account is blacklisted',\r\n\t\tAccountNotFound: 'Account not found',\r\n\t\tInvalidToken: 'Invalid token',\r\n\t\tInvalidTokenOrSecretAnswer: 'Invalid token or secret answer',\r\n\t\tSessionExpired: 'Session expired',\r\n\t};\r\n\r\n\treturn {\r\n\t\tname: code,\r\n\t\tmessage: messages[code],\r\n\t};\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type { Announcement, AnnouncementsQuery, AnnouncementsQueryVariables } from './announcement';\r\nimport { ANNOUNCEMENTS_QUERY } from './announcement';\r\nimport type {\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\tProfileCompletion,\r\n\tProfileCompletionQuery,\r\n\tRegisterMemberAccountError,\r\n\tRegisterMemberAccountMutation,\r\n\tRegisterMemberAccountMutationVariables,\r\n\tResetPasswordError,\r\n\tResetPasswordMutation,\r\n\tResetPasswordMutationVariables,\r\n\tSendVerificationCodeError,\r\n\tSendVerificationCodeMutation,\r\n\tSendVerificationCodeMutationVariables,\r\n\tUpdateMemberAccountError,\r\n\tUpdateMemberAccountMutation,\r\n\tUpdateMemberAccountMutationVariables,\r\n\tUpdateMemberVerificationError,\r\n\tUpdateMemberVerificationMutation,\r\n\tUpdateMemberVerificationMutationVariables,\r\n\tVerifyMobileNumberError,\r\n\tVerifyMobileNumberMutation,\r\n\tVerifyMobileNumberMutationVariables,\r\n} from './member';\r\nimport {\r\n\tCREATE_MEMBER_VERIFICATION_MUTATION,\r\n\tDELETE_MEMBER_ACCOUNT_MUTATION,\r\n\tMEMBER_ACCOUNT_QUERY,\r\n\tMEMBER_VERIFICATION_QUERY,\r\n\tPROFILE_COMPLETION_QUERY,\r\n\tREGISTER_MEMBER_ACCOUNT_MUTATION,\r\n\tRESET_PASSWORD_MUTATION,\r\n\tSEND_VERIFICATION_CODE_MUTATION,\r\n\tUPDATE_MEMBER_ACCOUNT_MUTATION,\r\n\tUPDATE_MEMBER_VERIFICATION_MUTATION,\r\n\tVERIFY_MOBILE_NUMBER_MUTATION,\r\n} from './member';\r\nimport type { Platform, PlatformQuery } from './platform';\r\nimport { PLATFORM_QUERY } from './platform';\r\nimport type { PaginatedQueryResult } from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class AccountService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\t/** aka `Query.self` */\r\n\tasync memberAccount(): Promise<OperationResult<never, MemberAccount>> {\r\n\t\tconst res = await this.client.request<MemberAccountQuery>(MEMBER_ACCOUNT_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.memberAccount,\r\n\t\t};\r\n\t}\r\n\r\n\tasync registerMemberAccount(\r\n\t\tvariables: RegisterMemberAccountMutationVariables,\r\n\t): Promise<OperationResult<RegisterMemberAccountError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRegisterMemberAccountMutation,\r\n\t\t\tRegisterMemberAccountMutationVariables\r\n\t\t>(REGISTER_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.registerMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.registerMemberAccount.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateMemberAccount(\r\n\t\tvariables: UpdateMemberAccountMutationVariables,\r\n\t): Promise<OperationResult<UpdateMemberAccountError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tUpdateMemberAccountMutation,\r\n\t\t\tUpdateMemberAccountMutationVariables\r\n\t\t>(UPDATE_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.updateMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.updateMemberAccount.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync deleteMemberAccount(\r\n\t\tvariables: DeleteMemberAccountMutationVariables,\r\n\t): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tDeleteMemberAccountMutation,\r\n\t\t\tDeleteMemberAccountMutationVariables\r\n\t\t>(DELETE_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.deleteMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync resetPassword(\r\n\t\tvariables: ResetPasswordMutationVariables,\r\n\t): Promise<OperationResult<ResetPasswordError>> {\r\n\t\tconst res = await this.client.request<ResetPasswordMutation, ResetPasswordMutationVariables>(\r\n\t\t\tRESET_PASSWORD_MUTATION,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.resetPassword) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.resetPassword.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync profileCompletion(): Promise<OperationResult<never, ProfileCompletion>> {\r\n\t\tconst res = await this.client.request<ProfileCompletionQuery>(PROFILE_COMPLETION_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.profileCompletion } : res;\r\n\t}\r\n\r\n\tasync platform(): Promise<OperationResult<never, Platform>> {\r\n\t\treturn await this.client.request<PlatformQuery>(PLATFORM_QUERY);\r\n\t}\r\n\r\n\tasync sendVerificationCode(\r\n\t\tvariables: SendVerificationCodeMutationVariables,\r\n\t): Promise<OperationResult<SendVerificationCodeError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tSendVerificationCodeMutation,\r\n\t\t\tSendVerificationCodeMutationVariables\r\n\t\t>(SEND_VERIFICATION_CODE_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.sendVerificationCode) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.sendVerificationCode.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync verifyMobileNumber(\r\n\t\tvariables: VerifyMobileNumberMutationVariables,\r\n\t): Promise<OperationResult<VerifyMobileNumberError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tVerifyMobileNumberMutation,\r\n\t\t\tVerifyMobileNumberMutationVariables\r\n\t\t>(VERIFY_MOBILE_NUMBER_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.verifyMobileNumber) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.verifyMobileNumber.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMemberVerification(\r\n\t\tvariables: CreateMemberVerificationMutationVariables,\r\n\t): Promise<OperationResult<CreateMemberVerificationError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMemberVerificationMutation,\r\n\t\t\tCreateMemberVerificationMutationVariables\r\n\t\t>(CREATE_MEMBER_VERIFICATION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMemberVerification) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMemberVerification.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateMemberVerification(\r\n\t\tvariables: UpdateMemberVerificationMutationVariables,\r\n\t): Promise<OperationResult<UpdateMemberVerificationError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tUpdateMemberVerificationMutation,\r\n\t\t\tUpdateMemberVerificationMutationVariables\r\n\t\t>(UPDATE_MEMBER_VERIFICATION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.updateMemberVerification) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.updateMemberVerification.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync memberVerification(): Promise<\r\n\t\tOperationResult<never, MemberVerification | null | undefined>\r\n\t> {\r\n\t\tconst res = await this.client.request<MemberVerificationQuery>(MEMBER_VERIFICATION_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.memberAccount.verification,\r\n\t\t};\r\n\t}\r\n\r\n\tasync announcements(\r\n\t\tvariables?: AnnouncementsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Announcement>>> {\r\n\t\tconst res = await this.client.request<AnnouncementsQuery, AnnouncementsQueryVariables>(\r\n\t\t\tANNOUNCEMENTS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.announcements,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { HttpError, OperationError } from './types';\r\n\r\nexport function statusCodeToOperationError(\r\n\tvalue: number,\r\n\tmessage?: string,\r\n): OperationError<HttpError> {\r\n\tconst e = ERROR_MAP[value] ? ERROR_MAP[value] : ERROR_MAP[500];\r\n\r\n\treturn {\r\n\t\tname: e.name,\r\n\t\tmessage: message ?? e.message,\r\n\t};\r\n}\r\n\r\nconst ERROR_MAP: Record<number, OperationError<HttpError>> = {\r\n\t400: { name: 'HttpBadRequest', message: 'Bad Request' },\r\n\t401: { name: 'HttpUnauthorized', message: 'Unauthorized' },\r\n\t403: { name: 'HttpForbidden', message: 'Forbidden' },\r\n\t404: { name: 'HttpNotFound', message: 'Not Found' },\r\n\t408: { name: 'HttpRequestTimeout', message: 'Request Timeout' },\r\n\t429: { name: 'HttpTooManyRequests', message: 'Too Many Requests' },\r\n\t500: { name: 'HttpInternalServerError', message: 'Internal Server Error' },\r\n};\r\n","import { statusCodeToOperationError } from '../utils/status-code-to-operation-error';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tAuthenticateError,\r\n\tAuthenticateInput,\r\n\tAuthenticateMutation,\r\n\tCreateSessionError,\r\n\tCreateSessionInput,\r\n\tCreateSessionInput__Maya,\r\n\tCreateSessionInput__MobileNumber,\r\n\tCreateSessionInput__NameAndPassword,\r\n\tCreateSessionMutation,\r\n\tCreateSessionMutation__Maya,\r\n\tCreateSessionMutation__MobileNumber,\r\n\tCreateSessionMutation__NameAndPassword,\r\n\tRefreshSessionError,\r\n\tRefreshSessionMutation,\r\n} from './session';\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\tcreateSession(\r\n\t\tinput: CreateSessionInput__Maya,\r\n\t): Promise<OperationResult<CreateSessionError, CreateSessionMutation__Maya>>;\r\n\tcreateSession(\r\n\t\tinput: CreateSessionInput__MobileNumber,\r\n\t): Promise<OperationResult<CreateSessionError, CreateSessionMutation__MobileNumber>>;\r\n\tcreateSession(\r\n\t\tinput: CreateSessionInput__NameAndPassword,\r\n\t): Promise<OperationResult<CreateSessionError, CreateSessionMutation__NameAndPassword>>;\r\n\tasync createSession(\r\n\t\tinput: CreateSessionInput,\r\n\t): Promise<OperationResult<CreateSessionError, CreateSessionMutation>> {\r\n\t\tconst headers = new Headers({\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t\t'Platform-Code': this.platform,\r\n\t\t\tRole: 'MEMBER',\r\n\t\t});\r\n\r\n\t\tswitch (input.type) {\r\n\t\t\tcase 'NAME_AND_PASSWORD': {\r\n\t\t\t\tconst data = `${input.name}:${input.password}`;\r\n\t\t\t\tconst token = Buffer.from(data).toString('base64');\r\n\r\n\t\t\t\theaders.set('Authorization', `Basic ${token}`);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tcase 'MOBILE_NUMBER': {\r\n\t\t\t\tconst data = `${input.mobileNumber}:${input.verificationCode}`;\r\n\t\t\t\tconst token = Buffer.from(data).toString('base64');\r\n\r\n\t\t\t\theaders.set('Authorization', `MobileNumberOTP ${token}`);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tcase 'MAYA': {\r\n\t\t\t\theaders.set('Authorization', `Maya ${input.sessionId}`);\r\n\t\t\t\tbreak;\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}/sessions`, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders,\r\n\t\t\t});\r\n\r\n\t\t\tconst data = await res.json();\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'ACCOUNT_BLACKLISTED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountBlacklisted'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync authenticate(\r\n\t\tinput: AuthenticateInput,\r\n\t): Promise<OperationResult<AuthenticateError, AuthenticateMutation>> {\r\n\t\tconst headers = new Headers({\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t\t'Platform-Code': this.platform,\r\n\t\t\tRole: 'MEMBER',\r\n\t\t});\r\n\r\n\t\tif (input.type === 'SECURITY_QUESTION') {\r\n\t\t\theaders.set('Authorization', `Bearer ${input.token}`);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await fetch(`${this.url}/session/${input.token}/authenticate`, {\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\theaders,\r\n\t\t\t\t\tbody: JSON.stringify({\r\n\t\t\t\t\t\tsecretAnswer: input.secretAnswer,\r\n\t\t\t\t\t}),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst data = await res.json();\r\n\r\n\t\t\t\tif (res.ok) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\tdata,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (res.status === 401 || res.status === 403) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\terror: createOperationError('InvalidTokenOrSecretAnswer'),\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t\t};\r\n\t\t\t} catch {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"Invalid input 'type'\");\r\n\t}\r\n\r\n\tasync refreshSession(\r\n\t\trefreshToken: string,\r\n\t): Promise<OperationResult<RefreshSessionError, RefreshSessionMutation>> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session:refresh`, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${refreshToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tconst data = await res.json();\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'ACCOUNT_BLACKLISTED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountBlacklisted'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (res.status === 403 || res.status === 401) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('InvalidToken'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync destroySession(accessToken: string): Promise<OperationResult> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session`, {\r\n\t\t\t\tmethod: 'DELETE',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${accessToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn res.ok ? { ok: true } : { ok: false, error: statusCodeToOperationError(res.status) };\r\n\t\t} catch {\r\n\t\t\treturn { ok: false, error: statusCodeToOperationError(500) };\r\n\t\t}\r\n\t}\r\n\r\n\tasync verifySession(accessToken: string) {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session`, {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${accessToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn res.ok;\r\n\t\t} catch {\r\n\t\t\t/*\r\n\t\t\t * For network or unknown errors fallback to true\r\n\t\t\t * so users don't get logged out\r\n\t\t\t */\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tFile,\r\n\tFileQueryVariables,\r\n\tUploadPrivateImageFileError,\r\n\tUploadPrivateImageFileMutation,\r\n\tUploadPrivateImageFileMutationVariables,\r\n} from './file';\r\nimport { FILE_QUERY, UPLOAD_PRIVATE_IMAGE_FILE_MUTATION, type FileQuery } from './file';\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 type {\r\n\tCreateGameSessionError,\r\n\tCreateGameSessionMutation,\r\n\tCreateGameSessionMutationVariables,\r\n\tEndGameSessionMutation,\r\n\tEndGameSessionMutationVariables,\r\n\tGame,\r\n\tGameQuery,\r\n\tGameQueryVariables,\r\n\tGameSession,\r\n\tGameSessionQuery,\r\n\tGameSessionQueryVariables,\r\n\tGamesByNameQuery,\r\n\tGamesByNameQueryVariables,\r\n\tGamesQuery,\r\n\tGamesQueryVariables,\r\n} from './game';\r\nimport {\r\n\tCREATE_GAME_SESSION_MUTATION,\r\n\tEND_GAME_SESSION_MUTATION,\r\n\tGAMES_BY_NAME_QUERY,\r\n\tGAMES_QUERY,\r\n\tGAME_QUERY,\r\n\tGAME_SESSION_QUERY,\r\n} from './game';\r\nimport type { PaginatedQueryResult } from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class GameService {\r\n\tprotected client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync game(\r\n\t\tvariables?: GameQueryVariables,\r\n\t): Promise<OperationResult<never, Game | null | undefined>> {\r\n\t\tconst res = await this.client.request<GameQuery, GameQueryVariables>(GAME_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync games(\r\n\t\tvariables?: GamesQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Game>>> {\r\n\t\tconst res = await this.client.request<GamesQuery, GamesQueryVariables>(GAMES_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.games } : res;\r\n\t}\r\n\r\n\tasync gamesByName(\r\n\t\tvariables?: GamesByNameQueryVariables,\r\n\t): Promise<OperationResult<never, Game[]>> {\r\n\t\tconst res = await this.client.request<GamesByNameQuery, GamesByNameQueryVariables>(\r\n\t\t\tGAMES_BY_NAME_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.gamesByName } : res;\r\n\t}\r\n\r\n\tasync gameSession(\r\n\t\tvariables: GameSessionQueryVariables,\r\n\t): Promise<OperationResult<never, GameSession | null | undefined>> {\r\n\t\tconst res = await this.client.request<GameSessionQuery, GameSessionQueryVariables>(\r\n\t\t\tGAME_SESSION_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync createGameSession(\r\n\t\tvariables: CreateGameSessionMutationVariables,\r\n\t): Promise<OperationResult<CreateGameSessionError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGameSessionMutation,\r\n\t\t\tCreateGameSessionMutationVariables\r\n\t\t>(CREATE_GAME_SESSION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGameSession.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync endGameSession(variables: EndGameSessionMutationVariables): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<EndGameSessionMutation, EndGameSessionMutationVariables>(\r\n\t\t\tEND_GAME_SESSION_MUTATION,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.endGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tBET_RECORDS_QUERY,\r\n\ttype BetRecord,\r\n\ttype BetRecordsQuery,\r\n\ttype BetRecordsQueryVariables,\r\n} from './bet-record';\r\nimport type {\r\n\tDepositRecord,\r\n\tDepositRecordsQuery,\r\n\tDepositRecordsQueryVariables,\r\n\tDepositsCountQuery,\r\n} from './deposit';\r\nimport { DEPOSITS_COUNT_QUERY, DEPOSIT_RECORDS_QUERY } from './deposit';\r\nimport type { Member, MemberQuery } from './member';\r\nimport { MEMBER_QUERY } from './member';\r\nimport type {\r\n\tTransactionRecord,\r\n\tTransactionRecordsQuery,\r\n\tTransactionRecordsQueryVariables,\r\n} from './transaction';\r\nimport { TRANSACTION_RECORDS_QUERY } from './transaction';\r\nimport type { PaginatedQueryResult } from './types';\r\nimport type {\r\n\tWithdrawalRecord,\r\n\tWithdrawalRecordsQuery,\r\n\tWithdrawalRecordsQueryVariables,\r\n} from './withdrawal';\r\nimport { WITHDRAWAL_RECORDS_QUERY } from './withdrawal';\r\n\r\nexport class ReportService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync betRecords(\r\n\t\tvariables?: BetRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<BetRecord>>> {\r\n\t\tconst res = await this.client.request<BetRecordsQuery, BetRecordsQueryVariables>(\r\n\t\t\tBET_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.betRecords } : res;\r\n\t}\r\n\r\n\tasync transactionRecords(\r\n\t\tvariables?: TransactionRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<TransactionRecord>>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tTransactionRecordsQuery,\r\n\t\t\tTransactionRecordsQueryVariables\r\n\t\t>(TRANSACTION_RECORDS_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.transactionRecords } : res;\r\n\t}\r\n\r\n\tasync withdrawalRecords(\r\n\t\tvariables?: WithdrawalRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<WithdrawalRecord>>> {\r\n\t\tconst res = await this.client.request<WithdrawalRecordsQuery, WithdrawalRecordsQueryVariables>(\r\n\t\t\tWITHDRAWAL_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.withdrawalRecords } : res;\r\n\t}\r\n\r\n\tasync depositRecords(\r\n\t\tvariables?: DepositRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<DepositRecord>>> {\r\n\t\tconst res = await this.client.request<DepositRecordsQuery, DepositRecordsQueryVariables>(\r\n\t\t\tDEPOSIT_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.depositRecords } : res;\r\n\t}\r\n\r\n\tasync depositsCount(): Promise<OperationResult<never, number>> {\r\n\t\tconst res = await this.client.request<DepositsCountQuery>(DEPOSITS_COUNT_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.depositsCount } : res;\r\n\t}\r\n\r\n\tasync member(): Promise<OperationResult<never, Member>> {\r\n\t\tconst res = await this.client.request<MemberQuery>(MEMBER_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member } : res;\r\n\t}\r\n}\r\n","interface StaticServiceConfig {\r\n\turl: string;\r\n}\r\n\r\nexport class StaticService {\r\n\tprivate url: string;\r\n\r\n\tconstructor(config: StaticServiceConfig) {\r\n\t\tthis.url = config.url;\r\n\t}\r\n\r\n\tgameThumbnails<\r\n\t\tT extends {\r\n\t\t\tid: string;\r\n\t\t\tprovider: string;\r\n\t\t},\r\n\t>(args: T) {\r\n\t\treturn [\r\n\t\t\t`${this.url}/images/${args.provider.toLowerCase()}/thumbnail-${args.id}.webp`,\r\n\t\t\t`${this.url}/images/${args.provider.toLowerCase()}/thumbnail-${args.provider.toLowerCase()}.webp`,\r\n\t\t];\r\n\t}\r\n}\r\n","import type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tBonus,\r\n\tBonusQuery,\r\n\tCashbackBonus,\r\n\tCashbackBonusesQuery,\r\n\tClaimCashbackBonusError,\r\n\tClaimCashbackBonusMutation,\r\n\tClaimCashbackBonusMutationVariables,\r\n} from './bonus';\r\nimport { BONUS_QUERY, CASHBACK_BONUSES_QUERY, CLAIM_CASHBACK_BONUS_MUTATION } from './bonus';\r\nimport type { Cashback, CashbacksQuery } from './cashback';\r\nimport { CASHBACKS_QUERY } from './cashback';\r\nimport type {\r\n\tCreateDepositError,\r\n\tCreateGCashDepositMutation,\r\n\tCreateGCashDepositMutationVariables,\r\n\tCreateMayaAppDepositMutation,\r\n\tCreateMayaAppDepositMutationVariables,\r\n\tCreateMayaDepositMutation,\r\n\tCreateMayaDepositMutationVariables,\r\n\tDeposit,\r\n\tDepositQuery,\r\n\tDepositQueryVariables,\r\n} from './deposit';\r\nimport {\r\n\tCREATE_GCASH_DEPOSIT_MUTATION,\r\n\tCREATE_MAYA_APP_DEPOSIT_MUTATION,\r\n\tCREATE_MAYA_DEPOSIT_MUTATION,\r\n\tDEPOSIT_QUERY,\r\n} from './deposit';\r\nimport { GameService } from './game.service';\r\nimport type {\r\n\tPointsToCashConversionError,\r\n\tPointsToCashConversionMutation,\r\n\tPointsToCashConversionMutationVariables,\r\n\tPointsWallet,\r\n\tPointsWalletQuery,\r\n} from './points';\r\nimport { POINTS_TO_CASH_CONVERSION_MUTATION, POINTS_WALLET_QUERY } from './points';\r\nimport type {\r\n\tAvailablePromosQuery,\r\n\tAvailablePromosQueryVariables,\r\n\tPromo,\r\n\tPromosQuery,\r\n} from './promo';\r\nimport { AVAILABLE_PROMOS_QUERY, PROMOS_QUERY } from './promo';\r\nimport {\r\n\tMAYA_SESSION_QUERY,\r\n\ttype MayaSession,\r\n\ttype MayaSessionQuery,\r\n\ttype MayaSessionQueryVariables,\r\n} from './session';\r\nimport { createOperationError } from './utils';\r\nimport type { Wallet, WalletQuery } from './wallet';\r\nimport { WALLET_QUERY } from './wallet';\r\nimport type {\r\n\tCreateBankWithdrawalMutation,\r\n\tCreateBankWithdrawalMutationVariables,\r\n\tCreateGCashWithdrawalMutation,\r\n\tCreateGCashWithdrawalMutationVariables,\r\n\tCreateMayaAppWithdrawalMutation,\r\n\tCreateMayaAppWithdrawalMutationVariables,\r\n\tCreateMayaWithdrawalMutation,\r\n\tCreateMayaWithdrawalMutationVariables,\r\n\tCreateWithdrawalError,\r\n\tRemainingDailyWithdrawalsCountQuery,\r\n} from './withdrawal';\r\nimport {\r\n\tCREATE_BANK_WITHDRAWAL_MUTATION,\r\n\tCREATE_GCASH_WITHDRAWAL_MUTATION,\r\n\tCREATE_MAYA_APP_WITHDRAWAL_MUTATION,\r\n\tCREATE_MAYA_WITHDRAWAL_MUTATION,\r\n\tREMAINING_DAILY_WITHDRAWALS_COUNT_QUERY,\r\n} from './withdrawal';\r\n\r\nexport class WalletService extends GameService {\r\n\tasync promos(): Promise<OperationResult<never, Promo[]>> {\r\n\t\tconst res = await this.client.request<PromosQuery>(PROMOS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.promos } : res;\r\n\t}\r\n\r\n\tasync cashbacks(): Promise<OperationResult<never, Cashback[]>> {\r\n\t\tconst res = await this.client.request<CashbacksQuery>(CASHBACKS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.cashbacks } : res;\r\n\t}\r\n\r\n\tasync availablePromos(\r\n\t\tvariables?: AvailablePromosQueryVariables,\r\n\t): Promise<OperationResult<never, Promo[]>> {\r\n\t\tconst res = await this.client.request<AvailablePromosQuery, AvailablePromosQueryVariables>(\r\n\t\t\tAVAILABLE_PROMOS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.availablePromos } : res;\r\n\t}\r\n\r\n\tasync cashbackBonuses(): Promise<OperationResult<never, CashbackBonus[]>> {\r\n\t\tconst res = await this.client.request<CashbackBonusesQuery>(CASHBACK_BONUSES_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.cashbackBonuses } : res;\r\n\t}\r\n\r\n\tasync claimCashbackBonus(\r\n\t\tvariables: ClaimCashbackBonusMutationVariables,\r\n\t): Promise<OperationResult<ClaimCashbackBonusError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tClaimCashbackBonusMutation,\r\n\t\t\tClaimCashbackBonusMutationVariables\r\n\t\t>(CLAIM_CASHBACK_BONUS_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) {\r\n\t\t\treturn {\r\n\t\t\t\tok: res.ok,\r\n\t\t\t\terror: res.error,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (res.data.claimCashbackBonus) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.claimCashbackBonus.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync bonus(): Promise<OperationResult<never, Bonus | null | undefined>> {\r\n\t\tconst res = await this.client.request<BonusQuery>(BONUS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.bonus } : res;\r\n\t}\r\n\r\n\tasync wallet(): Promise<OperationResult<never, Wallet | null | undefined>> {\r\n\t\tconst res = await this.client.request<WalletQuery>(WALLET_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.wallet } : res;\r\n\t}\r\n\r\n\tasync deposit(\r\n\t\tvariables: DepositQueryVariables,\r\n\t): Promise<OperationResult<never, Deposit | null | undefined>> {\r\n\t\tconst res = await this.client.request<DepositQuery, DepositQueryVariables>(\r\n\t\t\tDEPOSIT_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync createGCashDeposit(\r\n\t\tvariables: CreateGCashDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGCashDepositMutation,\r\n\t\t\tCreateGCashDepositMutationVariables\r\n\t\t>(CREATE_GCASH_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGCashDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGCashDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaDeposit(\r\n\t\tvariables: CreateMayaDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaDepositMutation,\r\n\t\t\tCreateMayaDepositMutationVariables\r\n\t\t>(CREATE_MAYA_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaAppDeposit(\r\n\t\tvariables: CreateMayaAppDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaAppDepositMutation,\r\n\t\t\tCreateMayaAppDepositMutationVariables\r\n\t\t>(CREATE_MAYA_APP_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaAppDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaAppDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createGCashWithdrawal(\r\n\t\tvariables: CreateGCashWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGCashWithdrawalMutation,\r\n\t\t\tCreateGCashWithdrawalMutationVariables\r\n\t\t>(CREATE_GCASH_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGCashWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGCashWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaWithdrawal(\r\n\t\tvariables: CreateMayaWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaWithdrawalMutation,\r\n\t\t\tCreateMayaWithdrawalMutationVariables\r\n\t\t>(CREATE_MAYA_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaAppWithdrawal(\r\n\t\tvariables: CreateMayaAppWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaAppWithdrawalMutation,\r\n\t\t\tCreateMayaAppWithdrawalMutationVariables\r\n\t\t>(CREATE_MAYA_APP_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaAppWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaAppWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createBankWithdrawal(\r\n\t\tvariables: CreateBankWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateBankWithdrawalMutation,\r\n\t\t\tCreateBankWithdrawalMutationVariables\r\n\t\t>(CREATE_BANK_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createBankWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createBankWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync remainingDailyWithdrawalsCount(): Promise<OperationResult<never, number>> {\r\n\t\tconst res = await this.client.request<RemainingDailyWithdrawalsCountQuery>(\r\n\t\t\tREMAINING_DAILY_WITHDRAWALS_COUNT_QUERY,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.remainingDailyWithdrawalsCount } : res;\r\n\t}\r\n\r\n\tasync pointsWallet(): Promise<OperationResult<never, PointsWallet | null | undefined>> {\r\n\t\tconst res = await this.client.request<PointsWalletQuery>(POINTS_WALLET_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.pointsWallet } : res;\r\n\t}\r\n\r\n\tasync pointsToCashConversion(\r\n\t\tvariables: PointsToCashConversionMutationVariables,\r\n\t): Promise<OperationResult<PointsToCashConversionError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tPointsToCashConversionMutation,\r\n\t\t\tPointsToCashConversionMutationVariables\r\n\t\t>(POINTS_TO_CASH_CONVERSION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.pointsToCashConversion) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.pointsToCashConversion.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync mayaSession(\r\n\t\tvariables: MayaSessionQueryVariables,\r\n\t): Promise<OperationResult<never, MayaSession | null | undefined>> {\r\n\t\tconst res = await this.client.request<MayaSessionQuery, MayaSessionQueryVariables>(\r\n\t\t\tMAYA_SESSION_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.mayaSession } : res;\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tLATEST_BET_RECORDS_QUERY,\r\n\ttype LatestBetRecord,\r\n\ttype LatestBetRecordsQuery,\r\n} from './bet-record';\r\n\r\nexport class PortalService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync latestBetRecords(): Promise<OperationResult<never, LatestBetRecord[]>> {\r\n\t\tconst res = await this.client.request<LatestBetRecordsQuery>(LATEST_BET_RECORDS_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.latestBetRecords,\r\n\t\t};\r\n\t}\r\n}\r\n","export function 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\nexport type GraphQLClientMiddleware = (request: Request) => Request | Promise<Request>;\r\n\r\nexport interface GraphQLClientFetchOptions extends Omit<RequestInit, 'body' | 'method'> {}\r\n\r\nexport interface GraphQLClientConfig {\r\n\tmiddlewares?: GraphQLClientMiddleware[];\r\n\tfetchOptions?: GraphQLClientFetchOptions;\r\n}\r\n\r\n/* ref: https://www.apollographql.com/docs/apollo-server/data/errors/#graphql_parse_failed */\r\ntype GraphQLErrorExtensionCode =\r\n\t| 'FORBIDDEN'\r\n\t| 'UNAUTHORIZED'\r\n\t| 'BAD_REQUEST'\r\n\t| 'BAD_USER_INPUT'\r\n\t| 'INTERNAL_SERVER_ERROR'\r\n\t| 'ACCESS_TOKEN_EXPIRED';\r\n\r\ninterface GraphQLErrorExtensions {\r\n\tcode: GraphQLErrorExtensionCode;\r\n\tstacktrace: string[];\r\n}\r\n\r\ninterface GraphQLErrorLocation {\r\n\tline: number;\r\n\tcolumn: number;\r\n}\r\n\r\ninterface GraphQLError {\r\n\tpath: string[];\r\n\tmessage?: string;\r\n\textensions?: GraphQLErrorExtensions;\r\n\tlocations: GraphQLErrorLocation[];\r\n}\r\n\r\nexport class GraphQLClient {\r\n\tprivate url: string;\r\n\tprivate options: GraphQLClientFetchOptions;\r\n\tprivate middlewares: GraphQLClientMiddleware[];\r\n\r\n\tconstructor(url: string, config?: GraphQLClientConfig) {\r\n\t\tconst headers = new Headers(config?.fetchOptions?.headers);\r\n\r\n\t\tthis.url = url;\r\n\t\tthis.options = { ...config?.fetchOptions, headers };\r\n\t\tthis.middlewares = config?.middlewares ?? [];\r\n\t}\r\n\r\n\tasync request<Data, Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables?: Variables,\r\n\t) {\r\n\t\tconst body = JSON.stringify({ query, variables });\r\n\t\tconst headers = new Headers(this.options.headers);\r\n\r\n\t\theaders.set('Content-Type', 'application/json');\r\n\t\theaders.set('Accept', 'application/json');\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(this.url, {\r\n\t\t\t\t...this.options,\r\n\t\t\t\tbody,\r\n\t\t\t\theaders,\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn await this.exec<Data>(req);\r\n\t}\r\n\r\n\t/** Single file upload */\r\n\tasync upload<Data, Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables: Variables,\r\n\t) {\r\n\t\tconst body = this.createUploadBody(query, variables);\r\n\t\tconst headers = new Headers(this.options.headers);\r\n\r\n\t\theaders.delete('Content-Type');\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(this.url, {\r\n\t\t\t\t...this.options,\r\n\t\t\t\tbody,\r\n\t\t\t\theaders,\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn await this.exec<Data>(req);\r\n\t}\r\n\r\n\tprivate async exec<T>(request: Request): Promise<OperationResult<never, T>> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(request);\r\n\r\n\t\t\tif (!res.ok) {\r\n\t\t\t\treturn { ok: false, error: statusCodeToOperationError(res.status) };\r\n\t\t\t}\r\n\r\n\t\t\tconst json = await res.json();\r\n\t\t\tconst data = json.data;\r\n\t\t\tconst error = json.errors?.at(0) as GraphQLError | undefined;\r\n\r\n\t\t\tif (error) {\r\n\t\t\t\tif (\r\n\t\t\t\t\terror.extensions?.code === 'FORBIDDEN' ||\r\n\t\t\t\t\terror.extensions?.code === 'ACCESS_TOKEN_EXPIRED'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(403, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (error.extensions?.code === 'UNAUTHORIZED') {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(401, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\terror.extensions?.code === 'BAD_USER_INPUT' ||\r\n\t\t\t\t\terror.extensions?.code === 'BAD_REQUEST'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(400, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Fallback for unknown error codes */\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(500, error.message),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async runMiddlewares(req: Request) {\r\n\t\tlet result = req.clone();\r\n\r\n\t\tfor (const middleware of this.middlewares) {\r\n\t\t\tresult = await middleware(result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate createUploadBody<Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables: Variables,\r\n\t) {\r\n\t\tconst files = flatten(variables).filter(\r\n\t\t\t(o) => o.value instanceof File || o.value instanceof Blob,\r\n\t\t);\r\n\r\n\t\tconst body = new FormData();\r\n\r\n\t\tbody.append(\r\n\t\t\t'operations',\r\n\t\t\tJSON.stringify({\r\n\t\t\t\tquery,\r\n\t\t\t\tvariables,\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tconst map: GenericObject = {};\r\n\r\n\t\tfiles.forEach((o, i) => {\r\n\t\t\tmap[i.toString()] = [`variables.${o.key.join('.')}`];\r\n\t\t});\r\n\r\n\t\tbody.append('map', JSON.stringify(map));\r\n\r\n\t\tfiles.forEach((o, i) => {\r\n\t\t\tbody.append(i.toString(), o.value);\r\n\t\t});\r\n\r\n\t\treturn body;\r\n\t}\r\n}\r\n","export async function sha256(input: string) {\r\n\tconst msgUint8 = new TextEncoder().encode(input);\r\n\tconst hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);\r\n\tconst hashArray = Array.from(new Uint8Array(hashBuffer));\r\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\r\n\treturn hashHex;\r\n}\r\n","interface LoggerConfig {\r\n\t/**\r\n\t * @default true\r\n\t */\r\n\tenabled?: boolean;\r\n}\r\n\r\nexport class Logger {\r\n\tprivate enabled: boolean;\r\n\r\n\tconstructor(config?: LoggerConfig) {\r\n\t\tthis.enabled = config?.enabled ?? true;\r\n\t}\r\n\r\n\tinfo(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[34m[info] ${message}`);\r\n\t}\r\n\r\n\twarn(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[33m[warn] ${message}`);\r\n\t}\r\n\r\n\terror(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[31m[error] ${message}`);\r\n\t}\r\n\r\n\tsuccess(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[32m[success] ${message}`);\r\n\t}\r\n}\r\n","export function cloneDate(date: Date) {\r\n\treturn new Date(date.getTime());\r\n}\r\n","import { cloneDate } from './clone-date.js';\r\n\r\nexport function addDays(date: Date, days: number) {\r\n\tconst result = cloneDate(date);\r\n\tresult.setDate(result.getDate() + days);\r\n\treturn result;\r\n}\r\n","import { cloneDate } from './clone-date';\r\n\r\nexport function addMinutes(date: Date, minutes: number): Date {\r\n\tconst result = cloneDate(date);\r\n\tresult.setMinutes(result.getMinutes() + minutes);\r\n\treturn result;\r\n}\r\n","/**\r\n * is `date1` after `date2`?\r\n */\r\nexport function isAfter(date1: Date, date2: Date) {\r\n\treturn date1.getTime() > date2.getTime();\r\n}\r\n","export function sleep(ms: number) {\r\n\treturn new Promise<void>((resolve) => {\r\n\t\tsetTimeout(resolve, ms);\r\n\t});\r\n}\r\n","import { 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 {\r\n\ttype AuthenticateError,\r\n\ttype AuthenticateInput,\r\n\ttype Authenticator,\r\n\tAuthService,\r\n\ttype AuthServiceConfig,\r\n\ttype CreateSessionError,\r\n\ttype CreateSessionInput,\r\n\ttype RefreshSessionError,\r\n\ttype Session,\r\n} 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 { sleep } from '../utils/sleep';\r\nimport { subMinutes } from '../utils/sub-minutes';\r\nimport type { OperationResult } from '../utils/types';\r\nimport { Logger } from './logger';\r\n\r\ninterface Data {\r\n\tsession: Session;\r\n\taccessToken: string;\r\n\taccessTokenExpiresAt: number;\r\n\trefreshToken: string;\r\n\trefreshTokenExpiresAt: number;\r\n}\r\n\r\ninterface SessionManagerConfig extends AuthServiceConfig {\r\n\tlog?: boolean;\r\n}\r\n\r\nexport class SessionManager {\r\n\tprivate logger;\r\n\tprivate storageKey = 'session';\r\n\tprivate authService: AuthService;\r\n\tprivate _refreshing = false;\r\n\r\n\tconstructor(config: SessionManagerConfig) {\r\n\t\tthis.authService = new AuthService(config);\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: config.log ?? false,\r\n\t\t});\r\n\t}\r\n\r\n\tget refreshing() {\r\n\t\treturn this._refreshing;\r\n\t}\r\n\r\n\tset refreshing(value: boolean) {\r\n\t\tthis._refreshing = value;\r\n\t}\r\n\r\n\tasync create(\r\n\t\tinput: CreateSessionInput,\r\n\t): Promise<OperationResult<CreateSessionError, { 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 [WIP]\r\n\t\t */\r\n\r\n\t\tif (input.type === 'MAYA') {\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\tmaya: true,\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 * Mobile Number Sign In\r\n\t\t */\r\n\r\n\t\tif (input.type === 'MOBILE_NUMBER') {\r\n\t\t\tconst res = await this.authService.createSession(input);\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\tconst now = new Date();\r\n\r\n\t\t\t\twindow.localStorage.setItem(\r\n\t\t\t\t\tthis.storageKey,\r\n\t\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t\t...res.data,\r\n\t\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata: null,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Name and Password Sign In\r\n\t\t */\r\n\r\n\t\tconst res = await this.authService.createSession(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\t/*\r\n\t\t * 2FA enabled\r\n\t\t */\r\n\t\tif (res.data.authenticator) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tauthenticator: res.data.authenticator,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst now = new Date();\r\n\r\n\t\twindow.localStorage.setItem(\r\n\t\t\tthis.storageKey,\r\n\t\t\tJSON.stringify({\r\n\t\t\t\t...res.data,\r\n\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createFromAuthenticator(\r\n\t\tinput: AuthenticateInput,\r\n\t): Promise<OperationResult<AuthenticateError>> {\r\n\t\tconst res = await this.authService.authenticate(input);\r\n\r\n\t\tif (res.ok) {\r\n\t\t\tconst now = new Date();\r\n\r\n\t\t\tif (this.isServer) {\r\n\t\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\t} else {\r\n\t\t\t\twindow.localStorage.setItem(\r\n\t\t\t\t\tthis.storageKey,\r\n\t\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t\t...res.data,\r\n\t\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn { ok: true };\r\n\t\t} else {\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tasync get(): Promise<OperationResult<RefreshSessionError, Data | null>> {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: null,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (this.refreshing) {\r\n\t\t\tawait sleep(1000);\r\n\t\t\treturn await this.get();\r\n\t\t}\r\n\r\n\t\tconst val = window.localStorage.getItem(this.storageKey);\r\n\r\n\t\tif (!val) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: null,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tlet obj: {\r\n\t\t\t\tsession: Session;\r\n\t\t\t\taccessToken: string;\r\n\t\t\t\taccessTokenExpiresAt: number;\r\n\t\t\t\trefreshToken: string;\r\n\t\t\t\trefreshTokenExpiresAt: number;\r\n\t\t\t} = JSON.parse(val);\r\n\r\n\t\t\tlet now = new Date();\r\n\r\n\t\t\tconst accessTokenExpiresAt = new Date(obj.accessTokenExpiresAt);\r\n\t\t\tconst refreshTokenExpiresAt = new Date(obj.refreshTokenExpiresAt);\r\n\r\n\t\t\t/* is refresh token expired? */\r\n\t\t\tif (isAfter(now, refreshTokenExpiresAt)) {\r\n\t\t\t\tthis.logger.warn('Session expired. Logging out..');\r\n\r\n\t\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: {\r\n\t\t\t\t\t\tname: 'SessionExpired',\r\n\t\t\t\t\t\tmessage: 'Session expired.',\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\t/* is access token expired? */\r\n\t\t\tif (isAfter(now, accessTokenExpiresAt)) {\r\n\t\t\t\tthis.logger.info('Refreshing session...');\r\n\r\n\t\t\t\tthis.refreshing = true;\r\n\r\n\t\t\t\tconst res = await this.authService.refreshSession(obj.refreshToken);\r\n\r\n\t\t\t\tthis.refreshing = false;\r\n\r\n\t\t\t\tif (!res.ok) {\r\n\t\t\t\t\tthis.logger.error(`Failed to refresh session: ${res.error.message}`);\r\n\r\n\t\t\t\t\t/* return previous session for all errors except \"InvalidToken\" and \"AccountBlacklisted\" */\r\n\t\t\t\t\tif (res.error.name === 'InvalidToken' || res.error.name === 'AccountBlacklisted') {\r\n\t\t\t\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\t\terror: res.error,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.logger.warn('Old session returned.');\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\t\tdata: obj,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.logger.success('Session refreshed!');\r\n\r\n\t\t\t\tnow = new Date();\r\n\t\t\t\tobj = {\r\n\t\t\t\t\t...obj,\r\n\t\t\t\t\t...res.data,\r\n\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.localStorage.setItem(this.storageKey, JSON.stringify(obj));\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: obj,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync destroy() {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst res = await this.get();\r\n\r\n\t\tif (res.data?.accessToken) {\r\n\t\t\tawait this.authService.destroySession(res.data.accessToken);\r\n\t\t}\r\n\r\n\t\twindow.localStorage.removeItem(this.storageKey);\r\n\t}\r\n\r\n\tasync verify(): Promise<boolean> {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst s = await this.get();\r\n\r\n\t\tif (s.error?.name === 'InvalidToken') return false;\r\n\t\tif (s.error?.name === 'SessionExpired') return false;\r\n\t\tif (s.error?.name === 'AccountBlacklisted') return false;\r\n\r\n\t\t/* Not logged in or session is not expired */\r\n\t\tif (!s.data) return true;\r\n\r\n\t\tconst v = await this.authService.verifySession(s.data.accessToken);\r\n\r\n\t\t/* log out if session is no longer valid */\r\n\t\tif (!v) {\r\n\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\t\t}\r\n\r\n\t\treturn v;\r\n\t}\r\n\r\n\tprivate get isServer() {\r\n\t\treturn typeof window === 'undefined';\r\n\t}\r\n}\r\n","export function parseDecimal(value: unknown): number | undefined;\r\nexport function parseDecimal(value: unknown, fallback: number): number;\r\nexport function parseDecimal(value: unknown, fallback?: number) {\r\n\tif (typeof value === 'number') {\r\n\t\tif (!Number.isNaN(value)) return value;\r\n\t}\r\n\r\n\tif (typeof value === 'string') {\r\n\t\tconst parsed = Number.parseFloat(value);\r\n\r\n\t\tif (!Number.isNaN(parsed)) {\r\n\t\t\treturn parsed;\r\n\t\t}\r\n\t}\r\n\r\n\treturn fallback;\r\n}\r\n","import type * as Internal from '../services';\r\nimport { StaticService } from '../services';\r\nimport { parseDecimal } from '../utils/parse-decimal';\r\nimport type * as External from './types';\r\n\r\ninterface TransformerConfig {\r\n\tenvironment?: 'development' | 'production';\r\n}\r\n\r\nexport class Transformer {\r\n\tprivate staticService: StaticService;\r\n\r\n\tconstructor(config?: TransformerConfig) {\r\n\t\tconst debug = config?.environment === 'development';\r\n\r\n\t\tthis.staticService = new StaticService({\r\n\t\t\turl: debug\r\n\t\t\t\t? import.meta.env.VITE_STATIC_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_STATIC_PRODUCTION_URL,\r\n\t\t});\r\n\t}\r\n\r\n\tget transform() {\r\n\t\treturn {\r\n\t\t\tplatform: this.platform.bind(this),\r\n\t\t\taccount: this.account.bind(this),\r\n\t\t\twallet: this.wallet.bind(this),\r\n\t\t\tverificationDetails: this.verificationDetails.bind(this),\r\n\t\t\tprofileCompletion: this.profileCompletion.bind(this),\r\n\t\t\tannouncement: this.announcement.bind(this),\r\n\t\t\twithdrawalRecord: this.withdrawalRecord.bind(this),\r\n\t\t\tdeposit: this.deposit.bind(this),\r\n\t\t\tdepositRecord: this.depositRecord.bind(this),\r\n\t\t\tbetRecord: this.betRecord.bind(this),\r\n\t\t\tlatestBetRecord: this.latestBetRecord.bind(this),\r\n\t\t\ttransactionRecord: this.transactionRecord.bind(this),\r\n\t\t\tgame: this.game.bind(this),\r\n\t\t\tgameSession: this.gameSession.bind(this),\r\n\t\t\tpromo: this.promo.bind(this),\r\n\t\t\tcashback: this.cashback.bind(this),\r\n\t\t\tbonus: this.bonus.bind(this),\r\n\t\t\tcashbackBonus: this.cashbackBonus.bind(this),\r\n\t\t\tfile: this.file.bind(this),\r\n\t\t\tpointsWallet: this.pointsWallet.bind(this),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate platform(data: Internal.Platform): External.Platform {\r\n\t\treturn {\r\n\t\t\tpaymentSettings: {\r\n\t\t\t\tminimumFirstDepositAmount: parseDecimal(data.minimumFirstDepositAmount),\r\n\t\t\t\trestrictWithdrawalsToVerifiedMembers: data.restrictWithdrawalsToVerifiedMembers,\r\n\t\t\t\tdepositGateway: {\r\n\t\t\t\t\tbank: {\r\n\t\t\t\t\t\tandroidEnabled: data.bankDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.bankDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.bankDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.bankDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.bankDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.bankDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgcash: {\r\n\t\t\t\t\t\tandroidEnabled: data.gcashDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.gcashDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.gcashDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.gcashDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.gcashDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.gcashDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaya: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmayaApp: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaAppDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaAppDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaAppDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaAppDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\twithdrawalGateway: {\r\n\t\t\t\t\tbank: {\r\n\t\t\t\t\t\tandroidEnabled: data.bankWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.bankWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.bankWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.bankWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgcash: {\r\n\t\t\t\t\t\tandroidEnabled: data.gcashWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.gcashWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.gcashWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.gcashWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.gcashWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\t\tdata.gcashWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t\t1000000,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaya: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmayaApp: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaAppWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaAppWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaAppWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaAppWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\t\tdata.mayaAppWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t\t1000000,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tpointsClubSettings: {\r\n\t\t\t\tmultiplier: parseDecimal(data.pointsClubSettings?.multiplier, 0),\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tprivate account(data: Internal.MemberAccount & Internal.Member): External.Account {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tname: data.name,\r\n\t\t\tstatus: data.status,\r\n\t\t\tverified: data.verified,\r\n\t\t\tnickName: data.nickName ?? undefined,\r\n\t\t\trealName: data.realName ?? undefined,\r\n\t\t\tdateOfBirth: data.birthDay ? new Date(data.birthDay) : undefined,\r\n\t\t\temailAddress: data.emailAddress ?? undefined,\r\n\t\t\tmobileNumber: data.mobileNumber ?? undefined,\r\n\t\t\tmobileNumberVerified: data.mobileNumberVerified ?? false,\r\n\t\t\tmobileNumberVerificationRequired: data.mobileNumberVerificationRequired ?? false,\r\n\t\t\tvalidId: data.validId ?? undefined,\r\n\t\t\tverificationStatus: data.verificationStatus,\r\n\t\t\ttransactionPassword: data.transactionPassword,\r\n\t\t\tsecretAnswerSubmitted: data.secretAnswerSubmitted ?? false,\r\n\t\t\tdateTimeLastActive: data.dateTimeLastActive ? new Date(data.dateTimeLastActive) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate wallet(data: Internal.Wallet): External.Wallet {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate verificationDetails(data: Internal.MemberVerification): External.VerificationDetails {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tidFrontImage: {\r\n\t\t\t\t...data.idFrontImage,\r\n\t\t\t\turl: data.idFrontImage.url ?? undefined,\r\n\t\t\t\tdateTimeCreated: new Date(data.idFrontImage.dateTimeCreated),\r\n\t\t\t} as External.File,\r\n\t\t\tselfieImage: {\r\n\t\t\t\t...data.selfieImage,\r\n\t\t\t\turl: data.selfieImage.url ?? undefined,\r\n\t\t\t\tdateTimeCreated: new Date(data.selfieImage.dateTimeCreated),\r\n\t\t\t} as External.File,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate profileCompletion(data: Internal.ProfileCompletion): External.ProfileCompletion {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tcompletionPercentage: parseDecimal(data, 0),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate announcement(data: Internal.Announcement): External.Announcement {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate withdrawalRecord(data: Internal.WithdrawalRecord): External.WithdrawalRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tnetAmount: parseDecimal(data.netAmount, 0),\r\n\t\t\tfee: parseDecimal(data.fee, 0),\r\n\t\t\treference: data.reference ?? undefined,\r\n\t\t\tbank: data.bank ?? undefined,\r\n\t\t\trecipientMobileNumber: data.recipientMobileNumber ?? undefined,\r\n\t\t\tdateTimeConfirmed: data.dateTimeConfirmed ? new Date(data.dateTimeConfirmed) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t} as unknown as External.WithdrawalRecord;\r\n\t}\r\n\r\n\tprivate deposit(data: Internal.Deposit): External.Deposit {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tfee: parseDecimal(data.fee, 0),\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tnetAmount: parseDecimal(data.netAmount, 0),\r\n\t\t\treference: data.reference ?? undefined,\r\n\t\t\tcheckoutUrl: data.checkoutUrl ?? 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.Deposit;\r\n\t}\r\n\r\n\tprivate depositRecord(data: Internal.DepositRecord): External.DepositRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tfee: parseDecimal(data.fee, 0),\r\n\t\t\tnetAmount: parseDecimal(data.netAmount, 0),\r\n\t\t\treference: data.reference ?? undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate betRecord(data: Internal.BetRecord): External.BetRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbet: parseDecimal(data.bet, 0),\r\n\t\t\tpayout: parseDecimal(data.payout, 0),\r\n\t\t\tjackpotContribution: parseDecimal(data.jackpotContribution, 0),\r\n\t\t\tjackpotPayout: parseDecimal(data.jackpotPayout, 0),\r\n\t\t\twinloss: parseDecimal(data.winloss),\r\n\t\t\tvalidBet: parseDecimal(data.validBet, 0),\r\n\t\t\tvendorRoundId: data.vendorRoundId ?? undefined,\r\n\t\t\tgame: this.game(data.game),\r\n\t\t\tdateTimeSettled: data.dateTimeSettled ? new Date(data.dateTimeSettled) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t\tbetContent: data.betContent ?? undefined,\r\n\t\t\tcontestName: data.contestName ?? undefined,\r\n\t\t\texternalCategory: data.externalCategory ?? undefined,\r\n\t\t\tmetadata: {\r\n\t\t\t\todds: data.metadata?.odds ?? undefined,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tprivate latestBetRecord(data: Internal.LatestBetRecord): External.LatestBetRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tgame: this.game(data.game),\r\n\t\t\tbet: parseDecimal(data.bet, 0),\r\n\t\t\tpayout: parseDecimal(data.payout, 0),\r\n\t\t\tvalidBet: parseDecimal(data.validBet, 0),\r\n\t\t\tdateTimeSettled: new Date(data.dateTimeSettled),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate transactionRecord(data: Internal.TransactionRecord): External.TransactionRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tcontent: data.content ?? undefined,\r\n\t\t\tcurrentBalance: parseDecimal(data.currentBalance, 0),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate game(data: Internal.Game): External.Game {\r\n\t\tconst images = this.staticService.gameThumbnails(data);\r\n\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\timages,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate gameSession(data: Internal.GameSession): External.GameSession {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t} as External.GameSession;\r\n\t}\r\n\r\n\tprivate promo(data: Internal.Promo): External.Promo {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbanner: {\r\n\t\t\t\t...data.banner,\r\n\t\t\t\tdateTimeCreated: new Date(data.banner.dateTimeCreated),\r\n\t\t\t},\r\n\t\t\tmaximumBonusAmount: parseDecimal(data.maximumBonusAmount),\r\n\t\t\tminimumBonusAmount: parseDecimal(data.minimumBonusAmount),\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate cashback(data: Internal.Cashback): External.Cashback {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbanner: {\r\n\t\t\t\t...data.banner,\r\n\t\t\t\tdateTimeCreated: new Date(data.banner.dateTimeCreated),\r\n\t\t\t},\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate bonus(data: Internal.Bonus): External.Bonus {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tpromo: this.promo(data.promo),\r\n\t\t\t/* deposit here does not have an id and depositNumber field */\r\n\t\t\tdeposit: data.deposit\r\n\t\t\t\t? {\r\n\t\t\t\t\t\t...data.deposit,\r\n\t\t\t\t\t\tfee: parseDecimal(data.deposit.fee, 0),\r\n\t\t\t\t\t\tamount: parseDecimal(data.deposit.amount, 0),\r\n\t\t\t\t\t\tnetAmount: parseDecimal(data.deposit.netAmount, 0),\r\n\t\t\t\t\t\treference: data.deposit.reference ?? undefined,\r\n\t\t\t\t\t\tdateTimeCreated: new Date(data.deposit.dateTimeCreated),\r\n\t\t\t\t\t\tdateTimeLastUpdated: new Date(data.deposit.dateTimeLastUpdated),\r\n\t\t\t\t\t}\r\n\t\t\t\t: undefined,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\texpiration: new Date(data.expiration),\r\n\t\t\tturnoverRequirement: parseDecimal(data.turnoverRequirement, 0),\r\n\t\t\tcurrentTurnoverRequirementContribution: parseDecimal(\r\n\t\t\t\tdata.currentTurnoverRequirementContribution,\r\n\t\t\t\t0,\r\n\t\t\t),\r\n\t\t\tcurrentTurnoverRequirementContributionPercentage: parseDecimal(\r\n\t\t\t\tdata.currentTurnoverRequirementContributionPercentage,\r\n\t\t\t\t0,\r\n\t\t\t),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate cashbackBonus(data: Internal.CashbackBonus): External.CashbackBonus {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tcashback: this.cashback(data.cashback),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate file(data: Internal.File): External.File {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\turl: data.url ?? undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t} as External.File;\r\n\t}\r\n\r\n\tprivate pointsWallet(data: Internal.PointsWallet): External.PointsWallet {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tpoints: parseDecimal(data.points, 0),\r\n\t\t\taccount: data.account,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n}\r\n","import {\r\n\tAccountService,\r\n\tFileService,\r\n\tGameService,\r\n\tReportService,\r\n\tWalletService,\r\n} from '../services';\r\nimport { PortalService } from '../services/portal.service';\r\nimport {\r\n\tGraphQLClient,\r\n\ttype GraphQLClientConfig,\r\n\ttype GraphQLClientMiddleware,\r\n} from '../utils/graphql-client';\r\nimport { sha256 } from '../utils/sha256';\r\nimport { Logger } from './logger';\r\nimport { ObjectId } from './object-id';\r\nimport { ObjectType } from './object-type';\r\nimport { SessionManager } from './session-manager';\r\nimport { Transformer } from './transformer';\r\nimport type {\r\n\tAccountReturn,\r\n\tAnnouncementsInput,\r\n\tAnnouncementsReturn,\r\n\tAuthenticateInput,\r\n\tAuthenticateReturn,\r\n\tAvailablePromosReturn,\r\n\tBetRecordsInput,\r\n\tBetRecordsReturn,\r\n\tBonusReturn,\r\n\tCashbackBonusReturn,\r\n\tCashbacksReturn,\r\n\tClaimCashbackBonusReturn,\r\n\tCreateAccountInput,\r\n\tCreateAccountReturn,\r\n\tCreateDepositInput,\r\n\tCreateDepositReturn,\r\n\tCreateGameSessionInput,\r\n\tCreateGameSessionReturn,\r\n\tCreateWithdrawalInput,\r\n\tCreateWithdrawalReturn,\r\n\tDeleteAccountReturn,\r\n\tDepositRecordsInput,\r\n\tDepositRecordsReturn,\r\n\tDepositReturn,\r\n\tDepositsCountReturn,\r\n\tEndGameSessionReturn,\r\n\tFileReturn,\r\n\tGameSessionReturn,\r\n\tGamesByNameInput,\r\n\tGamesByNameInput__Next,\r\n\tGamesByNameReturn,\r\n\tGamesInput,\r\n\tGamesInput__Next,\r\n\tGamesReturn,\r\n\tLatestBetRecordsReturn,\r\n\tMayaSignInInput,\r\n\tMayaSignInReturn,\r\n\tMobileNumberSignInInput,\r\n\tMobileNumberSignInReturn,\r\n\tNameAndPasswordSignInInput,\r\n\tNameAndPasswordSignInReturn,\r\n\tPlatformReturn,\r\n\tPointsToCashConversionReturn,\r\n\tPointsWalletReturn,\r\n\tProfileCompletionReturn,\r\n\tPromosReturn,\r\n\tRemainingDailyWithdrawalsCountReturn,\r\n\tResetPasswordInput,\r\n\tResetPasswordReturn,\r\n\tSendVerificationCodeReturn,\r\n\tSessionReturn,\r\n\tSignInInput,\r\n\tSignInReturn,\r\n\tSubmitVerificationDetailsInput,\r\n\tSubmitVerificationDetailsReturn,\r\n\tTransactionRecordsInput,\r\n\tTransactionRecordsReturn,\r\n\tUpdateAccountInput,\r\n\tUpdateAccountReturn,\r\n\tUpdateVerificationDetailsInput,\r\n\tUpdateVerificationDetailsReturn,\r\n\tUploadImageFileInput,\r\n\tUploadImageFileReturn,\r\n\tVerificationDetailsReturn,\r\n\tVerifyMobileNumberReturn,\r\n\tWalletReturn,\r\n\tWatchSessionInput,\r\n\tWithdrawalRecordsInput,\r\n\tWithdrawalRecordsReturn,\r\n} from './types';\r\n\r\nexport interface SdkConfig {\r\n\tplatform: string;\r\n\t/**\r\n\t * @description Whether to use production or development endpoints.\r\n\t * @default \"development\"\r\n\t */\r\n\tenvironment?: 'production' | 'development';\r\n\t/**\r\n\t * @description Enables/disables logging.\r\n\t * @default false\r\n\t */\r\n\tlog?: boolean;\r\n}\r\n\r\nexport class Sdk {\r\n\tprivate gameService: GameService;\r\n\tprivate fileService: FileService;\r\n\tprivate walletService: WalletService;\r\n\tprivate reportService: ReportService;\r\n\tprivate portalService: PortalService;\r\n\tprivate accountService: AccountService;\r\n\tprivate sessionManager: SessionManager;\r\n\tprivate transformer: Transformer;\r\n\tprivate logger: Logger;\r\n\r\n\tconstructor(config: SdkConfig) {\r\n\t\tconst debug = config.environment === 'development';\r\n\r\n\t\tthis.sessionManager = new SessionManager({\r\n\t\t\t...config,\r\n\t\t\turl: debug\r\n\t\t\t\t? import.meta.env.VITE_AUTH_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_AUTH_PRODUCTION_URL,\r\n\t\t});\r\n\r\n\t\tconst graphqlClientConfig: GraphQLClientConfig = {\r\n\t\t\tmiddlewares: [this.authMiddleware],\r\n\t\t\tfetchOptions: {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\t'Platform-Code': config.platform,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tthis.gameService = new GameService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_GAME_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_GAME_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.fileService = new FileService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_FILE_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_FILE_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.walletService = new WalletService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_WALLET_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_WALLET_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.reportService = new ReportService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_REPORT_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_REPORT_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.accountService = new AccountService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_ACCOUNT_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_ACCOUNT_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.portalService = new PortalService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_PORTAL_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_PORTAL_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.transformer = new Transformer(config);\r\n\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: config.log ?? false,\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get authMiddleware(): GraphQLClientMiddleware {\r\n\t\treturn async (request) => {\r\n\t\t\tthis.logger.info('Checking for session');\r\n\r\n\t\t\tconst res = await this.sessionManager.get();\r\n\r\n\t\t\tif (res.data) {\r\n\t\t\t\trequest.headers.append('Authorization', `Bearer ${res.data.accessToken}`);\r\n\r\n\t\t\t\tthis.logger.info('Session found');\r\n\t\t\t\tthis.logger.success(\"Added 'Authorization' header\");\r\n\t\t\t} else {\r\n\t\t\t\tthis.logger.info('No session found');\r\n\t\t\t}\r\n\r\n\t\t\treturn request;\r\n\t\t};\r\n\t}\r\n\r\n\tasync signIn(input: NameAndPasswordSignInInput): Promise<NameAndPasswordSignInReturn>;\r\n\tasync signIn(input: MobileNumberSignInInput): Promise<MobileNumberSignInReturn>;\r\n\tasync signIn(input: MayaSignInInput): Promise<MayaSignInReturn>;\r\n\tasync signIn(input: SignInInput): Promise<SignInReturn> {\r\n\t\tswitch (input.type) {\r\n\t\t\tcase 'NAME_AND_PASSWORD': {\r\n\t\t\t\tconst res = await this.sessionManager.create({\r\n\t\t\t\t\t...input,\r\n\t\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!res.ok) return res;\r\n\t\t\t\tif (res.data) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t'2FAEnabled': true,\r\n\t\t\t\t\t\t\tauthenticator: res.data.authenticator,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t'2FAEnabled': false,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tdefault: {\r\n\t\t\t\tconst res = await this.sessionManager.create(input);\r\n\r\n\t\t\t\treturn res.ok ? { ok: true } : res;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const signInResult = await signIn({\r\n\t * \ttype: 'NAME_AND_PASSWORD',\r\n\t * \tname: data.name,\r\n\t * \tpassword: data.password,\r\n\t * });\r\n\t *\r\n\t * if (!signInResult.ok) {\r\n\t * \treturn window.alert(signInResult.error.message);\r\n\t * }\r\n\t *\r\n\t * if (!signInResult.data) {\r\n\t * \t// Signed in. No more steps needed\r\n\t * \treturn;\r\n\t * }\r\n\t *\r\n\t * const secretAnswer = window.prompt(SECRET_QUESTIONS_MAP[signInResult.secretQuestion]);\r\n\t *\r\n\t * const authResult = await sdk.authenticate({\r\n\t * \ttype: 'SECURITY_QUESTION',\r\n\t * \ttoken: signInResult.token,\r\n\t * \tsecretAnswer: secretAnswer,\r\n\t * });\r\n\t *\r\n\t * if (!authResult.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Signed in\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync authenticate(input: AuthenticateInput): Promise<AuthenticateReturn> {\r\n\t\tswitch (input.type) {\r\n\t\t\tcase 'SECURITY_QUESTION': {\r\n\t\t\t\treturn await this.sessionManager.createFromAuthenticator({\r\n\t\t\t\t\ttype: 'SECURITY_QUESTION',\r\n\t\t\t\t\ttoken: input.token,\r\n\t\t\t\t\tsecretAnswer: await sha256(input.secretAnswer),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefault: {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: {\r\n\t\t\t\t\t\tname: 'HttpBadRequest',\r\n\t\t\t\t\t\tmessage: \"Invalid input 'type'\",\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync signOut() {\r\n\t\tawait this.sessionManager.destroy();\r\n\t}\r\n\r\n\t/**\r\n\t * @description Watches the session if it is still valid whenever signed in.\r\n\t * @returns Unsubscribe function\r\n\t * @example\r\n\t * ```tsx\r\n\t * import * as React from 'react';\r\n\t * import { useAuthenticated } from '@lib/stores';\r\n\t *\r\n\t * function WatchSession() {\r\n\t * \tconst { setAuthenticated } = useAuthenticated();\r\n\t *\r\n\t * \tReact.useEffect(() => {\r\n\t * \t\tconst unsubscribe = sdk.watchSession({\r\n\t * \t\t\tinterval: 30000,\r\n\t * \t\t\tonInvalid() {\r\n\t * \t\t\t\tsetAuthenticated(false);\r\n\t * \t\t\t},\r\n\t * \t\t});\r\n\t *\r\n\t * \t\treturn unsubscribe;\r\n\t * \t}, []);\r\n\t * }\r\n\t * ```\r\n\t */\r\n\twatchSession(input: WatchSessionInput) {\r\n\t\tconst interval = input.interval ?? 30000;\r\n\t\tconst onInvalid = input.onInvalid;\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 onInvalid();\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttimeout = assignTimeout();\r\n\t\t\t}, interval);\r\n\t\t};\r\n\r\n\t\ttimeout = assignTimeout();\r\n\r\n\t\treturn function unsubscribe() {\r\n\t\t\tif (timeout) {\r\n\t\t\t\tclearTimeout(timeout);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tasync session(): Promise<SessionReturn> {\r\n\t\tconst res = await this.sessionManager.get();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data\r\n\t\t\t\t? {\r\n\t\t\t\t\t\tid: res.data.session.id,\r\n\t\t\t\t\t\tdateTimeCreated: new Date(res.data.session.dateTimeCreated),\r\n\t\t\t\t\t}\r\n\t\t\t\t: null,\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Platform\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync platform(): Promise<PlatformReturn> {\r\n\t\tconst res = await this.accountService.platform();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.platform(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Account\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync account(): Promise<AccountReturn> {\r\n\t\tconst [i, j] = await Promise.all([\r\n\t\t\tthis.accountService.memberAccount(),\r\n\t\t\tthis.reportService.member(),\r\n\t\t]);\r\n\r\n\t\tif (!i.ok) return { ok: false, error: i.error };\r\n\t\tif (!j.ok) return { ok: false, error: j.error };\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.account({\r\n\t\t\t\t...i.data,\r\n\t\t\t\t...j.data,\r\n\t\t\t}),\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createAccount({\r\n\t * \tid: ObjectId.generate(ObjectType.Account).toString(),\r\n\t * \tname: data.name,\r\n\t * \tpassword: data.password,\r\n\t * \tdateOfBirth: new Date(data.dateOfBirth),\r\n\t * \tmobileNumber: data.mobileNumber,\r\n\t * \tdomain: data.domain,\r\n\t * \tverificationCode: data.verificationCode,\r\n\t * \treCAPTCHAResponse: data.reCAPTCHAResponse,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createAccount(input: CreateAccountInput): Promise<CreateAccountReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Account).toString();\r\n\r\n\t\tconst res = await this.accountService.registerMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tname: input.name,\r\n\t\t\t\tbirthDay:\r\n\t\t\t\t\ttypeof input.dateOfBirth === 'string'\r\n\t\t\t\t\t\t? input.dateOfBirth\r\n\t\t\t\t\t\t: input.dateOfBirth.toISOString(),\r\n\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\tdomain: input.domain,\r\n\t\t\t\tbtag: input.btag,\r\n\t\t\t},\r\n\t\t\tverificationCode: input.verificationCode,\r\n\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.updateAccount(user.id, {\r\n\t * \tvalidId: data.validId,\r\n\t * \trealName: data.realName,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync updateAccount(id: string, input: UpdateAccountInput): Promise<UpdateAccountReturn> {\r\n\t\treturn await this.accountService.updateMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t...input,\r\n\t\t\t\t\tpassword: input.password ? await sha256(input.password) : undefined,\r\n\t\t\t\t\ttransactionPassword: input.transactionPassword\r\n\t\t\t\t\t\t? await sha256(input.transactionPassword)\r\n\t\t\t\t\t\t: undefined,\r\n\t\t\t\t\t...(input.mobileNumber && {\r\n\t\t\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tsecretAnswer: input.secretAnswer ? await sha256(input.secretAnswer) : undefined,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync deleteAccount(id: string): Promise<DeleteAccountReturn> {\r\n\t\treturn await this.accountService.deleteMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync verificationDetails(): Promise<VerificationDetailsReturn> {\r\n\t\tconst res = await this.accountService.memberVerification();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.verificationDetails(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.submitVerificationDetails({\r\n\t * \tid: ObjectId.generate(ObjectType.Verification).toString(),\r\n\t * \tidFrontImage: data.idFrontImage,\r\n\t * \tselfieImage: data.selfieImage,\r\n\t * \taddress: data.address,\r\n\t * \tsourceOfIncome: data.sourceOfIncome,\r\n\t * \tnatureOfWork: data.natureOfWork,\r\n\t * \tplaceOfBirth: data.placeOfBirth,\r\n\t * \tnationality: data.nationality,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync submitVerificationDetails(\r\n\t\tinput: SubmitVerificationDetailsInput,\r\n\t): Promise<SubmitVerificationDetailsReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Verification).toString();\r\n\r\n\t\tconst res = await this.accountService.createMemberVerification({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\t...input,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.submitVerificationDetails(verificationDetails.id, {\r\n\t * \tidFrontImage: data.idFrontImage,\r\n\t * \tselfieImage: data.selfieImage,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync updateVerificationDetails(\r\n\t\tid: string,\r\n\t\tinput: UpdateVerificationDetailsInput,\r\n\t): Promise<UpdateVerificationDetailsReturn> {\r\n\t\treturn await this.accountService.updateMemberVerification({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t...input,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync resetPassword(input: ResetPasswordInput): Promise<ResetPasswordReturn> {\r\n\t\treturn await this.accountService.resetPassword({\r\n\t\t\tinput: {\r\n\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\tnewPassword: await sha256(input.newPassword),\r\n\t\t\t},\r\n\t\t\tverificationCode: input.verificationCode,\r\n\t\t});\r\n\t}\r\n\r\n\tasync verifyMobileNumber(verificationCode: string): Promise<VerifyMobileNumberReturn> {\r\n\t\treturn await this.accountService.verifyMobileNumber({\r\n\t\t\tinput: {\r\n\t\t\t\tverificationCode,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync profileCompletion(): Promise<ProfileCompletionReturn> {\r\n\t\tconst res = await this.accountService.profileCompletion();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.profileCompletion(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\tasync sendVerificationCode(mobileNumber: string): Promise<SendVerificationCodeReturn> {\r\n\t\treturn await this.accountService.sendVerificationCode({\r\n\t\t\tinput: {\r\n\t\t\t\tchannel: 'SMS',\r\n\t\t\t\trecipient: this.addAreaCode(mobileNumber),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync wallet(): Promise<WalletReturn> {\r\n\t\tconst res = await this.walletService.wallet();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.wallet(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Announcement\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync announcements(input?: AnnouncementsInput): Promise<AnnouncementsReturn> {\r\n\t\tconst res = await this.accountService.announcements({\r\n\t\t\t...input,\r\n\t\t\tfilter: {\r\n\t\t\t\tvisibility: {\r\n\t\t\t\t\tin: ['MEMBER', 'GLOBAL'],\r\n\t\t\t\t},\r\n\t\t\t\tactivationStartDateTime: {\r\n\t\t\t\t\tgreaterThanOrEqual: new Date(),\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tannouncements: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.announcement(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as AnnouncementsReturn;\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Withdrawal\r\n\t * ========================================\r\n\t */\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createWithdrawal({\r\n\t * \tid: ObjectId.generate(ObjectType.Withdrawal).toString(),\r\n\t * \ttype: 'BANK',\r\n\t * \tamount: data.amount,\r\n\t * \ttransactionPassword: data.transactionPassword,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createWithdrawal(input: CreateWithdrawalInput): Promise<CreateWithdrawalReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Withdrawal).toString();\r\n\r\n\t\tif (input.type === 'BANK') {\r\n\t\t\tconst res = await this.walletService.createBankWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'GCASH') {\r\n\t\t\tconst res = await this.walletService.createGCashWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t\trecipientMobileNumber: this.addAreaCode(input.recipientMobileNumber),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA') {\r\n\t\t\tconst res = await this.walletService.createMayaWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t\trecipientMobileNumber: this.addAreaCode(input.recipientMobileNumber),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA_APP') {\r\n\t\t\tconst res = await this.walletService.createMayaAppWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\treturn { ok: true, data: { id } };\r\n\t}\r\n\r\n\tasync withdrawalRecords(input?: WithdrawalRecordsInput): Promise<WithdrawalRecordsReturn> {\r\n\t\tconst res = await this.reportService.withdrawalRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\twithdrawalRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.withdrawalRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as WithdrawalRecordsReturn;\r\n\t}\r\n\r\n\tasync remainingDailyWithdrawalsCount(): Promise<RemainingDailyWithdrawalsCountReturn> {\r\n\t\treturn await this.walletService.remainingDailyWithdrawalsCount();\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Deposit\r\n\t * ========================================\r\n\t */\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createDeposit({\r\n\t * \tid: ObjectId.generate(ObjectType.Deposit).toString(),\r\n\t * \ttype: 'GCASH',\r\n\t * \tamount: data.amount,\r\n\t * \tpromo: data.promo,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createDeposit(input: CreateDepositInput): Promise<CreateDepositReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Deposit).toString();\r\n\r\n\t\tif (input.type === 'MAYA') {\r\n\t\t\tconst res = await this.walletService.createMayaDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA_APP') {\r\n\t\t\tconst res = await this.walletService.createMayaAppDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'GCASH') {\r\n\t\t\tconst res = await this.walletService.createGCashDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\treturn { ok: true, data: { id } };\r\n\t}\r\n\r\n\tasync deposit(id: string): Promise<DepositReturn> {\r\n\t\tconst res = await this.walletService.deposit({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.deposit(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync depositRecords(input?: DepositRecordsInput): Promise<DepositRecordsReturn> {\r\n\t\tconst res = await this.reportService.depositRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tdepositRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.depositRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as DepositRecordsReturn;\r\n\t}\r\n\r\n\tasync depositsCount(): Promise<DepositsCountReturn> {\r\n\t\treturn await this.reportService.depositsCount();\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Bet\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync betRecords(input?: BetRecordsInput): Promise<BetRecordsReturn> {\r\n\t\tconst res = await this.reportService.betRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tbetRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.betRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as BetRecordsReturn;\r\n\t}\r\n\r\n\tasync latestBetRecords(): Promise<LatestBetRecordsReturn> {\r\n\t\tconst res = await this.portalService.latestBetRecords();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.latestBetRecord),\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Transaction\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync transactionRecords(input?: TransactionRecordsInput): Promise<TransactionRecordsReturn> {\r\n\t\tconst res = await this.reportService.transactionRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\ttransactionRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.transactionRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as TransactionRecordsReturn;\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Promos\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync promos(): Promise<PromosReturn> {\r\n\t\tconst res = await this.walletService.promos();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.promo),\r\n\t\t};\r\n\t}\r\n\r\n\tasync availablePromos(): Promise<AvailablePromosReturn> {\r\n\t\tconst res = await this.walletService.availablePromos();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.promo),\r\n\t\t};\r\n\t}\r\n\r\n\tasync cashbacks(): Promise<CashbacksReturn> {\r\n\t\tconst res = await this.walletService.cashbacks();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.cashback),\r\n\t\t};\r\n\t}\r\n\r\n\tasync bonus(): Promise<BonusReturn> {\r\n\t\tconst res = await this.walletService.bonus();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.bonus(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync cashbackBonuses(): Promise<CashbackBonusReturn> {\r\n\t\tconst res = await this.walletService.cashbackBonuses();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.cashbackBonus),\r\n\t\t};\r\n\t}\r\n\r\n\tasync claimCashbackBonus(id: string): Promise<ClaimCashbackBonusReturn> {\r\n\t\treturn await this.walletService.claimCashbackBonus({ input: { id } });\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Game\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync games(input?: GamesInput): Promise<GamesReturn> {\r\n\t\tconst res = await this.gameService.games(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.game(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: 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 GamesReturn;\r\n\t}\r\n\r\n\tasync gamesByName(input: GamesByNameInput): Promise<GamesByNameReturn> {\r\n\t\tconst res = await this.gameService.gamesByName(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.game),\r\n\t\t};\r\n\t}\r\n\r\n\tasync gamesByName__next(input: GamesByNameInput__Next): Promise<GamesByNameReturn> {\r\n\t\tconst res = await this.walletService.gamesByName(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.game),\r\n\t\t};\r\n\t}\r\n\r\n\tasync games__next(input?: GamesInput__Next): Promise<GamesReturn> {\r\n\t\tconst res = await this.walletService.games(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.game(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: 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 GamesReturn;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createGameSession({\r\n\t * \tid: ObjectId.generate(ObjectType.GameSession).toString(),\r\n\t * \tgame: game.id,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createGameSession(input: CreateGameSessionInput): Promise<CreateGameSessionReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.GameSession).toString();\r\n\r\n\t\tconst res = await this.gameService.createGameSession({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tgame: input.game,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createGameSession({\r\n\t * \tid: ObjectId.generate(ObjectType.GameSession).toString(),\r\n\t * \tgame: game.id,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createGameSession__next(input: CreateGameSessionInput): Promise<CreateGameSessionReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.GameSession).toString();\r\n\r\n\t\tconst res = await this.walletService.createGameSession({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tgame: input.game,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\tasync gameSession(id: string): Promise<GameSessionReturn> {\r\n\t\tconst res = await this.gameService.gameSession({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.gameSession(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync gameSession__next(id: string): Promise<GameSessionReturn> {\r\n\t\tconst res = await this.walletService.gameSession({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.gameSession(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync endGameSession(id: string): Promise<EndGameSessionReturn> {\r\n\t\treturn await this.gameService.endGameSession({ input: { id } });\r\n\t}\r\n\r\n\tasync endGameSession__next(id: string): Promise<EndGameSessionReturn> {\r\n\t\treturn await this.walletService.endGameSession({ input: { id } });\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * File\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync file(id: string): Promise<FileReturn> {\r\n\t\tconst res = await this.fileService.file({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.file(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.uploadImageFile({\r\n\t * \tid: ObjectId.generate(ObjectType.File).toString(),\r\n\t * \tfile: data.file,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync uploadImageFile(input: UploadImageFileInput): Promise<UploadImageFileReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.File).toString();\r\n\r\n\t\tconst res = await this.fileService.uploadPrivateImageFile({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tfile: input.file,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Points\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync pointsWallet(): Promise<PointsWalletReturn> {\r\n\t\tconst res = await this.walletService.pointsWallet();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.pointsWallet(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync pointsToCashConversion(amount: number): Promise<PointsToCashConversionReturn> {\r\n\t\treturn await this.walletService.pointsToCashConversion({\r\n\t\t\tinput: {\r\n\t\t\t\tamount: amount.toString(),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate addAreaCode(mobileNumber: string) {\r\n\t\tif (mobileNumber.startsWith('+63')) return mobileNumber;\r\n\t\tif (mobileNumber.startsWith('63')) return `+${mobileNumber}`;\r\n\t\tif (mobileNumber.startsWith('0')) return `+63${mobileNumber.substring(1)}`;\r\n\t\treturn `+63${mobileNumber}`;\r\n\t}\r\n}\r\n\r\nexport default Sdk;\r\n"],"names":["ObjectType","gql","strings","values","result","index","string","value","ANNOUNCEMENTS_QUERY","GAME_FRAGMENT","GAME_QUERY","GAMES_QUERY","GAMES_BY_NAME_QUERY","GAME_SESSION_QUERY","CREATE_GAME_SESSION_MUTATION","END_GAME_SESSION_MUTATION","BET_RECORDS_QUERY","LATEST_BET_RECORDS_QUERY","FILE_FRAGMENT","FILE_QUERY","UPLOAD_PRIVATE_IMAGE_FILE_MUTATION","CASHBACK_FRAGMENT","CASHBACKS_QUERY","PROMO_FRAGMENT","PROMOS_QUERY","AVAILABLE_PROMOS_QUERY","BONUS_QUERY","CASHBACK_BONUSES_QUERY","CLAIM_CASHBACK_BONUS_MUTATION","DEPOSIT_RECORDS_QUERY","CREATE_GCASH_DEPOSIT_MUTATION","CREATE_MAYA_DEPOSIT_MUTATION","CREATE_MAYA_APP_DEPOSIT_MUTATION","DEPOSIT_QUERY","DEPOSITS_COUNT_QUERY","MEMBER_QUERY","MEMBER_ACCOUNT_QUERY","MEMBER_VERIFICATION_QUERY","REGISTER_MEMBER_ACCOUNT_MUTATION","UPDATE_MEMBER_ACCOUNT_MUTATION","RESET_PASSWORD_MUTATION","DELETE_MEMBER_ACCOUNT_MUTATION","SEND_VERIFICATION_CODE_MUTATION","VERIFY_MOBILE_NUMBER_MUTATION","CREATE_MEMBER_VERIFICATION_MUTATION","UPDATE_MEMBER_VERIFICATION_MUTATION","PROFILE_COMPLETION_QUERY","PLATFORM_QUERY","POINTS_WALLET_QUERY","POINTS_TO_CASH_CONVERSION_MUTATION","MAYA_SESSION_QUERY","TRANSACTION_RECORDS_QUERY","WALLET_QUERY","WITHDRAWAL_RECORDS_QUERY","CREATE_GCASH_WITHDRAWAL_MUTATION","CREATE_MAYA_WITHDRAWAL_MUTATION","CREATE_MAYA_APP_WITHDRAWAL_MUTATION","CREATE_BANK_WITHDRAWAL_MUTATION","REMAINING_DAILY_WITHDRAWALS_COUNT_QUERY","createOperationError","code","AccountService","client","__publicField","res","variables","statusCodeToOperationError","message","e","ERROR_MAP","AuthService","config","input","headers","data","token","refreshToken","accessToken","FileService","GameService","ReportService","StaticService","args","WalletService","PortalService","isPlainObject","flatten","fn","o","parentKeys","k","v","arrayToObject","array","i","GraphQLClient","url","_a","query","body","req","request","json","error","_b","_c","_d","_e","_f","middleware","files","map","sha256","msgUint8","hashBuffer","b","Logger","cloneDate","date","addDays","days","addMinutes","minutes","isAfter","date1","date2","sleep","ms","resolve","subMinutes","SessionManager","now","val","obj","accessTokenExpiresAt","refreshTokenExpiresAt","s","parseDecimal","fallback","parsed","Transformer","debug","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","images","Sdk","graphqlClientConfig","interval","onInvalid","timeout","assignTimeout","j","id","ObjectId","verificationCode","mobileNumber","cursor","node","amount"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/lib/sdk/object-type.ts","../src/lib/utils/gql.ts","../src/lib/services/announcement.ts","../src/lib/services/game.ts","../src/lib/services/bet-record.ts","../src/lib/services/file.ts","../src/lib/services/cashback.ts","../src/lib/services/promo.ts","../src/lib/services/bonus.ts","../src/lib/services/deposit.ts","../src/lib/services/member.ts","../src/lib/services/platform.ts","../src/lib/services/points.ts","../src/lib/services/session.ts","../src/lib/services/transaction.ts","../src/lib/services/wallet.ts","../src/lib/services/withdrawal.ts","../src/lib/services/utils.ts","../src/lib/services/account.service.ts","../src/lib/utils/status-code-to-operation-error.ts","../src/lib/services/auth.service.ts","../src/lib/services/file.service.ts","../src/lib/services/game.service.ts","../src/lib/services/report.service.ts","../src/lib/services/static.service.ts","../src/lib/services/wallet.service.ts","../src/lib/services/portal.service.ts","../src/lib/utils/is-plain-object.ts","../src/lib/utils/flatten.ts","../src/lib/utils/graphql-client.ts","../src/lib/utils/sha256.ts","../src/lib/sdk/logger.ts","../src/lib/utils/clone-date.ts","../src/lib/utils/add-days.ts","../src/lib/utils/add-minutes.ts","../src/lib/utils/is-after.ts","../src/lib/utils/sleep.ts","../src/lib/utils/sub-minutes.ts","../src/lib/sdk/session-manager.ts","../src/lib/utils/parse-decimal.ts","../src/lib/sdk/transformer.ts","../src/lib/sdk/sdk.ts"],"sourcesContent":["/*\r\n * ref: https://github.com/HighOutputVentures/opexa/blob/main/libs/shared/src/libs/object-type.ts\r\n */\r\n\r\nexport const ObjectType = {\r\n\tAccount: 8,\r\n\tDeposit: 9,\r\n\tWithdrawal: 14,\r\n\tVerification: 15,\r\n\tFile: 16,\r\n\tGameSession: 204,\r\n\tMayaSession: 230,\r\n};\r\n","export function gql(strings: TemplateStringsArray, ...values: unknown[]) {\r\n\tlet result = '';\r\n\r\n\tfor (const [index, string] of strings.entries()) {\r\n\t\tconst value = values.at(index) ?? '';\r\n\r\n\t\tresult = `${result}${string}${value}`;\r\n\t}\r\n\r\n\treturn result.trim();\r\n}\r\n","import { gql } from '../utils/gql';\r\nimport type { DateFilterField, DateString, EnumFilterField, Html, PaginatedQuery } from './types';\r\n\r\nexport type AnnouncementType = 'RELEASE' | 'SCHEDULED_MAINTENANCE';\r\n\r\nexport type AnnouncementStatus = 'ACTIVE' | 'INACTIVE';\r\n\r\nexport type AnnouncementVisibility = 'MEMBER' | 'OPERATOR' | 'GLOBAL';\r\n\r\nexport interface Announcement {\r\n\tid: string;\r\n\ttype: AnnouncementType;\r\n\ttitle: string;\r\n\tstatus: AnnouncementStatus;\r\n\tmessage: Html;\r\n\tactivationStartDateTime: DateString;\r\n\tactivationEndDateTime: DateString;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface AnnouncementsQuery extends PaginatedQuery<'announcements', Announcement> {}\r\n\r\nexport interface AnnouncementsQueryVariables {\r\n\tfirst?: number;\r\n\tafter?: string;\r\n\tfilter?: {\r\n\t\ttype?: EnumFilterField<AnnouncementType>;\r\n\t\tvisibility?: EnumFilterField<AnnouncementVisibility>;\r\n\t\tactivationStartDateTime?: DateFilterField;\r\n\t\tactivationEndDateTime?: DateFilterField;\r\n\t};\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","import { gql } from '../utils/gql';\r\nimport type {\r\n\tDateString,\r\n\tEnumFilterField,\r\n\tObjectIdFilterField,\r\n\tPaginatedQuery,\r\n\tStringFilterField,\r\n} from './types';\r\n\r\nexport type GameType = 'SLOTS' | 'SPORTS' | 'BINGO' | 'FISHING' | 'LIVE' | 'GAMES';\r\n\r\nexport type GameProvider__Next = 'DARWIN' | 'MEGABALL' | 'DRBINGO' | 'RTG';\r\n\r\nexport type GameProvider =\r\n\t| 'JILI'\r\n\t| 'PGSOFT'\r\n\t| 'FACHAI'\r\n\t| 'PLAYTECH'\r\n\t| 'CQ9'\r\n\t| 'JDB'\r\n\t| 'BOOONGO'\r\n\t| 'HABANERO'\r\n\t| 'RELAXGAMING'\r\n\t| 'DG'\r\n\t| 'E2E'\r\n\t| 'BTI'\r\n\t| GameProvider__Next;\r\n\r\nexport interface Game {\r\n\tid: string;\r\n\tname: string;\r\n\ttype: GameType;\r\n\tprovider: GameProvider;\r\n}\r\n\r\nexport interface GamesQuery extends PaginatedQuery<'games', Game> {}\r\n\r\nexport interface GamesQueryVariables {\r\n\tafter?: string;\r\n\tfirst?: number;\r\n\tfilter?: {\r\n\t\tid?: ObjectIdFilterField;\r\n\t\tname?: StringFilterField;\r\n\t\ttype?: EnumFilterField<GameType>;\r\n\t\tprovider?: EnumFilterField<GameProvider>;\r\n\t};\r\n}\r\n\r\nexport const GAME_FRAGMENT = gql`\r\n\tfragment GameFragment on Game {\r\n\t\tid\r\n\t\ttype\r\n\t\tname\r\n\t\tprovider\r\n\t}\r\n`;\r\n\r\nexport interface GameQuery {\r\n\tnode?: Game | null;\r\n}\r\n\r\nexport interface GameQueryVariables {\r\n\tid: string;\r\n}\r\n\r\nexport const GAME_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery Game($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on Game {\r\n\t\t\t\t...GameFragment\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const GAMES_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery Games($after: Cursor, $first: Int, $filter: GameFilterInput) {\r\n\t\tgames(after: $after, first: $first, filter: $filter) {\r\n\t\t\ttotalCount\r\n\t\t\tedges {\r\n\t\t\t\tcursor\r\n\t\t\t\tnode {\r\n\t\t\t\t\t... on Game {\r\n\t\t\t\t\t\t...GameFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\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 interface GamesByNameQuery {\r\n\tgamesByName: Game[];\r\n}\r\n\r\nexport interface GamesByNameQueryVariables {\r\n\tsearch: string;\r\n\tfirst?: number;\r\n\tfilter?: GamesQueryVariables['filter'];\r\n}\r\n\r\nexport const GAMES_BY_NAME_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery GamesByName($search: String!, $filter: GameFilterInput, $first: Int) {\r\n\t\tgamesByName(search: $search, filter: $filter, first: $first) {\r\n\t\t\t...GameFragment\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type GameSessionStatus = 'PENDING' | 'STARTING' | 'READY' | 'ENDED' | 'CANCELLED';\r\n\r\ninterface GameSession__Common {\r\n\tid: string;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface GameSession__Pending extends GameSession__Common {\r\n\tstatus: 'PENDING';\r\n\tlaunchUrl?: never;\r\n}\r\n\r\nexport interface GameSession__Starting extends GameSession__Common {\r\n\tstatus: 'STARTING';\r\n\tlaunchUrl?: never;\r\n}\r\n\r\nexport interface GameSession__Ready extends GameSession__Common {\r\n\tstatus: 'READY';\r\n\tlaunchUrl: string;\r\n}\r\n\r\nexport interface GameSession__Ended extends GameSession__Common {\r\n\tstatus: 'ENDED';\r\n\tlaunchUrl?: string | null;\r\n}\r\n\r\nexport interface GameSession__Cancelled extends GameSession__Common {\r\n\tstatus: 'CANCELLED';\r\n\tlaunchUrl?: never;\r\n}\r\n\r\nexport type GameSession =\r\n\t| GameSession__Ready\r\n\t| GameSession__Pending\r\n\t| GameSession__Starting\r\n\t| GameSession__Ended\r\n\t| GameSession__Cancelled;\r\n\r\nexport interface GameSessionQuery {\r\n\tnode?: GameSession | null;\r\n}\r\n\r\nexport interface GameSessionQueryVariables {\r\n\tid: string;\r\n}\r\n\r\nexport const GAME_SESSION_QUERY = gql`\r\n\tquery GameSession($id: ObjectId!) {\r\n\t\tnode(id: $id) {\r\n\t\t\t... on GameSession {\r\n\t\t\t\tid\r\n\t\t\t\tstatus\r\n\t\t\t\tlaunchUrl\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type CreateGameSessionError = 'GameDoesNotExistError';\r\n\r\nexport interface CreateGameSessionMutation {\r\n\tcreateGameSession?: null | { __typename: CreateGameSessionError };\r\n}\r\n\r\nexport interface CreateGameSessionMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tgame: string;\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 interface EndGameSessionMutation {\r\n\tendGameSession: boolean;\r\n}\r\n\r\nexport interface EndGameSessionMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t};\r\n}\r\n\r\nexport const END_GAME_SESSION_MUTATION = gql`\r\n\tmutation EndGameSession($input: EndGameSessionInput!) {\r\n\t\tendGameSession(input: $input)\r\n\t}\r\n`;\r\n","import { gql } from '../utils/gql';\r\nimport type { GameType } from './game';\r\nimport { GAME_FRAGMENT, type Game } from './game';\r\nimport type {\r\n\tDateFilterField,\r\n\tDateString,\r\n\tDecimal,\r\n\tEnumFilterField,\r\n\tObjectIdFilterField,\r\n\tPaginatedQuery,\r\n\tSortOrder,\r\n\tStringFilterField,\r\n} from './types';\r\n\r\nexport type BetRecordStatus = 'STARTED' | 'SETTLED' | 'CANCELLED';\r\n\r\nexport interface BetRecordMetadata {\r\n\todds?: string | null;\r\n}\r\n\r\nexport interface BetRecord {\r\n\tid: string;\r\n\tgame: Game;\r\n\tstatus: BetRecordStatus;\r\n\tserialCode: string;\r\n\tvendorRoundId?: string | null;\r\n\tbet: Decimal;\r\n\tpayout: Decimal;\r\n\tvalidBet: Decimal;\r\n\tjackpotContribution: Decimal;\r\n\tjackpotPayout: Decimal;\r\n\twinloss?: Decimal | null;\r\n\tdateTimeSettled?: DateString | null;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n\tbetContent?: string | null;\r\n\tcontestName?: string | null;\r\n\texternalCategory?: string | null;\r\n\tmetadata?: BetRecordMetadata | null;\r\n}\r\n\r\nexport interface BetRecordsQuery {\r\n\tmember: PaginatedQuery<'betRecords', BetRecord>;\r\n}\r\n\r\nexport interface BetRecordsQueryVariables {\r\n\tfirst?: number;\r\n\tafter?: string;\r\n\tsort?: SortOrder;\r\n\tfilter?: {\r\n\t\tserialCode?: StringFilterField;\r\n\t\tgame?: ObjectIdFilterField;\r\n\t\tgame__externalId?: StringFilterField;\r\n\t\tgame__type?: EnumFilterField<GameType>;\r\n\t\tgame__provider?: EnumFilterField<string>;\r\n\t\tdateTimeCreated?: DateFilterField;\r\n\t\tvendorRoundId?: StringFilterField;\r\n\t\tstatus?: EnumFilterField<BetRecordStatus>;\r\n\t};\r\n\tstartDateTime?: DateFilterField;\r\n\tendDateTime?: DateFilterField;\r\n}\r\n\r\nexport const BET_RECORDS_QUERY = gql`\r\n\t${GAME_FRAGMENT}\r\n\r\n\tquery BetRecords($first: Int, $after: Cursor, $filter: BetRecordFilterInput) {\r\n\t\tmember {\r\n\t\t\tbetRecords(first: $first, after: $after, filter: $filter) {\r\n\t\t\t\ttotalCount\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on BetRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\tserialCode\r\n\t\t\t\t\t\t\tgame {\r\n\t\t\t\t\t\t\t\t...GameFragment\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbet\r\n\t\t\t\t\t\t\tpayout\r\n\t\t\t\t\t\t\twinloss\r\n\t\t\t\t\t\t\tjackpotPayout\r\n\t\t\t\t\t\t\tjackpotContribution\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeSettled\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t\tmetadata\r\n\t\t\t\t\t\t\tvendorRoundId\r\n\t\t\t\t\t\t\tbetContent\r\n\t\t\t\t\t\t\tcontestName\r\n\t\t\t\t\t\t\texternalCategory\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface LatestBetRecord {\r\n\tid: string;\r\n\tmember: {\r\n\t\tid: string;\r\n\t\tname: string;\r\n\t};\r\n\tgame: Game;\r\n\tbet: Decimal;\r\n\tpayout: Decimal;\r\n\tvalidBet: Decimal;\r\n\tdateTimeSettled: DateString;\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface LatestBetRecordsQuery {\r\n\tlatestBetRecords: LatestBetRecord[];\r\n}\r\n\r\nexport const LATEST_BET_RECORDS_QUERY = gql`\r\n\tquery LatestBetRecords {\r\n\t\tlatestBetRecords {\r\n\t\t\tid\r\n\t\t\tmember {\r\n\t\t\t\tid\r\n\t\t\t\tname\r\n\t\t\t}\r\n\t\t\tgame {\r\n\t\t\t\t...GameFragment\r\n\t\t\t}\r\n\t\t\tbet\r\n\t\t\tpayout\r\n\t\t\tvalidBet\r\n\t\t\tdateTimeSettled\r\n\t\t\tdateTimeCreated\r\n\t\t}\r\n\t}\r\n\r\n\t${GAME_FRAGMENT}\r\n`;\r\n","import { gql } from '../utils/gql';\r\nimport type { DateString } from './types';\r\n\r\nexport type FileStatus = 'UPLOADING' | 'READY' | 'FAILED' | 'DELETED';\r\n\r\nexport interface File__Uploading {\r\n\tid: string;\r\n\turl?: never;\r\n\tstatus: 'UPLOADING';\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface File__Failed {\r\n\tid: string;\r\n\turl?: never;\r\n\tstatus: 'FAILED';\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface File__Deleted {\r\n\tid: string;\r\n\turl?: string | null;\r\n\tstatus: 'DELETED';\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface File__Ready {\r\n\tid: string;\r\n\turl: string;\r\n\tstatus: 'READY';\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport type File = File__Uploading | File__Failed | File__Deleted | File__Ready;\r\n\r\nexport interface FileQuery {\r\n\tnode?: File | null;\r\n}\r\n\r\nexport interface FileQueryVariables {\r\n\tid: string;\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 type UploadPrivateImageFileError =\r\n\t| 'FileFormatNotSupportedError'\r\n\t| 'FileNameTooLongError'\r\n\t| 'FileSizeTooBigError';\r\n\r\nexport interface UploadPrivateImageFileMutation {\r\n\tuploadPrivateImageFile?: null | { __typename: UploadPrivateImageFileError };\r\n}\r\n\r\nexport interface UploadPrivateImageFileMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tfile: globalThis.File;\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","import { gql } from '../utils/gql';\r\nimport { type File__Ready, FILE_FRAGMENT } from './file';\r\nimport type { DateString, Html } from './types';\r\n\r\nexport type CashbackStatus = 'ACTIVE' | 'INACTIVE';\r\n\r\nexport interface Cashback {\r\n\tid: string;\r\n\tname: string;\r\n\tbanner: File__Ready;\r\n\tstatus: CashbackStatus;\r\n\tdescription: Html;\r\n\tactivationStartDateTime: DateString;\r\n\tactivationEndDateTime: DateString;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface CashbacksQuery {\r\n\tcashbacks: Cashback[];\r\n}\r\n\r\nexport const CASHBACK_FRAGMENT = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tfragment CashbackFragment on Cashback {\r\n\t\tid\r\n\t\tname\r\n\t\tbanner {\r\n\t\t\t...FileFragment\r\n\t\t}\r\n\t\tstatus\r\n\t\tdescription\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tdateTimeCreated\r\n\t\tdateTimeLastUpdated\r\n\t}\r\n`;\r\n\r\nexport const CASHBACKS_QUERY = gql`\r\n\t${CASHBACK_FRAGMENT}\r\n\r\n\tquery Cashbacks {\r\n\t\tcashbacks {\r\n\t\t\t...CashbackFragment\r\n\t\t}\r\n\t}\r\n`;\r\n","import { gql } from '../utils/gql';\r\nimport { type File__Ready, FILE_FRAGMENT } from './file';\r\nimport type { DateString, EnumFilterField, Html } from './types';\r\n\r\nexport type PromoType = 'DEPOSIT';\r\n\r\nexport type PromoStatus = 'ACTIVE' | 'INACTIVE' | 'DISABLED';\r\n\r\nexport interface Promo {\r\n\tid: string;\r\n\ttype: PromoType;\r\n\tname: string;\r\n\tbanner: File__Ready;\r\n\tstatus: PromoStatus;\r\n\tdescription: Html;\r\n\tminimumBonusAmount?: string | null;\r\n\tmaximumBonusAmount?: string | null;\r\n\tactivationStartDateTime: DateString;\r\n\tactivationEndDateTime: DateString;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface PromosQuery {\r\n\tpromos: Promo[];\r\n}\r\n\r\nexport const PROMO_FRAGMENT = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tfragment PromoFragment on Promo {\r\n\t\tid\r\n\t\ttype\r\n\t\tname\r\n\t\tbanner {\r\n\t\t\t...FileFragment\r\n\t\t}\r\n\t\tstatus\r\n\t\tdescription\r\n\t\tmaximumBonusAmount\r\n\t\tminimumBonusAmount\r\n\t\tactivationStartDateTime\r\n\t\tactivationEndDateTime\r\n\t\tdateTimeCreated\r\n\t\tdateTimeLastUpdated\r\n\t}\r\n`;\r\n\r\nexport const PROMOS_QUERY = gql`\r\n\t${PROMO_FRAGMENT}\r\n\r\n\tquery Promos {\r\n\t\tpromos {\r\n\t\t\t...PromoFragment\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface AvailablePromosQuery {\r\n\tavailablePromos: Promo[];\r\n}\r\n\r\nexport interface AvailablePromosQueryVariables {\r\n\tfilter?: {\r\n\t\ttype?: EnumFilterField<PromoType>;\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","import type { DepositRecord } from '..';\r\nimport { gql } from '../utils/gql';\r\nimport type { Cashback } from './cashback';\r\nimport { CASHBACK_FRAGMENT } from './cashback';\r\nimport { PROMO_FRAGMENT, type Promo } from './promo';\r\nimport type { DateString, Decimal } from './types';\r\n\r\nexport interface Bonus {\r\n\tid: string;\r\n\tpromo: Promo;\r\n\tdeposit?: Omit<DepositRecord, 'id' | 'depositNumber'> | null;\r\n\tamount: Decimal;\r\n\tbalance: Decimal;\r\n\tturnoverRequirement: Decimal;\r\n\tcurrentTurnoverRequirementContribution: Decimal;\r\n\tcurrentTurnoverRequirementContributionPercentage: Decimal;\r\n\texpiration: DateString;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface BonusQuery {\r\n\tbonus?: Bonus | null;\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 interface CashbackBonus {\r\n\tid: string;\r\n\tbalance: Decimal;\r\n\tcashback: Cashback;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface CashbackBonusesQuery {\r\n\tcashbackBonuses: CashbackBonus[];\r\n}\r\n\r\nexport const CASHBACK_BONUSES_QUERY = gql`\r\n\t${CASHBACK_FRAGMENT}\r\n\r\n\tquery CashbackBonuses {\r\n\t\tcashbackBonuses {\r\n\t\t\tid\r\n\t\t\tbalance\r\n\t\t\tcashback {\r\n\t\t\t\t...CashbackFragment\r\n\t\t\t}\r\n\t\t\tdateTimeCreated\r\n\t\t\tdateTimeLastUpdated\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type ClaimCashbackBonusError = 'CashbackBonusDoesNotExistError';\r\n\r\nexport interface ClaimCashbackBonusMutation {\r\n\tclaimCashbackBonus?: null | { __typename: ClaimCashbackBonusError };\r\n}\r\n\r\nexport interface ClaimCashbackBonusMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\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","import { gql } from '../utils/gql';\r\nimport type {\r\n\tDateFilterField,\r\n\tDateString,\r\n\tDecimal,\r\n\tEnumFilterField,\r\n\tPaginatedQuery,\r\n\tStringFilterField,\r\n} from './types';\r\n\r\nexport type DepositRecordType = 'BANK' | 'GCASH' | 'MANUAL' | 'MAYA' | 'MAYA_APP';\r\n\r\nexport type DepositRecordStatus =\r\n\t| 'PENDING'\r\n\t| 'ACCEPTED'\r\n\t| 'APPROVED'\r\n\t| 'REJECTED'\r\n\t| 'CONFIRMED'\r\n\t| 'CANCELLED';\r\n\r\nexport interface DepositRecord {\r\n\tid: string;\r\n\ttype: DepositRecordType;\r\n\tstatus: DepositRecordStatus;\r\n\tamount: Decimal;\r\n\tnetAmount: Decimal;\r\n\tfee: Decimal;\r\n\treference?: string | null;\r\n\tdepositNumber: string;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface DepositRecordsQuery {\r\n\tmember: PaginatedQuery<'depositRecords', DepositRecord>;\r\n}\r\n\r\nexport interface DepositRecordsQueryVariables {\r\n\tfirst?: number;\r\n\tafter?: string;\r\n\tfilter?: {\r\n\t\tdepositNumber?: StringFilterField;\r\n\t\ttype?: EnumFilterField<DepositRecordType>;\r\n\t\treference?: StringFilterField;\r\n\t\tstatus?: EnumFilterField<DepositRecordStatus>;\r\n\t\tdateTimeCreated?: DateFilterField;\r\n\t\tdateTimeLastUpdated?: DateFilterField;\r\n\t};\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 type CreateDepositError =\r\n\t| 'DepositPromoMaximumAmountExceededError'\r\n\t| 'DepositPromoMinimumAmountNotMetError'\r\n\t| 'HasActiveBonusError'\r\n\t| 'MaximumDepositAmountExceededError'\r\n\t| 'MinimumDepositAmountNotMetError'\r\n\t| 'MinimumFirstDepositAmountNotMetError'\r\n\t| 'PromoNotEnabledError'\r\n\t| 'WalletDoesNotExistError';\r\n\r\nexport interface CreateGCashDepositMutation {\r\n\tcreateGCashDeposit?: null | { __typename: CreateDepositError };\r\n}\r\n\r\nexport interface CreateGCashDepositMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\tpromo?: string;\r\n\t};\r\n}\r\n\r\nexport const CREATE_GCASH_DEPOSIT_MUTATION = gql`\r\n\tmutation CreateGCashDeposit($input: CreateGCashDepositInput!) {\r\n\t\tcreateGCashDeposit(input: $input) {\r\n\t\t\t... on DepositPromoMaximumAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on DepositPromoMinimumAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on HasActiveBonusError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MaximumDepositAmountExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumFirstDepositAmountNotMetError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on PromoNotEnabledError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WalletDoesNotExistError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface CreateMayaDepositMutation {\r\n\tcreateMayaDeposit?: null | { __typename: CreateDepositError };\r\n}\r\n\r\nexport interface CreateMayaDepositMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\tpromo?: string;\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 interface CreateMayaAppDepositMutation {\r\n\tcreateMayaAppDeposit?: null | { __typename: CreateDepositError };\r\n}\r\n\r\nexport interface CreateMayaAppDepositMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\tpromo?: string;\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 type DepositType = 'GCASH' | 'MAYA' | 'MAYA_APP';\r\n\r\nexport interface Deposit extends Omit<DepositRecord, 'type' | 'depositNumber'> {\r\n\ttype: DepositType;\r\n\tcheckoutUrl?: string;\r\n}\r\n\r\nexport interface DepositQuery {\r\n\tnode?: Deposit | null;\r\n}\r\n\r\nexport interface DepositQueryVariables {\r\n\tid: string;\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\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\tcheckoutUrl\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\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\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\tcheckoutUrl\r\n\t\t\t\tdateTimeCreated\r\n\t\t\t\tdateTimeLastUpdated\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\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}\r\n\t}\r\n`;\r\n\r\nexport interface DepositsCountQuery {\r\n\tmember: {\r\n\t\tdepositsCount: number;\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","import { gql } from '../utils/gql';\r\nimport { FILE_FRAGMENT, type File } from './file';\r\nimport type { SecretQuestion } from './session';\r\nimport type { DateString, Decimal } from './types';\r\n\r\nexport interface Member {\r\n\tdateTimeLastActive?: DateString | null;\r\n}\r\n\r\nexport interface MemberQuery {\r\n\tmember: Member;\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\nexport type MemberAccountStatus = 'ACTIVE' | 'DISABLED' | 'BLACKLISTED';\r\n\r\nexport type MemberAccountVerificationStatus = 'UNVERIFIED' | 'PENDING' | 'VERIFIED';\r\n\r\nexport type MemberVerificationStatus =\r\n\t| 'PENDING'\r\n\t| 'APPROVED'\r\n\t| 'REJECTED'\r\n\t| 'VERIFIED'\r\n\t| 'UNVERIFIED';\r\n\r\n/* [account] Query.self */\r\nexport interface MemberAccount {\r\n\tid: string;\r\n\tname: string;\r\n\tstatus: MemberAccountStatus;\r\n\trealName?: string | null;\r\n\tnickName?: string | null;\r\n\tbirthDay?: DateString | null;\r\n\tvalidId?: string | null;\r\n\temailAddress?: string | null;\r\n\tmobileNumber?: string | null;\r\n\tverified: boolean;\r\n\tverificationStatus: MemberAccountVerificationStatus;\r\n\tmobileNumberVerified?: boolean | null;\r\n\tmobileNumberVerificationRequired?: boolean | null;\r\n\ttransactionPassword: boolean;\r\n\tsecretAnswerSubmitted?: boolean | null;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface MemberAccountQuery {\r\n\tmemberAccount: MemberAccount;\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 interface MemberVerification {\r\n\tid: string;\r\n\tstatus: MemberVerificationStatus;\r\n\taddress: string;\r\n\tsourceOfIncome: string;\r\n\tnatureOfWork: string;\r\n\tnationality: string;\r\n\tplaceOfBirth: string;\r\n\tidFrontImage: File;\r\n\tselfieImage: File;\r\n}\r\n\r\nexport interface MemberVerificationQuery {\r\n\tmemberAccount: {\r\n\t\tverification?: MemberVerification | null;\r\n\t};\r\n}\r\n\r\nexport const MEMBER_VERIFICATION_QUERY = gql`\r\n\t${FILE_FRAGMENT}\r\n\r\n\tquery MemberVerification {\r\n\t\tmemberAccount: self {\r\n\t\t\t... on MemberAccount {\r\n\t\t\t\tverification {\r\n\t\t\t\t\tid\r\n\t\t\t\t\tstatus\r\n\t\t\t\t\taddress\r\n\t\t\t\t\tsourceOfIncome\r\n\t\t\t\t\tnatureOfWork\r\n\t\t\t\t\tnationality\r\n\t\t\t\t\tplaceOfBirth\r\n\t\t\t\t\tidFrontImage {\r\n\t\t\t\t\t\t...FileFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t\tselfieImage {\r\n\t\t\t\t\t\t...FileFragment\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type RegisterMemberAccountError =\r\n\t| 'AccountNameNotAvailableError'\r\n\t| 'InvalidPlatformError'\r\n\t| 'InvalidReCAPTCHAResponseError'\r\n\t| 'InvalidSMSVerificationCodeError'\r\n\t| 'MinimumAgeRequirementError'\r\n\t| 'MobileNumberNotAvailableError';\r\n\r\nexport interface RegisterMemberAccountMutation {\r\n\tregisterMemberAccount?: null | { __typename: RegisterMemberAccountError };\r\n}\r\n\r\nexport interface RegisterMemberAccountMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tname: string;\r\n\t\tpassword: string;\r\n\t\tmobileNumber: string;\r\n\t\tbirthDay: string;\r\n\t\tdomain?: string;\r\n\t\tbtag?: string;\r\n\t};\r\n\tverificationCode?: string;\r\n\treCAPTCHAResponse?: string;\r\n}\r\n\r\nexport const REGISTER_MEMBER_ACCOUNT_MUTATION = gql`\r\n\tmutation RegisterMemberAccount(\r\n\t\t$input: RegisterMemberAccountInput!\r\n\t\t$referralCode: String\r\n\t\t$verificationCode: String\r\n\t\t$reCAPTCHAResponse: String\r\n\t) {\r\n\t\tregisterMemberAccount(\r\n\t\t\tinput: $input\r\n\t\t\treferralCode: $referralCode\r\n\t\t\tverificationCode: $verificationCode\r\n\t\t\treCAPTCHAResponse: $reCAPTCHAResponse\r\n\t\t) {\r\n\t\t\t... on AccountNameNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidReCAPTCHAResponseError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidSMSVerificationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MinimumAgeRequirementError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotAvailableError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type UpdateMemberAccountError =\r\n\t| 'AccountNameNotAvailableError'\r\n\t| 'EmailAddressNotAvailableError'\r\n\t| 'InvalidTransactionPasswordError'\r\n\t| 'MobileNumberNotAvailableError'\r\n\t| 'NickNameNotAvailableError'\r\n\t| 'RealNameAlreadySetError'\r\n\t| 'ValidIdAlreadySetError';\r\n\r\nexport interface UpdateMemberAccountMutation {\r\n\tupdateMemberAccount?: null | { __typename: UpdateMemberAccountError };\r\n}\r\n\r\nexport interface UpdateMemberAccountMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tdata: {\r\n\t\t\tname?: string;\r\n\t\t\tpassword?: string;\r\n\t\t\temailAddress?: string;\r\n\t\t\tmobileNumber?: string;\r\n\t\t\trealName?: string;\r\n\t\t\tnickName?: string;\r\n\t\t\ttransactionPassword?: string;\r\n\t\t\tvalidId?: string;\r\n\t\t\tmobileNumberVerificationRequired?: boolean;\r\n\t\t\tsecretQuestion?: SecretQuestion;\r\n\t\t\tsecretAnswer?: string;\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 type ResetPasswordError = 'AccountNotFoundError' | 'InvalidVerificationCodeError';\r\n\r\nexport interface ResetPasswordMutation {\r\n\tresetPassword?: null | { __typename: ResetPasswordError };\r\n}\r\n\r\nexport interface ResetPasswordMutationVariables {\r\n\tinput: {\r\n\t\tmobileNumber: string;\r\n\t\tnewPassword: string;\r\n\t};\r\n\tverificationCode: string;\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 interface DeleteMemberAccountMutation {\r\n\tdeleteMemberAccount: boolean;\r\n}\r\n\r\nexport interface DeleteMemberAccountMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\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 type SendVerificationCodeError =\r\n\t| 'InvalidPlatformError'\r\n\t| 'NotReadyToSendVerficationCodeError';\r\n\r\nexport interface SendVerificationCodeMutation {\r\n\tsendVerificationCode?: null | { __typename: SendVerificationCodeError };\r\n}\r\n\r\nexport interface SendVerificationCodeMutationVariables {\r\n\tinput: {\r\n\t\tchannel: 'SMS' | 'EMAIL';\r\n\t\trecipient: string;\r\n\t};\r\n}\r\n\r\nexport const SEND_VERIFICATION_CODE_MUTATION = gql`\r\n\tmutation SendVerificationCode($input: SendVerificationCodeInput!) {\r\n\t\tsendVerificationCode(input: $input) {\r\n\t\t\t... on InvalidPlatformError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotReadyToSendVerficationCodeError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type VerifyMobileNumberError =\r\n\t| 'InvalidSMSVerificationCodeError'\r\n\t| 'MobileNumberAlreadyVerifiedError';\r\n\r\nexport interface VerifyMobileNumberMutation {\r\n\tverifyMobileNumber?: null | { __typename: VerifyMobileNumberError };\r\n}\r\n\r\nexport interface VerifyMobileNumberMutationVariables {\r\n\tinput: {\r\n\t\tverificationCode: string;\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 type CreateMemberVerificationError =\r\n\t| 'FileDoesNotExistError'\r\n\t| 'FileNotReadyError'\r\n\t| 'MemberVerificationAlreadyExistsError';\r\n\r\nexport interface CreateMemberVerificationMutation {\r\n\tcreateMemberVerification?: null | { __typename: CreateMemberVerificationError };\r\n}\r\n\r\nexport interface CreateMemberVerificationMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tidFrontImage: string;\r\n\t\tselfieImage: string;\r\n\t\taddress: string;\r\n\t\tsourceOfIncome: string;\r\n\t\tnatureOfWork: string;\r\n\t\tnationality: string;\r\n\t\tplaceOfBirth: string;\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 type UpdateMemberVerificationError =\r\n\t| 'FileDoesNotExistError'\r\n\t| 'FileNotReadyError'\r\n\t| 'MemberVerificationAlreadyApprovedError'\r\n\t| 'MemberVerificationDoesNotExistError';\r\n\r\nexport interface UpdateMemberVerificationMutation {\r\n\tupdateMemberVerification?: null | { __typename: UpdateMemberVerificationError };\r\n}\r\n\r\nexport interface UpdateMemberVerificationMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tdata: {\r\n\t\t\tidFrontImage?: string;\r\n\t\t\tselfieImage?: string;\r\n\t\t\taddress?: string;\r\n\t\t\tsourceOfIncome?: string;\r\n\t\t\tnatureOfWork?: string;\r\n\t\t\tnationality?: string;\r\n\t\t\tplaceOfBirth?: string;\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 interface ProfileCompletion {\r\n\tcompletionPercentage: Decimal;\r\n\tpersonalInformation: boolean;\r\n\taccountVerification: boolean;\r\n\tmobileNumberVerification: boolean;\r\n\ttransactionPassword: boolean;\r\n\taccountPassword: boolean;\r\n}\r\n\r\nexport interface ProfileCompletionQuery {\r\n\tprofileCompletion: ProfileCompletion;\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","import { gql } from '../utils/gql';\r\nimport type { Decimal } from './types';\r\n\r\nexport interface DepositGatewaySettings {\r\n\tminimumAmount: string;\r\n\tmaximumAmount: string;\r\n\twebEnabled: boolean;\r\n\tmobileWebEnabled: boolean;\r\n\tandroidEnabled: boolean;\r\n\tiosEnabled: boolean;\r\n}\r\n\r\nexport interface WithdrawalGatewaySettings {\r\n\tminimumAmount: Decimal;\r\n\tmaximumAmount: Decimal;\r\n\tfixedFee?: Decimal | null;\r\n\tpercentageFee?: Decimal | null;\r\n\twebEnabled: boolean;\r\n\tmobileWebEnabled: boolean;\r\n\tandroidEnabled: boolean;\r\n\tiosEnabled: boolean;\r\n}\r\n\r\nexport interface PointsClubSettings {\r\n\tmultiplier: Decimal;\r\n}\r\n\r\nexport interface Platform {\r\n\trestrictWithdrawalsToVerifiedMembers: boolean;\r\n\tminimumFirstDepositAmount: Decimal;\r\n\tbankDepositGatewaySettings?: DepositGatewaySettings | null;\r\n\tgcashDepositGatewaySettings?: DepositGatewaySettings | null;\r\n\tmayaDepositGatewaySettings?: DepositGatewaySettings | null;\r\n\tmayaAppDepositGatewaySettings?: DepositGatewaySettings | null;\r\n\tbankWithdrawalGatewaySettings?: WithdrawalGatewaySettings | null;\r\n\tgcashWithdrawalGatewaySettings?: WithdrawalGatewaySettings | null;\r\n\tmayaWithdrawalGatewaySettings?: WithdrawalGatewaySettings | null;\r\n\tmayaAppWithdrawalGatewaySettings?: WithdrawalGatewaySettings | null;\r\n\tpointsClubSettings?: PointsClubSettings | null;\r\n}\r\n\r\nexport type PlatformQuery = Platform;\r\n\r\nexport const PLATFORM_QUERY = gql`\r\n\tfragment DepositGatewaySettingsCoreData on DepositGatewaySettings {\r\n\t\tminimumAmount\r\n\t\tmaximumAmount\r\n\t\tfixedFee\r\n\t\tpercentageFee\r\n\t\twebEnabled\r\n\t\tmobileWebEnabled\r\n\t\tandroidEnabled\r\n\t\tiosEnabled\r\n\t}\r\n\r\n\tfragment WithdrawalGatewaySettingsCoreData on WithdrawalGatewaySettings {\r\n\t\tminimumAmount\r\n\t\tmaximumAmount\r\n\t\tfixedFee\r\n\t\tpercentageFee\r\n\t\twebEnabled\r\n\t\tmobileWebEnabled\r\n\t\tandroidEnabled\r\n\t\tiosEnabled\r\n\t}\r\n\r\n\tquery Platform {\r\n\t\tminimumFirstDepositAmount\r\n\t\trestrictWithdrawalsToVerifiedMembers\r\n\t\tbankDepositGatewaySettings: depositGatewaySettings(gateway: BANK) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tgcashDepositGatewaySettings: depositGatewaySettings(gateway: GCASH) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaDepositGatewaySettings: depositGatewaySettings(gateway: MAYA) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaAppDepositGatewaySettings: depositGatewaySettings(gateway: MAYA_APP) {\r\n\t\t\t...DepositGatewaySettingsCoreData\r\n\t\t}\r\n\t\tbankWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: BANK) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tgcashWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: GCASH) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: MAYA) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tmayaAppWithdrawalGatewaySettings: withdrawalGatewaySettings(gateway: MAYA_APP) {\r\n\t\t\t...WithdrawalGatewaySettingsCoreData\r\n\t\t}\r\n\t\tpointsClubSettings {\r\n\t\t\tmultiplier\r\n\t\t}\r\n\t}\r\n`;\r\n","import { gql } from '../utils/gql';\r\nimport type { DateString, Decimal } from './types';\r\n\r\nexport interface PointsWallet {\r\n\tid: string;\r\n\tpoints: Decimal;\r\n\taccount: string;\r\n\tdateTimeCreated: DateString;\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 interface PointsWalletQuery {\r\n\tpointsWallet?: PointsWallet | null;\r\n}\r\n\r\nexport const POINTS_TO_CASH_CONVERSION_MUTATION = gql`\r\n\tmutation PointsToCashConversion($input: PointsToCashConversionInput!) {\r\n\t\tpointsToCashConversion(input: $input) {\r\n\t\t\t... on InsufficientPointsError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface PointsToCashConversionMutationVariables {\r\n\tinput: {\r\n\t\tamount: Decimal;\r\n\t};\r\n}\r\n\r\nexport type PointsToCashConversionError = 'InsufficientPointsError';\r\n\r\nexport interface PointsToCashConversionMutation {\r\n\tpointsToCashConversion?: null | { __typename: PointsToCashConversionError };\r\n}\r\n","import { gql } from '../utils/gql';\r\nimport type { DateString } from './types';\r\n\r\nexport interface Session {\r\n\tid: string;\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface CreateSessionInput__NameAndPassword {\r\n\ttype: 'NAME_AND_PASSWORD';\r\n\tname: string;\r\n\tpassword: string;\r\n}\r\n\r\nexport interface CreateSessionInput__MobileNumber {\r\n\ttype: 'MOBILE_NUMBER';\r\n\tmobileNumber: string;\r\n\tverificationCode: string;\r\n}\r\n\r\nexport interface CreateSessionInput__Maya {\r\n\ttype: 'MAYA';\r\n\tsessionId: string;\r\n}\r\n\r\nexport type CreateSessionInput =\r\n\t| CreateSessionInput__NameAndPassword\r\n\t| CreateSessionInput__MobileNumber\r\n\t| CreateSessionInput__Maya;\r\n\r\nexport type SecretQuestion =\r\n\t| 'FIRST_PET'\r\n\t| 'FIRST_CAR'\r\n\t| 'FIRST_SCHOOL'\r\n\t| 'FAVORITE_BOOK'\r\n\t| 'FAVORITE_TEACHER'\r\n\t| 'BEST_CHILDHOOD_FRIEND'\r\n\t| 'BIRTH_PLACE'\r\n\t| 'MOTHERS_MAIDEN_NAME'\r\n\t| 'PARENTS_MET_CITY'\r\n\t| 'FAVORITE_MOVIE';\r\n\r\nexport interface Authenticator__SecurityQuestion {\r\n\ttype: 'SECURITY_QUESTION';\r\n\ttoken: string;\r\n\tsecretQuestion: SecretQuestion;\r\n}\r\n\r\nexport type Authenticator = Authenticator__SecurityQuestion;\r\n\r\nexport type CreateSessionMutation__NameAndPassword =\r\n\t| {\r\n\t\t\tsession: Session;\r\n\t\t\taccessToken?: never;\r\n\t\t\trefreshToken?: never;\r\n\t\t\tauthenticator: Authenticator;\r\n\t }\r\n\t| {\r\n\t\t\tsession: Session;\r\n\t\t\taccessToken: string;\r\n\t\t\trefreshToken: string;\r\n\t\t\tauthenticator?: never;\r\n\t };\r\n\r\nexport interface CreateSessionMutation__MobileNumber {\r\n\tsession: Session;\r\n\taccessToken: string;\r\n\trefreshToken: string;\r\n}\r\n\r\nexport interface CreateSessionMutation__Maya {\r\n\tsession: Session;\r\n\taccessToken: string;\r\n\trefreshToken: string;\r\n}\r\n\r\nexport type CreateSessionMutation =\r\n\t| CreateSessionMutation__NameAndPassword\r\n\t| CreateSessionMutation__MobileNumber\r\n\t| CreateSessionMutation__Maya;\r\n\r\nexport type CreateSessionError = 'AccountNotFound' | 'AccountBlacklisted';\r\nexport type RefreshSessionError = 'InvalidToken' | 'AccountBlacklisted' | 'SessionExpired';\r\n\r\nexport interface RefreshSessionMutation {\r\n\taccessToken: string;\r\n\trefreshToken: string;\r\n}\r\n\r\nexport interface AuthenticateInput__SecurityQuestion {\r\n\ttype: 'SECURITY_QUESTION';\r\n\ttoken: string;\r\n\tsecretAnswer: string;\r\n}\r\n\r\nexport type AuthenticateInput = AuthenticateInput__SecurityQuestion;\r\nexport type AuthenticateError = 'InvalidTokenOrSecretAnswer';\r\n\r\nexport interface AuthenticateMutation {\r\n\tsession: Session;\r\n\taccessToken: string;\r\n\trefreshToken: string;\r\n}\r\n\r\nexport interface MayaSession {\r\n\tid: string;\r\n\tmember?: string;\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface MayaSessionQuery {\r\n\tmayaSession?: MayaSession | null;\r\n}\r\n\r\nexport interface MayaSessionQueryVariables {\r\n\tid: string;\r\n}\r\n\r\nexport const MAYA_SESSION_QUERY = gql`\r\n\tquery MayaSession($id: ObjectId!) {\r\n\t\tmayaSession(id: $id) {\r\n\t\t\tid\r\n\t\t\tmember\r\n\t\t\tdateTimeCreated\r\n\t\t}\r\n\t}\r\n`;\r\n","import { gql } from '../utils/gql';\r\nimport type {\r\n\tDateFilterField,\r\n\tDateString,\r\n\tDecimal,\r\n\tEnumFilterField,\r\n\tPaginatedQuery,\r\n\tStringFilterField,\r\n} from './types';\r\n\r\nexport type TransactionRecordType =\r\n\t| 'DEPOSIT'\r\n\t| 'PAYOUT'\r\n\t| 'WITHDRAWAL_REFUND'\r\n\t| 'TRANSFER_IN'\r\n\t| 'WITHDRAWAL'\r\n\t| 'BET'\r\n\t| 'TRANSFER_OUT'\r\n\t| 'ROLLBACK'\r\n\t| 'BET_REFUND'\r\n\t| 'PAYOUT_REFUND'\r\n\t| 'CASHBACK_BONUS'\r\n\t| 'BONUS'\r\n\t| 'RESERVE'\r\n\t| 'REJECT_WITHDRAWAL'\r\n\t| 'MANUAL_DEPOSIT'\r\n\t| 'GCASH_DEPOSIT'\r\n\t| 'MANUAL_WITHDRAWAL'\r\n\t| 'BANK_WITHDRAWAL'\r\n\t| 'GCASH_WITHDRAWAL'\r\n\t| 'COMMIT_RESERVE'\r\n\t| 'ROLLBACK_PAYOUT'\r\n\t| 'ROLLBACK_RESERVE';\r\n\r\nexport interface TransactionRecord {\r\n\tid: string;\r\n\ttype: TransactionRecordType;\r\n\tamount: Decimal;\r\n\tcontent?: string | null;\r\n\tcurrentBalance: Decimal;\r\n\treferenceNumber: string;\r\n\tdateTimeCreated: DateString;\r\n}\r\n\r\nexport interface TransactionRecordsQuery {\r\n\tmember: PaginatedQuery<'transactionRecords', TransactionRecord>;\r\n}\r\n\r\nexport interface TransactionRecordsQueryVariables {\r\n\tfirst?: number;\r\n\tafter?: string;\r\n\tfilter?: {\r\n\t\treferenceNumber?: StringFilterField;\r\n\t\ttype?: EnumFilterField<TransactionRecordType>;\r\n\t\tdateTimeCreated?: DateFilterField;\r\n\t};\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","import { gql } from '../utils/gql';\r\nimport type { DateString, Decimal } from './types';\r\n\r\nexport type Currency = 'PHP' | 'USD';\r\n\r\nexport interface Wallet {\r\n\tid: string;\r\n\tbalance: Decimal;\r\n\tcurrency: Currency;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface WalletQuery {\r\n\twallet?: Wallet | null;\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","import { gql } from '../utils/gql';\r\nimport type {\r\n\tDateFilterField,\r\n\tDateString,\r\n\tDecimal,\r\n\tEnumFilterField,\r\n\tPaginatedQuery,\r\n\tStringFilterField,\r\n} from './types';\r\n\r\nexport type Bank = 'AUBKPHMM' | 'MBTCPHMM' | 'BNORPHMM' | 'MKRUPHM1';\r\n\r\nexport type WithdrawalRecordStatus =\r\n\t| 'PENDING'\r\n\t| 'ACCEPTED'\r\n\t| 'APPROVED'\r\n\t| 'REJECTED'\r\n\t| 'CONFIRMED'\r\n\t| 'CANCELLED';\r\n\r\nexport type WithdrawalRecordType = 'MANUAL' | 'BANK' | 'GCASH' | 'MAYA_APP';\r\n\r\ninterface Common {\r\n\tid: string;\r\n\tfee: Decimal;\r\n\tamount: Decimal;\r\n\tnetAmount: Decimal;\r\n\tstatus: WithdrawalRecordStatus;\r\n\treference?: string | null;\r\n\twithdrawalNumber: string;\r\n\tdateTimeConfirmed?: DateString | null;\r\n\tdateTimeCreated: DateString;\r\n\tdateTimeLastUpdated: DateString;\r\n}\r\n\r\nexport interface ManualWithdrawalRecord extends Common {\r\n\ttype: 'MANUAL';\r\n\tbank?: never;\r\n\trecipientMobileNumber?: never;\r\n}\r\n\r\nexport interface BankWithdrawalRecord extends Common {\r\n\ttype: 'BANK';\r\n\tbank: Bank;\r\n\trecipientMobileNumber?: never;\r\n}\r\n\r\nexport interface GCashWithdrawalRecord extends Common {\r\n\ttype: 'GCASH';\r\n\tbank?: never;\r\n\trecipientMobileNumber: string;\r\n}\r\n\r\nexport interface MayaAppWithdrawalRecord extends Common {\r\n\ttype: 'MAYA_APP';\r\n\tbank?: never;\r\n\trecipientMobileNumber?: never;\r\n}\r\n\r\nexport type WithdrawalRecord =\r\n\t| ManualWithdrawalRecord\r\n\t| BankWithdrawalRecord\r\n\t| GCashWithdrawalRecord\r\n\t| MayaAppWithdrawalRecord;\r\n\r\nexport interface WithdrawalRecordsQuery {\r\n\tmember: PaginatedQuery<'withdrawalRecords', WithdrawalRecord>;\r\n}\r\n\r\nexport interface WithdrawalRecordsQueryVariables {\r\n\tfirst?: number;\r\n\tafter?: string;\r\n\tfilter?: {\r\n\t\twithdrawalNumber?: StringFilterField;\r\n\t\ttype?: EnumFilterField<WithdrawalRecordType>;\r\n\t\treference?: StringFilterField;\r\n\t\tstatus?: EnumFilterField<WithdrawalRecordStatus>;\r\n\t\tdateTimeCreated?: DateFilterField;\r\n\t\tdateTimeLastUpdated?: DateFilterField;\r\n\t};\r\n}\r\n\r\nexport const WITHDRAWAL_RECORDS_QUERY = gql`\r\n\tquery WithdrawalRecords($first: Int, $after: Cursor, $filter: WithdrawalRecordFilterInput) {\r\n\t\tmember {\r\n\t\t\twithdrawalRecords(first: $first, after: $after, filter: $filter) {\r\n\t\t\t\tedges {\r\n\t\t\t\t\tcursor\r\n\t\t\t\t\tnode {\r\n\t\t\t\t\t\t... on BankWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tbank\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on GCashWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\trecipientMobileNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on ManualWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t... on MayaAppWithdrawalRecord {\r\n\t\t\t\t\t\t\tid\r\n\t\t\t\t\t\t\ttype\r\n\t\t\t\t\t\t\tfee\r\n\t\t\t\t\t\t\tnetAmount\r\n\t\t\t\t\t\t\treference\r\n\t\t\t\t\t\t\tamount\r\n\t\t\t\t\t\t\tstatus\r\n\t\t\t\t\t\t\twithdrawalNumber\r\n\t\t\t\t\t\t\tdateTimeCreated\r\n\t\t\t\t\t\t\tdateTimeLastUpdated\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ttotalCount\r\n\t\t\t\tpageInfo {\r\n\t\t\t\t\thasNextPage\r\n\t\t\t\t\tendCursor\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport type CreateWithdrawalError =\r\n\t| 'AccountNotVerifiedError'\r\n\t| 'InvalidTransactionPasswordError'\r\n\t| 'InvalidWithdrawalAmountError'\r\n\t| 'MobileNumberNotVerifiedError'\r\n\t| 'NotEnoughBalanceError'\r\n\t| 'WithdrawalDailyLimitExceededError';\r\n\r\nexport interface CreateGCashWithdrawalMutation {\r\n\tcreateGCashWithdrawal?: null | { __typename: CreateWithdrawalError };\r\n}\r\n\r\nexport interface CreateGCashWithdrawalMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\ttransactionPassword: string;\r\n\t\trecipientMobileNumber: string;\r\n\t};\r\n}\r\n\r\nexport const CREATE_GCASH_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateGCashWithdrawal($input: CreateGCashWithdrawalInput!) {\r\n\t\tcreateGCashWithdrawal(input: $input) {\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on MobileNumberNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface CreateMayaWithdrawalMutation {\r\n\tcreateMayaWithdrawal?: null | { __typename: CreateWithdrawalError };\r\n}\r\n\r\nexport interface CreateMayaWithdrawalMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\ttransactionPassword: string;\r\n\t\trecipientMobileNumber: string;\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 interface CreateMayaAppWithdrawalMutation {\r\n\tcreateMayaAppWithdrawal?: null | { __typename: CreateWithdrawalError };\r\n}\r\n\r\nexport interface CreateMayaAppWithdrawalMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\ttransactionPassword: string;\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 interface CreateBankWithdrawalMutation {\r\n\tcreateBankWithdrawal?: null | { __typename: CreateWithdrawalError };\r\n}\r\n\r\nexport interface CreateBankWithdrawalMutationVariables {\r\n\tinput: {\r\n\t\tid: string;\r\n\t\tamount: Decimal;\r\n\t\ttransactionPassword: string;\r\n\t};\r\n}\r\n\r\nexport const CREATE_BANK_WITHDRAWAL_MUTATION = gql`\r\n\tmutation CreateBankWithdrawal($input: CreateBankWithdrawalInput!) {\r\n\t\tcreateBankWithdrawal(input: $input) {\r\n\t\t\t... on MobileNumberNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on AccountNotVerifiedError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidWithdrawalAmountError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on WithdrawalDailyLimitExceededError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on InvalidTransactionPasswordError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t\t... on NotEnoughBalanceError {\r\n\t\t\t\t__typename\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport interface RemainingDailyWithdrawalsCountQuery {\r\n\tremainingDailyWithdrawalsCount: number;\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","import type { OperationError } from '../utils/types';\r\nimport type { ClaimCashbackBonusError } from './bonus';\r\nimport type { CreateDepositError } from './deposit';\r\nimport type { UploadPrivateImageFileError } from './file';\r\nimport type { CreateGameSessionError } from './game';\r\nimport type {\r\n\tCreateMemberVerificationError,\r\n\tRegisterMemberAccountError,\r\n\tResetPasswordError,\r\n\tSendVerificationCodeError,\r\n\tUpdateMemberAccountError,\r\n\tUpdateMemberVerificationError,\r\n\tVerifyMobileNumberError,\r\n} from './member';\r\nimport type { PointsToCashConversionError } from './points';\r\nimport type { AuthenticateError, CreateSessionError, RefreshSessionError } from './session';\r\nimport type { CreateWithdrawalError } from './withdrawal';\r\n\r\ntype E =\r\n\t| ClaimCashbackBonusError\r\n\t| CreateDepositError\r\n\t| UploadPrivateImageFileError\r\n\t| CreateGameSessionError\r\n\t| RegisterMemberAccountError\r\n\t| UpdateMemberAccountError\r\n\t| ResetPasswordError\r\n\t| SendVerificationCodeError\r\n\t| VerifyMobileNumberError\r\n\t| CreateMemberVerificationError\r\n\t| UpdateMemberVerificationError\r\n\t| PointsToCashConversionError\r\n\t| CreateWithdrawalError\r\n\t| CreateSessionError\r\n\t| RefreshSessionError\r\n\t| AuthenticateError;\r\n\r\nexport function createOperationError<T extends E>(code: T): OperationError<T> {\r\n\tconst messages: Record<E, string> = {\r\n\t\tAccountNameNotAvailableError: 'Username is no longer available',\r\n\t\tAccountNotFoundError: 'Account does not exist',\r\n\t\tAccountNotVerifiedError: 'Account is not verified',\r\n\t\tCashbackBonusDoesNotExistError: 'Cashback bonus does not exists',\r\n\t\tDepositPromoMaximumAmountExceededError: 'Deposit amount exceeds maximum amount',\r\n\t\tDepositPromoMinimumAmountNotMetError: 'Deposit amount does not meet minimum amount',\r\n\t\tEmailAddressNotAvailableError: 'Email is no longer available',\r\n\t\tFileDoesNotExistError: 'File does not exist',\r\n\t\tFileFormatNotSupportedError: 'File format is not supported',\r\n\t\tFileNameTooLongError: 'File name is too long',\r\n\t\tFileNotReadyError: 'File is not yet ready',\r\n\t\tFileSizeTooBigError: 'File size is too big',\r\n\t\tGameDoesNotExistError: 'Game does not exist',\r\n\t\tHasActiveBonusError: 'Account has active bonus',\r\n\t\tInsufficientPointsError: 'Insufficient points',\r\n\t\tInvalidPlatformError: 'Invalid platform',\r\n\t\tInvalidReCAPTCHAResponseError: 'Invalid reCAPTCHA',\r\n\t\tInvalidSMSVerificationCodeError: 'Invalid SMS verification code',\r\n\t\tInvalidTransactionPasswordError: 'Invalid transaction password',\r\n\t\tInvalidVerificationCodeError: 'Invalid verification code',\r\n\t\tInvalidWithdrawalAmountError: 'Invalid withdrawal amount',\r\n\t\tMaximumDepositAmountExceededError: 'Maximum deposit amount exceeded',\r\n\t\tMemberVerificationAlreadyApprovedError: 'Member verification is already approved',\r\n\t\tMemberVerificationAlreadyExistsError: 'Member verification already exists',\r\n\t\tMemberVerificationDoesNotExistError: 'Member verification does not exist',\r\n\t\tMinimumAgeRequirementError: 'Minimum age requirement not met',\r\n\t\tMinimumDepositAmountNotMetError: 'Minimum deposit amount not met',\r\n\t\tMinimumFirstDepositAmountNotMetError: 'Minimum first deposit amount not met',\r\n\t\tMobileNumberAlreadyVerifiedError: 'Mobile number is already verified',\r\n\t\tMobileNumberNotAvailableError: 'Mobile number is no longer available',\r\n\t\tMobileNumberNotVerifiedError: 'Mobile number is not verified',\r\n\t\tNickNameNotAvailableError: 'Nickname is no longer available',\r\n\t\tNotEnoughBalanceError: 'Insufficient balance',\r\n\t\tNotReadyToSendVerficationCodeError: 'Not ready to send verification code',\r\n\t\tPromoNotEnabledError: 'Promo is not enabled',\r\n\t\tRealNameAlreadySetError: 'Real name is already set',\r\n\t\tValidIdAlreadySetError: 'Valid ID is already set',\r\n\t\tWalletDoesNotExistError: 'Wallet does not exist',\r\n\t\tWithdrawalDailyLimitExceededError: 'Daily withdrawal limit exceeded',\r\n\r\n\t\tAccountBlacklisted: 'Account is blacklisted',\r\n\t\tAccountNotFound: 'Account not found',\r\n\t\tInvalidToken: 'Invalid token',\r\n\t\tInvalidTokenOrSecretAnswer: 'Invalid token or secret answer',\r\n\t\tSessionExpired: 'Session expired',\r\n\t};\r\n\r\n\treturn {\r\n\t\tname: code,\r\n\t\tmessage: messages[code],\r\n\t};\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type { Announcement, AnnouncementsQuery, AnnouncementsQueryVariables } from './announcement';\r\nimport { ANNOUNCEMENTS_QUERY } from './announcement';\r\nimport type {\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\tProfileCompletion,\r\n\tProfileCompletionQuery,\r\n\tRegisterMemberAccountError,\r\n\tRegisterMemberAccountMutation,\r\n\tRegisterMemberAccountMutationVariables,\r\n\tResetPasswordError,\r\n\tResetPasswordMutation,\r\n\tResetPasswordMutationVariables,\r\n\tSendVerificationCodeError,\r\n\tSendVerificationCodeMutation,\r\n\tSendVerificationCodeMutationVariables,\r\n\tUpdateMemberAccountError,\r\n\tUpdateMemberAccountMutation,\r\n\tUpdateMemberAccountMutationVariables,\r\n\tUpdateMemberVerificationError,\r\n\tUpdateMemberVerificationMutation,\r\n\tUpdateMemberVerificationMutationVariables,\r\n\tVerifyMobileNumberError,\r\n\tVerifyMobileNumberMutation,\r\n\tVerifyMobileNumberMutationVariables,\r\n} from './member';\r\nimport {\r\n\tCREATE_MEMBER_VERIFICATION_MUTATION,\r\n\tDELETE_MEMBER_ACCOUNT_MUTATION,\r\n\tMEMBER_ACCOUNT_QUERY,\r\n\tMEMBER_VERIFICATION_QUERY,\r\n\tPROFILE_COMPLETION_QUERY,\r\n\tREGISTER_MEMBER_ACCOUNT_MUTATION,\r\n\tRESET_PASSWORD_MUTATION,\r\n\tSEND_VERIFICATION_CODE_MUTATION,\r\n\tUPDATE_MEMBER_ACCOUNT_MUTATION,\r\n\tUPDATE_MEMBER_VERIFICATION_MUTATION,\r\n\tVERIFY_MOBILE_NUMBER_MUTATION,\r\n} from './member';\r\nimport type { Platform, PlatformQuery } from './platform';\r\nimport { PLATFORM_QUERY } from './platform';\r\nimport type { PaginatedQueryResult } from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class AccountService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\t/** aka `Query.self` */\r\n\tasync memberAccount(): Promise<OperationResult<never, MemberAccount>> {\r\n\t\tconst res = await this.client.request<MemberAccountQuery>(MEMBER_ACCOUNT_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.memberAccount,\r\n\t\t};\r\n\t}\r\n\r\n\tasync registerMemberAccount(\r\n\t\tvariables: RegisterMemberAccountMutationVariables,\r\n\t): Promise<OperationResult<RegisterMemberAccountError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tRegisterMemberAccountMutation,\r\n\t\t\tRegisterMemberAccountMutationVariables\r\n\t\t>(REGISTER_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.registerMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.registerMemberAccount.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateMemberAccount(\r\n\t\tvariables: UpdateMemberAccountMutationVariables,\r\n\t): Promise<OperationResult<UpdateMemberAccountError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tUpdateMemberAccountMutation,\r\n\t\t\tUpdateMemberAccountMutationVariables\r\n\t\t>(UPDATE_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.updateMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.updateMemberAccount.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync deleteMemberAccount(\r\n\t\tvariables: DeleteMemberAccountMutationVariables,\r\n\t): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tDeleteMemberAccountMutation,\r\n\t\t\tDeleteMemberAccountMutationVariables\r\n\t\t>(DELETE_MEMBER_ACCOUNT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.deleteMemberAccount) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync resetPassword(\r\n\t\tvariables: ResetPasswordMutationVariables,\r\n\t): Promise<OperationResult<ResetPasswordError>> {\r\n\t\tconst res = await this.client.request<ResetPasswordMutation, ResetPasswordMutationVariables>(\r\n\t\t\tRESET_PASSWORD_MUTATION,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.resetPassword) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.resetPassword.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync profileCompletion(): Promise<OperationResult<never, ProfileCompletion>> {\r\n\t\tconst res = await this.client.request<ProfileCompletionQuery>(PROFILE_COMPLETION_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.profileCompletion } : res;\r\n\t}\r\n\r\n\tasync platform(): Promise<OperationResult<never, Platform>> {\r\n\t\treturn await this.client.request<PlatformQuery>(PLATFORM_QUERY);\r\n\t}\r\n\r\n\tasync sendVerificationCode(\r\n\t\tvariables: SendVerificationCodeMutationVariables,\r\n\t): Promise<OperationResult<SendVerificationCodeError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tSendVerificationCodeMutation,\r\n\t\t\tSendVerificationCodeMutationVariables\r\n\t\t>(SEND_VERIFICATION_CODE_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.sendVerificationCode) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.sendVerificationCode.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync verifyMobileNumber(\r\n\t\tvariables: VerifyMobileNumberMutationVariables,\r\n\t): Promise<OperationResult<VerifyMobileNumberError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tVerifyMobileNumberMutation,\r\n\t\t\tVerifyMobileNumberMutationVariables\r\n\t\t>(VERIFY_MOBILE_NUMBER_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.verifyMobileNumber) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.verifyMobileNumber.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMemberVerification(\r\n\t\tvariables: CreateMemberVerificationMutationVariables,\r\n\t): Promise<OperationResult<CreateMemberVerificationError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMemberVerificationMutation,\r\n\t\t\tCreateMemberVerificationMutationVariables\r\n\t\t>(CREATE_MEMBER_VERIFICATION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMemberVerification) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMemberVerification.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync updateMemberVerification(\r\n\t\tvariables: UpdateMemberVerificationMutationVariables,\r\n\t): Promise<OperationResult<UpdateMemberVerificationError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tUpdateMemberVerificationMutation,\r\n\t\t\tUpdateMemberVerificationMutationVariables\r\n\t\t>(UPDATE_MEMBER_VERIFICATION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.updateMemberVerification) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.updateMemberVerification.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync memberVerification(): Promise<\r\n\t\tOperationResult<never, MemberVerification | null | undefined>\r\n\t> {\r\n\t\tconst res = await this.client.request<MemberVerificationQuery>(MEMBER_VERIFICATION_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.memberAccount.verification,\r\n\t\t};\r\n\t}\r\n\r\n\tasync announcements(\r\n\t\tvariables?: AnnouncementsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Announcement>>> {\r\n\t\tconst res = await this.client.request<AnnouncementsQuery, AnnouncementsQueryVariables>(\r\n\t\t\tANNOUNCEMENTS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.announcements,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { HttpError, OperationError } from './types';\r\n\r\nexport function statusCodeToOperationError(\r\n\tvalue: number,\r\n\tmessage?: string,\r\n): OperationError<HttpError> {\r\n\tconst e = ERROR_MAP[value] ? ERROR_MAP[value] : ERROR_MAP[500];\r\n\r\n\treturn {\r\n\t\tname: e.name,\r\n\t\tmessage: message ?? e.message,\r\n\t};\r\n}\r\n\r\nconst ERROR_MAP: Record<number, OperationError<HttpError>> = {\r\n\t400: { name: 'HttpBadRequest', message: 'Bad Request' },\r\n\t401: { name: 'HttpUnauthorized', message: 'Unauthorized' },\r\n\t403: { name: 'HttpForbidden', message: 'Forbidden' },\r\n\t404: { name: 'HttpNotFound', message: 'Not Found' },\r\n\t408: { name: 'HttpRequestTimeout', message: 'Request Timeout' },\r\n\t429: { name: 'HttpTooManyRequests', message: 'Too Many Requests' },\r\n\t500: { name: 'HttpInternalServerError', message: 'Internal Server Error' },\r\n};\r\n","import { statusCodeToOperationError } from '../utils/status-code-to-operation-error';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tAuthenticateError,\r\n\tAuthenticateInput,\r\n\tAuthenticateMutation,\r\n\tCreateSessionError,\r\n\tCreateSessionInput,\r\n\tCreateSessionInput__Maya,\r\n\tCreateSessionInput__MobileNumber,\r\n\tCreateSessionInput__NameAndPassword,\r\n\tCreateSessionMutation,\r\n\tCreateSessionMutation__Maya,\r\n\tCreateSessionMutation__MobileNumber,\r\n\tCreateSessionMutation__NameAndPassword,\r\n\tRefreshSessionError,\r\n\tRefreshSessionMutation,\r\n} from './session';\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\tcreateSession(\r\n\t\tinput: CreateSessionInput__Maya,\r\n\t): Promise<OperationResult<CreateSessionError, CreateSessionMutation__Maya>>;\r\n\tcreateSession(\r\n\t\tinput: CreateSessionInput__MobileNumber,\r\n\t): Promise<OperationResult<CreateSessionError, CreateSessionMutation__MobileNumber>>;\r\n\tcreateSession(\r\n\t\tinput: CreateSessionInput__NameAndPassword,\r\n\t): Promise<OperationResult<CreateSessionError, CreateSessionMutation__NameAndPassword>>;\r\n\tasync createSession(\r\n\t\tinput: CreateSessionInput,\r\n\t): Promise<OperationResult<CreateSessionError, CreateSessionMutation>> {\r\n\t\tconst headers = new Headers({\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t\t'Platform-Code': this.platform,\r\n\t\t\tRole: 'MEMBER',\r\n\t\t});\r\n\r\n\t\tswitch (input.type) {\r\n\t\t\tcase 'NAME_AND_PASSWORD': {\r\n\t\t\t\tconst data = `${input.name}:${input.password}`;\r\n\t\t\t\tconst token = Buffer.from(data).toString('base64');\r\n\r\n\t\t\t\theaders.set('Authorization', `Basic ${token}`);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tcase 'MOBILE_NUMBER': {\r\n\t\t\t\tconst data = `${input.mobileNumber}:${input.verificationCode}`;\r\n\t\t\t\tconst token = Buffer.from(data).toString('base64');\r\n\r\n\t\t\t\theaders.set('Authorization', `MobileNumberOTP ${token}`);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tcase 'MAYA': {\r\n\t\t\t\theaders.set('Authorization', `Maya ${input.sessionId}`);\r\n\t\t\t\tbreak;\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}/sessions`, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders,\r\n\t\t\t});\r\n\r\n\t\t\tconst data = await res.json();\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'ACCOUNT_BLACKLISTED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountBlacklisted'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync authenticate(\r\n\t\tinput: AuthenticateInput,\r\n\t): Promise<OperationResult<AuthenticateError, AuthenticateMutation>> {\r\n\t\tconst headers = new Headers({\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t\t'Platform-Code': this.platform,\r\n\t\t\tRole: 'MEMBER',\r\n\t\t});\r\n\r\n\t\tif (input.type === 'SECURITY_QUESTION') {\r\n\t\t\theaders.set('Authorization', `Bearer ${input.token}`);\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await fetch(`${this.url}/session/${input.token}/authenticate`, {\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\theaders,\r\n\t\t\t\t\tbody: JSON.stringify({\r\n\t\t\t\t\t\tsecretAnswer: input.secretAnswer,\r\n\t\t\t\t\t}),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst data = await res.json();\r\n\r\n\t\t\t\tif (res.ok) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\tdata,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (res.status === 401 || res.status === 403) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\terror: createOperationError('InvalidTokenOrSecretAnswer'),\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t\t};\r\n\t\t\t} catch {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"Invalid input 'type'\");\r\n\t}\r\n\r\n\tasync refreshSession(\r\n\t\trefreshToken: string,\r\n\t): Promise<OperationResult<RefreshSessionError, RefreshSessionMutation>> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session:refresh`, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${refreshToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tconst data = await res.json();\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (data.code === 'ACCOUNT_BLACKLISTED') {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('AccountBlacklisted'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (res.status === 403 || res.status === 401) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: createOperationError('InvalidToken'),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(res.status),\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync destroySession(accessToken: string): Promise<OperationResult> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session`, {\r\n\t\t\t\tmethod: 'DELETE',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${accessToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn res.ok ? { ok: true } : { ok: false, error: statusCodeToOperationError(res.status) };\r\n\t\t} catch {\r\n\t\t\treturn { ok: false, error: statusCodeToOperationError(500) };\r\n\t\t}\r\n\t}\r\n\r\n\tasync verifySession(accessToken: string) {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(`${this.url}/session`, {\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t'Platform-Code': this.platform,\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\tAuthorization: `Bearer ${accessToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn res.ok;\r\n\t\t} catch {\r\n\t\t\t/*\r\n\t\t\t * For network or unknown errors fallback to true\r\n\t\t\t * so users don't get logged out\r\n\t\t\t */\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tFile,\r\n\tFileQueryVariables,\r\n\tUploadPrivateImageFileError,\r\n\tUploadPrivateImageFileMutation,\r\n\tUploadPrivateImageFileMutationVariables,\r\n} from './file';\r\nimport { FILE_QUERY, UPLOAD_PRIVATE_IMAGE_FILE_MUTATION, type FileQuery } from './file';\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 type {\r\n\tCreateGameSessionError,\r\n\tCreateGameSessionMutation,\r\n\tCreateGameSessionMutationVariables,\r\n\tEndGameSessionMutation,\r\n\tEndGameSessionMutationVariables,\r\n\tGame,\r\n\tGameQuery,\r\n\tGameQueryVariables,\r\n\tGameSession,\r\n\tGameSessionQuery,\r\n\tGameSessionQueryVariables,\r\n\tGamesByNameQuery,\r\n\tGamesByNameQueryVariables,\r\n\tGamesQuery,\r\n\tGamesQueryVariables,\r\n} from './game';\r\nimport {\r\n\tCREATE_GAME_SESSION_MUTATION,\r\n\tEND_GAME_SESSION_MUTATION,\r\n\tGAMES_BY_NAME_QUERY,\r\n\tGAMES_QUERY,\r\n\tGAME_QUERY,\r\n\tGAME_SESSION_QUERY,\r\n} from './game';\r\nimport type { PaginatedQueryResult } from './types';\r\nimport { createOperationError } from './utils';\r\n\r\nexport class GameService {\r\n\tprotected client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync game(\r\n\t\tvariables?: GameQueryVariables,\r\n\t): Promise<OperationResult<never, Game | null | undefined>> {\r\n\t\tconst res = await this.client.request<GameQuery, GameQueryVariables>(GAME_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync games(\r\n\t\tvariables?: GamesQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<Game>>> {\r\n\t\tconst res = await this.client.request<GamesQuery, GamesQueryVariables>(GAMES_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.games } : res;\r\n\t}\r\n\r\n\tasync gamesByName(\r\n\t\tvariables?: GamesByNameQueryVariables,\r\n\t): Promise<OperationResult<never, Game[]>> {\r\n\t\tconst res = await this.client.request<GamesByNameQuery, GamesByNameQueryVariables>(\r\n\t\t\tGAMES_BY_NAME_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.gamesByName } : res;\r\n\t}\r\n\r\n\tasync gameSession(\r\n\t\tvariables: GameSessionQueryVariables,\r\n\t): Promise<OperationResult<never, GameSession | null | undefined>> {\r\n\t\tconst res = await this.client.request<GameSessionQuery, GameSessionQueryVariables>(\r\n\t\t\tGAME_SESSION_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: true, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync createGameSession(\r\n\t\tvariables: CreateGameSessionMutationVariables,\r\n\t): Promise<OperationResult<CreateGameSessionError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGameSessionMutation,\r\n\t\t\tCreateGameSessionMutationVariables\r\n\t\t>(CREATE_GAME_SESSION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGameSession.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync endGameSession(variables: EndGameSessionMutationVariables): Promise<OperationResult> {\r\n\t\tconst res = await this.client.request<EndGameSessionMutation, EndGameSessionMutationVariables>(\r\n\t\t\tEND_GAME_SESSION_MUTATION,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (!res.data.endGameSession) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tBET_RECORDS_QUERY,\r\n\ttype BetRecord,\r\n\ttype BetRecordsQuery,\r\n\ttype BetRecordsQueryVariables,\r\n} from './bet-record';\r\nimport type {\r\n\tDepositRecord,\r\n\tDepositRecordsQuery,\r\n\tDepositRecordsQueryVariables,\r\n\tDepositsCountQuery,\r\n} from './deposit';\r\nimport { DEPOSITS_COUNT_QUERY, DEPOSIT_RECORDS_QUERY } from './deposit';\r\nimport type { Member, MemberQuery } from './member';\r\nimport { MEMBER_QUERY } from './member';\r\nimport type {\r\n\tTransactionRecord,\r\n\tTransactionRecordsQuery,\r\n\tTransactionRecordsQueryVariables,\r\n} from './transaction';\r\nimport { TRANSACTION_RECORDS_QUERY } from './transaction';\r\nimport type { PaginatedQueryResult } from './types';\r\nimport type {\r\n\tWithdrawalRecord,\r\n\tWithdrawalRecordsQuery,\r\n\tWithdrawalRecordsQueryVariables,\r\n} from './withdrawal';\r\nimport { WITHDRAWAL_RECORDS_QUERY } from './withdrawal';\r\n\r\nexport class ReportService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync betRecords(\r\n\t\tvariables?: BetRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<BetRecord>>> {\r\n\t\tconst res = await this.client.request<BetRecordsQuery, BetRecordsQueryVariables>(\r\n\t\t\tBET_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.betRecords } : res;\r\n\t}\r\n\r\n\tasync transactionRecords(\r\n\t\tvariables?: TransactionRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<TransactionRecord>>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tTransactionRecordsQuery,\r\n\t\t\tTransactionRecordsQueryVariables\r\n\t\t>(TRANSACTION_RECORDS_QUERY, variables);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.transactionRecords } : res;\r\n\t}\r\n\r\n\tasync withdrawalRecords(\r\n\t\tvariables?: WithdrawalRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<WithdrawalRecord>>> {\r\n\t\tconst res = await this.client.request<WithdrawalRecordsQuery, WithdrawalRecordsQueryVariables>(\r\n\t\t\tWITHDRAWAL_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.withdrawalRecords } : res;\r\n\t}\r\n\r\n\tasync depositRecords(\r\n\t\tvariables?: DepositRecordsQueryVariables,\r\n\t): Promise<OperationResult<never, PaginatedQueryResult<DepositRecord>>> {\r\n\t\tconst res = await this.client.request<DepositRecordsQuery, DepositRecordsQueryVariables>(\r\n\t\t\tDEPOSIT_RECORDS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.depositRecords } : res;\r\n\t}\r\n\r\n\tasync depositsCount(): Promise<OperationResult<never, number>> {\r\n\t\tconst res = await this.client.request<DepositsCountQuery>(DEPOSITS_COUNT_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member.depositsCount } : res;\r\n\t}\r\n\r\n\tasync member(): Promise<OperationResult<never, Member>> {\r\n\t\tconst res = await this.client.request<MemberQuery>(MEMBER_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.member } : res;\r\n\t}\r\n}\r\n","interface StaticServiceConfig {\r\n\turl: string;\r\n}\r\n\r\nexport class StaticService {\r\n\tprivate url: string;\r\n\r\n\tconstructor(config: StaticServiceConfig) {\r\n\t\tthis.url = config.url;\r\n\t}\r\n\r\n\tgameThumbnails<\r\n\t\tT extends {\r\n\t\t\tid: string;\r\n\t\t\tprovider: string;\r\n\t\t},\r\n\t>(args: T) {\r\n\t\treturn [\r\n\t\t\t`${this.url}/images/${args.provider.toLowerCase()}/thumbnail-${args.id}.webp`,\r\n\t\t\t`${this.url}/images/${args.provider.toLowerCase()}/thumbnail-${args.provider.toLowerCase()}.webp`,\r\n\t\t];\r\n\t}\r\n}\r\n","import type { OperationResult } from '../utils/types';\r\nimport type {\r\n\tBonus,\r\n\tBonusQuery,\r\n\tCashbackBonus,\r\n\tCashbackBonusesQuery,\r\n\tClaimCashbackBonusError,\r\n\tClaimCashbackBonusMutation,\r\n\tClaimCashbackBonusMutationVariables,\r\n} from './bonus';\r\nimport { BONUS_QUERY, CASHBACK_BONUSES_QUERY, CLAIM_CASHBACK_BONUS_MUTATION } from './bonus';\r\nimport type { Cashback, CashbacksQuery } from './cashback';\r\nimport { CASHBACKS_QUERY } from './cashback';\r\nimport type {\r\n\tCreateDepositError,\r\n\tCreateGCashDepositMutation,\r\n\tCreateGCashDepositMutationVariables,\r\n\tCreateMayaAppDepositMutation,\r\n\tCreateMayaAppDepositMutationVariables,\r\n\tCreateMayaDepositMutation,\r\n\tCreateMayaDepositMutationVariables,\r\n\tDeposit,\r\n\tDepositQuery,\r\n\tDepositQueryVariables,\r\n} from './deposit';\r\nimport {\r\n\tCREATE_GCASH_DEPOSIT_MUTATION,\r\n\tCREATE_MAYA_APP_DEPOSIT_MUTATION,\r\n\tCREATE_MAYA_DEPOSIT_MUTATION,\r\n\tDEPOSIT_QUERY,\r\n} from './deposit';\r\nimport { GameService } from './game.service';\r\nimport type {\r\n\tPointsToCashConversionError,\r\n\tPointsToCashConversionMutation,\r\n\tPointsToCashConversionMutationVariables,\r\n\tPointsWallet,\r\n\tPointsWalletQuery,\r\n} from './points';\r\nimport { POINTS_TO_CASH_CONVERSION_MUTATION, POINTS_WALLET_QUERY } from './points';\r\nimport type {\r\n\tAvailablePromosQuery,\r\n\tAvailablePromosQueryVariables,\r\n\tPromo,\r\n\tPromosQuery,\r\n} from './promo';\r\nimport { AVAILABLE_PROMOS_QUERY, PROMOS_QUERY } from './promo';\r\nimport {\r\n\tMAYA_SESSION_QUERY,\r\n\ttype MayaSession,\r\n\ttype MayaSessionQuery,\r\n\ttype MayaSessionQueryVariables,\r\n} from './session';\r\nimport { createOperationError } from './utils';\r\nimport type { Wallet, WalletQuery } from './wallet';\r\nimport { WALLET_QUERY } from './wallet';\r\nimport type {\r\n\tCreateBankWithdrawalMutation,\r\n\tCreateBankWithdrawalMutationVariables,\r\n\tCreateGCashWithdrawalMutation,\r\n\tCreateGCashWithdrawalMutationVariables,\r\n\tCreateMayaAppWithdrawalMutation,\r\n\tCreateMayaAppWithdrawalMutationVariables,\r\n\tCreateMayaWithdrawalMutation,\r\n\tCreateMayaWithdrawalMutationVariables,\r\n\tCreateWithdrawalError,\r\n\tRemainingDailyWithdrawalsCountQuery,\r\n} from './withdrawal';\r\nimport {\r\n\tCREATE_BANK_WITHDRAWAL_MUTATION,\r\n\tCREATE_GCASH_WITHDRAWAL_MUTATION,\r\n\tCREATE_MAYA_APP_WITHDRAWAL_MUTATION,\r\n\tCREATE_MAYA_WITHDRAWAL_MUTATION,\r\n\tREMAINING_DAILY_WITHDRAWALS_COUNT_QUERY,\r\n} from './withdrawal';\r\n\r\nexport class WalletService extends GameService {\r\n\tasync promos(): Promise<OperationResult<never, Promo[]>> {\r\n\t\tconst res = await this.client.request<PromosQuery>(PROMOS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.promos } : res;\r\n\t}\r\n\r\n\tasync cashbacks(): Promise<OperationResult<never, Cashback[]>> {\r\n\t\tconst res = await this.client.request<CashbacksQuery>(CASHBACKS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.cashbacks } : res;\r\n\t}\r\n\r\n\tasync availablePromos(\r\n\t\tvariables?: AvailablePromosQueryVariables,\r\n\t): Promise<OperationResult<never, Promo[]>> {\r\n\t\tconst res = await this.client.request<AvailablePromosQuery, AvailablePromosQueryVariables>(\r\n\t\t\tAVAILABLE_PROMOS_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.availablePromos } : res;\r\n\t}\r\n\r\n\tasync cashbackBonuses(): Promise<OperationResult<never, CashbackBonus[]>> {\r\n\t\tconst res = await this.client.request<CashbackBonusesQuery>(CASHBACK_BONUSES_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.cashbackBonuses } : res;\r\n\t}\r\n\r\n\tasync claimCashbackBonus(\r\n\t\tvariables: ClaimCashbackBonusMutationVariables,\r\n\t): Promise<OperationResult<ClaimCashbackBonusError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tClaimCashbackBonusMutation,\r\n\t\t\tClaimCashbackBonusMutationVariables\r\n\t\t>(CLAIM_CASHBACK_BONUS_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) {\r\n\t\t\treturn {\r\n\t\t\t\tok: res.ok,\r\n\t\t\t\terror: res.error,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (res.data.claimCashbackBonus) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.claimCashbackBonus.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync bonus(): Promise<OperationResult<never, Bonus | null | undefined>> {\r\n\t\tconst res = await this.client.request<BonusQuery>(BONUS_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.bonus } : res;\r\n\t}\r\n\r\n\tasync wallet(): Promise<OperationResult<never, Wallet | null | undefined>> {\r\n\t\tconst res = await this.client.request<WalletQuery>(WALLET_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.wallet } : res;\r\n\t}\r\n\r\n\tasync deposit(\r\n\t\tvariables: DepositQueryVariables,\r\n\t): Promise<OperationResult<never, Deposit | null | undefined>> {\r\n\t\tconst res = await this.client.request<DepositQuery, DepositQueryVariables>(\r\n\t\t\tDEPOSIT_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.node } : res;\r\n\t}\r\n\r\n\tasync createGCashDeposit(\r\n\t\tvariables: CreateGCashDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGCashDepositMutation,\r\n\t\t\tCreateGCashDepositMutationVariables\r\n\t\t>(CREATE_GCASH_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGCashDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGCashDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaDeposit(\r\n\t\tvariables: CreateMayaDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaDepositMutation,\r\n\t\t\tCreateMayaDepositMutationVariables\r\n\t\t>(CREATE_MAYA_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaAppDeposit(\r\n\t\tvariables: CreateMayaAppDepositMutationVariables,\r\n\t): Promise<OperationResult<CreateDepositError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaAppDepositMutation,\r\n\t\t\tCreateMayaAppDepositMutationVariables\r\n\t\t>(CREATE_MAYA_APP_DEPOSIT_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaAppDeposit) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaAppDeposit.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createGCashWithdrawal(\r\n\t\tvariables: CreateGCashWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateGCashWithdrawalMutation,\r\n\t\t\tCreateGCashWithdrawalMutationVariables\r\n\t\t>(CREATE_GCASH_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createGCashWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createGCashWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaWithdrawal(\r\n\t\tvariables: CreateMayaWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaWithdrawalMutation,\r\n\t\t\tCreateMayaWithdrawalMutationVariables\r\n\t\t>(CREATE_MAYA_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createMayaAppWithdrawal(\r\n\t\tvariables: CreateMayaAppWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateMayaAppWithdrawalMutation,\r\n\t\t\tCreateMayaAppWithdrawalMutationVariables\r\n\t\t>(CREATE_MAYA_APP_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createMayaAppWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createMayaAppWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createBankWithdrawal(\r\n\t\tvariables: CreateBankWithdrawalMutationVariables,\r\n\t): Promise<OperationResult<CreateWithdrawalError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tCreateBankWithdrawalMutation,\r\n\t\t\tCreateBankWithdrawalMutationVariables\r\n\t\t>(CREATE_BANK_WITHDRAWAL_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.createBankWithdrawal) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.createBankWithdrawal.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync remainingDailyWithdrawalsCount(): Promise<OperationResult<never, number>> {\r\n\t\tconst res = await this.client.request<RemainingDailyWithdrawalsCountQuery>(\r\n\t\t\tREMAINING_DAILY_WITHDRAWALS_COUNT_QUERY,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.remainingDailyWithdrawalsCount } : res;\r\n\t}\r\n\r\n\tasync pointsWallet(): Promise<OperationResult<never, PointsWallet | null | undefined>> {\r\n\t\tconst res = await this.client.request<PointsWalletQuery>(POINTS_WALLET_QUERY);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.pointsWallet } : res;\r\n\t}\r\n\r\n\tasync pointsToCashConversion(\r\n\t\tvariables: PointsToCashConversionMutationVariables,\r\n\t): Promise<OperationResult<PointsToCashConversionError>> {\r\n\t\tconst res = await this.client.request<\r\n\t\t\tPointsToCashConversionMutation,\r\n\t\t\tPointsToCashConversionMutationVariables\r\n\t\t>(POINTS_TO_CASH_CONVERSION_MUTATION, variables);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\tif (res.data.pointsToCashConversion) {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: createOperationError(res.data.pointsToCashConversion.__typename),\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t};\r\n\t}\r\n\r\n\tasync mayaSession(\r\n\t\tvariables: MayaSessionQueryVariables,\r\n\t): Promise<OperationResult<never, MayaSession | null | undefined>> {\r\n\t\tconst res = await this.client.request<MayaSessionQuery, MayaSessionQueryVariables>(\r\n\t\t\tMAYA_SESSION_QUERY,\r\n\t\t\tvariables,\r\n\t\t);\r\n\r\n\t\treturn res.ok ? { ok: res.ok, data: res.data.mayaSession } : res;\r\n\t}\r\n}\r\n","import type { GraphQLClient } from '../utils/graphql-client';\r\nimport type { OperationResult } from '../utils/types';\r\nimport {\r\n\tLATEST_BET_RECORDS_QUERY,\r\n\ttype LatestBetRecord,\r\n\ttype LatestBetRecordsQuery,\r\n} from './bet-record';\r\n\r\nexport class PortalService {\r\n\tprivate client: GraphQLClient;\r\n\r\n\tconstructor(client: GraphQLClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tasync latestBetRecords(): Promise<OperationResult<never, LatestBetRecord[]>> {\r\n\t\tconst res = await this.client.request<LatestBetRecordsQuery>(LATEST_BET_RECORDS_QUERY);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.latestBetRecords,\r\n\t\t};\r\n\t}\r\n}\r\n","export function 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\nexport type GraphQLClientMiddleware = (request: Request) => Request | Promise<Request>;\r\n\r\nexport interface GraphQLClientFetchOptions extends Omit<RequestInit, 'body' | 'method'> {}\r\n\r\nexport interface GraphQLClientConfig {\r\n\tmiddlewares?: GraphQLClientMiddleware[];\r\n\tfetchOptions?: GraphQLClientFetchOptions;\r\n}\r\n\r\n/* ref: https://www.apollographql.com/docs/apollo-server/data/errors/#graphql_parse_failed */\r\ntype GraphQLErrorExtensionCode =\r\n\t| 'FORBIDDEN'\r\n\t| 'UNAUTHORIZED'\r\n\t| 'BAD_REQUEST'\r\n\t| 'BAD_USER_INPUT'\r\n\t| 'INTERNAL_SERVER_ERROR'\r\n\t| 'ACCESS_TOKEN_EXPIRED';\r\n\r\ninterface GraphQLErrorExtensions {\r\n\tcode: GraphQLErrorExtensionCode;\r\n\tstacktrace: string[];\r\n}\r\n\r\ninterface GraphQLErrorLocation {\r\n\tline: number;\r\n\tcolumn: number;\r\n}\r\n\r\ninterface GraphQLError {\r\n\tpath: string[];\r\n\tmessage?: string;\r\n\textensions?: GraphQLErrorExtensions;\r\n\tlocations: GraphQLErrorLocation[];\r\n}\r\n\r\nexport class GraphQLClient {\r\n\tprivate url: string;\r\n\tprivate options: GraphQLClientFetchOptions;\r\n\tprivate middlewares: GraphQLClientMiddleware[];\r\n\r\n\tconstructor(url: string, config?: GraphQLClientConfig) {\r\n\t\tconst headers = new Headers(config?.fetchOptions?.headers);\r\n\r\n\t\tthis.url = url;\r\n\t\tthis.options = { ...config?.fetchOptions, headers };\r\n\t\tthis.middlewares = config?.middlewares ?? [];\r\n\t}\r\n\r\n\tasync request<Data, Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables?: Variables,\r\n\t) {\r\n\t\tconst body = JSON.stringify({ query, variables });\r\n\t\tconst headers = new Headers(this.options.headers);\r\n\r\n\t\theaders.set('Content-Type', 'application/json');\r\n\t\theaders.set('Accept', 'application/json');\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(this.url, {\r\n\t\t\t\t...this.options,\r\n\t\t\t\tbody,\r\n\t\t\t\theaders,\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn await this.exec<Data>(req);\r\n\t}\r\n\r\n\t/** Single file upload */\r\n\tasync upload<Data, Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables: Variables,\r\n\t) {\r\n\t\tconst body = this.createUploadBody(query, variables);\r\n\t\tconst headers = new Headers(this.options.headers);\r\n\r\n\t\theaders.delete('Content-Type');\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(this.url, {\r\n\t\t\t\t...this.options,\r\n\t\t\t\tbody,\r\n\t\t\t\theaders,\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn await this.exec<Data>(req);\r\n\t}\r\n\r\n\tprivate async exec<T>(request: Request): Promise<OperationResult<never, T>> {\r\n\t\ttry {\r\n\t\t\tconst res = await fetch(request);\r\n\r\n\t\t\tif (!res.ok) {\r\n\t\t\t\treturn { ok: false, error: statusCodeToOperationError(res.status) };\r\n\t\t\t}\r\n\r\n\t\t\tconst json = await res.json();\r\n\t\t\tconst data = json.data;\r\n\t\t\tconst error = json.errors?.at(0) as GraphQLError | undefined;\r\n\r\n\t\t\tif (error) {\r\n\t\t\t\tif (\r\n\t\t\t\t\terror.extensions?.code === 'FORBIDDEN' ||\r\n\t\t\t\t\terror.extensions?.code === 'ACCESS_TOKEN_EXPIRED'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(403, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (error.extensions?.code === 'UNAUTHORIZED') {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(401, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\terror.extensions?.code === 'BAD_USER_INPUT' ||\r\n\t\t\t\t\terror.extensions?.code === 'BAD_REQUEST'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn { ok: false, error: statusCodeToOperationError(400, error.message) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Fallback for unknown error codes */\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(500, error.message),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async runMiddlewares(req: Request) {\r\n\t\tlet result = req.clone();\r\n\r\n\t\tfor (const middleware of this.middlewares) {\r\n\t\t\tresult = await middleware(result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate createUploadBody<Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables: Variables,\r\n\t) {\r\n\t\tconst files = flatten(variables).filter(\r\n\t\t\t(o) => o.value instanceof File || o.value instanceof Blob,\r\n\t\t);\r\n\r\n\t\tconst body = new FormData();\r\n\r\n\t\tbody.append(\r\n\t\t\t'operations',\r\n\t\t\tJSON.stringify({\r\n\t\t\t\tquery,\r\n\t\t\t\tvariables,\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tconst map: GenericObject = {};\r\n\r\n\t\tfiles.forEach((o, i) => {\r\n\t\t\tmap[i.toString()] = [`variables.${o.key.join('.')}`];\r\n\t\t});\r\n\r\n\t\tbody.append('map', JSON.stringify(map));\r\n\r\n\t\tfiles.forEach((o, i) => {\r\n\t\t\tbody.append(i.toString(), o.value);\r\n\t\t});\r\n\r\n\t\treturn body;\r\n\t}\r\n}\r\n","export async function sha256(input: string) {\r\n\tconst msgUint8 = new TextEncoder().encode(input);\r\n\tconst hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);\r\n\tconst hashArray = Array.from(new Uint8Array(hashBuffer));\r\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\r\n\treturn hashHex;\r\n}\r\n","interface LoggerConfig {\r\n\t/**\r\n\t * @default true\r\n\t */\r\n\tenabled?: boolean;\r\n}\r\n\r\nexport class Logger {\r\n\tprivate enabled: boolean;\r\n\r\n\tconstructor(config?: LoggerConfig) {\r\n\t\tthis.enabled = config?.enabled ?? true;\r\n\t}\r\n\r\n\tinfo(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[34m[info] ${message}`);\r\n\t}\r\n\r\n\twarn(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[33m[warn] ${message}`);\r\n\t}\r\n\r\n\terror(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[31m[error] ${message}`);\r\n\t}\r\n\r\n\tsuccess(message: string) {\r\n\t\tif (this.enabled) console.log(`\\x1b[32m[success] ${message}`);\r\n\t}\r\n}\r\n","export function cloneDate(date: Date) {\r\n\treturn new Date(date.getTime());\r\n}\r\n","import { cloneDate } from './clone-date.js';\r\n\r\nexport function addDays(date: Date, days: number) {\r\n\tconst result = cloneDate(date);\r\n\tresult.setDate(result.getDate() + days);\r\n\treturn result;\r\n}\r\n","import { cloneDate } from './clone-date';\r\n\r\nexport function addMinutes(date: Date, minutes: number): Date {\r\n\tconst result = cloneDate(date);\r\n\tresult.setMinutes(result.getMinutes() + minutes);\r\n\treturn result;\r\n}\r\n","/**\r\n * is `date1` after `date2`?\r\n */\r\nexport function isAfter(date1: Date, date2: Date) {\r\n\treturn date1.getTime() > date2.getTime();\r\n}\r\n","export function sleep(ms: number) {\r\n\treturn new Promise<void>((resolve) => {\r\n\t\tsetTimeout(resolve, ms);\r\n\t});\r\n}\r\n","import { 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 {\r\n\ttype AuthenticateError,\r\n\ttype AuthenticateInput,\r\n\ttype Authenticator,\r\n\tAuthService,\r\n\ttype AuthServiceConfig,\r\n\ttype CreateSessionError,\r\n\ttype CreateSessionInput,\r\n\ttype RefreshSessionError,\r\n\ttype Session,\r\n} 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 { sleep } from '../utils/sleep';\r\nimport { subMinutes } from '../utils/sub-minutes';\r\nimport type { OperationResult } from '../utils/types';\r\nimport { Logger } from './logger';\r\n\r\ninterface Data {\r\n\tsession: Session;\r\n\taccessToken: string;\r\n\taccessTokenExpiresAt: number;\r\n\trefreshToken: string;\r\n\trefreshTokenExpiresAt: number;\r\n}\r\n\r\ninterface SessionManagerConfig extends AuthServiceConfig {\r\n\tlog?: boolean;\r\n}\r\n\r\nexport class SessionManager {\r\n\tprivate logger;\r\n\tprivate storageKey = 'session';\r\n\tprivate authService: AuthService;\r\n\tprivate _refreshing = false;\r\n\r\n\tconstructor(config: SessionManagerConfig) {\r\n\t\tthis.authService = new AuthService(config);\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: config.log ?? false,\r\n\t\t});\r\n\t}\r\n\r\n\tget refreshing() {\r\n\t\treturn this._refreshing;\r\n\t}\r\n\r\n\tset refreshing(value: boolean) {\r\n\t\tthis._refreshing = value;\r\n\t}\r\n\r\n\tasync create(\r\n\t\tinput: CreateSessionInput,\r\n\t): Promise<OperationResult<CreateSessionError, { 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 [WIP]\r\n\t\t */\r\n\r\n\t\tif (input.type === 'MAYA') {\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\tmaya: true,\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 * Mobile Number Sign In\r\n\t\t */\r\n\r\n\t\tif (input.type === 'MOBILE_NUMBER') {\r\n\t\t\tconst res = await this.authService.createSession(input);\r\n\r\n\t\t\tif (res.ok) {\r\n\t\t\t\tconst now = new Date();\r\n\r\n\t\t\t\twindow.localStorage.setItem(\r\n\t\t\t\t\tthis.storageKey,\r\n\t\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t\t...res.data,\r\n\t\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata: null,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Name and Password Sign In\r\n\t\t */\r\n\r\n\t\tconst res = await this.authService.createSession(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\t/*\r\n\t\t * 2FA enabled\r\n\t\t */\r\n\t\tif (res.data.authenticator) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tauthenticator: res.data.authenticator,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst now = new Date();\r\n\r\n\t\twindow.localStorage.setItem(\r\n\t\t\tthis.storageKey,\r\n\t\t\tJSON.stringify({\r\n\t\t\t\t...res.data,\r\n\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync createFromAuthenticator(\r\n\t\tinput: AuthenticateInput,\r\n\t): Promise<OperationResult<AuthenticateError>> {\r\n\t\tconst res = await this.authService.authenticate(input);\r\n\r\n\t\tif (res.ok) {\r\n\t\t\tconst now = new Date();\r\n\r\n\t\t\tif (this.isServer) {\r\n\t\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\t} else {\r\n\t\t\t\twindow.localStorage.setItem(\r\n\t\t\t\t\tthis.storageKey,\r\n\t\t\t\t\tJSON.stringify({\r\n\t\t\t\t\t\t...res.data,\r\n\t\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn { ok: true };\r\n\t\t} else {\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tasync get(): Promise<OperationResult<RefreshSessionError, Data | null>> {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: null,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (this.refreshing) {\r\n\t\t\tawait sleep(1000);\r\n\t\t\treturn await this.get();\r\n\t\t}\r\n\r\n\t\tconst val = window.localStorage.getItem(this.storageKey);\r\n\r\n\t\tif (!val) {\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: null,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tlet obj: {\r\n\t\t\t\tsession: Session;\r\n\t\t\t\taccessToken: string;\r\n\t\t\t\taccessTokenExpiresAt: number;\r\n\t\t\t\trefreshToken: string;\r\n\t\t\t\trefreshTokenExpiresAt: number;\r\n\t\t\t} = JSON.parse(val);\r\n\r\n\t\t\tlet now = new Date();\r\n\r\n\t\t\tconst accessTokenExpiresAt = new Date(obj.accessTokenExpiresAt);\r\n\t\t\tconst refreshTokenExpiresAt = new Date(obj.refreshTokenExpiresAt);\r\n\r\n\t\t\t/* is refresh token expired? */\r\n\t\t\tif (isAfter(now, refreshTokenExpiresAt)) {\r\n\t\t\t\tthis.logger.warn('Session expired. Logging out..');\r\n\r\n\t\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: {\r\n\t\t\t\t\t\tname: 'SessionExpired',\r\n\t\t\t\t\t\tmessage: 'Session expired.',\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\t/* is access token expired? */\r\n\t\t\tif (isAfter(now, accessTokenExpiresAt)) {\r\n\t\t\t\tthis.logger.info('Refreshing session...');\r\n\r\n\t\t\t\tthis.refreshing = true;\r\n\r\n\t\t\t\tconst res = await this.authService.refreshSession(obj.refreshToken);\r\n\r\n\t\t\t\tthis.refreshing = false;\r\n\r\n\t\t\t\tif (!res.ok) {\r\n\t\t\t\t\tthis.logger.error(`Failed to refresh session: ${res.error.message}`);\r\n\r\n\t\t\t\t\t/* return previous session for all errors except \"InvalidToken\" and \"AccountBlacklisted\" */\r\n\t\t\t\t\tif (res.error.name === 'InvalidToken' || res.error.name === 'AccountBlacklisted') {\r\n\t\t\t\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\t\terror: res.error,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.logger.warn('Old session returned.');\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\t\tdata: obj,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.logger.success('Session refreshed!');\r\n\r\n\t\t\t\tnow = new Date();\r\n\t\t\t\tobj = {\r\n\t\t\t\t\t...obj,\r\n\t\t\t\t\t...res.data,\r\n\t\t\t\t\taccessTokenExpiresAt: addMinutes(now, 8).getTime(),\r\n\t\t\t\t\trefreshTokenExpiresAt: subMinutes(addDays(now, 30), 2).getTime(),\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.localStorage.setItem(this.storageKey, JSON.stringify(obj));\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata: obj,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: {\r\n\t\t\t\t\tname: 'UnknownError',\r\n\t\t\t\t\tmessage: 'Something went wrong.',\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tasync destroy() {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst res = await this.get();\r\n\r\n\t\tif (res.data?.accessToken) {\r\n\t\t\tawait this.authService.destroySession(res.data.accessToken);\r\n\t\t}\r\n\r\n\t\twindow.localStorage.removeItem(this.storageKey);\r\n\t}\r\n\r\n\tasync verify(): Promise<boolean> {\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.logger.warn(\"'localStorage' is not available on the server.\");\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst s = await this.get();\r\n\r\n\t\tif (s.error?.name === 'InvalidToken') return false;\r\n\t\tif (s.error?.name === 'SessionExpired') return false;\r\n\t\tif (s.error?.name === 'AccountBlacklisted') return false;\r\n\r\n\t\t/* Not logged in or session is not expired */\r\n\t\tif (!s.data) return true;\r\n\r\n\t\tconst v = await this.authService.verifySession(s.data.accessToken);\r\n\r\n\t\t/* log out if session is no longer valid */\r\n\t\tif (!v) {\r\n\t\t\twindow.localStorage.removeItem(this.storageKey);\r\n\t\t}\r\n\r\n\t\treturn v;\r\n\t}\r\n\r\n\tprivate get isServer() {\r\n\t\treturn typeof window === 'undefined';\r\n\t}\r\n}\r\n","export function parseDecimal(value: unknown): number | undefined;\r\nexport function parseDecimal(value: unknown, fallback: number): number;\r\nexport function parseDecimal(value: unknown, fallback?: number) {\r\n\tif (typeof value === 'number') {\r\n\t\tif (!Number.isNaN(value)) return value;\r\n\t}\r\n\r\n\tif (typeof value === 'string') {\r\n\t\tconst parsed = Number.parseFloat(value);\r\n\r\n\t\tif (!Number.isNaN(parsed)) {\r\n\t\t\treturn parsed;\r\n\t\t}\r\n\t}\r\n\r\n\treturn fallback;\r\n}\r\n","import type * as Internal from '../services';\r\nimport { StaticService } from '../services';\r\nimport { parseDecimal } from '../utils/parse-decimal';\r\nimport type * as External from './types';\r\n\r\ninterface TransformerConfig {\r\n\tenvironment?: 'development' | 'production';\r\n}\r\n\r\nexport class Transformer {\r\n\tprivate staticService: StaticService;\r\n\r\n\tconstructor(config?: TransformerConfig) {\r\n\t\tconst debug = config?.environment === 'development';\r\n\r\n\t\tthis.staticService = new StaticService({\r\n\t\t\turl: debug\r\n\t\t\t\t? import.meta.env.VITE_STATIC_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_STATIC_PRODUCTION_URL,\r\n\t\t});\r\n\t}\r\n\r\n\tget transform() {\r\n\t\treturn {\r\n\t\t\tplatform: this.platform.bind(this),\r\n\t\t\taccount: this.account.bind(this),\r\n\t\t\twallet: this.wallet.bind(this),\r\n\t\t\tverificationDetails: this.verificationDetails.bind(this),\r\n\t\t\tprofileCompletion: this.profileCompletion.bind(this),\r\n\t\t\tannouncement: this.announcement.bind(this),\r\n\t\t\twithdrawalRecord: this.withdrawalRecord.bind(this),\r\n\t\t\tdeposit: this.deposit.bind(this),\r\n\t\t\tdepositRecord: this.depositRecord.bind(this),\r\n\t\t\tbetRecord: this.betRecord.bind(this),\r\n\t\t\tlatestBetRecord: this.latestBetRecord.bind(this),\r\n\t\t\ttransactionRecord: this.transactionRecord.bind(this),\r\n\t\t\tgame: this.game.bind(this),\r\n\t\t\tgameSession: this.gameSession.bind(this),\r\n\t\t\tpromo: this.promo.bind(this),\r\n\t\t\tcashback: this.cashback.bind(this),\r\n\t\t\tbonus: this.bonus.bind(this),\r\n\t\t\tcashbackBonus: this.cashbackBonus.bind(this),\r\n\t\t\tfile: this.file.bind(this),\r\n\t\t\tpointsWallet: this.pointsWallet.bind(this),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate platform(data: Internal.Platform): External.Platform {\r\n\t\treturn {\r\n\t\t\tpaymentSettings: {\r\n\t\t\t\tminimumFirstDepositAmount: parseDecimal(data.minimumFirstDepositAmount),\r\n\t\t\t\trestrictWithdrawalsToVerifiedMembers: data.restrictWithdrawalsToVerifiedMembers,\r\n\t\t\t\tdepositGateway: {\r\n\t\t\t\t\tbank: {\r\n\t\t\t\t\t\tandroidEnabled: data.bankDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.bankDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.bankDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.bankDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.bankDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.bankDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgcash: {\r\n\t\t\t\t\t\tandroidEnabled: data.gcashDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.gcashDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.gcashDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.gcashDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.gcashDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.gcashDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaya: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmayaApp: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaAppDepositGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaAppDepositGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaAppDepositGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaAppDepositGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaAppDepositGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\twithdrawalGateway: {\r\n\t\t\t\t\tbank: {\r\n\t\t\t\t\t\tandroidEnabled: data.bankWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.bankWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.bankWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.bankWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.bankWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgcash: {\r\n\t\t\t\t\t\tandroidEnabled: data.gcashWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.gcashWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.gcashWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.gcashWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.gcashWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\t\tdata.gcashWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t\t1000000,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmaya: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(data.mayaWithdrawalGatewaySettings?.maximumAmount),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmayaApp: {\r\n\t\t\t\t\t\tandroidEnabled: data.mayaAppWithdrawalGatewaySettings?.androidEnabled ?? false,\r\n\t\t\t\t\t\tiosEnabled: data.mayaAppWithdrawalGatewaySettings?.iosEnabled ?? false,\r\n\t\t\t\t\t\twebEnabled: data.mayaAppWithdrawalGatewaySettings?.webEnabled ?? false,\r\n\t\t\t\t\t\tmobileWebEnabled: data.mayaAppWithdrawalGatewaySettings?.mobileWebEnabled ?? false,\r\n\t\t\t\t\t\tminimumAmount: parseDecimal(data.mayaAppWithdrawalGatewaySettings?.minimumAmount),\r\n\t\t\t\t\t\tmaximumAmount: parseDecimal(\r\n\t\t\t\t\t\t\tdata.mayaAppWithdrawalGatewaySettings?.maximumAmount,\r\n\t\t\t\t\t\t\t1000000,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tpointsClubSettings: {\r\n\t\t\t\tmultiplier: parseDecimal(data.pointsClubSettings?.multiplier, 0),\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tprivate account(data: Internal.MemberAccount & Internal.Member): External.Account {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tname: data.name,\r\n\t\t\tstatus: data.status,\r\n\t\t\tverified: data.verified,\r\n\t\t\tnickName: data.nickName ?? undefined,\r\n\t\t\trealName: data.realName ?? undefined,\r\n\t\t\tdateOfBirth: data.birthDay ? new Date(data.birthDay) : undefined,\r\n\t\t\temailAddress: data.emailAddress ?? undefined,\r\n\t\t\tmobileNumber: data.mobileNumber ?? undefined,\r\n\t\t\tmobileNumberVerified: data.mobileNumberVerified ?? false,\r\n\t\t\tmobileNumberVerificationRequired: data.mobileNumberVerificationRequired ?? false,\r\n\t\t\tvalidId: data.validId ?? undefined,\r\n\t\t\tverificationStatus: data.verificationStatus,\r\n\t\t\ttransactionPassword: data.transactionPassword,\r\n\t\t\tsecretAnswerSubmitted: data.secretAnswerSubmitted ?? false,\r\n\t\t\tdateTimeLastActive: data.dateTimeLastActive ? new Date(data.dateTimeLastActive) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate wallet(data: Internal.Wallet): External.Wallet {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate verificationDetails(data: Internal.MemberVerification): External.VerificationDetails {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tidFrontImage: {\r\n\t\t\t\t...data.idFrontImage,\r\n\t\t\t\turl: data.idFrontImage.url ?? undefined,\r\n\t\t\t\tdateTimeCreated: new Date(data.idFrontImage.dateTimeCreated),\r\n\t\t\t} as External.File,\r\n\t\t\tselfieImage: {\r\n\t\t\t\t...data.selfieImage,\r\n\t\t\t\turl: data.selfieImage.url ?? undefined,\r\n\t\t\t\tdateTimeCreated: new Date(data.selfieImage.dateTimeCreated),\r\n\t\t\t} as External.File,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate profileCompletion(data: Internal.ProfileCompletion): External.ProfileCompletion {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tcompletionPercentage: parseDecimal(data, 0),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate announcement(data: Internal.Announcement): External.Announcement {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate withdrawalRecord(data: Internal.WithdrawalRecord): External.WithdrawalRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tnetAmount: parseDecimal(data.netAmount, 0),\r\n\t\t\tfee: parseDecimal(data.fee, 0),\r\n\t\t\treference: data.reference ?? undefined,\r\n\t\t\tbank: data.bank ?? undefined,\r\n\t\t\trecipientMobileNumber: data.recipientMobileNumber ?? undefined,\r\n\t\t\tdateTimeConfirmed: data.dateTimeConfirmed ? new Date(data.dateTimeConfirmed) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t} as unknown as External.WithdrawalRecord;\r\n\t}\r\n\r\n\tprivate deposit(data: Internal.Deposit): External.Deposit {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tfee: parseDecimal(data.fee, 0),\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tnetAmount: parseDecimal(data.netAmount, 0),\r\n\t\t\treference: data.reference ?? undefined,\r\n\t\t\tcheckoutUrl: data.checkoutUrl ?? 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.Deposit;\r\n\t}\r\n\r\n\tprivate depositRecord(data: Internal.DepositRecord): External.DepositRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tfee: parseDecimal(data.fee, 0),\r\n\t\t\tnetAmount: parseDecimal(data.netAmount, 0),\r\n\t\t\treference: data.reference ?? undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate betRecord(data: Internal.BetRecord): External.BetRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbet: parseDecimal(data.bet, 0),\r\n\t\t\tpayout: parseDecimal(data.payout, 0),\r\n\t\t\tjackpotContribution: parseDecimal(data.jackpotContribution, 0),\r\n\t\t\tjackpotPayout: parseDecimal(data.jackpotPayout, 0),\r\n\t\t\twinloss: parseDecimal(data.winloss),\r\n\t\t\tvalidBet: parseDecimal(data.validBet, 0),\r\n\t\t\tvendorRoundId: data.vendorRoundId ?? undefined,\r\n\t\t\tgame: this.game(data.game),\r\n\t\t\tdateTimeSettled: data.dateTimeSettled ? new Date(data.dateTimeSettled) : undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t\tbetContent: data.betContent ?? undefined,\r\n\t\t\tcontestName: data.contestName ?? undefined,\r\n\t\t\texternalCategory: data.externalCategory ?? undefined,\r\n\t\t\tmetadata: {\r\n\t\t\t\todds: data.metadata?.odds ?? undefined,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tprivate latestBetRecord(data: Internal.LatestBetRecord): External.LatestBetRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tgame: this.game(data.game),\r\n\t\t\tbet: parseDecimal(data.bet, 0),\r\n\t\t\tpayout: parseDecimal(data.payout, 0),\r\n\t\t\tvalidBet: parseDecimal(data.validBet, 0),\r\n\t\t\tdateTimeSettled: new Date(data.dateTimeSettled),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate transactionRecord(data: Internal.TransactionRecord): External.TransactionRecord {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\tcontent: data.content ?? undefined,\r\n\t\t\tcurrentBalance: parseDecimal(data.currentBalance, 0),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate game(data: Internal.Game): External.Game {\r\n\t\tconst images = this.staticService.gameThumbnails(data);\r\n\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\timages,\r\n\t\t};\r\n\t}\r\n\r\n\tprivate gameSession(data: Internal.GameSession): External.GameSession {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t} as External.GameSession;\r\n\t}\r\n\r\n\tprivate promo(data: Internal.Promo): External.Promo {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbanner: {\r\n\t\t\t\t...data.banner,\r\n\t\t\t\tdateTimeCreated: new Date(data.banner.dateTimeCreated),\r\n\t\t\t},\r\n\t\t\tmaximumBonusAmount: parseDecimal(data.maximumBonusAmount),\r\n\t\t\tminimumBonusAmount: parseDecimal(data.minimumBonusAmount),\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate cashback(data: Internal.Cashback): External.Cashback {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tbanner: {\r\n\t\t\t\t...data.banner,\r\n\t\t\t\tdateTimeCreated: new Date(data.banner.dateTimeCreated),\r\n\t\t\t},\r\n\t\t\tactivationEndDateTime: new Date(data.activationEndDateTime),\r\n\t\t\tactivationStartDateTime: new Date(data.activationStartDateTime),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate bonus(data: Internal.Bonus): External.Bonus {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\tpromo: this.promo(data.promo),\r\n\t\t\t/* deposit here does not have an id and depositNumber field */\r\n\t\t\tdeposit: data.deposit\r\n\t\t\t\t? {\r\n\t\t\t\t\t\t...data.deposit,\r\n\t\t\t\t\t\tfee: parseDecimal(data.deposit.fee, 0),\r\n\t\t\t\t\t\tamount: parseDecimal(data.deposit.amount, 0),\r\n\t\t\t\t\t\tnetAmount: parseDecimal(data.deposit.netAmount, 0),\r\n\t\t\t\t\t\treference: data.deposit.reference ?? undefined,\r\n\t\t\t\t\t\tdateTimeCreated: new Date(data.deposit.dateTimeCreated),\r\n\t\t\t\t\t\tdateTimeLastUpdated: new Date(data.deposit.dateTimeLastUpdated),\r\n\t\t\t\t\t}\r\n\t\t\t\t: undefined,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tamount: parseDecimal(data.amount, 0),\r\n\t\t\texpiration: new Date(data.expiration),\r\n\t\t\tturnoverRequirement: parseDecimal(data.turnoverRequirement, 0),\r\n\t\t\tcurrentTurnoverRequirementContribution: parseDecimal(\r\n\t\t\t\tdata.currentTurnoverRequirementContribution,\r\n\t\t\t\t0,\r\n\t\t\t),\r\n\t\t\tcurrentTurnoverRequirementContributionPercentage: parseDecimal(\r\n\t\t\t\tdata.currentTurnoverRequirementContributionPercentage,\r\n\t\t\t\t0,\r\n\t\t\t),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate cashbackBonus(data: Internal.CashbackBonus): External.CashbackBonus {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tbalance: parseDecimal(data.balance, 0),\r\n\t\t\tcashback: this.cashback(data.cashback),\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t\tdateTimeLastUpdated: new Date(data.dateTimeLastUpdated),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate file(data: Internal.File): External.File {\r\n\t\treturn {\r\n\t\t\t...data,\r\n\t\t\turl: data.url ?? undefined,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t} as External.File;\r\n\t}\r\n\r\n\tprivate pointsWallet(data: Internal.PointsWallet): External.PointsWallet {\r\n\t\treturn {\r\n\t\t\tid: data.id,\r\n\t\t\tpoints: parseDecimal(data.points, 0),\r\n\t\t\taccount: data.account,\r\n\t\t\tdateTimeCreated: new Date(data.dateTimeCreated),\r\n\t\t};\r\n\t}\r\n}\r\n","import {\r\n\tAccountService,\r\n\tFileService,\r\n\tGameService,\r\n\tReportService,\r\n\tWalletService,\r\n} from '../services';\r\nimport { PortalService } from '../services/portal.service';\r\nimport {\r\n\tGraphQLClient,\r\n\ttype GraphQLClientConfig,\r\n\ttype GraphQLClientMiddleware,\r\n} from '../utils/graphql-client';\r\nimport { sha256 } from '../utils/sha256';\r\nimport { Logger } from './logger';\r\nimport { ObjectId } from './object-id';\r\nimport { ObjectType } from './object-type';\r\nimport { SessionManager } from './session-manager';\r\nimport { Transformer } from './transformer';\r\nimport type {\r\n\tAccountReturn,\r\n\tAnnouncementsInput,\r\n\tAnnouncementsReturn,\r\n\tAuthenticateInput,\r\n\tAuthenticateReturn,\r\n\tAvailablePromosReturn,\r\n\tBetRecordsInput,\r\n\tBetRecordsReturn,\r\n\tBonusReturn,\r\n\tCashbackBonusReturn,\r\n\tCashbacksReturn,\r\n\tClaimCashbackBonusReturn,\r\n\tCreateAccountInput,\r\n\tCreateAccountReturn,\r\n\tCreateDepositInput,\r\n\tCreateDepositReturn,\r\n\tCreateGameSessionInput,\r\n\tCreateGameSessionReturn,\r\n\tCreateWithdrawalInput,\r\n\tCreateWithdrawalReturn,\r\n\tDeleteAccountReturn,\r\n\tDepositRecordsInput,\r\n\tDepositRecordsReturn,\r\n\tDepositReturn,\r\n\tDepositsCountReturn,\r\n\tEndGameSessionReturn,\r\n\tFileReturn,\r\n\tGameSessionReturn,\r\n\tGamesByNameInput,\r\n\tGamesByNameInput__Next,\r\n\tGamesByNameReturn,\r\n\tGamesInput,\r\n\tGamesInput__Next,\r\n\tGamesReturn,\r\n\tLatestBetRecordsReturn,\r\n\tMayaSignInInput,\r\n\tMayaSignInReturn,\r\n\tMobileNumberSignInInput,\r\n\tMobileNumberSignInReturn,\r\n\tNameAndPasswordSignInInput,\r\n\tNameAndPasswordSignInReturn,\r\n\tPlatformReturn,\r\n\tPointsToCashConversionReturn,\r\n\tPointsWalletReturn,\r\n\tProfileCompletionReturn,\r\n\tPromosReturn,\r\n\tRemainingDailyWithdrawalsCountReturn,\r\n\tResetPasswordInput,\r\n\tResetPasswordReturn,\r\n\tSendVerificationCodeReturn,\r\n\tSessionReturn,\r\n\tSignInInput,\r\n\tSignInReturn,\r\n\tSubmitVerificationDetailsInput,\r\n\tSubmitVerificationDetailsReturn,\r\n\tTransactionRecordsInput,\r\n\tTransactionRecordsReturn,\r\n\tUpdateAccountInput,\r\n\tUpdateAccountReturn,\r\n\tUpdateVerificationDetailsInput,\r\n\tUpdateVerificationDetailsReturn,\r\n\tUploadImageFileInput,\r\n\tUploadImageFileReturn,\r\n\tVerificationDetailsReturn,\r\n\tVerifyMobileNumberReturn,\r\n\tWalletReturn,\r\n\tWatchSessionInput,\r\n\tWithdrawalRecordsInput,\r\n\tWithdrawalRecordsReturn,\r\n} from './types';\r\n\r\nexport interface SdkConfig {\r\n\tplatform: string;\r\n\t/**\r\n\t * @description Whether to use production or development endpoints.\r\n\t * @default \"development\"\r\n\t */\r\n\tenvironment?: 'production' | 'development';\r\n\t/**\r\n\t * @description Enables/disables logging.\r\n\t * @default false\r\n\t */\r\n\tlog?: boolean;\r\n}\r\n\r\nexport class Sdk {\r\n\tprivate gameService: GameService;\r\n\tprivate fileService: FileService;\r\n\tprivate walletService: WalletService;\r\n\tprivate reportService: ReportService;\r\n\tprivate portalService: PortalService;\r\n\tprivate accountService: AccountService;\r\n\tprivate sessionManager: SessionManager;\r\n\tprivate transformer: Transformer;\r\n\tprivate logger: Logger;\r\n\r\n\tconstructor(config: SdkConfig) {\r\n\t\tconst debug = config.environment === 'development';\r\n\r\n\t\tthis.sessionManager = new SessionManager({\r\n\t\t\t...config,\r\n\t\t\turl: debug\r\n\t\t\t\t? import.meta.env.VITE_AUTH_DEVELOPMENT_URL\r\n\t\t\t\t: import.meta.env.VITE_AUTH_PRODUCTION_URL,\r\n\t\t});\r\n\r\n\t\tconst graphqlClientConfig: GraphQLClientConfig = {\r\n\t\t\tmiddlewares: [this.authMiddleware],\r\n\t\t\tfetchOptions: {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tRole: 'MEMBER',\r\n\t\t\t\t\t'Platform-Code': config.platform,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tthis.gameService = new GameService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_GAME_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_GAME_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.fileService = new FileService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_FILE_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_FILE_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.walletService = new WalletService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_WALLET_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_WALLET_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.reportService = new ReportService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_REPORT_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_REPORT_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.accountService = new AccountService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_ACCOUNT_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_ACCOUNT_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.portalService = new PortalService(\r\n\t\t\tnew GraphQLClient(\r\n\t\t\t\tdebug\r\n\t\t\t\t\t? import.meta.env.VITE_PORTAL_DEVELOPMENT_URL\r\n\t\t\t\t\t: import.meta.env.VITE_PORTAL_PRODUCTION_URL,\r\n\t\t\t\tgraphqlClientConfig,\r\n\t\t\t),\r\n\t\t);\r\n\r\n\t\tthis.transformer = new Transformer(config);\r\n\r\n\t\tthis.logger = new Logger({\r\n\t\t\tenabled: config.log ?? false,\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get authMiddleware(): GraphQLClientMiddleware {\r\n\t\treturn async (request) => {\r\n\t\t\tthis.logger.info('Checking for session');\r\n\r\n\t\t\tconst res = await this.sessionManager.get();\r\n\r\n\t\t\tif (res.data) {\r\n\t\t\t\trequest.headers.append('Authorization', `Bearer ${res.data.accessToken}`);\r\n\r\n\t\t\t\tthis.logger.info('Session found');\r\n\t\t\t\tthis.logger.success(\"Added 'Authorization' header\");\r\n\t\t\t} else {\r\n\t\t\t\tthis.logger.info('No session found');\r\n\t\t\t}\r\n\r\n\t\t\treturn request;\r\n\t\t};\r\n\t}\r\n\r\n\tasync signIn(input: NameAndPasswordSignInInput): Promise<NameAndPasswordSignInReturn>;\r\n\tasync signIn(input: MobileNumberSignInInput): Promise<MobileNumberSignInReturn>;\r\n\tasync signIn(input: MayaSignInInput): Promise<MayaSignInReturn>;\r\n\tasync signIn(input: SignInInput): Promise<SignInReturn> {\r\n\t\tswitch (input.type) {\r\n\t\t\tcase 'NAME_AND_PASSWORD': {\r\n\t\t\t\tconst res = await this.sessionManager.create({\r\n\t\t\t\t\t...input,\r\n\t\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!res.ok) return res;\r\n\t\t\t\tif (res.data) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t'2FAEnabled': true,\r\n\t\t\t\t\t\t\tauthenticator: res.data.authenticator,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: true,\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t'2FAEnabled': false,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tdefault: {\r\n\t\t\t\tconst res = await this.sessionManager.create(input);\r\n\r\n\t\t\t\treturn res.ok ? { ok: true } : res;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const signInResult = await signIn({\r\n\t * \ttype: 'NAME_AND_PASSWORD',\r\n\t * \tname: data.name,\r\n\t * \tpassword: data.password,\r\n\t * });\r\n\t *\r\n\t * if (!signInResult.ok) {\r\n\t * \treturn window.alert(signInResult.error.message);\r\n\t * }\r\n\t *\r\n\t * if (!signInResult.data) {\r\n\t * \t// Signed in. No more steps needed\r\n\t * \treturn;\r\n\t * }\r\n\t *\r\n\t * const secretAnswer = window.prompt(SECRET_QUESTIONS_MAP[signInResult.secretQuestion]);\r\n\t *\r\n\t * const authResult = await sdk.authenticate({\r\n\t * \ttype: 'SECURITY_QUESTION',\r\n\t * \ttoken: signInResult.token,\r\n\t * \tsecretAnswer: secretAnswer,\r\n\t * });\r\n\t *\r\n\t * if (!authResult.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Signed in\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync authenticate(input: AuthenticateInput): Promise<AuthenticateReturn> {\r\n\t\tswitch (input.type) {\r\n\t\t\tcase 'SECURITY_QUESTION': {\r\n\t\t\t\treturn await this.sessionManager.createFromAuthenticator({\r\n\t\t\t\t\ttype: 'SECURITY_QUESTION',\r\n\t\t\t\t\ttoken: input.token,\r\n\t\t\t\t\tsecretAnswer: await sha256(input.secretAnswer),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefault: {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: {\r\n\t\t\t\t\t\tname: 'HttpBadRequest',\r\n\t\t\t\t\t\tmessage: \"Invalid input 'type'\",\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync signOut() {\r\n\t\tawait this.sessionManager.destroy();\r\n\t}\r\n\r\n\t/**\r\n\t * @description Watches the session if it is still valid whenever signed in.\r\n\t * @returns Unsubscribe function\r\n\t * @example\r\n\t * ```tsx\r\n\t * import * as React from 'react';\r\n\t * import { useAuthenticated } from '@lib/stores';\r\n\t *\r\n\t * function WatchSession() {\r\n\t * \tconst { setAuthenticated } = useAuthenticated();\r\n\t *\r\n\t * \tReact.useEffect(() => {\r\n\t * \t\tconst unsubscribe = sdk.watchSession({\r\n\t * \t\t\tinterval: 30000,\r\n\t * \t\t\tonInvalid() {\r\n\t * \t\t\t\tsetAuthenticated(false);\r\n\t * \t\t\t},\r\n\t * \t\t});\r\n\t *\r\n\t * \t\treturn unsubscribe;\r\n\t * \t}, []);\r\n\t * }\r\n\t * ```\r\n\t */\r\n\twatchSession(input: WatchSessionInput) {\r\n\t\tconst interval = input.interval ?? 30000;\r\n\t\tconst onInvalid = input.onInvalid;\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 onInvalid();\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttimeout = assignTimeout();\r\n\t\t\t}, interval);\r\n\t\t};\r\n\r\n\t\ttimeout = assignTimeout();\r\n\r\n\t\treturn function unsubscribe() {\r\n\t\t\tif (timeout) {\r\n\t\t\t\tclearTimeout(timeout);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tasync session(): Promise<SessionReturn> {\r\n\t\tconst res = await this.sessionManager.get();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data\r\n\t\t\t\t? {\r\n\t\t\t\t\t\tid: res.data.session.id,\r\n\t\t\t\t\t\tdateTimeCreated: new Date(res.data.session.dateTimeCreated),\r\n\t\t\t\t\t}\r\n\t\t\t\t: null,\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Platform\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync platform(): Promise<PlatformReturn> {\r\n\t\tconst res = await this.accountService.platform();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.platform(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Account\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync account(): Promise<AccountReturn> {\r\n\t\tconst [i, j] = await Promise.all([\r\n\t\t\tthis.accountService.memberAccount(),\r\n\t\t\tthis.reportService.member(),\r\n\t\t]);\r\n\r\n\t\tif (!i.ok) return { ok: false, error: i.error };\r\n\t\tif (!j.ok) return { ok: false, error: j.error };\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.account({\r\n\t\t\t\t...i.data,\r\n\t\t\t\t...j.data,\r\n\t\t\t}),\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createAccount({\r\n\t * \tid: ObjectId.generate(ObjectType.Account).toString(),\r\n\t * \tname: data.name,\r\n\t * \tpassword: data.password,\r\n\t * \tdateOfBirth: new Date(data.dateOfBirth),\r\n\t * \tmobileNumber: data.mobileNumber,\r\n\t * \tdomain: data.domain,\r\n\t * \tverificationCode: data.verificationCode,\r\n\t * \treCAPTCHAResponse: data.reCAPTCHAResponse,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createAccount(input: CreateAccountInput): Promise<CreateAccountReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Account).toString();\r\n\r\n\t\tconst res = await this.accountService.registerMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tname: input.name,\r\n\t\t\t\tbirthDay:\r\n\t\t\t\t\ttypeof input.dateOfBirth === 'string'\r\n\t\t\t\t\t\t? input.dateOfBirth\r\n\t\t\t\t\t\t: input.dateOfBirth.toISOString(),\r\n\t\t\t\tpassword: await sha256(input.password),\r\n\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\tdomain: input.domain,\r\n\t\t\t\tbtag: input.btag,\r\n\t\t\t},\r\n\t\t\tverificationCode: input.verificationCode,\r\n\t\t\treCAPTCHAResponse: input.reCAPTCHAResponse,\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.updateAccount(user.id, {\r\n\t * \tvalidId: data.validId,\r\n\t * \trealName: data.realName,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync updateAccount(id: string, input: UpdateAccountInput): Promise<UpdateAccountReturn> {\r\n\t\treturn await this.accountService.updateMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t...input,\r\n\t\t\t\t\tpassword: input.password ? await sha256(input.password) : undefined,\r\n\t\t\t\t\ttransactionPassword: input.transactionPassword\r\n\t\t\t\t\t\t? await sha256(input.transactionPassword)\r\n\t\t\t\t\t\t: undefined,\r\n\t\t\t\t\t...(input.mobileNumber && {\r\n\t\t\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tsecretAnswer: input.secretAnswer ? await sha256(input.secretAnswer) : undefined,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync deleteAccount(id: string): Promise<DeleteAccountReturn> {\r\n\t\treturn await this.accountService.deleteMemberAccount({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync verificationDetails(): Promise<VerificationDetailsReturn> {\r\n\t\tconst res = await this.accountService.memberVerification();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.verificationDetails(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.submitVerificationDetails({\r\n\t * \tid: ObjectId.generate(ObjectType.Verification).toString(),\r\n\t * \tidFrontImage: data.idFrontImage,\r\n\t * \tselfieImage: data.selfieImage,\r\n\t * \taddress: data.address,\r\n\t * \tsourceOfIncome: data.sourceOfIncome,\r\n\t * \tnatureOfWork: data.natureOfWork,\r\n\t * \tplaceOfBirth: data.placeOfBirth,\r\n\t * \tnationality: data.nationality,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync submitVerificationDetails(\r\n\t\tinput: SubmitVerificationDetailsInput,\r\n\t): Promise<SubmitVerificationDetailsReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Verification).toString();\r\n\r\n\t\tconst res = await this.accountService.createMemberVerification({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\t...input,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.submitVerificationDetails(verificationDetails.id, {\r\n\t * \tidFrontImage: data.idFrontImage,\r\n\t * \tselfieImage: data.selfieImage,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync updateVerificationDetails(\r\n\t\tid: string,\r\n\t\tinput: UpdateVerificationDetailsInput,\r\n\t): Promise<UpdateVerificationDetailsReturn> {\r\n\t\treturn await this.accountService.updateMemberVerification({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\t...input,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync resetPassword(input: ResetPasswordInput): Promise<ResetPasswordReturn> {\r\n\t\treturn await this.accountService.resetPassword({\r\n\t\t\tinput: {\r\n\t\t\t\tmobileNumber: this.addAreaCode(input.mobileNumber),\r\n\t\t\t\tnewPassword: await sha256(input.newPassword),\r\n\t\t\t},\r\n\t\t\tverificationCode: input.verificationCode,\r\n\t\t});\r\n\t}\r\n\r\n\tasync verifyMobileNumber(verificationCode: string): Promise<VerifyMobileNumberReturn> {\r\n\t\treturn await this.accountService.verifyMobileNumber({\r\n\t\t\tinput: {\r\n\t\t\t\tverificationCode,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync profileCompletion(): Promise<ProfileCompletionReturn> {\r\n\t\tconst res = await this.accountService.profileCompletion();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: this.transformer.transform.profileCompletion(res.data),\r\n\t\t};\r\n\t}\r\n\r\n\tasync sendVerificationCode(mobileNumber: string): Promise<SendVerificationCodeReturn> {\r\n\t\treturn await this.accountService.sendVerificationCode({\r\n\t\t\tinput: {\r\n\t\t\t\tchannel: 'SMS',\r\n\t\t\t\trecipient: this.addAreaCode(mobileNumber),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync wallet(): Promise<WalletReturn> {\r\n\t\tconst res = await this.walletService.wallet();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.wallet(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Announcement\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync announcements(input?: AnnouncementsInput): Promise<AnnouncementsReturn> {\r\n\t\tconst res = await this.accountService.announcements({\r\n\t\t\t...input,\r\n\t\t\tfilter: {\r\n\t\t\t\tvisibility: {\r\n\t\t\t\t\tin: ['MEMBER', 'GLOBAL'],\r\n\t\t\t\t},\r\n\t\t\t\tactivationStartDateTime: {\r\n\t\t\t\t\tgreaterThanOrEqual: new Date(),\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tannouncements: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.announcement(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as AnnouncementsReturn;\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Withdrawal\r\n\t * ========================================\r\n\t */\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createWithdrawal({\r\n\t * \tid: ObjectId.generate(ObjectType.Withdrawal).toString(),\r\n\t * \ttype: 'BANK',\r\n\t * \tamount: data.amount,\r\n\t * \ttransactionPassword: data.transactionPassword,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createWithdrawal(input: CreateWithdrawalInput): Promise<CreateWithdrawalReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Withdrawal).toString();\r\n\r\n\t\tif (input.type === 'BANK') {\r\n\t\t\tconst res = await this.walletService.createBankWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'GCASH') {\r\n\t\t\tconst res = await this.walletService.createGCashWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t\trecipientMobileNumber: this.addAreaCode(input.recipientMobileNumber),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA') {\r\n\t\t\tconst res = await this.walletService.createMayaWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t\trecipientMobileNumber: this.addAreaCode(input.recipientMobileNumber),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA_APP') {\r\n\t\t\tconst res = await this.walletService.createMayaAppWithdrawal({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\ttransactionPassword: await sha256(input.transactionPassword),\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\treturn { ok: true, data: { id } };\r\n\t}\r\n\r\n\tasync withdrawalRecords(input?: WithdrawalRecordsInput): Promise<WithdrawalRecordsReturn> {\r\n\t\tconst res = await this.reportService.withdrawalRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\twithdrawalRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.withdrawalRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as WithdrawalRecordsReturn;\r\n\t}\r\n\r\n\tasync remainingDailyWithdrawalsCount(): Promise<RemainingDailyWithdrawalsCountReturn> {\r\n\t\treturn await this.walletService.remainingDailyWithdrawalsCount();\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Deposit\r\n\t * ========================================\r\n\t */\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createDeposit({\r\n\t * \tid: ObjectId.generate(ObjectType.Deposit).toString(),\r\n\t * \ttype: 'GCASH',\r\n\t * \tamount: data.amount,\r\n\t * \tpromo: data.promo,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createDeposit(input: CreateDepositInput): Promise<CreateDepositReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.Deposit).toString();\r\n\r\n\t\tif (input.type === 'MAYA') {\r\n\t\t\tconst res = await this.walletService.createMayaDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'MAYA_APP') {\r\n\t\t\tconst res = await this.walletService.createMayaAppDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\tif (input.type === 'GCASH') {\r\n\t\t\tconst res = await this.walletService.createGCashDeposit({\r\n\t\t\t\tinput: {\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tamount: input.amount.toString(),\r\n\t\t\t\t\tpromo: input.promo,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (!res.ok) return res;\r\n\t\t}\r\n\r\n\t\treturn { ok: true, data: { id } };\r\n\t}\r\n\r\n\tasync deposit(id: string): Promise<DepositReturn> {\r\n\t\tconst res = await this.walletService.deposit({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.deposit(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync depositRecords(input?: DepositRecordsInput): Promise<DepositRecordsReturn> {\r\n\t\tconst res = await this.reportService.depositRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tdepositRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.depositRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as DepositRecordsReturn;\r\n\t}\r\n\r\n\tasync depositsCount(): Promise<DepositsCountReturn> {\r\n\t\treturn await this.reportService.depositsCount();\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Bet\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync betRecords(input?: BetRecordsInput): Promise<BetRecordsReturn> {\r\n\t\tconst res = await this.reportService.betRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tbetRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.betRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as BetRecordsReturn;\r\n\t}\r\n\r\n\tasync latestBetRecords(): Promise<LatestBetRecordsReturn> {\r\n\t\tconst res = await this.portalService.latestBetRecords();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.latestBetRecord),\r\n\t\t};\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Transaction\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync transactionRecords(input?: TransactionRecordsInput): Promise<TransactionRecordsReturn> {\r\n\t\tconst res = await this.reportService.transactionRecords(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\ttransactionRecords: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.transactionRecord(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: res.data.pageInfo.endCursor ?? undefined,\r\n\t\t\t\thasNextPage: res.data.pageInfo.hasNextPage,\r\n\t\t\t},\r\n\t\t} as TransactionRecordsReturn;\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Promos\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync promos(): Promise<PromosReturn> {\r\n\t\tconst res = await this.walletService.promos();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.promo),\r\n\t\t};\r\n\t}\r\n\r\n\tasync availablePromos(): Promise<AvailablePromosReturn> {\r\n\t\tconst res = await this.walletService.availablePromos();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.promo),\r\n\t\t};\r\n\t}\r\n\r\n\tasync cashbacks(): Promise<CashbacksReturn> {\r\n\t\tconst res = await this.walletService.cashbacks();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.cashback),\r\n\t\t};\r\n\t}\r\n\r\n\tasync bonus(): Promise<BonusReturn> {\r\n\t\tconst res = await this.walletService.bonus();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.bonus(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync cashbackBonuses(): Promise<CashbackBonusReturn> {\r\n\t\tconst res = await this.walletService.cashbackBonuses();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.cashbackBonus),\r\n\t\t};\r\n\t}\r\n\r\n\tasync claimCashbackBonus(id: string): Promise<ClaimCashbackBonusReturn> {\r\n\t\treturn await this.walletService.claimCashbackBonus({ input: { id } });\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Game\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync games(input?: GamesInput): Promise<GamesReturn> {\r\n\t\tconst res = await this.gameService.games(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.game(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: 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 GamesReturn;\r\n\t}\r\n\r\n\tasync gamesByName(input: GamesByNameInput): Promise<GamesByNameReturn> {\r\n\t\tconst res = await this.gameService.gamesByName(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.game),\r\n\t\t};\r\n\t}\r\n\r\n\tasync gamesByName__next(input: GamesByNameInput__Next): Promise<GamesByNameReturn> {\r\n\t\tconst res = await this.walletService.gamesByName(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data.map(this.transformer.transform.game),\r\n\t\t};\r\n\t}\r\n\r\n\tasync games__next(input?: GamesInput__Next): Promise<GamesReturn> {\r\n\t\tconst res = await this.walletService.games(input);\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: {\r\n\t\t\t\tgames: res.data.edges.map(({ cursor, node }) => ({\r\n\t\t\t\t\t...this.transformer.transform.game(node),\r\n\t\t\t\t\tcursor,\r\n\t\t\t\t})),\r\n\t\t\t\ttotalCount: res.data.totalCount,\r\n\t\t\t\tnextCursor: 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 GamesReturn;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createGameSession({\r\n\t * \tid: ObjectId.generate(ObjectType.GameSession).toString(),\r\n\t * \tgame: game.id,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createGameSession(input: CreateGameSessionInput): Promise<CreateGameSessionReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.GameSession).toString();\r\n\r\n\t\tconst res = await this.gameService.createGameSession({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tgame: input.game,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.createGameSession({\r\n\t * \tid: ObjectId.generate(ObjectType.GameSession).toString(),\r\n\t * \tgame: game.id,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync createGameSession__next(input: CreateGameSessionInput): Promise<CreateGameSessionReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.GameSession).toString();\r\n\r\n\t\tconst res = await this.walletService.createGameSession({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tgame: input.game,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\tasync gameSession(id: string): Promise<GameSessionReturn> {\r\n\t\tconst res = await this.gameService.gameSession({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.gameSession(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync gameSession__next(id: string): Promise<GameSessionReturn> {\r\n\t\tconst res = await this.walletService.gameSession({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.gameSession(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync endGameSession(id: string): Promise<EndGameSessionReturn> {\r\n\t\treturn await this.gameService.endGameSession({ input: { id } });\r\n\t}\r\n\r\n\tasync endGameSession__next(id: string): Promise<EndGameSessionReturn> {\r\n\t\treturn await this.walletService.endGameSession({ input: { id } });\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * File\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync file(id: string): Promise<FileReturn> {\r\n\t\tconst res = await this.fileService.file({ id });\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.file(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * @example\r\n\t * ```ts\r\n\t * const res = await sdk.uploadImageFile({\r\n\t * \tid: ObjectId.generate(ObjectType.File).toString(),\r\n\t * \tfile: data.file,\r\n\t * });\r\n\t *\r\n\t * if (!res.ok) {\r\n\t * \twindow.alert(res.error.message);\r\n\t * } else {\r\n\t * \t// Do something\r\n\t * }\r\n\t * ```\r\n\t */\r\n\tasync uploadImageFile(input: UploadImageFileInput): Promise<UploadImageFileReturn> {\r\n\t\tconst id = input.id ?? ObjectId.generate(ObjectType.File).toString();\r\n\r\n\t\tconst res = await this.fileService.uploadPrivateImageFile({\r\n\t\t\tinput: {\r\n\t\t\t\tid,\r\n\t\t\t\tfile: input.file,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn res.ok ? { ok: true, data: { id } } : res;\r\n\t}\r\n\r\n\t/*\r\n\t * ========================================\r\n\t * Points\r\n\t * ========================================\r\n\t */\r\n\r\n\tasync pointsWallet(): Promise<PointsWalletReturn> {\r\n\t\tconst res = await this.walletService.pointsWallet();\r\n\r\n\t\tif (!res.ok) return res;\r\n\r\n\t\treturn {\r\n\t\t\tok: true,\r\n\t\t\tdata: res.data ? this.transformer.transform.pointsWallet(res.data) : null,\r\n\t\t};\r\n\t}\r\n\r\n\tasync pointsToCashConversion(amount: number): Promise<PointsToCashConversionReturn> {\r\n\t\treturn await this.walletService.pointsToCashConversion({\r\n\t\t\tinput: {\r\n\t\t\t\tamount: amount.toString(),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate addAreaCode(mobileNumber: string) {\r\n\t\tif (mobileNumber.startsWith('+63')) return mobileNumber;\r\n\t\tif (mobileNumber.startsWith('63')) return `+${mobileNumber}`;\r\n\t\tif (mobileNumber.startsWith('0')) return `+63${mobileNumber.substring(1)}`;\r\n\t\treturn `+63${mobileNumber}`;\r\n\t}\r\n}\r\n\r\nexport default Sdk;\r\n"],"names":["ObjectType","gql","strings","values","result","index","string","value","ANNOUNCEMENTS_QUERY","GAME_FRAGMENT","GAME_QUERY","GAMES_QUERY","GAMES_BY_NAME_QUERY","GAME_SESSION_QUERY","CREATE_GAME_SESSION_MUTATION","END_GAME_SESSION_MUTATION","BET_RECORDS_QUERY","LATEST_BET_RECORDS_QUERY","FILE_FRAGMENT","FILE_QUERY","UPLOAD_PRIVATE_IMAGE_FILE_MUTATION","CASHBACK_FRAGMENT","CASHBACKS_QUERY","PROMO_FRAGMENT","PROMOS_QUERY","AVAILABLE_PROMOS_QUERY","BONUS_QUERY","CASHBACK_BONUSES_QUERY","CLAIM_CASHBACK_BONUS_MUTATION","DEPOSIT_RECORDS_QUERY","CREATE_GCASH_DEPOSIT_MUTATION","CREATE_MAYA_DEPOSIT_MUTATION","CREATE_MAYA_APP_DEPOSIT_MUTATION","DEPOSIT_QUERY","DEPOSITS_COUNT_QUERY","MEMBER_QUERY","MEMBER_ACCOUNT_QUERY","MEMBER_VERIFICATION_QUERY","REGISTER_MEMBER_ACCOUNT_MUTATION","UPDATE_MEMBER_ACCOUNT_MUTATION","RESET_PASSWORD_MUTATION","DELETE_MEMBER_ACCOUNT_MUTATION","SEND_VERIFICATION_CODE_MUTATION","VERIFY_MOBILE_NUMBER_MUTATION","CREATE_MEMBER_VERIFICATION_MUTATION","UPDATE_MEMBER_VERIFICATION_MUTATION","PROFILE_COMPLETION_QUERY","PLATFORM_QUERY","POINTS_WALLET_QUERY","POINTS_TO_CASH_CONVERSION_MUTATION","MAYA_SESSION_QUERY","TRANSACTION_RECORDS_QUERY","WALLET_QUERY","WITHDRAWAL_RECORDS_QUERY","CREATE_GCASH_WITHDRAWAL_MUTATION","CREATE_MAYA_WITHDRAWAL_MUTATION","CREATE_MAYA_APP_WITHDRAWAL_MUTATION","CREATE_BANK_WITHDRAWAL_MUTATION","REMAINING_DAILY_WITHDRAWALS_COUNT_QUERY","createOperationError","code","AccountService","client","__publicField","res","variables","statusCodeToOperationError","message","e","ERROR_MAP","AuthService","config","input","headers","data","token","refreshToken","accessToken","FileService","GameService","ReportService","StaticService","args","WalletService","PortalService","isPlainObject","flatten","fn","o","parentKeys","k","v","arrayToObject","array","i","GraphQLClient","url","_a","query","body","req","request","json","error","_b","_c","_d","_e","_f","middleware","files","map","sha256","msgUint8","hashBuffer","b","Logger","cloneDate","date","addDays","days","addMinutes","minutes","isAfter","date1","date2","sleep","ms","resolve","subMinutes","SessionManager","now","val","obj","accessTokenExpiresAt","refreshTokenExpiresAt","s","parseDecimal","fallback","parsed","Transformer","debug","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","images","Sdk","graphqlClientConfig","interval","onInvalid","timeout","assignTimeout","j","id","ObjectId","verificationCode","mobileNumber","cursor","node","amount"],"mappings":"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"}
|