import { gql } from '@apollo/client'; import * as Apollo from '@apollo/client'; export type Maybe = T | null; export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; export type MakeEmpty = { [_ in K]?: never }; export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; const defaultOptions = {} as const; /** All built-in and custom scalars, mapped to their actual values */ export type Scalars = { ID: { input: string; output: string; } String: { input: string; output: string; } Boolean: { input: boolean; output: boolean; } Int: { input: number; output: number; } Float: { input: number; output: number; } /** Date with time (isoformat) */ DateTime: { input: any; output: any; } /** Decimal (fixed-point) */ Decimal: { input: any; output: any; } }; export type AggregateResultGql = { __typename?: 'AggregateResultGQL'; featureBuckets: Array; targetMetrics: Array; }; export type AndFilter = { filters: Array; }; export type BankFeaturesGql = { __typename?: 'BankFeaturesGQL'; bankAngle: Scalars['Float']['output']; distance: Scalars['Float']['output']; wallsHit: Array; }; export type BucketGql = { __typename?: 'BucketGQL'; lowerBound: Scalars['Float']['output']; rangeKey: Scalars['String']['output']; }; export type BucketInputGql = { lowerBound: Scalars['Float']['input']; rangeKey: Scalars['String']['input']; }; export type BucketSetGql = { __typename?: 'BucketSetGQL'; buckets: Array; feature: Scalars['String']['output']; keyName: Scalars['String']['output']; }; export type BucketSetInputGql = { buckets: Array; feature: Scalars['String']['input']; }; export type CreateBucketSetInput = { buckets: Array; feature: Scalars['String']['input']; keyName: Scalars['String']['input']; }; export type CreateUploadStreamReturn = { __typename?: 'CreateUploadStreamReturn'; videoId: Scalars['Int']['output']; }; export type CueBallSpeedInput = { value: RangeFilter; }; export type CueObjectAngleInput = { value: RangeFilter; }; export type CueObjectDistanceInput = { value: RangeFilter; }; export type CueObjectFeaturesGql = { __typename?: 'CueObjectFeaturesGQL'; cueBallSpeed?: Maybe; cueObjectAngle?: Maybe; cueObjectDistance?: Maybe; shotDirection?: Maybe; }; export enum DeviceTypeEnum { Android = 'ANDROID', Browser = 'BROWSER', Ios = 'IOS' } export type EnumFilter = { equals?: InputMaybe; }; export type FilterInput = { andFilters?: InputMaybe; cueBallSpeed?: InputMaybe; cueObjectAngle?: InputMaybe; cueObjectDistance?: InputMaybe; intendedPocketType?: InputMaybe; orFilters?: InputMaybe; shotDirection?: InputMaybe; targetPocketDistance?: InputMaybe; }; export type GetUploadLinkReturn = { __typename?: 'GetUploadLinkReturn'; uploadUrl: Scalars['String']['output']; }; export type IntendedPocketTypeInput = { value: EnumFilter; }; export type Mutation = { __typename?: 'Mutation'; createBucketSet: BucketSetGql; createUploadStream: CreateUploadStreamReturn; getUploadLink: GetUploadLinkReturn; terminateUploadStream: Scalars['Boolean']['output']; }; export type MutationCreateBucketSetArgs = { params: CreateBucketSetInput; }; export type MutationCreateUploadStreamArgs = { uploadMetadata?: InputMaybe; videoName?: InputMaybe; }; export type MutationGetUploadLinkArgs = { segmentIndex: Scalars['Int']['input']; videoId: Scalars['Int']['input']; }; export type MutationTerminateUploadStreamArgs = { gameType?: InputMaybe; tableSize?: InputMaybe; videoId: Scalars['Int']['input']; videoName?: InputMaybe; }; export type OrFilter = { filters: Array; }; export type PageInfoGql = { __typename?: 'PageInfoGQL'; endCursor?: Maybe; hasNextPage: Scalars['Boolean']['output']; }; export enum PocketEnum { Corner = 'CORNER', Side = 'SIDE' } export type PocketingIntentionFeaturesGql = { __typename?: 'PocketingIntentionFeaturesGQL'; intendedPocketType?: Maybe; make?: Maybe; targetPocketDistance?: Maybe; }; export type Query = { __typename?: 'Query'; getAggregateShots: Array; getBucketSet?: Maybe; getLoggedInUser?: Maybe; getShots: Array; getUser?: Maybe; getVideo: VideoGql; getVideoFeedForUser: VideoFeedGql; }; export type QueryGetAggregateShotsArgs = { bucketSets: Array; }; export type QueryGetBucketSetArgs = { keyName: Scalars['String']['input']; }; export type QueryGetShotsArgs = { filterInput?: InputMaybe; }; export type QueryGetUserArgs = { userId: Scalars['Int']['input']; }; export type QueryGetVideoArgs = { videoId: Scalars['Int']['input']; }; export type QueryGetVideoFeedForUserArgs = { after?: InputMaybe; first?: Scalars['Int']['input']; }; export type RangeFilter = { greaterThanEqualTo?: InputMaybe; lessThan?: InputMaybe; }; export enum ShotDirectionEnum { Left = 'LEFT', Right = 'RIGHT', Straight = 'STRAIGHT' } export type ShotDirectionInput = { value: EnumFilter; }; export type ShotFeaturesGql = { __typename?: 'ShotFeaturesGQL'; bank?: Maybe; cueBallSpeed?: Maybe; cueObjectAngle?: Maybe; cueObjectDistance?: Maybe; intendedPocket?: Maybe; shotDirection?: Maybe; targetPocketDistance?: Maybe; }; export type ShotGql = { __typename?: 'ShotGQL'; createdAt?: Maybe; cueObjectFeatures?: Maybe; endFrame?: Maybe; features?: Maybe; id?: Maybe; pocketingIntentionFeatures?: Maybe; startFrame?: Maybe; updatedAt?: Maybe; videoId?: Maybe; }; export type TargetFloatFeatureGql = { __typename?: 'TargetFloatFeatureGQL'; average?: Maybe; featureName: Scalars['String']['output']; median?: Maybe; }; export type TargetMetricGql = { __typename?: 'TargetMetricGQL'; count?: Maybe; floatFeature?: Maybe; makePercentage?: Maybe; }; export type TargetPocketDistanceInput = { value: RangeFilter; }; export type UploadMetadataInput = { appVersion?: InputMaybe; browserName?: InputMaybe; browserVersion?: InputMaybe; deviceType?: InputMaybe; ipAddress?: InputMaybe; locale?: InputMaybe; networkType?: InputMaybe; osVersion?: InputMaybe; timezone?: InputMaybe; }; export type UploadStreamGql = { __typename?: 'UploadStreamGQL'; createdAt: Scalars['DateTime']['output']; id: Scalars['ID']['output']; isCompleted: Scalars['Boolean']['output']; linksRequested: Scalars['Int']['output']; updatedAt: Scalars['DateTime']['output']; uploadMetadata: UploadStreamMetadata; uploadsCompleted: Scalars['Int']['output']; }; export type UploadStreamMetadata = { __typename?: 'UploadStreamMetadata'; appVersion?: Maybe; browserName?: Maybe; browserVersion?: Maybe; deviceType?: Maybe; ipAddress?: Maybe; locale?: Maybe; networkType?: Maybe; osVersion?: Maybe; timezone?: Maybe; }; export type UserGql = { __typename?: 'UserGQL'; createdAt?: Maybe; firebaseUid: Scalars['String']['output']; id: Scalars['Int']['output']; statistics: UserStatisticsGql; updatedAt?: Maybe; username: Scalars['String']['output']; }; export type UserStatisticsGql = { __typename?: 'UserStatisticsGQL'; averageTimeBetweenShots: Scalars['Decimal']['output']; makePercentage: Scalars['Decimal']['output']; medianRun?: Maybe; timeSpentPlaying: Scalars['Decimal']['output']; totalShots: Scalars['Int']['output']; totalShotsMade: Scalars['Int']['output']; }; export type VideoFeedGql = { __typename?: 'VideoFeedGQL'; pageInfo: PageInfoGql; videos: Array; }; export type VideoGql = { __typename?: 'VideoGQL'; averageTimeBetweenShots?: Maybe; createdAt: Scalars['DateTime']['output']; elapsedTime?: Maybe; endTime: Scalars['DateTime']['output']; framesPerSecond: Scalars['Int']['output']; id: Scalars['Int']['output']; makePercentage: Scalars['Float']['output']; medianRun?: Maybe; name?: Maybe; shots: Array; startTime: Scalars['DateTime']['output']; stream?: Maybe; totalShots: Scalars['Int']['output']; totalShotsMade: Scalars['Int']['output']; updatedAt: Scalars['DateTime']['output']; }; export enum WallTypeEnum { Long = 'LONG', Short = 'SHORT' } export type GetAggregateShotsQueryVariables = Exact<{ bucketSets: Array | BucketSetInputGql; }>; export type GetAggregateShotsQuery = { __typename?: 'Query', getAggregateShots: Array<{ __typename?: 'AggregateResultGQL', featureBuckets: Array<{ __typename?: 'BucketGQL', rangeKey: string, lowerBound: number }>, targetMetrics: Array<{ __typename?: 'TargetMetricGQL', count?: number | null, makePercentage?: number | null, floatFeature?: { __typename?: 'TargetFloatFeatureGQL', featureName: string, average?: number | null, median?: number | null } | null }> }> }; export type GetFeedQueryVariables = Exact<{ first?: Scalars['Int']['input']; after?: InputMaybe; }>; export type GetFeedQuery = { __typename?: 'Query', getVideoFeedForUser: { __typename?: 'VideoFeedGQL', videos: Array<{ __typename?: 'VideoGQL', id: number, name?: string | null, totalShotsMade: number, totalShots: number, makePercentage: number, medianRun?: number | null, averageTimeBetweenShots?: number | null, createdAt: any, updatedAt: any, startTime: any, endTime: any, elapsedTime?: number | null, shots: Array<{ __typename?: 'ShotGQL', id?: number | null, videoId?: number | null, startFrame?: number | null, endFrame?: number | null, createdAt?: any | null, updatedAt?: any | null }>, stream?: { __typename?: 'UploadStreamGQL', id: string, linksRequested: number, uploadsCompleted: number, isCompleted: boolean, createdAt: any, updatedAt: any } | null }>, pageInfo: { __typename?: 'PageInfoGQL', hasNextPage: boolean, endCursor?: string | null } } }; export type GetShotsQueryVariables = Exact<{ filterInput?: InputMaybe; includeCueObjectDistance?: Scalars['Boolean']['input']; includeCueObjectAngle?: Scalars['Boolean']['input']; includeCueBallSpeed?: Scalars['Boolean']['input']; includeShotDirection?: Scalars['Boolean']['input']; includeTargetPocketDistance?: Scalars['Boolean']['input']; includeMake?: Scalars['Boolean']['input']; includeIntendedPocketType?: Scalars['Boolean']['input']; }>; export type GetShotsQuery = { __typename?: 'Query', getShots: Array<{ __typename?: 'ShotGQL', id?: number | null, videoId?: number | null, startFrame?: number | null, endFrame?: number | null, createdAt?: any | null, updatedAt?: any | null, cueObjectFeatures?: { __typename?: 'CueObjectFeaturesGQL', cueObjectDistance?: number | null, cueObjectAngle?: number | null, cueBallSpeed?: number | null, shotDirection?: ShotDirectionEnum | null } | null, pocketingIntentionFeatures?: { __typename?: 'PocketingIntentionFeaturesGQL', targetPocketDistance?: number | null, make?: boolean | null, intendedPocketType?: PocketEnum | null } | null }> }; export type CreateUploadStreamMutationVariables = Exact<{ videoName: Scalars['String']['input']; deviceType?: InputMaybe; osVersion?: InputMaybe; appVersion?: InputMaybe; browserName?: InputMaybe; browserVersion?: InputMaybe; locale?: InputMaybe; timezone?: InputMaybe; networkType?: InputMaybe; ipAddress?: InputMaybe; }>; export type CreateUploadStreamMutation = { __typename?: 'Mutation', createUploadStream: { __typename?: 'CreateUploadStreamReturn', videoId: number } }; export type GetUploadLinkMutationVariables = Exact<{ videoId: Scalars['Int']['input']; segmentIndex: Scalars['Int']['input']; }>; export type GetUploadLinkMutation = { __typename?: 'Mutation', getUploadLink: { __typename?: 'GetUploadLinkReturn', uploadUrl: string } }; export type TerminateUploadStreamMutationVariables = Exact<{ videoId: Scalars['Int']['input']; videoName?: InputMaybe; gameType?: InputMaybe; tableSize?: InputMaybe; }>; export type TerminateUploadStreamMutation = { __typename?: 'Mutation', terminateUploadStream: boolean }; export const GetAggregateShotsDocument = gql` query GetAggregateShots($bucketSets: [BucketSetInputGQL!]!) { getAggregateShots(bucketSets: $bucketSets) { featureBuckets { rangeKey lowerBound } targetMetrics { count makePercentage floatFeature { featureName average median } } } } `; /** * __useGetAggregateShotsQuery__ * * To run a query within a React component, call `useGetAggregateShotsQuery` and pass it any options that fit your needs. * When your component renders, `useGetAggregateShotsQuery` returns an object from Apollo Client that contains loading, error, and data properties * you can use to render your UI. * * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; * * @example * const { data, loading, error } = useGetAggregateShotsQuery({ * variables: { * bucketSets: // value for 'bucketSets' * }, * }); */ export function useGetAggregateShotsQuery(baseOptions: Apollo.QueryHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useQuery(GetAggregateShotsDocument, options); } export function useGetAggregateShotsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useLazyQuery(GetAggregateShotsDocument, options); } export function useGetAggregateShotsSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useSuspenseQuery(GetAggregateShotsDocument, options); } export type GetAggregateShotsQueryHookResult = ReturnType; export type GetAggregateShotsLazyQueryHookResult = ReturnType; export type GetAggregateShotsSuspenseQueryHookResult = ReturnType; export type GetAggregateShotsQueryResult = Apollo.QueryResult; export const GetFeedDocument = gql` query GetFeed($first: Int! = 5, $after: String = null) { getVideoFeedForUser(first: $first, after: $after) { videos { id name totalShotsMade totalShots makePercentage medianRun averageTimeBetweenShots createdAt updatedAt shots { id videoId startFrame endFrame createdAt updatedAt } startTime endTime elapsedTime stream { id linksRequested uploadsCompleted isCompleted createdAt updatedAt } } pageInfo { hasNextPage endCursor } } } `; /** * __useGetFeedQuery__ * * To run a query within a React component, call `useGetFeedQuery` and pass it any options that fit your needs. * When your component renders, `useGetFeedQuery` returns an object from Apollo Client that contains loading, error, and data properties * you can use to render your UI. * * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; * * @example * const { data, loading, error } = useGetFeedQuery({ * variables: { * first: // value for 'first' * after: // value for 'after' * }, * }); */ export function useGetFeedQuery(baseOptions?: Apollo.QueryHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useQuery(GetFeedDocument, options); } export function useGetFeedLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useLazyQuery(GetFeedDocument, options); } export function useGetFeedSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useSuspenseQuery(GetFeedDocument, options); } export type GetFeedQueryHookResult = ReturnType; export type GetFeedLazyQueryHookResult = ReturnType; export type GetFeedSuspenseQueryHookResult = ReturnType; export type GetFeedQueryResult = Apollo.QueryResult; export const GetShotsDocument = gql` query GetShots($filterInput: FilterInput, $includeCueObjectDistance: Boolean! = false, $includeCueObjectAngle: Boolean! = false, $includeCueBallSpeed: Boolean! = false, $includeShotDirection: Boolean! = false, $includeTargetPocketDistance: Boolean! = false, $includeMake: Boolean! = false, $includeIntendedPocketType: Boolean! = false) { getShots(filterInput: $filterInput) { id videoId startFrame endFrame createdAt updatedAt cueObjectFeatures { cueObjectDistance @include(if: $includeCueObjectDistance) cueObjectAngle @include(if: $includeCueObjectAngle) cueBallSpeed @include(if: $includeCueBallSpeed) shotDirection @include(if: $includeShotDirection) } pocketingIntentionFeatures { targetPocketDistance @include(if: $includeTargetPocketDistance) make @include(if: $includeMake) intendedPocketType @include(if: $includeIntendedPocketType) } } } `; /** * __useGetShotsQuery__ * * To run a query within a React component, call `useGetShotsQuery` and pass it any options that fit your needs. * When your component renders, `useGetShotsQuery` returns an object from Apollo Client that contains loading, error, and data properties * you can use to render your UI. * * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; * * @example * const { data, loading, error } = useGetShotsQuery({ * variables: { * filterInput: // value for 'filterInput' * includeCueObjectDistance: // value for 'includeCueObjectDistance' * includeCueObjectAngle: // value for 'includeCueObjectAngle' * includeCueBallSpeed: // value for 'includeCueBallSpeed' * includeShotDirection: // value for 'includeShotDirection' * includeTargetPocketDistance: // value for 'includeTargetPocketDistance' * includeMake: // value for 'includeMake' * includeIntendedPocketType: // value for 'includeIntendedPocketType' * }, * }); */ export function useGetShotsQuery(baseOptions?: Apollo.QueryHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useQuery(GetShotsDocument, options); } export function useGetShotsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useLazyQuery(GetShotsDocument, options); } export function useGetShotsSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useSuspenseQuery(GetShotsDocument, options); } export type GetShotsQueryHookResult = ReturnType; export type GetShotsLazyQueryHookResult = ReturnType; export type GetShotsSuspenseQueryHookResult = ReturnType; export type GetShotsQueryResult = Apollo.QueryResult; export const CreateUploadStreamDocument = gql` mutation CreateUploadStream($videoName: String!, $deviceType: DeviceTypeEnum, $osVersion: String, $appVersion: String, $browserName: String, $browserVersion: String, $locale: String, $timezone: String, $networkType: String, $ipAddress: String) { createUploadStream( videoName: $videoName uploadMetadata: {deviceType: $deviceType, osVersion: $osVersion, appVersion: $appVersion, browserName: $browserName, browserVersion: $browserVersion, locale: $locale, timezone: $timezone, networkType: $networkType, ipAddress: $ipAddress} ) { videoId } } `; export type CreateUploadStreamMutationFn = Apollo.MutationFunction; /** * __useCreateUploadStreamMutation__ * * To run a mutation, you first call `useCreateUploadStreamMutation` within a React component and pass it any options that fit your needs. * When your component renders, `useCreateUploadStreamMutation` returns a tuple that includes: * - A mutate function that you can call at any time to execute the mutation * - An object with fields that represent the current status of the mutation's execution * * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; * * @example * const [createUploadStreamMutation, { data, loading, error }] = useCreateUploadStreamMutation({ * variables: { * videoName: // value for 'videoName' * deviceType: // value for 'deviceType' * osVersion: // value for 'osVersion' * appVersion: // value for 'appVersion' * browserName: // value for 'browserName' * browserVersion: // value for 'browserVersion' * locale: // value for 'locale' * timezone: // value for 'timezone' * networkType: // value for 'networkType' * ipAddress: // value for 'ipAddress' * }, * }); */ export function useCreateUploadStreamMutation(baseOptions?: Apollo.MutationHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useMutation(CreateUploadStreamDocument, options); } export type CreateUploadStreamMutationHookResult = ReturnType; export type CreateUploadStreamMutationResult = Apollo.MutationResult; export type CreateUploadStreamMutationOptions = Apollo.BaseMutationOptions; export const GetUploadLinkDocument = gql` mutation GetUploadLink($videoId: Int!, $segmentIndex: Int!) { getUploadLink(videoId: $videoId, segmentIndex: $segmentIndex) { uploadUrl } } `; export type GetUploadLinkMutationFn = Apollo.MutationFunction; /** * __useGetUploadLinkMutation__ * * To run a mutation, you first call `useGetUploadLinkMutation` within a React component and pass it any options that fit your needs. * When your component renders, `useGetUploadLinkMutation` returns a tuple that includes: * - A mutate function that you can call at any time to execute the mutation * - An object with fields that represent the current status of the mutation's execution * * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; * * @example * const [getUploadLinkMutation, { data, loading, error }] = useGetUploadLinkMutation({ * variables: { * videoId: // value for 'videoId' * segmentIndex: // value for 'segmentIndex' * }, * }); */ export function useGetUploadLinkMutation(baseOptions?: Apollo.MutationHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useMutation(GetUploadLinkDocument, options); } export type GetUploadLinkMutationHookResult = ReturnType; export type GetUploadLinkMutationResult = Apollo.MutationResult; export type GetUploadLinkMutationOptions = Apollo.BaseMutationOptions; export const TerminateUploadStreamDocument = gql` mutation TerminateUploadStream($videoId: Int!, $videoName: String, $gameType: String, $tableSize: String) { terminateUploadStream( videoId: $videoId videoName: $videoName gameType: $gameType tableSize: $tableSize ) } `; export type TerminateUploadStreamMutationFn = Apollo.MutationFunction; /** * __useTerminateUploadStreamMutation__ * * To run a mutation, you first call `useTerminateUploadStreamMutation` within a React component and pass it any options that fit your needs. * When your component renders, `useTerminateUploadStreamMutation` returns a tuple that includes: * - A mutate function that you can call at any time to execute the mutation * - An object with fields that represent the current status of the mutation's execution * * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; * * @example * const [terminateUploadStreamMutation, { data, loading, error }] = useTerminateUploadStreamMutation({ * variables: { * videoId: // value for 'videoId' * videoName: // value for 'videoName' * gameType: // value for 'gameType' * tableSize: // value for 'tableSize' * }, * }); */ export function useTerminateUploadStreamMutation(baseOptions?: Apollo.MutationHookOptions) { const options = {...defaultOptions, ...baseOptions} return Apollo.useMutation(TerminateUploadStreamDocument, options); } export type TerminateUploadStreamMutationHookResult = ReturnType; export type TerminateUploadStreamMutationResult = Apollo.MutationResult; export type TerminateUploadStreamMutationOptions = Apollo.BaseMutationOptions;