import { AccountingAccountName } from './API';
import { AccountingJournalType } from './API';
import { ActivityStreamActorType } from './API';
import { ActivityStreamIconType } from './API';
import { BookingCommissionTaxRate } from './API';
import { BookingEntityType } from './API';
import { BookingSpaceCancellationType } from './API';
import { BookingSpaceInvoiceLineType } from './API';
import { BookingSpaceInvoiceSummaryType } from './API';
import { BookingsQueryFilterDateType } from './API';
import { ChatConversationStatus } from './API';
import { ComparisonOperator } from './API';
import { CountryCodes } from './API';
import { Currency } from './API';
import { Gender } from './API';
import { GlobalCurrencies } from './API';
import { HostRecordTypes } from './API';
import { HostRoleType } from './API';
import { LandingPageFilterBy } from './API';
import { MediaType } from './API';
import { Nationality } from './API';
import { NotificationIsRead } from './API';
import { RevenueReportType } from './API';
import { ReviewSource } from './API';
import { ReviewStatisticsType } from './API';
import { SkyhookClubTiers } from './API';
import { Status } from './API';
import { SupportMessageTags } from './API';
import { TransactionProcessor } from './API';
import { TransactionType } from './API';
import { TransportMode } from './API';
import { TripActivityType } from './API';
import { TripAutomatedMessageNumber } from './API';
import { TripFAQsCategories } from './API';
import { WayPointType } from './API';
export declare type WithKeys<QueryType> = QueryType & {
    /** Object Type in ALL CAPS */
    _type: string;
    /** Partition Key */
    pk: string;
    /** Sort Key */
    sk: string;
    gsi1PK?: string;
    gsi1SK?: string;
    gsi2PK?: string;
    gsi2SK?: string;
    gsi3PK?: string;
    gsi3SK?: string;
    gsi4PK?: string;
    gsi4SK?: string;
    gsi5PK?: string;
    gsi5SK?: string;
};
declare type Maybe<T> = T | null;
/** All built-in and custom scalars, mapped to their actual values */
declare type Scalars = {
    ID: string;
    String: string;
    Boolean: boolean;
    Int: number;
    Float: number;
    AWSDate: string;
    AWSDateTime: string;
    AWSEmail: string;
    AWSIPAddress: string;
    AWSJSON: {
        [key: string]: any;
    };
    AWSPhone: string;
    AWSTime: string;
    AWSTimestamp: string;
    AWSURL: string;
};
export { AccountingAccountName };
export { AccountingJournalType };
/**
 * ActivityObject
 *
 * The Activity object represents the direct object upon which an activity was
 * performed on e.g. space for space cancellation or booking for booking created.
 */
declare type ActivityObject = {
    __typename?: 'ActivityObject';
    id: Scalars['String'];
    name: Scalars['String'];
};
/**
 * ActivityStream
 *
 * The activity stream is based on Activity Stream Spec v2 and represents an
 * activity that has been performed on the system.
 *
 * https://www.w3.org/TR/activitystreams-vocabulary/#introduction
 */
declare type ActivityStream = {
    __typename?: 'ActivityStream';
    /**
     * ActivityStreamActor
     *
     * Actors represent entities capable of carrying out an Activity - for example the
     * actor for a booking created activity is the person/user who made the booking.
     *
     * @example
     * {
     *   id: "user_UUID",
     *   name: "John Doe",
     * }
     *
     * https://www.w3.org/TR/activitystreams-core/#actors
     */
    actor: ActivityStreamActor;
    /**
     * A unique ID for the activity stream object. This is created by the Notification
     * service and not by the service emitting the activity.
     *
     * You can pass an activity stream object without id.
     *
     * @example
     * as_UUID
     */
    id: Scalars['String'];
    /**
     * isRead
     *
     * Indicates whether a notification has been viewed and read by the user.
     */
    isRead?: Maybe<NotificationIsRead>;
    /**
     * The Activity object represents the direct object upon which an activity was
     * performed on e.g. space for space cancellation or booking for booking created.
     *
     * @example
     * {
     *   id: "space_UUID",
     *   name: "space",
     * }
     *
     * https://www.w3.org/TR/activitystreams-vocabulary/#dfn-object
     */
    object: ActivityObject;
    /**
     * The date and time at which the object was published
     *
     * https://www.w3.org/TR/activitystreams-vocabulary/#dfn-published
     */
    published: Scalars['AWSDateTime'];
    /**
     * An optional ID to group activities together i.e. for a space cancellation you
     * can group by groupID, allowing all cancellation for a specific departure date to
     * be grouped together. This is not part of the ActivityStreams spec.
     *
     * @example
     * group_UUID
     *
     * @example
     * trip_UUID
     */
    serviceBatchID?: Maybe<Scalars['ID']>;
    /**
     * The activity target represents the indirect object of the activity e.g. for
     * space cancellation, the direct object is Space, the target is the Trip   that
     * the space was cancelled on.
     *
     * @example
     * {
     *   id: "group_UUID",
     *   name: "Trip Title, 1 Jan 2020",
     * }
     *
     * https://www.w3.org/TR/activitystreams-vocabulary/#dfn-target
     */
    target?: Maybe<ActivityStreamTarget>;
    /**
     * The id of the user or host affected by the activity (i.e the person to receive the
     * notification from this activity)
     *
     * @example
     * user_UUID
     *
     * @example
     * host_UUID
     *
     * https://www.w3.org/TR/activitystreams-vocabulary/#dfn-to
     */
    to: Scalars['String'];
    /**
     * The action that was performed
     *
     * Activity types are added in past tense so they are ready to displayed to the user without
     * need for conversion from present tense i.e. Cancelled, Received, etc
     *
     * https://www.w3.org/TR/activitystreams-vocabulary/#activity-types
     */
    type: Scalars['String'];
    /**
     * A url or link to a dashboard or web page where the user can view the activity
     * or activities or take action in relationship to the activity or set of
     * activities.
     *
     * For batched activities, this is the url to the page where the user can view
     * and taken action for the batch of activities.
     *
     * @example
     * https://www.skyhookadventure.com/hosts/dashboard/host-url/bookings/group_UUID
     *
     * https://www.w3.org/TR/activitystreams-vocabulary/#dfn-url
     */
    url: Scalars['AWSURL'];
    /**
     * A generated ID that is unique but deterministic in a certain period of time
     * for a given user, object, and activity stream type.
     *
     * NB: This is generated by the Notification service and not by the emitting
     * service.
     *
     * @example
     * cancelled-space-host_UUID-1640696400000
     *
     * @example
     * booked-space-host_UUID-1640696400000
     */
    userBatchID: Scalars['ID'];
};
/**
 * ActivityStreamPerson
 *
 * Actors represent entities capable of carrying out an Activity - for example the
 * actor for a booking created activity is the person/user who made the booking.
 */
declare type ActivityStreamActor = {
    __typename?: 'ActivityStreamActor';
    host?: Maybe<Host>;
    /**
     * Describes an Icon for An Actor in the activity stream i.e. Profile Picture or
     * Host Image.
     *
     * https://www.w3.org/ns/activitystreams#icon
     */
    icon?: Maybe<ActivityStreamIcon>;
    /**
     * The user id or host id of the host or guest who performed the action.
     *
     * @example
     * user_UUID
     *
     * @example
     * host_UUID
     */
    id?: Maybe<Scalars['String']>;
    /**
     * The full name of the host or the guest who performed the action.
     *
     * @example
     * John Doe
     *
     * @example
     * Skyhook Mountaineering LTD
     */
    name?: Maybe<Scalars['String']>;
    /** The role of user who performed the action within Skyhook hook i.e. Host or Guest. */
    type: ActivityStreamActorType;
    user?: Maybe<UserPublicProfile>;
};
export { ActivityStreamActorType };
declare type ActivityStreamConnection = {
    __typename?: 'ActivityStreamConnection';
    items: Array<ActivityStream>;
    nextToken?: Maybe<Scalars['String']>;
};
/**
 * Describes an Icon for An Actor in the activity stream i.e. Profile Picture or
 * Host Image.
 *
 * https://www.w3.org/ns/activitystreams#icon
 */
declare type ActivityStreamIcon = {
    __typename?: 'ActivityStreamIcon';
    height?: Maybe<Scalars['Int']>;
    name?: Maybe<Scalars['String']>;
    type?: Maybe<ActivityStreamIconType>;
    url: Scalars['AWSURL'];
    width?: Maybe<Scalars['Int']>;
};
export { ActivityStreamIconType };
/**
 * ActivityStreamTarget
 *
 * The direct object upon which an activity was performed on i.e. space or booking.
 */
declare type ActivityStreamTarget = {
    __typename?: 'ActivityStreamTarget';
    /**
     * Web link to the target object i.e. Link to host group dashboard for
     * cancellations or host inbox link for messages.
     */
    href?: Maybe<Scalars['String']>;
    id: Scalars['String'];
    name: Scalars['String'];
};
/** Address uses the OASIS [XAL](https://www.oasis-open.org/committees/ciq/download.shtml) standard */
declare type Address = {
    __typename?: 'Address';
    additionalNames?: Maybe<Scalars['String']>;
    addressLine1?: Maybe<Scalars['String']>;
    addressLine2?: Maybe<Scalars['String']>;
    /** State, province or county */
    administrativeArea?: Maybe<Scalars['String']>;
    coordinates?: Maybe<Coordinates>;
    country: CountryCodes;
    /** Neighborhood or suburb */
    dependentLocality?: Maybe<Scalars['String']>;
    familyName?: Maybe<Scalars['String']>;
    givenName?: Maybe<Scalars['String']>;
    /** City */
    locality?: Maybe<Scalars['String']>;
    organisation?: Maybe<Scalars['String']>;
    postalCode?: Maybe<Scalars['String']>;
    sortingCode?: Maybe<Scalars['String']>;
};
declare type AutomatedMessage = {
    __typename?: 'AutomatedMessage';
    created: Scalars['AWSDateTime'];
    /** The message to send to the guest after booking */
    message: Scalars['String'];
    updated: Scalars['AWSDateTime'];
};
declare type BankDetails = {
    __typename?: 'BankDetails';
    accountNumber: Scalars['String'];
    bankAccountName: Scalars['String'];
    bankAddress: Address;
    bankName: Scalars['String'];
    ibanNumber?: Maybe<Scalars['String']>;
    routingCode?: Maybe<Scalars['String']>;
    sortCode?: Maybe<Scalars['String']>;
    swiftCode?: Maybe<Scalars['String']>;
};
declare type Booking = Node & {
    __typename?: 'Booking';
    /**
     * Each space has net commission and cash received. This is the total of all
     * spaces.
     */
    commissionDetails: BookingCommissionDetails;
    commissionTaxRate: BookingCommissionTaxRate;
    created: Scalars['AWSDateTime'];
    group: Group;
    host: Ref;
    id: Scalars['ID'];
    invoiceSummary: Array<BookingInvoiceSummary>;
    /**
     * All actions (transactions, cancellations, refunds, credits applied...) are shown broken down by their impact on
     * individual spaces, rather than the total booking. A single transaction can still be made to pay for several spaces -
     * the full transaction will be available from the Transaction type and then here if there are 2 spaces it will show
     * half on each space (or whatever the appropriate split was).
     */
    spaces: Array<BookingSpace>;
    /**
     * User tracking details
     *
     * Only available via IAM access (on the backend).
     */
    tracking?: Maybe<Tracking>;
    trip: Trip;
    /** The booking owner */
    user: User;
};
declare type BookingCommissionDetails = {
    __typename?: 'BookingCommissionDetails';
    cashReceived: Price;
    commission: Price;
    commissionLessCredits: Price;
    commissionRefundAmount: Price;
    /** Cash received before any refunds */
    expectedCashReceived: Price;
    netCommission: Price;
    numberOfSpacesCancelled: Scalars['Int'];
    /** Commission amount cancelled (not total amount cancelled) */
    totalAmountCancelled: Price;
};
export { BookingCommissionTaxRate };
declare type BookingConnection = Nodes & {
    __typename?: 'BookingConnection';
    items: Array<Booking>;
    nextToken?: Maybe<Scalars['String']>;
};
export { BookingEntityType };
/**
 * Invoice lines are stored on per space basis, so a booking with 2 spaces will
 * have 2 invoice lines for each transaction. This will allow us to summarize that
 * based on the invoice lines for the purpose of showing the user a summary of the
 * invoice.
 */
declare type BookingInvoiceSummary = {
    __typename?: 'BookingInvoiceSummary';
    amount: Price;
    /**
     * If Transaction (i.e. a payment or refund) is associated with this line then
     * this will be the card details used for the transaction.
     */
    card?: Maybe<TransactionCard>;
    created: Scalars['AWSDateTime'];
    /** The numberOfSpaces of spaces impacted by this invoice line */
    numberOfSpaces: Scalars['Int'];
    type: BookingSpaceInvoiceSummaryType;
};
declare type BookingSpace = {
    __typename?: 'BookingSpace';
    /** Shows if a space is active (true) or cancelled (false) */
    active: Scalars['Boolean'];
    booking: Ref;
    /** Cancellation options will show unless the space is already cancelled */
    cancellationOptions: Array<BookingSpaceCancellationOption>;
    /**
     * Cash received by us (commission - credits - refunds)
     *
     * We don't refund deposit, so even if the guest cancels, we keep the deposit.
     * This contributes to the cash received.
     */
    cashReceived: Price;
    /** Nominal sales tax (aka VAT) applicable to the host commission */
    commissionTax: Price;
    /** Sales tax (aka VAT) rate applicable to the host commission */
    commissionTaxRate: BookingCommissionTaxRate;
    created: Scalars['AWSDateTime'];
    /**
     * The exchange rate used to convert the booking price to GBP at the time of
     * booking.
     */
    gbpExchangeRate: Scalars['String'];
    /** Commission before sales tax (aka VAT) */
    grossCommission: Price;
    /**
     * Guest
     *
     * Only exists on active spaces
     */
    guest?: Maybe<Guest>;
    guestBalance: Price;
    guestDeposit: Price;
    guestTotal: Price;
    hostBalance: Price;
    hostDeposit: Price;
    hostTotal: Price;
    id: Scalars['ID'];
    /**
     * The invoice lines show, in date order, everything that has an impact on the balance owed. The first line is always
     * the total owed, and then there can be lines for payments (-ve), credits (-ve), discounts (-ve), cancellation (-ve),
     * and refunds (+ve).
     */
    invoice: Array<BookingSpaceInvoiceLine>;
    /** Commission after sales tax (aka VAT) */
    netCommission: Price;
};
declare type BookingSpaceCancellationOption = {
    __typename?: 'BookingSpaceCancellationOption';
    guestCredit: Price;
    /** Guest permission to use this cancellation option (true = has permission) */
    guestPermission: Scalars['Boolean'];
    guestRefund: Price;
    hostRefund: Price;
    type: BookingSpaceCancellationType;
};
export { BookingSpaceCancellationType };
declare type BookingSpaceInvoiceLine = {
    __typename?: 'BookingSpaceInvoiceLine';
    booking: Booking;
    bookingSpace: BookingSpace;
    created: Scalars['AWSDateTime'];
    discount?: Maybe<Ref>;
    guestAmount: PriceWithOverpayment;
    hostAmount: PriceWithOverpayment;
    id: Scalars['ID'];
    /**
     * Note
     *
     * Can be used to give the reason for e.g. a discretionary change or a cancellation.
     */
    note?: Maybe<Scalars['String']>;
    transaction?: Maybe<Transaction>;
    type: BookingSpaceInvoiceLineType;
};
export { BookingSpaceInvoiceLineType };
export { BookingSpaceInvoiceSummaryType };
export { BookingsQueryFilterDateType };
declare type ChatConversation = Node & {
    __typename?: 'ChatConversation';
    created: Scalars['AWSDateTime'];
    id: Scalars['ID'];
    lastMessage?: Maybe<Scalars['AWSDateTime']>;
    lastRead?: Maybe<Scalars['AWSDateTime']>;
    messages: ChatMessageConnection;
    participants: ChatParticipantConnection;
    /**
     * Title
     *
     * Typically provided for a group conversation, but not a direct chat.
     */
    title?: Maybe<Scalars['String']>;
};
declare type ChatConversationConnection = Nodes & {
    __typename?: 'ChatConversationConnection';
    items: Array<ChatConversation>;
    nextToken?: Maybe<Scalars['String']>;
};
export { ChatConversationStatus };
declare type ChatMessage = Node & {
    __typename?: 'ChatMessage';
    /**
     * Automated host message
     *
     * Set as true if the message was e.g. an automatic host message, sent after booking.
     */
    automatedHostMessage?: Maybe<Scalars['Boolean']>;
    created: Scalars['AWSDateTime'];
    /** Host, where the author is a host (not a user) */
    host?: Maybe<Host>;
    /**
     * hostTeamMemberUserID
     *
     * The userID of the host user admin who has sent the message, making it easier to
     * let the guest know who answered.
     */
    hostTeamMemberUserID?: Maybe<Scalars['ID']>;
    id: Scalars['ID'];
    /**
     * System message
     *
     * If set, no notifications will be sent out, and the conversation lastMessage date won't be updated.
     */
    system?: Maybe<Scalars['Boolean']>;
    text: Scalars['String'];
    /** User profile, where the author is a user (not a host) */
    user?: Maybe<UserPublicProfile>;
};
declare type ChatMessageConnection = Nodes & {
    __typename?: 'ChatMessageConnection';
    items: Array<ChatMessage>;
    nextToken?: Maybe<Scalars['String']>;
};
declare type ChatParticipant = {
    __typename?: 'ChatParticipant';
    /** Host, where the participant is a host (not a user) */
    host?: Maybe<Host>;
    lastMessage?: Maybe<Scalars['AWSDateTime']>;
    lastRead?: Maybe<Scalars['AWSDateTime']>;
    status?: Maybe<ChatConversationStatus>;
    /** User profile, where the participant is a user (not a host) */
    user?: Maybe<UserPublicProfile>;
};
declare type ChatParticipantConnection = Nodes & {
    __typename?: 'ChatParticipantConnection';
    items: Array<ChatParticipant>;
    nextToken?: Maybe<Scalars['String']>;
};
/**
 * Chat User Message Count
 *
 * Shows the number of unread messages for a chat user (i.e. user or host).
 */
declare type ChatUserMessageCount = {
    __typename?: 'ChatUserMessageCount';
    id: Scalars['ID'];
    unreadMessages: Scalars['Int'];
    /** This is the chat user ID (i.e. hostID or userID) */
    userID: Scalars['ID'];
};
declare type CommissionOverrides = Node & {
    __typename?: 'CommissionOverrides';
    id: Scalars['ID'];
    percentage: Scalars['String'];
    validFrom: Scalars['AWSDateTime'];
    validTo: Scalars['AWSDateTime'];
};
declare type CommissionOverridesTripsConnection = {
    __typename?: 'CommissionOverridesTripsConnection';
    defaultCommission: Scalars['String'];
    items: Array<CommissionOverrides>;
};
export { ComparisonOperator };
declare type Coordinates = {
    __typename?: 'Coordinates';
    lat: Scalars['Float'];
    lng: Scalars['Float'];
};
export { CountryCodes };
export { Currency };
declare type DaysBreakdown = {
    __typename?: 'DaysBreakdown';
    days: Scalars['Int'];
    nights: Scalars['Int'];
};
export { Gender };
export { GlobalCurrencies };
declare type Group = Node & {
    __typename?: 'Group';
    bookings: BookingConnection;
    commissionPercentage: Scalars['String'];
    end: LocalDateTime;
    guestDeposit: Price;
    guestPrice: Price;
    guestPriceBeforeDiscount?: Maybe<Price>;
    /** Public details of any guests (including their public profiles) */
    guests: GuestPublicConnection;
    hostPrice: Price;
    /**
     * To avoid modifying the booking service, we will have a price before discount
     * field that will be used to calculate the discount rate for display purposes
     * only and will not be used for any calculations
     */
    hostPriceBeforeDiscount?: Maybe<Price>;
    id: Scalars['ID'];
    maxCredit: Price;
    /** Media for a Trip Group */
    media?: Maybe<MediaConnection>;
    private: Scalars['Boolean'];
    remainingSpaces: Scalars['Int'];
    spacesBooked?: Maybe<Scalars['Int']>;
    start: LocalDateTime;
    totalBookingsCashReceived?: Maybe<Price>;
    totalBookingsGMV?: Maybe<Price>;
    totalBookingsNetCommission?: Maybe<Price>;
    trip: Trip;
    /**
     * Groups waiting list
     *
     * View users on a groups waiting list
     */
    waitList: WaitListConnection;
    /** Number of people on the waiting list */
    waitListCount?: Maybe<Scalars['Int']>;
};
declare type GroupConnection = Nodes & {
    __typename?: 'GroupConnection';
    items: Array<Group>;
    nextToken?: Maybe<Scalars['String']>;
};
/**
 * Guest
 *
 * A guest is the person who is actually travelling for a given booking space. This may be the booking owner, but it also
 * may be someone they bought the space for.
 */
declare type Guest = Node & {
    __typename?: 'Guest';
    /**
     * Access code
     *
     * This is a 4-digit code that can be shared to let someone else fill in the guest form. Made public so that a user can
     * get a link to share directly rather than letting the system email the guest.
     */
    accessCode: Scalars['String'];
    bio?: Maybe<Scalars['String']>;
    birthDate?: Maybe<Scalars['AWSDate']>;
    booking: Booking;
    /** Booking Owner User ID */
    bookingOwnerID: Scalars['String'];
    /**
     * Completed
     *
     * Marked as true if all the required information has been given for the guest & trip form.
     */
    completed: Scalars['Boolean'];
    created: Scalars['AWSDateTime'];
    email?: Maybe<Scalars['String']>;
    familyName?: Maybe<Scalars['String']>;
    givenName?: Maybe<Scalars['String']>;
    group: Group;
    hostNotes?: Maybe<Scalars['String']>;
    /**
     * Guest ID
     *
     * UUID of the format guest_UUID, primarily used for caching (as we update using the booking space ID instead of this).
     */
    id: Scalars['ID'];
    phone?: Maybe<Scalars['String']>;
    /** Guest Profile Picture */
    picture?: Maybe<Media>;
    review?: Maybe<Review>;
    spaceID: Scalars['String'];
    trip: Trip;
    tripForm?: Maybe<TripForm>;
    tripFormDueDate: Scalars['String'];
    tripFormRequiredInformation: TripFormRequiredInformation;
    updated: Scalars['AWSDateTime'];
    user?: Maybe<User>;
    userID?: Maybe<Scalars['String']>;
};
declare type GuestConnection = {
    __typename?: 'GuestConnection';
    items: Array<Guest>;
};
/**
 * Guest Public
 *
 * Used to show limited information publicly (e.g. the guest public photo)
 */
declare type GuestPublic = Node & {
    __typename?: 'GuestPublic';
    bookingOwnerID: Scalars['String'];
    givenName?: Maybe<Scalars['String']>;
    id: Scalars['ID'];
    /** The profile picture of the guest */
    picture?: Maybe<Media>;
    user?: Maybe<UserPublicProfile>;
    userID?: Maybe<Scalars['String']>;
};
/**
 * Guest Public Connection
 *
 * Used to show limited information publicly (e.g. the guest public photo)
 */
declare type GuestPublicConnection = {
    __typename?: 'GuestPublicConnection';
    items: Array<GuestPublic>;
};
declare type Host = Node & {
    __typename?: 'Host';
    about: Scalars['String'];
    active: Scalars['Boolean'];
    /** Hosts' bookings, ordered by created date */
    bookings: BookingConnection;
    /** Official Registration Address */
    businessAddress?: Maybe<Address>;
    chatInbox: ChatConversationConnection;
    chatMessageCount: ChatUserMessageCount;
    /**
     * Company Registration Number
     *
     * New requirements for hosts
     *
     * (Optional for backwards compatibility with existing hosts, but required for new hosts.)
     */
    companyRegistrationNumber?: Maybe<Scalars['String']>;
    contact?: Maybe<HostContactDetails>;
    created: Scalars['AWSDateTime'];
    facebookPage?: Maybe<Scalars['AWSURL']>;
    id: Scalars['ID'];
    legalName?: Maybe<Scalars['String']>;
    /** Host Logo */
    logo?: Maybe<Media>;
    /** The list of media items uploaded by a host */
    media?: Maybe<MediaConnection>;
    name: Scalars['String'];
    notifications?: Maybe<ActivityStreamConnection>;
    paymentDetails?: Maybe<HostPaymentDetails>;
    reviews: ReviewConnection;
    /**
     * Host statements
     *
     * Start and end date filters are inclusive (i.e. >= and <= respectively)
     */
    statement: HostStatement;
    /** Team members of the host */
    team: HostTeamConnection;
    termsConditions?: Maybe<Scalars['String']>;
    trips: TripConnection;
    twitterPage?: Maybe<Scalars['AWSURL']>;
    updated: Scalars['AWSDateTime'];
    urlSlug: Scalars['String'];
    /** Users with permissions to manage host */
    userRoles: HostUsersRolesConnection;
    website?: Maybe<Scalars['AWSURL']>;
};
declare type HostContactDetails = {
    __typename?: 'HostContactDetails';
    contactName?: Maybe<Scalars['String']>;
    email: Scalars['String'];
    phone: Scalars['String'];
};
declare type HostPaymentDetails = {
    __typename?: 'HostPaymentDetails';
    bankDetails?: Maybe<BankDetails>;
    currency: Currency;
    tmtID?: Maybe<Scalars['Int']>;
    tmtIDLegacy?: Maybe<Scalars['String']>;
};
export { HostRecordTypes };
declare type HostRole = {
    __typename?: 'HostRole';
    host: Host;
    role: HostRoleType;
    updated: Scalars['AWSDateTime'];
    user: User;
};
export { HostRoleType };
/** Host statements */
declare type HostStatement = {
    __typename?: 'HostStatement';
    lines: Array<HostStatementLine>;
};
/**
 * Host statement line
 *
 * One line corresponds to each transaction.
 */
declare type HostStatementLine = {
    __typename?: 'HostStatementLine';
    bookingID: Scalars['ID'];
    commissionTaxRate: BookingCommissionTaxRate;
    groupEndDate: Scalars['AWSDateTime'];
    groupID: Scalars['String'];
    groupStartDate: Scalars['AWSDateTime'];
    guestAmount: Price;
    hostAmount: Price;
    processor: TransactionProcessor;
    statementDate: Scalars['AWSDateTime'];
    tripID: Scalars['String'];
    type: TransactionType;
    userID: Scalars['String'];
};
declare type HostTeamConnection = {
    __typename?: 'HostTeamConnection';
    items: Array<UserPublicProfile>;
};
declare type HostUsersRolesConnection = {
    __typename?: 'HostUsersRolesConnection';
    items?: Maybe<Array<HostRole>>;
};
declare type LandingPageFAQ = {
    __typename?: 'LandingPageFAQ';
    answer: Scalars['String'];
    links?: Maybe<Array<TripFAQLink>>;
    question: Scalars['String'];
    videos?: Maybe<Array<TripFAQVideo>>;
};
export { LandingPageFilterBy };
/**
 * Local DateTime generic
 *
 * For use where the local time is important (e.g. a group start date).
 */
declare type LocalDateTime = {
    __typename?: 'LocalDateTime';
    /** UTC time of the format YYYY-MM-DDThh:mm:ss.sssZ */
    utc: Scalars['AWSDateTime'];
    /**
     * Timezone
     *
     * Must be a canonical timezone from the IANA dataset.
     * https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
     */
    zone: Scalars['String'];
};
/**
 * Media Item
 *
 * Can be an image or video. See
 */
declare type Media = Node & {
    __typename?: 'Media';
    created: Scalars['AWSDateTime'];
    file?: Maybe<S3Object>;
    id: Scalars['ID'];
    type: MediaType;
    updated: Scalars['AWSDateTime'];
};
/** Media Connection */
declare type MediaConnection = {
    __typename?: 'MediaConnection';
    items: Array<Media>;
    nextToken?: Maybe<Scalars['String']>;
};
export { MediaType };
declare type MinimumPriceWithDiscount = {
    __typename?: 'MinimumPriceWithDiscount';
    /** The zero-decimal amount (i.e. the amount in cents for USD/EUR, or pence for GBP). */
    amountZD: Scalars['Int'];
    currency: Currency;
    discountRate?: Maybe<Scalars['Float']>;
    priceBeforeDiscount?: Maybe<Price>;
};
export { Nationality };
/**
 * Node Interface
 *
 * Using the standard node interface for types allows client-side caching to work (e.g. Apollo in-memory cache), as most
 * caching libs use the id field as the hash key for their local store of query data.
 */
declare type Node = {
    id: Scalars['ID'];
};
/**
 * Nodes Interface
 *
 * To be expanded in the future - creates a standard interface for getting many items (typically from a Dynamo DB query).
 */
declare type Nodes = {
    nextToken?: Maybe<Scalars['String']>;
};
export { NotificationIsRead };
declare type Price = {
    __typename?: 'Price';
    /** The zero-decimal amount (i.e. the amount in cents for USD/EUR, or pence for GBP). */
    amountZD: Scalars['Int'];
    currency: Currency;
};
/** Price */
declare type PriceWithOverpayment = {
    __typename?: 'PriceWithOverpayment';
    amountZD: Scalars['Int'];
    currency: Currency;
    /**
     * Overpayment
     *
     * For transaction invoice lines only. There may have been an overpayment if e.g. a duplicate transaction was taken.
     *
     * For payments (-ve transaction invoice lines) this will show as -ve for an overpayment.
     *
     * For refunds (+ve transaction lines) this will show as +ve for an overpayment.
     */
    overpaymentZD?: Maybe<Scalars['Int']>;
};
declare type RecommendedTrip = {
    __typename?: 'RecommendedTrip';
    title: Scalars['String'];
    url: Scalars['AWSURL'];
};
/**
 * Reference
 *
 * Gives the ID of an object, but not the full underlying item in this query
 */
declare type Ref = {
    __typename?: 'Ref';
    id: Scalars['ID'];
};
export { RevenueReportType };
declare type Review = Node & {
    __typename?: 'Review';
    body: Scalars['String'];
    /**
     * Five Star Rating
     *
     * Returns a value between 1 and 5 (i.e. excluding 0 so that it is not possible to have 0 stars), calculated from the
     * rating field (which is a float between 0 and 1).
     */
    fiveStarRating: Scalars['Float'];
    /**
     * ID
     *
     * This is the same as the booking space id.
     */
    id: Scalars['ID'];
    /**
     * Media for a Review
     *
     * Includes all the user's uploaded images, for the group.
     */
    media?: Maybe<MediaConnection>;
    /**
     * Rating
     *
     * Should be between 0 and 1.
     */
    rating: Scalars['Float'];
    reply?: Maybe<ReviewReply>;
    source?: Maybe<ReviewSource>;
    startDate: Scalars['AWSDateTime'];
    trip: Trip;
    updated: Scalars['AWSDateTime'];
    user: UserPublicProfile;
};
declare type ReviewConnection = {
    __typename?: 'ReviewConnection';
    items: Array<Review>;
    nextToken?: Maybe<Scalars['String']>;
};
declare type ReviewReply = {
    __typename?: 'ReviewReply';
    content: Scalars['String'];
    created: Scalars['AWSDateTime'];
};
export { ReviewSource };
declare type ReviewStatistics = {
    __typename?: 'ReviewStatistics';
    fiveStarRatingAverage?: Maybe<Scalars['Float']>;
    ratingAverage?: Maybe<Scalars['Float']>;
    reviewCount: Scalars['Int'];
    starsReviewBreakdown: StarsReviewBreakdown;
};
export { ReviewStatisticsType };
declare type ReviewsSummary = {
    __typename?: 'ReviewsSummary';
    /**
     * Five Star Rating Average
     *
     * Returns a value between 1 and 5 (i.e. excluding 0 so that it is not possible to have 0 stars), calculated from the
     * rating average field (which is a float between 0 and 1).
     */
    fiveStarRatingAverage?: Maybe<Scalars['Float']>;
    /**
     * Rating Average
     *
     * Between 0 and 1.
     */
    ratingAverage?: Maybe<Scalars['Float']>;
    reviewCount: Scalars['Int'];
};
/**
 * S3 Object
 *
 * Follows the standard [Amplify approach](https://docs.amplify.aws/cli/graphql-transformer/storage).
 */
declare type S3Object = {
    __typename?: 'S3Object';
    bucket: Scalars['String'];
    key: Scalars['String'];
    region: Scalars['String'];
};
export { SkyhookClubTiers };
declare type SkyhookFanClubCredits = Node & {
    __typename?: 'SkyhookFanClubCredits';
    amount: Price;
    booking: Booking;
    created: Scalars['AWSDateTime'];
    credit?: Maybe<UserCredit>;
    group: Group;
    id: Scalars['ID'];
    travelledOn: Scalars['AWSDateTime'];
    user: User;
};
declare type StarsReviewBreakdown = {
    __typename?: 'StarsReviewBreakdown';
    fiveStar: Scalars['Int'];
    fourStar: Scalars['Int'];
    oneStar: Scalars['Int'];
    threeStar: Scalars['Int'];
    twoStar: Scalars['Int'];
};
export { Status };
export { SupportMessageTags };
declare type TMTDetails = {
    __typename?: 'TMTDetails';
    affiliateChannelID?: Maybe<Scalars['Int']>;
    /** TMT Booking ID */
    bookingID: Scalars['Int'];
    channelID: Scalars['Int'];
};
declare type Tracking = {
    __typename?: 'Tracking';
    facebookBrowserID?: Maybe<Scalars['String']>;
    facebookClickID?: Maybe<Scalars['String']>;
    ipAddress?: Maybe<Scalars['AWSIPAddress']>;
    userAgent?: Maybe<Scalars['String']>;
};
declare type Transaction = Node & {
    __typename?: 'Transaction';
    /** Amount is positive for a payment and negative for a refund (the opposite of a booking line) */
    amount: Price;
    /** Only shown for refunds - this is the ID of the original transaction that is being refunded here. */
    baseTransaction?: Maybe<Ref>;
    booking: Booking;
    card?: Maybe<TransactionCard>;
    created: Scalars['AWSDateTime'];
    /**
     * The exchange rate used to convert the transaction price to GBP at the time of
     * the transaction.
     */
    gbpExchangeRate: Scalars['String'];
    /** Host amount is positive for a payment and negative for a refund (the opposite of a booking line) */
    hostAmount?: Maybe<Price>;
    id: Scalars['ID'];
    processor: TransactionProcessor;
    remoteID: Scalars['ID'];
    /** The remote ID of the host payment (__legacy TMT payments only__) */
    remoteIDHost?: Maybe<Scalars['ID']>;
    success: Scalars['Boolean'];
    /** Trust My Travel details (V2 API) */
    tmt?: Maybe<TMTDetails>;
    type: TransactionType;
};
declare type TransactionCard = {
    __typename?: 'TransactionCard';
    /** Billing address including cardholder name */
    address?: Maybe<Address>;
    cardType?: Maybe<Scalars['String']>;
    lastFourDigits?: Maybe<Scalars['String']>;
};
export { TransactionProcessor };
export { TransactionType };
export { TransportMode };
declare type Trip = Node & {
    __typename?: 'Trip';
    active: Status;
    activities?: Maybe<Array<TripActivityType>>;
    /**
     * This will allow us to add a phantom group to the trip, so that trips can be
     * discovered by the user, when searched for, without having to add groups to
     * the trip. This is useful for trips that can be booked privately.
     */
    addAPhantomGroup?: Maybe<Scalars['Boolean']>;
    address: Address;
    allowPrivateGroups?: Maybe<Scalars['Boolean']>;
    automatedMessages?: Maybe<Array<TripAutomatedMessage>>;
    commissionOverrides: CommissionOverridesTripsConnection;
    daysBreakdown?: Maybe<DaysBreakdown>;
    description: Scalars['String'];
    difficultyLevel?: Maybe<Scalars['Int']>;
    endTimezone: Scalars['String'];
    excludes?: Maybe<Array<Scalars['String']>>;
    faqs: TripFAQConnection;
    /** 2 or 3 featured images for the trip */
    featuredImages?: Maybe<Array<Media>>;
    groups: GroupConnection;
    host: Host;
    id: Scalars['ID'];
    /** The image to be used as cover image for the trip */
    image: Media;
    includes?: Maybe<Array<Scalars['String']>>;
    isRecentTrip?: Maybe<Scalars['Boolean']>;
    itinerary: TripItineraryItemConnection;
    meals?: Maybe<TripMeals>;
    /** All media for a Trip */
    media?: Maybe<MediaConnection>;
    /**
     * Get all groups, from all trips within a date range, by defaults it grabs all
     * groups in the future
     */
    minimumPrice?: Maybe<MinimumPriceWithDiscount>;
    notice?: Maybe<Scalars['String']>;
    overlayText?: Maybe<Scalars['String']>;
    pageSettings?: Maybe<TripPageSettings>;
    phantomGroupPrice?: Maybe<Scalars['Int']>;
    /** The message sent to the guest after they make a booking successfully */
    postBookingAutomatedMessage?: Maybe<AutomatedMessage>;
    preventGuestCancellation?: Maybe<Scalars['Boolean']>;
    preventGuestCancellationMessage?: Maybe<Scalars['String']>;
    reviewStatistics?: Maybe<ReviewStatistics>;
    reviews: ReviewConnection;
    reviewsSummary: ReviewsSummary;
    /** @deprecated Use `urlSlug`. */
    slug: Scalars['String'];
    startTimezone: Scalars['String'];
    tags?: Maybe<Array<Scalars['String']>>;
    title: Scalars['String'];
    tripFormRequiredInformation: TripFormRequiredInformation;
    tripVideoURL?: Maybe<Scalars['AWSURL']>;
    tripVideoURLThumbnail?: Maybe<Media>;
    urlSlug: Scalars['String'];
    wayPoints: WayPointsConnection;
    /** User's wishlist for this trip */
    wishlist: WishlistConnection;
};
export { TripActivityType };
declare type TripAutomatedMessage = {
    __typename?: 'TripAutomatedMessage';
    /** The date and time that this message was created. */
    created: Scalars['AWSDateTime'];
    /** TripID plus the message number */
    id: Scalars['ID'];
    /** The trip that this message is associated with. */
    message: Scalars['String'];
    /** We currently have two automated messages. This is the number of the message. */
    messageNumber: TripAutomatedMessageNumber;
    /** The number of weeks from the start of the trip that this message should be sent. */
    weeksFromStart: Scalars['Int'];
};
export { TripAutomatedMessageNumber };
declare type TripConnection = {
    __typename?: 'TripConnection';
    items?: Maybe<Array<Maybe<Trip>>>;
    nextToken?: Maybe<Scalars['String']>;
};
declare type TripFAQ = Node & {
    __typename?: 'TripFAQ';
    answer: Scalars['String'];
    category?: Maybe<TripFAQsCategories>;
    id: Scalars['ID'];
    links?: Maybe<Array<TripFAQLink>>;
    question: Scalars['String'];
    readCount?: Maybe<Scalars['Int']>;
    videos?: Maybe<Array<TripFAQVideo>>;
    weight: Scalars['Int'];
};
declare type TripFAQConnection = {
    __typename?: 'TripFAQConnection';
    items: Array<TripFAQ>;
};
declare type TripFAQLink = {
    __typename?: 'TripFAQLink';
    title: Scalars['String'];
    url: Scalars['AWSURL'];
};
declare type TripFAQVideo = {
    __typename?: 'TripFAQVideo';
    url: Scalars['AWSURL'];
};
export { TripFAQsCategories };
declare type TripForm = {
    __typename?: 'TripForm';
    additionalInformation?: Maybe<Scalars['String']>;
    /**
     * Departure Point
     *
     * The location & time, for where the guest will depart from the trip.
     */
    departPoint?: Maybe<WayPoint>;
    dietaryRequirements?: Maybe<Scalars['String']>;
    emergencyContact?: Maybe<TripFormEmergencyContact>;
    medicalInformation?: Maybe<Scalars['String']>;
    /**
     * Meet Point
     *
     * The location & time, for where the guest will meet the host.
     */
    meetPoint?: Maybe<WayPoint>;
    passportInformation?: Maybe<TripFormPassportInformation>;
    travelInformation?: Maybe<TripFormTravelInformation>;
    travelInsurance?: Maybe<TripFormTravelInsurance>;
};
declare type TripFormEmergencyContact = {
    __typename?: 'TripFormEmergencyContact';
    name: Scalars['String'];
    phone: Scalars['String'];
    relationship?: Maybe<Scalars['String']>;
};
declare type TripFormPassportInformation = {
    __typename?: 'TripFormPassportInformation';
    dateOfBirth: Scalars['AWSDate'];
    expiryDate: Scalars['AWSDate'];
    familyName: Scalars['String'];
    gender: Gender;
    givenName: Scalars['String'];
    issueDate?: Maybe<Scalars['AWSDate']>;
    nationality?: Maybe<Nationality>;
    passportNumber: Scalars['String'];
};
/**
 * Trip Form required information
 *
 * Shows which sections of a trip form are required, as well as any additional information that is required.
 */
declare type TripFormRequiredInformation = Node & {
    __typename?: 'TripFormRequiredInformation';
    /**
     * Additional Information
     *
     * Any additional information that the host requires from the guest - e.g. a question such as "Would you like to be
     * picked up from location A or location B?"
     */
    additionalInformation?: Maybe<Scalars['String']>;
    /**
     * Days before travel that the information is due
     *
     * The guest/booking owner will be reminded to fill in this required information before this date.
     */
    daysBeforeTravelDue: Scalars['Int'];
    emergencyContact: Scalars['Boolean'];
    /**
     * Trip Form Required Information ID
     *
     * UUID of the format tfri_UUID, primarily used for caching (as we update using the tripID instead of this).
     */
    id: Scalars['ID'];
    passportInformation: Scalars['Boolean'];
    travelInformation: Scalars['Boolean'];
    travelInsurance: Scalars['Boolean'];
    tripID: Scalars['String'];
};
declare type TripFormTravelInformation = {
    __typename?: 'TripFormTravelInformation';
    arrivalFlightNumber?: Maybe<Scalars['String']>;
    /**
     * Arrival Time
     *
     * Local time (not UTC).
     */
    arrivalTime?: Maybe<Scalars['String']>;
    arrivalTransportMode?: Maybe<TransportMode>;
    departureFlightNumber?: Maybe<Scalars['String']>;
    /**
     * Departure Time
     *
     * Local time (not UTC).
     */
    departureTime?: Maybe<Scalars['String']>;
    departureTransportMode?: Maybe<TransportMode>;
};
declare type TripFormTravelInsurance = {
    __typename?: 'TripFormTravelInsurance';
    company: Scalars['String'];
    phone?: Maybe<Scalars['String']>;
    policyNumber: Scalars['String'];
};
declare type TripItineraryItem = Node & {
    __typename?: 'TripItineraryItem';
    day: Scalars['Int'];
    description: Scalars['String'];
    id: Scalars['ID'];
    media?: Maybe<MediaConnection>;
    title: Scalars['String'];
    wayPoints: WayPointsConnection;
};
declare type TripItineraryItemConnection = {
    __typename?: 'TripItineraryItemConnection';
    items: Array<TripItineraryItem>;
};
declare type TripMeals = {
    __typename?: 'TripMeals';
    /** The number of breakfasts included in the trip */
    breakfast?: Maybe<Scalars['Int']>;
    /** The number of dinners included in the trip */
    dinner?: Maybe<Scalars['Int']>;
    /** The number of lunches included in the trip */
    lunch?: Maybe<Scalars['Int']>;
};
declare type TripPagePromotionBanner = {
    __typename?: 'TripPagePromotionBanner';
    link: Scalars['String'];
    text: Scalars['String'];
};
declare type TripPageSettings = {
    __typename?: 'TripPageSettings';
    promotionsBanner?: Maybe<TripPagePromotionBanner>;
    /** A list of recommended trips to display on the trip page */
    recommendedTrips?: Maybe<Array<RecommendedTrip>>;
};
/**
 * User
 *
 * Broadly follows the OpenID Connect specification (but with our own address format).
 */
declare type User = Node & {
    __typename?: 'User';
    address?: Maybe<Address>;
    bio?: Maybe<Scalars['String']>;
    birthDate?: Maybe<Scalars['AWSDate']>;
    bookings: BookingConnection;
    chatInbox: ChatConversationConnection;
    chatMessageCount: ChatUserMessageCount;
    cognitoSub?: Maybe<Scalars['String']>;
    created: Scalars['AWSDateTime'];
    credits?: Maybe<Array<Maybe<UserCreditsSummary>>>;
    email: Scalars['AWSEmail'];
    familyName: Scalars['String'];
    gender?: Maybe<Gender>;
    givenName: Scalars['String'];
    /**
     * Guest on Bookings
     *
     * The user may be a guest on bookings owned by themselves (i.e. they are travelling for a booking they paid for), or
     * bookings owned by another user (another user is paying for their booking). This query property will return all the guest
     * entities for a user, which can in turn be used to get all the bookings that the user is a guest for.
     */
    guestOnBookings: GuestConnection;
    hostRoles: UserHostRolesConnection;
    id: Scalars['ID'];
    /** All media uploaded by a user */
    media?: Maybe<MediaConnection>;
    notifications?: Maybe<ActivityStreamConnection>;
    phone?: Maybe<Scalars['String']>;
    /** Profile picture of the user */
    picture?: Maybe<Media>;
    skyhookClubTier: SkyhookClubTiers;
    /**
     * The total amount of credits for this user, for all currencies, after currency
     * conversion.
     *
     * For example, if a user has 10 credits in USD, 5 credits in EUR, and 3 credits
     * in GBP, this would return the total amount of credits in USD, after converting
     * the EUR and GBP credits to USD.
     *
     * PLEASE NOTE, this doesn't save the converted amount anywhere, it's just a
     * calculation based on the current exchange rates, to help determine if the user
     * has enough credits to place an order.
     *
     * After an order is placed, only used credits will be converted to relevant
     * currency and deducted from the user's account. The rest of the credits will
     * remain in their original currency, and will be converted only when used.
     */
    totalCredits: UserCreditsSummary;
    /**
     * Users waiting list
     *
     * View groups on a users waiting list
     */
    waitList: WaitListConnection;
    wishlist: WishlistConnection;
};
declare type UserCredit = Node & {
    __typename?: 'UserCredit';
    amountZD: Scalars['Int'];
    /**
     * The booking ID, if the credit was added as a result of a booking
     *
     * We are exposing this field in the schema, so we can link to booking page from
     * credit history page. Adding a booking field (with resolver) is not necessary for the time
     * being and can be added later if needed.
     */
    bookingID?: Maybe<Scalars['ID']>;
    /**
     * When credits are given to a user, they may be given after completing a trip as
     * part of the Skyhook Fan Club program. This field will be populated with the
     * details of the entry in the Skyhook Fan Club program.
     */
    clubCredit?: Maybe<SkyhookFanClubCredits>;
    /** The date the credit was added */
    completed: Scalars['AWSDateTime'];
    created: Scalars['AWSDateTime'];
    currency: GlobalCurrencies;
    /** The credit's unique identifier. */
    id: Scalars['ID'];
    /** Note about the credit, why it was added, etc. */
    note?: Maybe<Scalars['String']>;
    /** The running total, up to this point. Calculated on the fly */
    runningTotal: Scalars['Int'];
    updated: Scalars['AWSDateTime'];
};
declare type UserCreditConnection = {
    __typename?: 'UserCreditConnection';
    items?: Maybe<Array<UserCredit>>;
    nextToken?: Maybe<Scalars['String']>;
};
/**
 * A summary of a user's credits for a specific currency.
 *
 * For example, a user may have 10 credits in USD, 5 credits in EUR, and 3 credits
 * in GBP.
 *
 * This type would return a list of 3 credits, one for each currency, which will be
 * a sum of all existing items for each currency.
 */
declare type UserCreditsSummary = {
    __typename?: 'UserCreditsSummary';
    /** The total amount of credits for this currency. */
    amountZD: Scalars['Int'];
    currency: GlobalCurrencies;
    /**
     * A list of transactions for credits for this currency, as they were added and
     * consumed.
     */
    history?: Maybe<UserCreditConnection>;
};
declare type UserHostRolesConnection = {
    __typename?: 'UserHostRolesConnection';
    items?: Maybe<Array<HostRole>>;
};
/**
 * User Public profile
 *
 * Includes some key fields for a user that can be viewed by anyone.
 *
 * Note that with caching (e.g. Apollo InMemory cache) this will typically be cached separately from the User type, which
 * means that if you are updating any values for a User you may also want to update the cache for this UserPublicProfile.
 * However in most cases it is unlikely to cause issues.
 */
declare type UserPublicProfile = {
    __typename?: 'UserPublicProfile';
    address?: Maybe<Address>;
    bio?: Maybe<Scalars['String']>;
    givenName: Scalars['String'];
    id: Scalars['ID'];
    /** The profile picture of the user */
    picture?: Maybe<Media>;
};
declare type WaitList = Node & {
    __typename?: 'WaitList';
    created: Scalars['AWSDateTime'];
    group: Group;
    /**
     * id
     *
     * For caching on the frontend purposes
     */
    id: Scalars['ID'];
    /**
     * The number of spaces requested by the user
     *
     * Default to 1
     */
    spacesRequested?: Maybe<Scalars['Int']>;
    user: UserPublicProfile;
};
declare type WaitListConnection = Nodes & {
    __typename?: 'WaitListConnection';
    items: Array<WaitList>;
    nextToken?: Maybe<Scalars['String']>;
};
declare type WayPoint = Node & {
    __typename?: 'WayPoint';
    address: Address;
    arriveAt: WayPointTime;
    id: Scalars['ID'];
    itineraryItemID: Scalars['String'];
    type: WayPointType;
};
declare type WayPointTime = {
    __typename?: 'WayPointTime';
    localTime: Scalars['AWSTime'];
    /** @deprecated Use localTime instead */
    utc: Scalars['AWSTime'];
    zone: Scalars['String'];
};
export { WayPointType };
declare type WayPointsConnection = Nodes & {
    __typename?: 'WayPointsConnection';
    items: Array<WayPoint>;
    nextToken?: Maybe<Scalars['String']>;
};
declare type Wishlist = Node & {
    __typename?: 'Wishlist';
    created: Scalars['AWSDateTime'];
    id: Scalars['ID'];
    notes?: Maybe<Scalars['String']>;
    trip: Trip;
    user: User;
};
declare type WishlistConnection = {
    __typename?: 'WishlistConnection';
    items: Array<Wishlist>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type AccountingJournalDbObject = {
    date: string;
    description: string;
    id: string;
    lines: Array<AccountingJournalLineDbObject>;
};
export declare type AccountingJournalLineDbObject = {
    account: AccountingAccountName;
    currency: Currency;
    customer: string;
    grossAmountZD: number;
    id: string;
    journalType: AccountingJournalType;
    taxCode?: Maybe<BookingCommissionTaxRate>;
    taxCountry?: Maybe<CountryCodes>;
};
export declare type ActivityObjectDbObject = {
    id: string;
    name: string;
};
export declare type ActivityStreamDbObject = {
    actor: ActivityStreamActor;
    id: string;
    isRead?: Maybe<NotificationIsRead>;
    object: ActivityObject;
    published: string;
    serviceBatchID?: Maybe<string>;
    target?: Maybe<ActivityStreamTarget>;
    to: string;
    type: string;
    url: string;
    userBatchID: string;
    gsiToObjectIdTypeIsReadSK: string;
};
export declare type ActivityStreamActorDbObject = {
    icon?: Maybe<ActivityStreamIcon>;
    id?: Maybe<string>;
    name?: Maybe<string>;
    type: ActivityStreamActorType;
};
export declare type ActivityStreamIconDbObject = {
    height?: Maybe<number>;
    name?: Maybe<string>;
    type?: Maybe<ActivityStreamIconType>;
    url: string;
    width?: Maybe<number>;
};
export declare type ActivityStreamTargetDbObject = {
    href?: Maybe<string>;
    id: string;
    name: string;
};
export declare type AddressDbObject = {
    additionalNames?: Maybe<string>;
    addressLine1?: Maybe<string>;
    addressLine2?: Maybe<string>;
    administrativeArea?: Maybe<string>;
    coordinates?: Maybe<CoordinatesDbObject>;
    country: CountryCodes;
    dependentLocality?: Maybe<string>;
    familyName?: Maybe<string>;
    givenName?: Maybe<string>;
    locality?: Maybe<string>;
    organisation?: Maybe<string>;
    postalCode?: Maybe<string>;
    sortingCode?: Maybe<string>;
};
export declare type AutomatedMessageDbObject = {
    created: string;
    message: string;
    updated: string;
    tripID: string;
};
export declare type BankDetailsDbObject = {
    accountNumber: string;
    bankAccountName: string;
    bankAddress: Address;
    bankName: string;
    ibanNumber?: Maybe<string>;
    routingCode?: Maybe<string>;
    sortCode?: Maybe<string>;
    swiftCode?: Maybe<string>;
};
export declare type BookingDbObject = {
    commissionTaxRate: BookingCommissionTaxRate;
    created: string;
    group: {
        id: string;
        start: string;
        end: string;
    };
    host: RefDbObject;
    id: string;
    tracking?: Maybe<TrackingDbObject>;
    trip: {
        id: string;
    };
    user: {
        id: string;
    };
    _type: BookingEntityType.Booking;
    pk: string;
    sk: string;
    gsi1PK: string;
    gsi1SK: string;
    gsi2PK: string;
    gsi2SK: string;
    gsi3PK: string;
    gsi3SK: string;
    gsi4PK: string;
    gsi4SK: string;
};
export declare type BookingSpaceDbObject = {
    booking: RefDbObject;
    created: string;
    guestDeposit: PriceDbObject;
    hostDeposit: PriceDbObject;
    id: string;
    _type: BookingEntityType.BookingSpace;
    pk: string;
    sk: string;
};
export declare type BookingSpaceInvoiceLineDbObject = {
    booking: {
        id: string;
    };
    bookingSpace: {
        id: string;
    };
    created: string;
    discount?: Maybe<RefDbObject>;
    guestAmount: PriceWithOverpaymentDbObject;
    hostAmount: PriceWithOverpaymentDbObject;
    id: string;
    note?: Maybe<string>;
    transaction: {
        id?: string;
    };
    type: BookingSpaceInvoiceLineType;
    _type: BookingEntityType.BookingSpaceInvoiceLine;
    pk: string;
    sk: string;
};
export declare type ChatConversationDbObject = {
    created: string;
    id: string;
    title?: Maybe<string>;
};
export declare type ChatMessageDbObject = {
    automatedHostMessage?: Maybe<boolean>;
    created: string;
    hostTeamMemberUserID?: Maybe<string>;
    id: string;
    system?: Maybe<boolean>;
    text: string;
    conversationID: string;
    userID: string | undefined;
};
export declare type ChatParticipantDbObject = {
    lastMessage?: Maybe<string>;
    lastRead?: Maybe<string>;
    status?: Maybe<ChatConversationStatus>;
    userID: string;
    conversationID: string;
    gsiUserIDStatusPK?: string;
};
export declare type CommissionOverridesDbObject = {
    id: string;
    percentage: string;
    validFrom: string;
    validTo: string;
    tripID: string;
};
export declare type CoordinatesDbObject = {
    lat: number;
    lng: number;
};
export declare type DiscountDbObject = {
    id: string;
};
export declare type GroupDbObject = {
    end: LocalDateTimeDbObject;
    hostPrice: Price;
    hostPriceBeforeDiscount?: Maybe<Price>;
    id: string;
    private: boolean;
    remainingSpaces: number;
    start: LocalDateTimeDbObject;
    tripID: string;
    startDate: string;
    hostID: string;
};
export declare type GuestDbObject = {
    accessCode: string;
    bio?: Maybe<string>;
    birthDate?: Maybe<string>;
    bookingOwnerID: string;
    completed: boolean;
    created: string;
    email?: Maybe<string>;
    familyName?: Maybe<string>;
    givenName?: Maybe<string>;
    hostNotes?: Maybe<string>;
    id: string;
    phone?: Maybe<string>;
    picture?: {
        id?: string;
    };
    spaceID: string;
    tripForm?: Maybe<TripFormDbObject>;
    tripFormDueDate: string;
    updated: string;
    userID?: Maybe<string>;
    groupID: string;
    tripID: string;
    bookingHostID: string;
    booking: {
        id: string;
    };
};
export declare type HostDbObject = {
    about: string;
    active: boolean;
    businessAddress?: Maybe<Address>;
    companyRegistrationNumber?: Maybe<string>;
    contact?: Maybe<HostContactDetails>;
    created: string;
    facebookPage?: Maybe<string>;
    id: string;
    legalName?: Maybe<string>;
    logo?: {
        id?: string;
    };
    name: string;
    paymentDetails?: Maybe<HostPaymentDetails>;
    termsConditions?: Maybe<string>;
    twitterPage?: Maybe<string>;
    updated: string;
    urlSlug: string;
    website?: Maybe<string>;
    pk: string;
    sk: string;
    type: HostRecordTypes.HOST;
};
export declare type HostContactDetailsDbObject = {
    contactName?: Maybe<string>;
    email: string;
    phone: string;
};
export declare type HostPaymentDetailsDbObject = {
    bankDetails?: Maybe<BankDetailsDbObject>;
    currency: Currency;
    tmtID?: Maybe<number>;
    tmtIDLegacy?: Maybe<string>;
};
export declare type HostRoleDbObject = {
    host: {
        id: string;
    };
    role: HostRoleType;
    updated: string;
    user: {
        id: string;
    };
    pk: string;
    sk: string;
    userId: string;
    type: HostRecordTypes.ROLE;
};
export declare type LocalDateTimeDbObject = {
    utc: string;
};
export declare type LocalTimeDbObject = {
    utc: string;
};
export declare type MediaDbObject = {
    created: string;
    file?: Maybe<S3ObjectDbObject>;
    id: string;
    type: MediaType;
    updated: string;
    tripID?: string;
    hostID?: string;
    userID?: string;
    groupID?: string;
    mediaOwnerID: string;
};
export declare type MediaConnectionDbObject = {
    items: {
        id: string;
    }[];
};
export declare type PriceDbObject = {
    amountZD: number;
    currency: Currency;
};
export declare type PriceWithOverpaymentDbObject = {
    amountZD: number;
    currency: Currency;
    overpaymentZD?: Maybe<number>;
};
export declare type RecommendedTripDbObject = {};
export declare type RefDbObject = {
    id: string;
};
export declare type RevenueReportDbObject = {
    GMV: Price;
    averageBookingValue: Price;
    averageNetCommission: Price;
    averagePeoplePerBooking: number;
    cashReceived: Price;
    created: string;
    id: string;
    netCommission: Price;
    numberOfBookingMade: number;
    numberOfSpacesBooked: number;
    period: string;
    type: RevenueReportType;
    updated: string;
};
export declare type ReviewDbObject = {
    body: string;
    id: string;
    rating: number;
    reply?: Maybe<ReviewReplyDbObject>;
    source?: Maybe<ReviewSource>;
    startDate: string;
    updated: string;
    hostID: string;
    userID?: string;
    groupID?: string;
    tripID: string;
    user?: {
        givenName: string;
        id: string;
    };
    seededReviewsMedia?: {
        id: string;
    }[];
};
export declare type ReviewReplyDbObject = {
    content: string;
    created: string;
};
export declare type ReviewStatisticsDbObject = {
    fiveStarRatingAverage?: Maybe<number>;
    ratingAverage?: Maybe<number>;
    reviewCount: number;
    starsReviewBreakdown: StarsReviewBreakdown;
    type: ReviewStatisticsType;
    id: string;
};
export declare type S3ObjectDbObject = {
    bucket: string;
    key: string;
    region: string;
};
export declare type SkyhookFanClubCreditsDbObject = {
    amount: Price;
    created: string;
    id: string;
    travelledOn: string;
    bookingID: string;
    userID: string;
    creditID?: string;
    groupID: string;
};
export declare type StarsReviewBreakdownDbObject = {};
export declare type TMTDetailsDbObject = {
    affiliateChannelID?: Maybe<number>;
    bookingID: number;
    channelID: number;
};
export declare type TotalCreditsDbObject = {
    amountZD: number;
    currency: GlobalCurrencies;
    updated: string;
};
export declare type TrackingDbObject = {
    facebookBrowserID?: Maybe<string>;
    facebookClickID?: Maybe<string>;
    ipAddress?: Maybe<string>;
    userAgent?: Maybe<string>;
};
export declare type TransactionDbObject = {
    amount: PriceDbObject;
    baseTransaction?: Maybe<RefDbObject>;
    booking: {
        id: string;
    };
    card?: Maybe<TransactionCardDbObject>;
    created: string;
    hostAmount?: Maybe<PriceDbObject>;
    id: string;
    processor: TransactionProcessor;
    remoteID: string;
    remoteIDHost?: Maybe<string>;
    success: boolean;
    tmt?: Maybe<TMTDetailsDbObject>;
    type: TransactionType;
    payload: object;
    _type: BookingEntityType.Transaction;
    pk: string;
    sk: string;
};
export declare type TransactionCardDbObject = {
    address?: Maybe<AddressDbObject>;
    cardType?: Maybe<string>;
    lastFourDigits?: Maybe<string>;
};
export declare type TripDbObject = {
    active: Status;
    activities?: Maybe<Array<TripActivityType>>;
    addAPhantomGroup?: Maybe<boolean>;
    address: AddressDbObject;
    allowPrivateGroups?: Maybe<boolean>;
    description: string;
    difficultyLevel?: Maybe<number>;
    endTimezone: string;
    excludes?: Maybe<Array<string>>;
    featuredImages?: {
        id: string;
    }[];
    id: string;
    image: {
        id: string;
    };
    includes?: Maybe<Array<string>>;
    isRecentTrip?: Maybe<boolean>;
    notice?: Maybe<string>;
    overlayText?: Maybe<string>;
    pageSettings?: Maybe<TripPageSettingsDbObject>;
    phantomGroupPrice?: Maybe<number>;
    preventGuestCancellation?: Maybe<boolean>;
    preventGuestCancellationMessage?: Maybe<string>;
    startTimezone: string;
    tags?: Maybe<Array<string>>;
    title: string;
    tripVideoURL?: Maybe<string>;
    tripVideoURLThumbnail?: {
        id?: string;
    };
    urlSlug: string;
    hostID: string;
};
export declare type TripAutomatedMessageDbObject = {
    created: string;
    id: string;
    message: string;
    messageNumber: TripAutomatedMessageNumber;
    weeksFromStart: number;
    tripID: string;
};
export declare type TripFAQDbObject = {
    answer: string;
    category?: Maybe<TripFAQsCategories>;
    id: string;
    links?: Maybe<Array<TripFAQLinkDbObject>>;
    question: string;
    readCount?: Maybe<number>;
    videos?: Maybe<Array<TripFAQVideoDbObject>>;
    weight: number;
    tripID: string;
};
export declare type TripFAQLinkDbObject = {
    title: string;
    url: string;
};
export declare type TripFAQVideoDbObject = {
    url: string;
};
export declare type TripFormDbObject = {
    additionalInformation?: Maybe<string>;
    departPoint?: {
        id?: string;
    };
    dietaryRequirements?: Maybe<string>;
    emergencyContact?: Maybe<TripFormEmergencyContactDbObject>;
    medicalInformation?: Maybe<string>;
    meetPoint?: {
        id?: string;
    };
    passportInformation?: Maybe<TripFormPassportInformationDbObject>;
    travelInformation?: Maybe<TripFormTravelInformationDbObject>;
    travelInsurance?: Maybe<TripFormTravelInsuranceDbObject>;
};
export declare type TripFormEmergencyContactDbObject = {};
export declare type TripFormPassportInformationDbObject = {};
export declare type TripFormRequiredInformationDbObject = {
    additionalInformation?: Maybe<string>;
    daysBeforeTravelDue: number;
    emergencyContact: boolean;
    id: string;
    passportInformation: boolean;
    travelInformation: boolean;
    travelInsurance: boolean;
    tripID: string;
};
export declare type TripFormTravelInformationDbObject = {};
export declare type TripFormTravelInsuranceDbObject = {};
export declare type TripItineraryItemDbObject = {
    day: number;
    description: string;
    id: string;
    media?: Maybe<MediaConnectionDbObject>;
    title: string;
    tripID: string;
};
export declare type TripPagePromotionBannerDbObject = {};
export declare type TripPageSettingsDbObject = {
    promotionsBanner?: Maybe<TripPagePromotionBannerDbObject>;
    recommendedTrips?: Maybe<Array<RecommendedTripDbObject>>;
};
export declare type TripSlugHistoryDbObject = {
    created: string;
    id: string;
    slug: string;
    tripID: string;
};
export declare type TripsLandingPagesDbObject = {
    countryCode?: Maybe<string>;
    created: string;
    description: string;
    faqs?: Maybe<Array<LandingPageFAQ>>;
    filterBy: LandingPageFilterBy;
    id: string;
    image?: {
        id?: string;
    };
    slug: string;
    snapshot: string;
    tags?: Maybe<Array<string>>;
    title: string;
    updated: string;
};
export declare type UserDbObject = {
    address?: Maybe<Address>;
    bio?: Maybe<string>;
    birthDate?: Maybe<string>;
    cognitoSub?: Maybe<string>;
    created: string;
    email: string;
    familyName: string;
    gender?: Maybe<Gender>;
    givenName: string;
    id: string;
    phone?: Maybe<string>;
    picture: {
        id?: string;
    };
    passwordBackup: string;
};
export declare type UserCreditDbObject = {
    amountZD: number;
    bookingID?: Maybe<string>;
    completed: string;
    created: string;
    currency: GlobalCurrencies;
    id: string;
    note?: Maybe<string>;
    updated: string;
    userID: string;
    spaceID?: string;
    userIDCurrency: string;
};
export declare type UserCreditsSummaryDbObject = {
    amountZD: number;
    currency: GlobalCurrencies;
    userID: string;
};
export declare type WaitListDbObject = {
    created: string;
    id: string;
    spacesRequested?: Maybe<number>;
    groupID: string;
    userID: string;
    groupStartDate: string;
    tripID: string;
};
export declare type WayPointDbObject = {
    address: Address;
    arriveAt: WayPointTimeDbObject;
    id: string;
    itineraryItemID: string;
    type: WayPointType;
    tripID: string;
    arriveAtUtcSK: string;
};
export declare type WayPointTimeDbObject = {
    localTime: string;
    zone: string;
};
export declare type WebPushSubscriptionDbObject = {
    registrationToken: string;
    userID: string;
};
export declare type WishlistDbObject = {
    created: string;
    id: string;
    tripID: string;
    userID: string;
};
