export declare type Maybe<T> = T | null;
export declare type InputMaybe<T> = Maybe<T>;
export declare type Exact<T extends {
    [key: string]: unknown;
}> = {
    [K in keyof T]: T[K];
};
export declare type MakeOptional<T, K extends keyof T> = Omit<T, K> & {
    [SubKey in K]?: Maybe<T[SubKey]>;
};
export declare type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {
    [SubKey in K]: Maybe<T[SubKey]>;
};
/** All built-in and custom scalars, mapped to their actual values */
export 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 declare enum AccountingAccountName {
    ACCOUNTS_PAYABLE = "ACCOUNTS_PAYABLE",
    ACCOUNTS_RECEIVABLE = "ACCOUNTS_RECEIVABLE",
    PAYPAL_EUR = "PAYPAL_EUR",
    PAYPAL_GBP = "PAYPAL_GBP",
    PAYPAL_NOK = "PAYPAL_NOK",
    PAYPAL_USD = "PAYPAL_USD",
    STRIPE_CAD = "STRIPE_CAD",
    STRIPE_EUR = "STRIPE_EUR",
    STRIPE_GBP = "STRIPE_GBP",
    STRIPE_NOK = "STRIPE_NOK",
    STRIPE_NZD = "STRIPE_NZD",
    STRIPE_SGD = "STRIPE_SGD",
    STRIPE_USD = "STRIPE_USD",
    TMTV2_EUR = "TMTV2_EUR",
    TMTV2_GBP = "TMTV2_GBP",
    TMTV2_USD = "TMTV2_USD",
    TMT_EUR = "TMT_EUR",
    TMT_GBP = "TMT_GBP",
    TMT_USD = "TMT_USD",
    TRAVEL_AGENT_COMMISSION = "TRAVEL_AGENT_COMMISSION"
}
/**
 * Accounting Journal
 *
 * For internal use only.
 *
 * Inspired by the
 * [QuickBooks API](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/journalentry) but
 * designed to be used universally with other tools as needed.
 *
 * Also designed to work with the [Zoho Books API](https://www.zoho.com/books/api/v3/#Journals).
 */
export declare type AccountingJournal = Node & {
    /** Date the journal should be posted */
    date: Scalars['AWSDateTime'];
    /**
     * Description of journal being posted
     *
     * @example
     * Booking Space
     *
     * @example
     * Transaction
     *
     * @example
     * Cancellation
     */
    description: Scalars['String'];
    /**
     * Journal ID
     *
     * Should be the id of the booking invoice.
     *
     * @example
     * ln_UUID
     */
    id: Scalars['ID'];
    /**
     * Journal Lines
     *
     * Must contain exactly two lines.
     */
    lines: Array<AccountingJournalLine>;
};
export declare type AccountingJournalLine = {
    account: AccountingAccountName;
    currency: Currency;
    /**
     * Customer (host) ID
     *
     * @example
     * host_UUID
     */
    customer: Scalars['String'];
    /**
     * Gross Amount in ZD (i.e. cents not dollars)
     *
     * This is before any taxes, and is always positive.
     */
    grossAmountZD: Scalars['Int'];
    /**
     * Journal line ID
     *
     * Should be based on the line ID plus an integer postfix
     *
     * @example
     * ln_UUID_1
     */
    id: Scalars['ID'];
    journalType: AccountingJournalType;
    /** Tax code */
    taxCode?: Maybe<BookingCommissionTaxRate>;
    /**
     * Country within which sales tax may be due
     *
     * Should be set as the country of the host.
     */
    taxCountry?: Maybe<CountryCodes>;
};
export declare enum AccountingJournalType {
    /**
     * Credit
     *
     * A credit either increases equity, liability, or revenue accounts or decreases an asset or expense account. Record the
     * corresponding credit for the purchase of a new computer by crediting your expense account.
     */
    CREDIT = "CREDIT",
    /**
     * Debit
     *
     * A debit either increases an asset or expense account or decreases equity, liability, or revenue accounts. For example,
     *  you would debit the purchase of a new computer by entering the asset gained on the left side of your asset account.
     */
    DEBIT = "DEBIT"
}
/**
 * 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.
 */
export declare type 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
 */
export declare type 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.
 */
export declare type 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 declare enum ActivityStreamActorType {
    GUEST = "GUEST",
    HOST = "HOST",
    SYSTEM = "SYSTEM"
}
export declare type 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
 */
export declare type ActivityStreamIcon = {
    height?: Maybe<Scalars['Int']>;
    name?: Maybe<Scalars['String']>;
    type?: Maybe<ActivityStreamIconType>;
    url: Scalars['AWSURL'];
    width?: Maybe<Scalars['Int']>;
};
export declare enum ActivityStreamIconType {
    Image = "Image"
}
/**
 * ActivityStreamTarget
 *
 * The direct object upon which an activity was performed on i.e. space or booking.
 */
export declare type 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'];
};
export declare type AddUserHostRoleInput = {
    hostID: Scalars['ID'];
    role: HostRoleType;
    userID: Scalars['ID'];
};
export declare type AddUserToWaitListInput = {
    groupID: Scalars['ID'];
    spacesRequested?: InputMaybe<Scalars['Int']>;
    userID: Scalars['ID'];
};
/** Address uses the OASIS [XAL](https://www.oasis-open.org/committees/ciq/download.shtml) standard */
export declare type 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']>;
};
export declare type AddressInput = {
    additionalNames?: InputMaybe<Scalars['String']>;
    addressLine1?: InputMaybe<Scalars['String']>;
    addressLine2?: InputMaybe<Scalars['String']>;
    administrativeArea?: InputMaybe<Scalars['String']>;
    coordinates?: InputMaybe<CoordinatesInput>;
    country: CountryCodes;
    dependentLocality?: InputMaybe<Scalars['String']>;
    familyName?: InputMaybe<Scalars['String']>;
    givenName?: InputMaybe<Scalars['String']>;
    locality?: InputMaybe<Scalars['String']>;
    organisation?: InputMaybe<Scalars['String']>;
    postalCode?: InputMaybe<Scalars['String']>;
    sortingCode?: InputMaybe<Scalars['String']>;
};
export declare type AdminAddTransactionCardInput = {
    address: TransactionAddressInput;
    cardType: Scalars['String'];
    lastFourDigits: Scalars['String'];
};
/**
 * Admin add transaction input
 *
 * These fields mirror the database fields for the most part, so that we can quickly create transactions manually where
 * they have been taken but not stored already (e.g. duplicate transactions).
 */
export declare type AdminAddTransactionInput = {
    /**  Allocations to spaces  */
    allocation: Array<AdminAddTransactionSpaceAllocation>;
    amount: PriceInput;
    baseTransaction?: InputMaybe<RefInput>;
    booking: RefInput;
    card?: InputMaybe<AdminAddTransactionCardInput>;
    created: Scalars['AWSDateTime'];
    hostAmount?: InputMaybe<PriceInput>;
    processor: TransactionProcessor;
    /**
     * For chargebacks you may need to use the same ID for both a chargeback and the corresponding reversal (e.g. for
     * Stripe). For Legacy TMT you will want to use the remote ID of the original transaction for simplicity (as this is how
     * it appears on the statement).
     */
    remoteID: Scalars['ID'];
    remoteIDHost?: InputMaybe<Scalars['ID']>;
    /**  TMT V2 Details  */
    tmt?: InputMaybe<AdminAddTransactionTMTDetails>;
    /** Transaction type */
    type: TransactionType;
};
export declare type AdminAddTransactionSpaceAllocation = {
    /**  Guest amount (+ve for payments and -ve for transactions - we'll convert it for the invoice lines)  */
    guestAmountZD: Scalars['Int'];
    /**  Guest overpayment amount (e.g. with a duplicate transaction)  */
    guestOverpaymentZD?: InputMaybe<Scalars['Int']>;
    /**  Host amount (+ve for payments and -ve for transactions - we'll convert it for the invoice lines)  */
    hostAmountZD: Scalars['Int'];
    /**  Host overpayment amount (e.g. with a duplicate transaction)  */
    hostOverpaymentZD?: InputMaybe<Scalars['Int']>;
    /**  Space ID  */
    id: Scalars['ID'];
};
export declare type AdminAddTransactionTMTDetails = {
    affiliateChannelID?: InputMaybe<Scalars['Int']>;
    bookingID: Scalars['Int'];
    channelID: Scalars['Int'];
};
export declare type AdminDiscretionaryRefundInput = {
    bookingID: Scalars['ID'];
    spaces: Array<AdminDiscretionaryRefundSpaceInput>;
};
export declare type AdminDiscretionaryRefundPayload = {
    booking: Booking;
};
export declare type AdminDiscretionaryRefundSpaceInput = {
    /**
     * Guest Amount
     *
     * Should be given as a positive zero-decimal amount.
     */
    guestAmount: Scalars['Int'];
    /**
     * Host Amount
     *
     * Should be given as a positive zero-decimal amount.
     */
    hostAmount: Scalars['Int'];
    id: Scalars['ID'];
};
export declare type ApplyCouponValue = {
    code: Scalars['String'];
    /** The amount to be deducted from the deposit. */
    depositAmountDeduction: Price;
    /** The total discount applied */
    discountApplied: Price;
    spacesRequested: Scalars['Int'];
    /** The final amount to be deducted from total price. */
    totalAmountDeduction: Price;
};
export declare type AutomatedMessage = {
    created: Scalars['AWSDateTime'];
    /** The message to send to the guest after booking */
    message: Scalars['String'];
    updated: Scalars['AWSDateTime'];
};
export declare type BackupPasswordInput = {
    password: Scalars['String'];
};
export declare type 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']>;
};
export declare type BankDetailsInput = {
    accountNumber: Scalars['String'];
    bankAccountName: Scalars['String'];
    bankAddress: AddressInput;
    bankName: Scalars['String'];
    ibanNumber?: InputMaybe<Scalars['String']>;
    routingCode?: InputMaybe<Scalars['String']>;
    sortCode?: InputMaybe<Scalars['String']>;
    swiftCode?: InputMaybe<Scalars['String']>;
};
export declare type Booking = Node & {
    /**
     * 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;
};
export declare type BookingCommissionDetails = {
    cashReceived: Price;
    commission: Price;
    commissionLessCoupons: 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 declare enum BookingCommissionTaxRate {
    /** European Commission zero-rated (the host is responsible for sales tax) */
    ECZERORATED = "ECZERORATED",
    /** UK 20% Vat rate */
    OUTPUT = "OUTPUT",
    /** Zero rated (e.g. for hosts where the place of supply is outside of the UK and EC) */
    ZERORATED = "ZERORATED"
}
export declare type BookingConnection = Nodes & {
    items: Array<Booking>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type BookingCreditInput = {
    amountZD: Scalars['Int'];
};
export declare type BookingDiscountInput = {
    amountZD: Scalars['Int'];
    code: Scalars['String'];
};
/**
 * Booking entity type
 *
 * For DB and Events only. Note in SentenceCase for legacy reasons.
 */
export declare enum BookingEntityType {
    Booking = "Booking",
    BookingSpace = "BookingSpace",
    BookingSpaceInvoiceLine = "BookingSpaceInvoiceLine",
    Transaction = "Transaction"
}
export declare type BookingGroupInput = {
    /** Required to validate the price shown to the customer. This is the guest unit price. */
    guestPrice: PriceInput;
    id: Scalars['ID'];
};
/**
 * 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.
 */
export declare type 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>;
    /**
     * The coupon code applied to this invoice for the booking invoice summary if
     * type is COUPON
     */
    couponCode?: Maybe<Scalars['String']>;
    created: Scalars['AWSDateTime'];
    /** The numberOfSpaces of spaces impacted by this invoice line */
    numberOfSpaces: Scalars['Int'];
    type: BookingSpaceInvoiceSummaryType;
};
export declare type BookingPaymentInput = {
    amount: PriceInput;
    card: TransactionCardInput;
    /**
     * TMT Booking ID
     *
     * The TMT Modal will auto-create a booking ID for each transaction.
     */
    tmtBookingID?: InputMaybe<Scalars['Int']>;
    /**
     * TMT Transaction ID
     *
     * The TMT Modal will return this in the `transaction_logged` response.
     */
    tmtTransactionID?: InputMaybe<Scalars['Int']>;
};
export declare type BookingPublicDetails = {
    created: Scalars['AWSDateTime'];
    group: Group;
    trip: Trip;
    /** The booking owner */
    user: UserPublicProfile;
};
export declare type 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;
};
export declare type BookingSpaceCancellationOption = {
    guestCredit: Price;
    /** Guest permission to use this cancellation option (true = has permission) */
    guestPermission: Scalars['Boolean'];
    guestRefund: Price;
    hostRefund: Price;
    type: BookingSpaceCancellationType;
};
export declare enum BookingSpaceCancellationType {
    BALANCE_REFUND = "BALANCE_REFUND",
    FULL_REFUND = "FULL_REFUND",
    NO_REFUND = "NO_REFUND"
}
export declare type BookingSpaceInvoiceLine = {
    booking: Booking;
    bookingSpace: BookingSpace;
    couponCode?: Maybe<Scalars['String']>;
    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 declare type BookingSpaceInvoiceLineConnection = {
    items: Array<BookingSpaceInvoiceLine>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare enum BookingSpaceInvoiceLineType {
    CANCELLATION = "CANCELLATION",
    COUPON = "COUPON",
    CREDIT = "CREDIT",
    DISCOUNT = "DISCOUNT",
    /**
     * A discretionary change is anything that changes the invoice for a discretionary reason, e.g. to allow for a
     * discretionary refund.
     */
    DISCRETIONARY_CHANGE = "DISCRETIONARY_CHANGE",
    TOTAL = "TOTAL",
    TRANSACTION = "TRANSACTION"
}
export declare enum BookingSpaceInvoiceSummaryType {
    BALANCE_DUE = "BALANCE_DUE",
    BALANCE_PAYMENT = "BALANCE_PAYMENT",
    BALANCE_REFUND = "BALANCE_REFUND",
    CANCELLATION = "CANCELLATION",
    COUPON = "COUPON",
    COUPON_CANCELLED = "COUPON_CANCELLED",
    CREDIT_ISSUED = "CREDIT_ISSUED",
    CREDIT_USED = "CREDIT_USED",
    DEPOSIT_PAYMENT = "DEPOSIT_PAYMENT",
    /**
     * A discretionary change is anything that changes the invoice for a discretionary reason, e.g. to allow for a
     * discretionary refund.
     */
    DISCRETIONARY_CHANGE = "DISCRETIONARY_CHANGE",
    FULL_PAYMENT = "FULL_PAYMENT",
    TOTAL_BOOKING_VALUE = "TOTAL_BOOKING_VALUE",
    TOTAL_PAID = "TOTAL_PAID"
}
export declare type BookingUserInput = {
    id: Scalars['ID'];
};
/**
 * Bookings Query Filter
 *
 * @example
 * // Get all bookings since 2010
 * {
 *   date: "2010-01-01T00:00:00Z"
 *   comparisonOperator: ">"
 *   dateType: "CREATED"
 * }
 */
export declare type BookingsQueryFilter = {
    /**
     * Comparison Operator
     *
     * Supported options include:
     *   - > Greater than
     *   - < Less than
     *   - >= Greater than or equal to
     *   - <= Less than or equal to
     *   - = Equal to
     *   - <> Not equal to
     */
    comparisonOperator?: InputMaybe<Scalars['String']>;
    date?: InputMaybe<Scalars['AWSDateTime']>;
    dateEnd?: InputMaybe<Scalars['AWSDate']>;
    /** Filter arguments used only with BETWEEN comparison Operator */
    dateStart?: InputMaybe<Scalars['AWSDate']>;
    /**
     * Date Type
     *
     * Filter by booking created date (default) or departure date.
     */
    dateType?: InputMaybe<BookingsQueryFilterDateType>;
};
export declare enum BookingsQueryFilterDateType {
    CREATED = "CREATED",
    DEPARTURE = "DEPARTURE"
}
export declare type BroadcastMessageToGuestsInGroupInput = {
    /** The group ID to target for the message being sent out */
    groupID: Scalars['ID'];
    /** The message to be sent to Guests on the group */
    text: Scalars['String'];
};
export declare type CSVExport = {
    downloadUrl: Scalars['String'];
};
export declare type CancelBookingInput = {
    bookingID: Scalars['ID'];
    note?: InputMaybe<Scalars['String']>;
    spaces: Array<Scalars['ID']>;
    type: BookingSpaceCancellationType;
};
export declare type CancelBookingPayload = {
    booking: Booking;
};
export declare type ChangeChatConversationStatusInput = {
    conversationID: Scalars['ID'];
    status: ChatConversationStatus;
};
export declare type ChatConversation = Node & {
    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']>;
};
export declare type ChatConversationmessagesArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type ChatConversationparticipantsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type ChatConversationConnection = Nodes & {
    items: Array<ChatConversation>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare enum ChatConversationStatus {
    CLOSED = "CLOSED",
    OPEN = "OPEN",
    WAITING_FOR_CUSTOMER_REPLY = "WAITING_FOR_CUSTOMER_REPLY"
}
export declare type ChatDirectConversationInput = {
    from: Scalars['String'];
    to: Scalars['String'];
};
export declare type ChatMessage = Node & {
    /**
     * 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>;
};
export declare type ChatMessageConnection = Nodes & {
    items: Array<ChatMessage>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type ChatMessageInput = {
    conversationID: Scalars['String'];
    /**
     * conversationStatus
     *
     * When sending a message, set the conversation status for instance a Host can
     * reply to a customer and set a conversation as closed.
     */
    conversationStatus?: InputMaybe<ChatConversationStatus>;
    /**
     * Participant ID
     *
     * The user/host participant ID of the user creating the message.
     */
    participantID: Scalars['String'];
    text: Scalars['String'];
};
export declare type 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>;
};
export declare type ChatParticipantConnection = Nodes & {
    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).
 */
export declare type ChatUserMessageCount = {
    id: Scalars['ID'];
    unreadMessages: Scalars['Int'];
    /** This is the chat user ID (i.e. hostID or userID) */
    userID: Scalars['ID'];
};
export declare type ClaimGuestInput = {
    accessCode: Scalars['String'];
    spaceID: Scalars['String'];
    userID: Scalars['String'];
};
export declare type CommissionOverrides = Node & {
    id: Scalars['ID'];
    percentage: Scalars['String'];
    validFrom: Scalars['AWSDateTime'];
    validTo: Scalars['AWSDateTime'];
};
export declare type CommissionOverridesTripsConnection = {
    defaultCommission: Scalars['String'];
    items: Array<CommissionOverrides>;
};
export declare enum ComparisonOperator {
    EQUAL = "EQUAL",
    GREATER_THAN = "GREATER_THAN",
    GREATER_THAN_OR_EQUAL = "GREATER_THAN_OR_EQUAL",
    LESS_THAN = "LESS_THAN",
    LESS_THAN_OR_EQUAL = "LESS_THAN_OR_EQUAL"
}
/**
 * Confirmation
 *
 * A response for mutations that simply returns true/false.
 */
export declare type Confirmation = {
    success: Scalars['Boolean'];
};
export declare type Coordinates = {
    lat: Scalars['Float'];
    lng: Scalars['Float'];
};
export declare type CoordinatesInput = {
    lat: Scalars['Float'];
    lng: Scalars['Float'];
};
export declare type Country = {
    code?: Maybe<CountryCodes>;
    name?: Maybe<Scalars['String']>;
};
export declare enum CountryCodes {
    AD = "AD",
    AE = "AE",
    AF = "AF",
    AG = "AG",
    AI = "AI",
    AL = "AL",
    AM = "AM",
    AO = "AO",
    AQ = "AQ",
    AR = "AR",
    AS = "AS",
    AT = "AT",
    AU = "AU",
    AW = "AW",
    AX = "AX",
    AZ = "AZ",
    BA = "BA",
    BB = "BB",
    BD = "BD",
    BE = "BE",
    BF = "BF",
    BG = "BG",
    BH = "BH",
    BI = "BI",
    BJ = "BJ",
    BL = "BL",
    BM = "BM",
    BN = "BN",
    BO = "BO",
    BQ = "BQ",
    BR = "BR",
    BS = "BS",
    BT = "BT",
    BV = "BV",
    BW = "BW",
    BY = "BY",
    BZ = "BZ",
    CA = "CA",
    CC = "CC",
    CD = "CD",
    CF = "CF",
    CG = "CG",
    CH = "CH",
    CI = "CI",
    CK = "CK",
    CL = "CL",
    CM = "CM",
    CN = "CN",
    CO = "CO",
    CR = "CR",
    CU = "CU",
    CV = "CV",
    CW = "CW",
    CX = "CX",
    CY = "CY",
    CZ = "CZ",
    DE = "DE",
    DJ = "DJ",
    DK = "DK",
    DM = "DM",
    DO = "DO",
    DZ = "DZ",
    EC = "EC",
    EE = "EE",
    EG = "EG",
    EH = "EH",
    ER = "ER",
    ES = "ES",
    ET = "ET",
    FI = "FI",
    FJ = "FJ",
    FK = "FK",
    FM = "FM",
    FO = "FO",
    FR = "FR",
    GA = "GA",
    GB = "GB",
    GD = "GD",
    GE = "GE",
    GF = "GF",
    GG = "GG",
    GH = "GH",
    GI = "GI",
    GL = "GL",
    GM = "GM",
    GN = "GN",
    GP = "GP",
    GQ = "GQ",
    GR = "GR",
    GS = "GS",
    GT = "GT",
    GU = "GU",
    GW = "GW",
    GY = "GY",
    HK = "HK",
    HM = "HM",
    HN = "HN",
    HR = "HR",
    HT = "HT",
    HU = "HU",
    ID = "ID",
    IE = "IE",
    IL = "IL",
    IM = "IM",
    IN = "IN",
    IO = "IO",
    IQ = "IQ",
    IR = "IR",
    IS = "IS",
    IT = "IT",
    JE = "JE",
    JM = "JM",
    JO = "JO",
    JP = "JP",
    KE = "KE",
    KG = "KG",
    KH = "KH",
    KI = "KI",
    KM = "KM",
    KN = "KN",
    KP = "KP",
    KR = "KR",
    KW = "KW",
    KY = "KY",
    KZ = "KZ",
    LA = "LA",
    LB = "LB",
    LC = "LC",
    LI = "LI",
    LK = "LK",
    LR = "LR",
    LS = "LS",
    LT = "LT",
    LU = "LU",
    LV = "LV",
    LY = "LY",
    MA = "MA",
    MC = "MC",
    MD = "MD",
    ME = "ME",
    MF = "MF",
    MG = "MG",
    MH = "MH",
    MK = "MK",
    ML = "ML",
    MM = "MM",
    MN = "MN",
    MO = "MO",
    MP = "MP",
    MQ = "MQ",
    MR = "MR",
    MS = "MS",
    MT = "MT",
    MU = "MU",
    MV = "MV",
    MW = "MW",
    MX = "MX",
    MY = "MY",
    MZ = "MZ",
    NA = "NA",
    NC = "NC",
    NE = "NE",
    NF = "NF",
    NG = "NG",
    NI = "NI",
    NL = "NL",
    NO = "NO",
    NP = "NP",
    NR = "NR",
    NU = "NU",
    NZ = "NZ",
    OM = "OM",
    PA = "PA",
    PE = "PE",
    PF = "PF",
    PG = "PG",
    PH = "PH",
    PK = "PK",
    PL = "PL",
    PM = "PM",
    PN = "PN",
    PR = "PR",
    PS = "PS",
    PT = "PT",
    PW = "PW",
    PY = "PY",
    QA = "QA",
    RE = "RE",
    RO = "RO",
    RS = "RS",
    RU = "RU",
    RW = "RW",
    SA = "SA",
    SB = "SB",
    SC = "SC",
    SD = "SD",
    SE = "SE",
    SG = "SG",
    SH = "SH",
    SI = "SI",
    SJ = "SJ",
    SK = "SK",
    SL = "SL",
    SM = "SM",
    SN = "SN",
    SO = "SO",
    SR = "SR",
    SS = "SS",
    ST = "ST",
    SV = "SV",
    SX = "SX",
    SY = "SY",
    SZ = "SZ",
    TC = "TC",
    TD = "TD",
    TF = "TF",
    TG = "TG",
    TH = "TH",
    TJ = "TJ",
    TK = "TK",
    TL = "TL",
    TM = "TM",
    TN = "TN",
    TO = "TO",
    TR = "TR",
    TT = "TT",
    TV = "TV",
    TW = "TW",
    TZ = "TZ",
    UA = "UA",
    UG = "UG",
    UM = "UM",
    US = "US",
    UY = "UY",
    UZ = "UZ",
    VA = "VA",
    VC = "VC",
    VE = "VE",
    VG = "VG",
    VI = "VI",
    VN = "VN",
    VU = "VU",
    WF = "WF",
    WS = "WS",
    YE = "YE",
    YT = "YT",
    ZA = "ZA",
    ZM = "ZM",
    ZW = "ZW"
}
export declare type Coupon = Node & {
    active: Scalars['Boolean'];
    code: Scalars['String'];
    created: Scalars['AWSDateTime'];
    deductFrom: CouponDeductionType;
    description?: Maybe<Scalars['String']>;
    expiryDate?: Maybe<Scalars['AWSDateTime']>;
    group?: Maybe<Group>;
    id: Scalars['ID'];
    trip?: Maybe<Trip>;
    value: CouponValue;
};
export declare type CouponConnection = {
    items: Array<Coupon>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare enum CouponDeductionType {
    FULL = "FULL",
    HOST = "HOST",
    SKYHOOK = "SKYHOOK"
}
export declare enum CouponType {
    FIXED = "FIXED",
    PERCENTAGE = "PERCENTAGE"
}
export declare type CouponValue = {
    fixed?: Maybe<Price>;
    percentage?: Maybe<Scalars['Float']>;
    type: CouponType;
};
export declare type CouponValueInput = {
    percentage?: InputMaybe<Scalars['Float']>;
    type: CouponType;
    value?: InputMaybe<PriceInput>;
};
export declare type CreateBookingInput = {
    couponCode?: InputMaybe<Scalars['String']>;
    credit?: InputMaybe<BookingCreditInput>;
    group: BookingGroupInput;
    payment?: InputMaybe<BookingPaymentInput>;
    spacesRequired: Scalars['Int'];
    tracking?: InputMaybe<TrackingInput>;
    user: BookingUserInput;
};
export declare type CreateBookingPayload = {
    booking: Booking;
};
export declare type CreateTMTBookingInput = {
    couponCode?: InputMaybe<Scalars['String']>;
    credit?: InputMaybe<BookingCreditInput>;
    group: BookingGroupInput;
    spacesRequired: Scalars['Int'];
    tracking?: InputMaybe<TrackingInput>;
    user: BookingUserInput;
};
export declare type CreateTMTBookingPayload = {
    channels: Scalars['Int'];
    content: Scalars['String'];
    countries: Scalars['String'];
    currencies: Scalars['String'];
    date: Scalars['String'];
    email: Scalars['String'];
    firstname: Scalars['String'];
    id: Scalars['Int'];
    pax: Scalars['Int'];
    reference: Scalars['String'];
    status: Scalars['String'];
    surname: Scalars['String'];
    total: Scalars['Int'];
    transaction_ids: Array<Scalars['Int']>;
};
export declare enum Currency {
    CAD = "CAD",
    EUR = "EUR",
    GBP = "GBP",
    NOK = "NOK",
    NZD = "NZD",
    SGD = "SGD",
    USD = "USD"
}
export declare type CurrencyDetails = {
    code?: Maybe<GlobalCurrencies>;
    symbol?: Maybe<Scalars['String']>;
};
export declare type CurrencyInput = {
    convertFrom: PriceInput;
    date: Scalars['AWSDate'];
};
export declare type DaysBreakdown = {
    days: Scalars['Int'];
    nights: Scalars['Int'];
};
export declare type DeleteLastTripItineraryItemInput = {
    tripID: Scalars['String'];
};
export declare type DiscontinuedTrip = {
    isDiscontinued: Scalars['Boolean'];
    recommendedTrips: Array<RecommendedTrip>;
};
export declare type DiscontinuedTripInput = {
    isDiscontinued: Scalars['Boolean'];
    recommendedTrips: Array<RecommendedTripInput>;
};
export declare type Discount = Node & {
    code: Scalars['ID'];
    createdAt: Scalars['AWSDateTime'];
    /** If null, the discount is available for any trip group. */
    group?: Maybe<Group>;
    id: Scalars['ID'];
    nominalAmount?: Maybe<Price>;
    /** If null, the discount can be used an unlimited amount of times. */
    quantityRemaining?: Maybe<Scalars['Int']>;
    updatedAt: Scalars['AWSDateTime'];
};
export declare type DownloadRevenueReportInput = {
    type: RevenueReportType;
};
export declare type DripTagGuestOnGroupsInput = {
    /** The start date to apply the tag to the guests */
    fromDate: Scalars['AWSDateTime'];
    requestID: Scalars['ID'];
    /** The tag to apply to the guests */
    tag: Scalars['String'];
    /** The end date to apply the tag to the guests */
    toDate: Scalars['AWSDateTime'];
    /** The trip to apply the tag to */
    tripId: Scalars['ID'];
};
export declare enum Gender {
    FEMALE = "FEMALE",
    MALE = "MALE",
    /**
     * Other Gender
     *
     * Please note that many countries do not allow any gender other than male/female on official forms, and as such you may
     * need to specify male/female for these use cases.
     */
    OTHER = "OTHER"
}
export declare type GeoLocation = {
    country?: Maybe<Country>;
    currency?: Maybe<CurrencyDetails>;
    ipAddress?: Maybe<Scalars['AWSIPAddress']>;
    phoneCode?: Maybe<Scalars['String']>;
    xccyRates?: Maybe<Array<Maybe<XCCYRate>>>;
};
export declare enum GlobalCurrencies {
    AED = "AED",
    AFN = "AFN",
    ALL = "ALL",
    AMD = "AMD",
    ANG = "ANG",
    AOA = "AOA",
    ARS = "ARS",
    AUD = "AUD",
    AWG = "AWG",
    AZN = "AZN",
    BAM = "BAM",
    BBD = "BBD",
    BDT = "BDT",
    BGN = "BGN",
    BHD = "BHD",
    BIF = "BIF",
    BMD = "BMD",
    BND = "BND",
    BOB = "BOB",
    BRL = "BRL",
    BSD = "BSD",
    BTN = "BTN",
    BWP = "BWP",
    BYR = "BYR",
    BZD = "BZD",
    CAD = "CAD",
    CDF = "CDF",
    CHF = "CHF",
    CLP = "CLP",
    CNY = "CNY",
    COP = "COP",
    CRC = "CRC",
    CUP = "CUP",
    CVE = "CVE",
    CZK = "CZK",
    DJF = "DJF",
    DKK = "DKK",
    DOP = "DOP",
    DZD = "DZD",
    EGP = "EGP",
    ERN = "ERN",
    ETB = "ETB",
    EUR = "EUR",
    FJD = "FJD",
    FKP = "FKP",
    GBP = "GBP",
    GEL = "GEL",
    GHS = "GHS",
    GIP = "GIP",
    GMD = "GMD",
    GNF = "GNF",
    GTQ = "GTQ",
    GYD = "GYD",
    HKD = "HKD",
    HNL = "HNL",
    HRK = "HRK",
    HTG = "HTG",
    HUF = "HUF",
    IDR = "IDR",
    ILS = "ILS",
    INR = "INR",
    IQD = "IQD",
    IRR = "IRR",
    ISK = "ISK",
    JMD = "JMD",
    JOD = "JOD",
    JPY = "JPY",
    KES = "KES",
    KGS = "KGS",
    KHR = "KHR",
    KMF = "KMF",
    KPW = "KPW",
    KRW = "KRW",
    KWD = "KWD",
    KYD = "KYD",
    KZT = "KZT",
    LAK = "LAK",
    LBP = "LBP",
    LKR = "LKR",
    LRD = "LRD",
    LSL = "LSL",
    LTL = "LTL",
    LYD = "LYD",
    MAD = "MAD",
    MDL = "MDL",
    MGA = "MGA",
    MKD = "MKD",
    MMK = "MMK",
    MNT = "MNT",
    MOP = "MOP",
    MRO = "MRO",
    MUR = "MUR",
    MVR = "MVR",
    MWK = "MWK",
    MXN = "MXN",
    MYR = "MYR",
    MZN = "MZN",
    NAD = "NAD",
    NGN = "NGN",
    NIO = "NIO",
    NOK = "NOK",
    NPR = "NPR",
    NZD = "NZD",
    OMR = "OMR",
    PAB = "PAB",
    PEN = "PEN",
    PGK = "PGK",
    PHP = "PHP",
    PKR = "PKR",
    PLN = "PLN",
    PYG = "PYG",
    QAR = "QAR",
    RON = "RON",
    RSD = "RSD",
    RUB = "RUB",
    RWF = "RWF",
    SAR = "SAR",
    SBD = "SBD",
    SCR = "SCR",
    SDG = "SDG",
    SEK = "SEK",
    SGD = "SGD",
    SHP = "SHP",
    SLL = "SLL",
    SOS = "SOS",
    SRD = "SRD",
    SSP = "SSP",
    STD = "STD",
    SYP = "SYP",
    SZL = "SZL",
    THB = "THB",
    TJS = "TJS",
    TMT = "TMT",
    TND = "TND",
    TOP = "TOP",
    TRY = "TRY",
    TTD = "TTD",
    TWD = "TWD",
    TZS = "TZS",
    UAH = "UAH",
    UGX = "UGX",
    USD = "USD",
    UYU = "UYU",
    UZS = "UZS",
    VEF = "VEF",
    VND = "VND",
    VUV = "VUV",
    WST = "WST",
    XAF = "XAF",
    XCD = "XCD",
    XOF = "XOF",
    XPF = "XPF",
    YER = "YER",
    ZAR = "ZAR",
    ZMK = "ZMK",
    ZWL = "ZWL"
}
export declare type Group = Node & {
    bookings: BookingConnection;
    commissionPercentage: Scalars['String'];
    coupons?: Maybe<CouponConnection>;
    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 t he 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;
    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']>;
};
export declare type GroupcouponsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type GroupmediaArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type GroupwaitListArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type GroupConnection = Nodes & {
    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.
 */
export declare type Guest = Node & {
    /**
     * 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']>;
};
export declare type GuestConnection = {
    items: Array<Guest>;
};
export declare type GuestInput = {
    bio?: InputMaybe<Scalars['String']>;
    birthDate?: InputMaybe<Scalars['AWSDate']>;
    email: Scalars['AWSEmail'];
    familyName: Scalars['String'];
    givenName: Scalars['String'];
    /**
     * Is Booking Owner
     *
     * If the guest is the booking owner, it will be linked to their account (using the userID field). Otherwise the guest
     * will get an email to let them claim the guest entity with a different account.
     */
    isBookingOwner: Scalars['Boolean'];
    phone: Scalars['AWSPhone'];
    picture?: InputMaybe<MediaReferenceInput>;
    spaceID: Scalars['String'];
    tripForm?: InputMaybe<TripFormInput>;
};
/**
 * Guest Public
 *
 * Used to show limited information publicly (e.g. the guest public photo)
 */
export declare type GuestPublic = Node & {
    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)
 */
export declare type GuestPublicConnection = {
    items: Array<GuestPublic>;
};
export declare type Host = Node & {
    about: Scalars['String'];
    active: Scalars['Boolean'];
    badges?: Maybe<Array<Media>>;
    /** 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']>;
    hostFeaturedVideoURL?: Maybe<Scalars['AWSURL']>;
    hostFeaturedVideoURLThumbnail?: Maybe<Media>;
    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;
    settings?: Maybe<HostSettings>;
    /**
     * 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']>;
};
export declare type HostbookingsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type HostchatInboxArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
    status?: InputMaybe<ChatConversationStatus>;
};
export declare type HostmediaArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type HostnotificationsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type HostreviewsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type HoststatementArgs = {
    endDate: Scalars['AWSDateTime'];
    startDate: Scalars['AWSDateTime'];
};
export declare type HostBusinessInfoInput = {
    /** Official Registration Address */
    businessAddress: AddressInput;
    /** Legal Business Name */
    businessName: Scalars['String'];
    /**
     * Company Registration Number
     *
     * (Optional for backwards compatibility with existing hosts, but required for new hosts.)
     */
    companyRegistrationNumber?: InputMaybe<Scalars['String']>;
};
export declare type HostContactDetails = {
    contactName?: Maybe<Scalars['String']>;
    email: Scalars['String'];
    phone: Scalars['String'];
};
export declare type HostContactDetailsInput = {
    contactName: Scalars['String'];
    email: Scalars['String'];
    phone: Scalars['String'];
};
export declare type HostPaymentDetails = {
    bankDetails?: Maybe<BankDetails>;
    currency: Currency;
    tmtID?: Maybe<Scalars['Int']>;
    tmtIDLegacy?: Maybe<Scalars['String']>;
};
export declare type HostPaymentInfoInput = {
    bankDetails: BankDetailsInput;
    currency: Currency;
    hostID: Scalars['String'];
    tmtID?: InputMaybe<Scalars['Int']>;
    tmtIDLegacy?: InputMaybe<Scalars['String']>;
};
export declare type HostProfileInput = {
    about: Scalars['String'];
    badges?: InputMaybe<Array<MediaReferenceInput>>;
    contact: HostContactDetailsInput;
    facebookPage?: InputMaybe<Scalars['AWSURL']>;
    hostFeaturedVideoURL?: InputMaybe<Scalars['AWSURL']>;
    hostFeaturedVideoURLThumbnail?: InputMaybe<MediaReferenceInput>;
    logo?: InputMaybe<MediaReferenceInput>;
    name: Scalars['String'];
    settings?: InputMaybe<HostSettingsInput>;
    termsConditions?: InputMaybe<Scalars['String']>;
    twitterPage?: InputMaybe<Scalars['AWSURL']>;
    website?: InputMaybe<Scalars['AWSURL']>;
};
/**
 * Host Record Types
 *
 * Used in the database only.
 */
export declare enum HostRecordTypes {
    HOST = "HOST",
    ROLE = "ROLE"
}
export declare type HostRole = {
    host: Host;
    role: HostRoleType;
    updated: Scalars['AWSDateTime'];
    user: User;
};
export declare enum HostRoleType {
    ADMIN = "ADMIN"
}
export declare type HostSettings = {
    /** Whether on the trip page the host profile should be shown or not. */
    showHostProfileOnTripPage: Scalars['Boolean'];
};
export declare type HostSettingsInput = {
    /** Whether on the trip page the host profile should be shown or not. */
    showHostProfileOnTripPage: Scalars['Boolean'];
};
/** Host statements */
export declare type HostStatement = {
    lines: Array<HostStatementLine>;
};
/**
 * Host statement line
 *
 * One line corresponds to each transaction.
 */
export declare type 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'];
};
export declare type HostTeamConnection = {
    items: Array<UserPublicProfile>;
};
export declare type HostUsersRolesConnection = {
    items?: Maybe<Array<HostRole>>;
};
export declare type Hosts = Nodes & {
    items: Array<Maybe<Host>>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type LandingPageConnection = {
    items?: Maybe<Array<TripsLandingPages>>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type LandingPageFAQ = {
    answer: Scalars['String'];
    links?: Maybe<Array<TripFAQLink>>;
    question: Scalars['String'];
    videos?: Maybe<Array<TripFAQVideo>>;
};
export declare enum LandingPageFilterBy {
    COUNTRY = "COUNTRY",
    TAGS = "TAGS"
}
export declare type LandingPagesFAQInput = {
    answer: Scalars['String'];
    links?: InputMaybe<Array<TripFAQLinkInput>>;
    question: Scalars['String'];
    videos?: InputMaybe<Array<TripFAQVideoInput>>;
};
/**
 * Local DateTime generic
 *
 * For use where the local time is important (e.g. a group start date).
 */
export declare type 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'];
};
/**
 * Local Time only generic (has no date)
 *
 * For use where the local time is important (e.g. a meetup time).
 */
export declare type LocalTime = {
    /**
     * utc
     *
     * UTC time in the format of hh:mm:ss.sssZ
     */
    utc: Scalars['AWSTime'];
    /**
     * Timezone
     *
     * Must be a canonical timezone from the IANA dataset.
     * https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
     */
    zone: Scalars['String'];
};
export declare type MarkChatConversationReadInput = {
    conversationID: Scalars['String'];
    participantID: Scalars['String'];
};
/**
 * Media Item
 *
 * Can be an image or video. See
 */
export declare type Media = Node & {
    created: Scalars['AWSDateTime'];
    file?: Maybe<S3Object>;
    id: Scalars['ID'];
    type: MediaType;
    updated: Scalars['AWSDateTime'];
};
/** Media Connection */
export declare type MediaConnection = {
    items: Array<Media>;
    nextToken?: Maybe<Scalars['String']>;
};
/** Media Reference Input */
export declare type MediaReferenceInput = {
    id: Scalars['ID'];
};
/**
 * MediaType
 *
 * The type of media that was uploaded by the user
 */
export declare enum MediaType {
    IMAGE = "IMAGE",
    VIDEO = "VIDEO"
}
export declare type 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 declare type Mutation = {
    /** Add host notes to a trip form */
    addHostNotesToTripForm: Guest;
    addReplyToReview: Review;
    addUserCredit?: Maybe<UserCredit>;
    addUserHostRole: HostRole;
    addUserToWaitList: WaitList;
    addUserToWishlist?: Maybe<Wishlist>;
    /**
     * Admin add transaction
     *
     * Useful for adding e.g. duplicate payments/refunds that were missed. This does not capture the transaction - it just
     * adds an existing transaction to the database.
     */
    adminAddTransaction: Ref;
    /**
     * Admin Discretionary Refund
     *
     * Typically used to adjust a cancellation, or provide a discretionary refund as compensation.
     */
    adminDiscretionaryRefund: AdminDiscretionaryRefundPayload;
    /**
     * Backup password
     *
     * This should be called each time a user signs in (or registers) so that their password is backed up outside of Cognito.
     */
    backupPassword: Confirmation;
    /** Sends a text message to Guests in a group */
    broadcastMessageToGuestsInGroup: Array<ChatMessage>;
    cancelBooking: CancelBookingPayload;
    changeChatConversationStatus: ChatConversation;
    /**
     * Claim a guest
     *
     * Allows a user to claim a guest space on another user's booking, using a password emailed to them when the booking
     * owner set them as the guest (using their email address).
     */
    claimGuest: Guest;
    createBooking: CreateBookingPayload;
    createChatDirectConversation: ChatConversation;
    createChatMessage: ChatMessage;
    createHostProfile: Host;
    createTMTBooking: CreateTMTBookingPayload;
    deleteCoupon?: Maybe<Coupon>;
    deleteGroup: Group;
    deleteLastTripItineraryItem: TripItineraryItem;
    deleteMedia?: Maybe<Media>;
    deletePostBookingAutomatedMessage: Trip;
    deleteReview: Review;
    /** Delete an automated message. */
    deleteTripAutomatedMessage?: Maybe<TripAutomatedMessage>;
    deleteTripFAQ: TripFAQ;
    deleteTripsLandingPage: TripsLandingPages;
    /**
     * Tag all guests on a trip with a specific tag
     *
     * This is a long running operation and will return immediately. The operation
     * will be processed in the background and the result will be available
     * via subscriptions
     */
    dripTagGuestOnGroups?: Maybe<Scalars['Boolean']>;
    /**
     * Increment the read count
     *
     * Also decreases the weight on the TripFAQ item (into -ve numbers) so
     * that the FAQs become sorted by how often they are read.
     *
     * Note you probably don't want to update any local caches (e.g. Apollo cache)
     * with the weight as it can re-order your FAQs, so likely you just want to get
     * the id and readCount from the response.
     */
    incrementTripFAQReadCounter: TripFAQ;
    markChatConversationRead: ChatConversation;
    markChatConversationReadAfterEmailOpen: ChatConversation;
    /** Pay the balance for the booking */
    payBalance: PayBalancePayload;
    /**
     * PutMediaInput
     *
     * puts media that has been uploaded to s3 to the database
     */
    putMedia: Array<Media>;
    /**
     * Remove a participant from a conversation, so they can no longer send
     * messages to or receive messages from the conversation.
     */
    removeParticipantFromChatConversation: ChatConversation;
    removeReplyFromReview: Review;
    /**
     * Remove the user who accepted to be guest on a booking space from the booking
     * space, updates the access code and allows another user to claim guest space.
     */
    removeUserAsGuest: Guest;
    removeUserCredit?: Maybe<UserCredit>;
    removeUserFromWaitList: WaitList;
    removeUserFromWishlist?: Maybe<Wishlist>;
    removeUserHostRole: HostRole;
    removeWayPoint: WayPoint;
    sendSupportMessage?: Maybe<Confirmation>;
    subscribeWebPush: Confirmation;
    /**
     * System Chat User Message Count - Subscription Updater
     *
     * __Internal system use only.__
     *
     * Should be called by the chat service only, to notify Appsync that the chat user message count has changed. This will
     * in turn update any clients subscribed to the chatUserMessageCount.
     */
    systemChatUserMessageCountUpdate: ChatUserMessageCount;
    toggleCouponActiveStatus?: Maybe<Coupon>;
    updateGroup: Group;
    /** Create or update the guest, and trip form, associated with a booking space */
    updateGuest: Guest;
    updateHostBusinessDetails: Host;
    updateHostPaymentDetails: Host;
    updateHostProfile: Host;
    updateReview: Review;
    updateTrip: Trip;
    /** Create/Update Trip FAQ */
    updateTripFAQ: TripFAQ;
    /**
     * Update trip form required information
     *
     * Allows the setting of which parts of a trip form are required, for a specific trip, as well as any additional
     * information that is required.
     */
    updateTripFormRequiredInformation: TripFormRequiredInformation;
    /** Create/Update Trip Itinerary Item */
    updateTripItineraryItem: TripItineraryItem;
    /**
     * Update trip settings
     *
     * We need to be able to update trip settings without changing the trip itself.
     * This will prevent accidental changes to the trip settings when updating the
     * trip.
     */
    updateTripSettings: Trip;
    updateUser: User;
    upsertCoupon?: Maybe<Coupon>;
    upsertPostBookingAutomatedMessage: Trip;
    /** Upsert an automated message. */
    upsertTripAutomatedMessage?: Maybe<TripAutomatedMessage>;
    upsertTripsLandingPage: TripsLandingPages;
    upsertWayPoint: WayPoint;
};
export declare type MutationaddHostNotesToTripFormArgs = {
    hostNotes?: InputMaybe<Scalars['String']>;
    spaceID: Scalars['ID'];
};
export declare type MutationaddReplyToReviewArgs = {
    input: ReplyToReviewInput;
};
export declare type MutationaddUserCreditArgs = {
    input: UserCreditInput;
};
export declare type MutationaddUserHostRoleArgs = {
    input: AddUserHostRoleInput;
};
export declare type MutationaddUserToWaitListArgs = {
    input: AddUserToWaitListInput;
};
export declare type MutationaddUserToWishlistArgs = {
    input: PutWishlistInput;
};
export declare type MutationadminAddTransactionArgs = {
    input?: InputMaybe<AdminAddTransactionInput>;
};
export declare type MutationadminDiscretionaryRefundArgs = {
    input: AdminDiscretionaryRefundInput;
};
export declare type MutationbackupPasswordArgs = {
    input: BackupPasswordInput;
};
export declare type MutationbroadcastMessageToGuestsInGroupArgs = {
    input: BroadcastMessageToGuestsInGroupInput;
};
export declare type MutationcancelBookingArgs = {
    input: CancelBookingInput;
};
export declare type MutationchangeChatConversationStatusArgs = {
    input: ChangeChatConversationStatusInput;
};
export declare type MutationclaimGuestArgs = {
    input: ClaimGuestInput;
};
export declare type MutationcreateBookingArgs = {
    input: CreateBookingInput;
};
export declare type MutationcreateChatDirectConversationArgs = {
    input: ChatDirectConversationInput;
};
export declare type MutationcreateChatMessageArgs = {
    input: ChatMessageInput;
};
export declare type MutationcreateHostProfileArgs = {
    hostProfile: HostProfileInput;
};
export declare type MutationcreateTMTBookingArgs = {
    input: CreateTMTBookingInput;
};
export declare type MutationdeleteCouponArgs = {
    code: Scalars['String'];
};
export declare type MutationdeleteGroupArgs = {
    id: Scalars['ID'];
};
export declare type MutationdeleteLastTripItineraryItemArgs = {
    input: DeleteLastTripItineraryItemInput;
};
export declare type MutationdeleteMediaArgs = {
    id: Scalars['ID'];
};
export declare type MutationdeletePostBookingAutomatedMessageArgs = {
    tripID: Scalars['ID'];
};
export declare type MutationdeleteReviewArgs = {
    id: Scalars['String'];
};
export declare type MutationdeleteTripAutomatedMessageArgs = {
    messageNumber: TripAutomatedMessageNumber;
    tripID: Scalars['String'];
};
export declare type MutationdeleteTripFAQArgs = {
    id: Scalars['ID'];
};
export declare type MutationdeleteTripsLandingPageArgs = {
    slug: Scalars['String'];
};
export declare type MutationdripTagGuestOnGroupsArgs = {
    input: DripTagGuestOnGroupsInput;
};
export declare type MutationincrementTripFAQReadCounterArgs = {
    id: Scalars['ID'];
};
export declare type MutationmarkChatConversationReadArgs = {
    input: MarkChatConversationReadInput;
};
export declare type MutationmarkChatConversationReadAfterEmailOpenArgs = {
    input: SendGridOpenEventInput;
};
export declare type MutationpayBalanceArgs = {
    input?: InputMaybe<PayBalanceInput>;
};
export declare type MutationputMediaArgs = {
    input: PutMediaInput;
};
export declare type MutationremoveParticipantFromChatConversationArgs = {
    input: RemoveParticipantFromChatConversationInput;
};
export declare type MutationremoveReplyFromReviewArgs = {
    id: Scalars['String'];
};
export declare type MutationremoveUserAsGuestArgs = {
    spaceID: Scalars['ID'];
};
export declare type MutationremoveUserCreditArgs = {
    input: RemoveUserCreditInput;
};
export declare type MutationremoveUserFromWaitListArgs = {
    input: RemoveUserFromWaitListInput;
};
export declare type MutationremoveUserFromWishlistArgs = {
    input: RemoveWishlistInput;
};
export declare type MutationremoveUserHostRoleArgs = {
    input: RemoveUserHostRoleInput;
};
export declare type MutationremoveWayPointArgs = {
    id: Scalars['ID'];
};
export declare type MutationsendSupportMessageArgs = {
    input: SupportMessageInput;
};
export declare type MutationsubscribeWebPushArgs = {
    input: SubscribeWebPushInput;
};
export declare type MutationsystemChatUserMessageCountUpdateArgs = {
    input: SystemChatUserMessageCountUpdateInput;
};
export declare type MutationtoggleCouponActiveStatusArgs = {
    active: Scalars['Boolean'];
    code: Scalars['String'];
};
export declare type MutationupdateGroupArgs = {
    input: UpdateGroupInput;
};
export declare type MutationupdateGuestArgs = {
    input: GuestInput;
};
export declare type MutationupdateHostBusinessDetailsArgs = {
    businessInfo: HostBusinessInfoInput;
    urlSlug: Scalars['ID'];
};
export declare type MutationupdateHostPaymentDetailsArgs = {
    input: HostPaymentInfoInput;
};
export declare type MutationupdateHostProfileArgs = {
    hostProfile: HostProfileInput;
    urlSlug: Scalars['ID'];
};
export declare type MutationupdateReviewArgs = {
    input: UpdateReviewInput;
};
export declare type MutationupdateTripArgs = {
    input: UpdateTripInput;
};
export declare type MutationupdateTripFAQArgs = {
    input: UpdateTripFAQInput;
};
export declare type MutationupdateTripFormRequiredInformationArgs = {
    input: TripFormRequiredInformationInput;
};
export declare type MutationupdateTripItineraryItemArgs = {
    input: TripItineraryItemInput;
};
export declare type MutationupdateTripSettingsArgs = {
    input: UpdateTripSettingsInput;
};
export declare type MutationupdateUserArgs = {
    input: UpdateUserInput;
};
export declare type MutationupsertCouponArgs = {
    input: UpsertCouponInput;
};
export declare type MutationupsertPostBookingAutomatedMessageArgs = {
    input: UpsertPostBookingAutomatedMessageInput;
};
export declare type MutationupsertTripAutomatedMessageArgs = {
    input: UpsertTripAutomatedMessageInput;
};
export declare type MutationupsertTripsLandingPageArgs = {
    input: TripsLandingPageUpsertInput;
};
export declare type MutationupsertWayPointArgs = {
    input: UpsertWayPointInput;
};
/**
 * Nationality
 *
 * Full list taken from https://www.gov.uk/government/publications/nationalities
 */
export declare enum Nationality {
    AFGHAN = "AFGHAN",
    ALBANIAN = "ALBANIAN",
    ALGERIAN = "ALGERIAN",
    AMERICAN = "AMERICAN",
    ANDORRAN = "ANDORRAN",
    ANGOLAN = "ANGOLAN",
    ANGUILLAN = "ANGUILLAN",
    ARGENTINE = "ARGENTINE",
    ARMENIAN = "ARMENIAN",
    AUSTRALIAN = "AUSTRALIAN",
    AUSTRIAN = "AUSTRIAN",
    AZERBAIJANI = "AZERBAIJANI",
    BAHAMIAN = "BAHAMIAN",
    BAHRAINI = "BAHRAINI",
    BANGLADESHI = "BANGLADESHI",
    BARBADIAN = "BARBADIAN",
    BELARUSIAN = "BELARUSIAN",
    BELGIAN = "BELGIAN",
    BELIZEAN = "BELIZEAN",
    BENINESE = "BENINESE",
    BERMUDIAN = "BERMUDIAN",
    BHUTANESE = "BHUTANESE",
    BOLIVIAN = "BOLIVIAN",
    BOTSWANAN = "BOTSWANAN",
    BRAZILIAN = "BRAZILIAN",
    BRITISH = "BRITISH",
    BRITISH_VIRGIN_ISLANDER = "BRITISH_VIRGIN_ISLANDER",
    BRUNEIAN = "BRUNEIAN",
    BULGARIAN = "BULGARIAN",
    BURKINAN = "BURKINAN",
    BURMESE = "BURMESE",
    BURUNDIAN = "BURUNDIAN",
    CAMBODIAN = "CAMBODIAN",
    CAMEROONIAN = "CAMEROONIAN",
    CANADIAN = "CANADIAN",
    CAPE_VERDEAN = "CAPE_VERDEAN",
    CAYMAN_ISLANDER = "CAYMAN_ISLANDER",
    CENTRAL_AFRICAN = "CENTRAL_AFRICAN",
    CHADIAN = "CHADIAN",
    CHILEAN = "CHILEAN",
    CHINESE = "CHINESE",
    CITIZEN_OF_ANTIGUA_AND_BARBUDA = "CITIZEN_OF_ANTIGUA_AND_BARBUDA",
    CITIZEN_OF_BOSNIA_AND_HERZEGOVINA = "CITIZEN_OF_BOSNIA_AND_HERZEGOVINA",
    CITIZEN_OF_GUINEA_BISSAU = "CITIZEN_OF_GUINEA_BISSAU",
    CITIZEN_OF_KIRIBATI = "CITIZEN_OF_KIRIBATI",
    CITIZEN_OF_SEYCHELLES = "CITIZEN_OF_SEYCHELLES",
    CITIZEN_OF_THE_DOMINICAN_REPUBLIC = "CITIZEN_OF_THE_DOMINICAN_REPUBLIC",
    CITIZEN_OF_VANUATU = "CITIZEN_OF_VANUATU",
    COLOMBIAN = "COLOMBIAN",
    COMORAN = "COMORAN",
    CONGOLESE_CONGO_ = "CONGOLESE_CONGO_",
    CONGOLESE_DRC_ = "CONGOLESE_DRC_",
    COOK_ISLANDER = "COOK_ISLANDER",
    COSTA_RICAN = "COSTA_RICAN",
    CROATIAN = "CROATIAN",
    CUBAN = "CUBAN",
    CYMRAES = "CYMRAES",
    CYMRO = "CYMRO",
    CYPRIOT = "CYPRIOT",
    CZECH = "CZECH",
    DANISH = "DANISH",
    DJIBOUTIAN = "DJIBOUTIAN",
    DOMINICAN = "DOMINICAN",
    DUTCH = "DUTCH",
    EAST_TIMORESE = "EAST_TIMORESE",
    ECUADOREAN = "ECUADOREAN",
    EGYPTIAN = "EGYPTIAN",
    EMIRATI = "EMIRATI",
    ENGLISH = "ENGLISH",
    EQUATORIAL_GUINEAN = "EQUATORIAL_GUINEAN",
    ERITREAN = "ERITREAN",
    ESTONIAN = "ESTONIAN",
    ETHIOPIAN = "ETHIOPIAN",
    FAROESE = "FAROESE",
    FIJIAN = "FIJIAN",
    FILIPINO = "FILIPINO",
    FINNISH = "FINNISH",
    FRENCH = "FRENCH",
    GABONESE = "GABONESE",
    GAMBIAN = "GAMBIAN",
    GEORGIAN = "GEORGIAN",
    GERMAN = "GERMAN",
    GHANAIAN = "GHANAIAN",
    GIBRALTARIAN = "GIBRALTARIAN",
    GREEK = "GREEK",
    GREENLANDIC = "GREENLANDIC",
    GRENADIAN = "GRENADIAN",
    GUAMANIAN = "GUAMANIAN",
    GUATEMALAN = "GUATEMALAN",
    GUINEAN = "GUINEAN",
    GUYANESE = "GUYANESE",
    HAITIAN = "HAITIAN",
    HONDURAN = "HONDURAN",
    HONG_KONGER = "HONG_KONGER",
    HUNGARIAN = "HUNGARIAN",
    ICELANDIC = "ICELANDIC",
    INDIAN = "INDIAN",
    INDONESIAN = "INDONESIAN",
    IRANIAN = "IRANIAN",
    IRAQI = "IRAQI",
    IRISH = "IRISH",
    ISRAELI = "ISRAELI",
    ITALIAN = "ITALIAN",
    IVORIAN = "IVORIAN",
    JAMAICAN = "JAMAICAN",
    JAPANESE = "JAPANESE",
    JORDANIAN = "JORDANIAN",
    KAZAKH = "KAZAKH",
    KENYAN = "KENYAN",
    KITTITIAN = "KITTITIAN",
    KOSOVAN = "KOSOVAN",
    KUWAITI = "KUWAITI",
    KYRGYZ = "KYRGYZ",
    LAO = "LAO",
    LATVIAN = "LATVIAN",
    LEBANESE = "LEBANESE",
    LIBERIAN = "LIBERIAN",
    LIBYAN = "LIBYAN",
    LIECHTENSTEIN_CITIZEN = "LIECHTENSTEIN_CITIZEN",
    LITHUANIAN = "LITHUANIAN",
    LUXEMBOURGER = "LUXEMBOURGER",
    MACANESE = "MACANESE",
    MACEDONIAN = "MACEDONIAN",
    MALAGASY = "MALAGASY",
    MALAWIAN = "MALAWIAN",
    MALAYSIAN = "MALAYSIAN",
    MALDIVIAN = "MALDIVIAN",
    MALIAN = "MALIAN",
    MALTESE = "MALTESE",
    MARSHALLESE = "MARSHALLESE",
    MARTINIQUAIS = "MARTINIQUAIS",
    MAURITANIAN = "MAURITANIAN",
    MAURITIAN = "MAURITIAN",
    MEXICAN = "MEXICAN",
    MICRONESIAN = "MICRONESIAN",
    MOLDOVAN = "MOLDOVAN",
    MONEGASQUE = "MONEGASQUE",
    MONGOLIAN = "MONGOLIAN",
    MONTENEGRIN = "MONTENEGRIN",
    MONTSERRATIAN = "MONTSERRATIAN",
    MOROCCAN = "MOROCCAN",
    MOSOTHO = "MOSOTHO",
    MOZAMBICAN = "MOZAMBICAN",
    NAMIBIAN = "NAMIBIAN",
    NAURUAN = "NAURUAN",
    NEPALESE = "NEPALESE",
    NEW_ZEALANDER = "NEW_ZEALANDER",
    NICARAGUAN = "NICARAGUAN",
    NIGERIAN = "NIGERIAN",
    NIGERIEN = "NIGERIEN",
    NIUEAN = "NIUEAN",
    NORTHERN_IRISH = "NORTHERN_IRISH",
    NORTH_KOREAN = "NORTH_KOREAN",
    NORWEGIAN = "NORWEGIAN",
    OMANI = "OMANI",
    PAKISTANI = "PAKISTANI",
    PALAUAN = "PALAUAN",
    PALESTINIAN = "PALESTINIAN",
    PANAMANIAN = "PANAMANIAN",
    PAPUA_NEW_GUINEAN = "PAPUA_NEW_GUINEAN",
    PARAGUAYAN = "PARAGUAYAN",
    PERUVIAN = "PERUVIAN",
    PITCAIRN_ISLANDER = "PITCAIRN_ISLANDER",
    POLISH = "POLISH",
    PORTUGUESE = "PORTUGUESE",
    PRYDEINIG = "PRYDEINIG",
    PUERTO_RICAN = "PUERTO_RICAN",
    QATARI = "QATARI",
    ROMANIAN = "ROMANIAN",
    RUSSIAN = "RUSSIAN",
    RWANDAN = "RWANDAN",
    SALVADOREAN = "SALVADOREAN",
    SAMMARINESE = "SAMMARINESE",
    SAMOAN = "SAMOAN",
    SAO_TOMEAN = "SAO_TOMEAN",
    SAUDI_ARABIAN = "SAUDI_ARABIAN",
    SCOTTISH = "SCOTTISH",
    SENEGALESE = "SENEGALESE",
    SERBIAN = "SERBIAN",
    SIERRA_LEONEAN = "SIERRA_LEONEAN",
    SINGAPOREAN = "SINGAPOREAN",
    SLOVAK = "SLOVAK",
    SLOVENIAN = "SLOVENIAN",
    SOLOMON_ISLANDER = "SOLOMON_ISLANDER",
    SOMALI = "SOMALI",
    SOUTH_AFRICAN = "SOUTH_AFRICAN",
    SOUTH_KOREAN = "SOUTH_KOREAN",
    SOUTH_SUDANESE = "SOUTH_SUDANESE",
    SPANISH = "SPANISH",
    SRI_LANKAN = "SRI_LANKAN",
    STATELESS = "STATELESS",
    ST_HELENIAN = "ST_HELENIAN",
    ST_LUCIAN = "ST_LUCIAN",
    SUDANESE = "SUDANESE",
    SURINAMESE = "SURINAMESE",
    SWAZI = "SWAZI",
    SWEDISH = "SWEDISH",
    SWISS = "SWISS",
    SYRIAN = "SYRIAN",
    TAIWANESE = "TAIWANESE",
    TAJIK = "TAJIK",
    TANZANIAN = "TANZANIAN",
    THAI = "THAI",
    TOGOLESE = "TOGOLESE",
    TONGAN = "TONGAN",
    TRINIDADIAN = "TRINIDADIAN",
    TRISTANIAN = "TRISTANIAN",
    TUNISIAN = "TUNISIAN",
    TURKISH = "TURKISH",
    TURKMEN = "TURKMEN",
    TURKS_AND_CAICOS_ISLANDER = "TURKS_AND_CAICOS_ISLANDER",
    TUVALUAN = "TUVALUAN",
    UGANDAN = "UGANDAN",
    UKRAINIAN = "UKRAINIAN",
    URUGUAYAN = "URUGUAYAN",
    UZBEK = "UZBEK",
    VATICAN_CITIZEN = "VATICAN_CITIZEN",
    VENEZUELAN = "VENEZUELAN",
    VIETNAMESE = "VIETNAMESE",
    VINCENTIAN = "VINCENTIAN",
    WALLISIAN = "WALLISIAN",
    WELSH = "WELSH",
    YEMENI = "YEMENI",
    ZAMBIAN = "ZAMBIAN",
    ZIMBABWEAN = "ZIMBABWEAN"
}
/**
 * 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.
 */
export 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).
 */
export declare type Nodes = {
    nextToken?: Maybe<Scalars['String']>;
};
export declare enum NotificationIsRead {
    READ = "READ",
    UNREAD = "UNREAD"
}
export declare type PayBalanceInput = {
    amount: PriceInput;
    bookingID: Scalars['ID'];
    card: TransactionCardInput;
    /**
     * TMT Booking ID
     *
     * The TMT Modal will auto-create a booking ID for each transaction.
     */
    tmtBookingID?: InputMaybe<Scalars['Int']>;
    /**
     * TMT Transaction ID
     *
     * The TMT Modal will return this in the `transaction_logged` response.
     */
    tmtTransactionID?: InputMaybe<Scalars['Int']>;
};
export declare type PayBalancePayload = {
    transaction: Transaction;
};
export declare type Price = {
    /** The zero-decimal amount (i.e. the amount in cents for USD/EUR, or pence for GBP). */
    amountZD: Scalars['Int'];
    currency: Currency;
};
export declare type PriceInput = {
    /** The zero-decimal amount (i.e. the amount in cents for USD/EUR, or pence for GBP). */
    amountZD: Scalars['Int'];
    currency: Currency;
};
/** Price */
export declare type 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']>;
};
export declare type PutMediaInput = {
    files: Array<S3ObjectInput>;
    /**
     * If the uploaded media belongs to a group for a Trip, the groupID should be
     * set, together with the tripID and hostID, the uploading user is the owner
     */
    groupID?: InputMaybe<Scalars['ID']>;
    /**
     * if the uploaded media belongs to a host, the hostID should be set and will be
     * set as the owner
     *
     * Should have at least hostID or userID
     */
    hostID?: InputMaybe<Scalars['ID']>;
    /** The tripID of the trip that will be tagged for this media */
    tripID?: InputMaybe<Scalars['ID']>;
    /**
     * If the uploaded media belongs to a user, the userID should be set and will be
     * set as the owner
     *
     * Should have at least hostID or userID
     */
    userID?: InputMaybe<Scalars['ID']>;
};
export declare type PutWishlistInput = {
    tripID: Scalars['ID'];
    userID: Scalars['ID'];
};
export declare type Query = {
    applyCouponOnCheckout?: Maybe<ApplyCouponValue>;
    /**
     * Booking
     *
     * Fetch a booking by ID.
     */
    booking: Booking;
    /**
     * Bookings query (admin only)
     *
     * By default this fetches all bookings sorted by most recent bookings first. It can also fetch bookings by departure
     * date.
     */
    bookings: BookingConnection;
    /** Get Cancelled Bookings */
    cancelledBookings: BookingConnection;
    chatConversation: ChatConversation;
    convertToGBP?: Maybe<Price>;
    coupon?: Maybe<Coupon>;
    coupons?: Maybe<CouponConnection>;
    /** Get a list of invoices for all bookings in a given a date, defaulting to today. */
    daysInvoices: BookingSpaceInvoiceLineConnection;
    /** Download list of customers with one or more booking */
    downloadCustomerReport?: Maybe<CSVExport>;
    downloadRevenueReport?: Maybe<CSVExport>;
    downloadTripRevenueReport?: Maybe<CSVExport>;
    exportDepartingGroupsToCSV: CSVExport;
    exportPeopleDepartingToCSV: CSVExport;
    exportRecentBookingsToCSV: CSVExport;
    exportReviewsToCSV: CSVExport;
    exportWaitListToCSV: CSVExport;
    /** Get a trip by an old slug. */
    fetchTripByPreviousSlug?: Maybe<TripSlugHistory>;
    geoLocation?: Maybe<GeoLocation>;
    group: Group;
    /**
     * Get all groups, from all trips within a date range, by defaults it grabs all
     * groups in the future, for the next 30 days
     */
    groups: GroupConnection;
    /**
     * Guest
     *
     * Guest on a booking.
     */
    guest: Guest;
    host: Host;
    hostByURL: Host;
    hosts?: Maybe<Hosts>;
    media?: Maybe<Media>;
    /** Get the most recent public bookings like 10 bookings, for sales popups etc. */
    recentPublicBookings: Array<BookingPublicDetails>;
    revenueReport?: Maybe<RevenueReportConnection>;
    reviewStatistics: ReviewStatistics;
    reviews: ReviewConnection;
    search: Search;
    totalCredits?: Maybe<TotalCredits>;
    trip: Trip;
    tripByURL: Trip;
    tripRevenueReport: TripRevenueReportConnection;
    trips: TripConnection;
    tripsLandingPage: TripsLandingPages;
    tripsLandingPages: LandingPageConnection;
    /**
     * Trust My Travel Authorisation Code
     *
     * Required to use the TMT payments modal.
     */
    trustMyTravelAuthorisationCode: TrustMyTravelAuthorisationCode;
    trustPilotTrustedReviewLink: Scalars['String'];
    user: User;
    userByEmail: User;
    users: UserConnection;
    validateCouponCode?: Maybe<Coupon>;
    waitListItems: WaitListConnection;
    wishlist?: Maybe<Wishlist>;
};
export declare type QueryapplyCouponOnCheckoutArgs = {
    code: Scalars['String'];
    groupID: Scalars['ID'];
    spacesRequested: Scalars['Int'];
};
export declare type QuerybookingArgs = {
    id: Scalars['ID'];
};
export declare type QuerybookingsArgs = {
    filter?: InputMaybe<BookingsQueryFilter>;
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type QuerycancelledBookingsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type QuerychatConversationArgs = {
    id: Scalars['ID'];
};
export declare type QueryconvertToGBPArgs = {
    input: CurrencyInput;
};
export declare type QuerycouponArgs = {
    code: Scalars['String'];
};
export declare type QuerycouponsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type QuerydaysInvoicesArgs = {
    date?: InputMaybe<Scalars['AWSDate']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type QuerydownloadRevenueReportArgs = {
    input: DownloadRevenueReportInput;
};
export declare type QuerydownloadTripRevenueReportArgs = {
    input: TripRevenueReportInput;
};
export declare type QueryfetchTripByPreviousSlugArgs = {
    slug: Scalars['String'];
};
export declare type QuerygroupArgs = {
    id: Scalars['ID'];
};
export declare type QuerygroupsArgs = {
    from?: InputMaybe<Scalars['AWSDateTime']>;
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
    to?: InputMaybe<Scalars['AWSDateTime']>;
};
export declare type QueryguestArgs = {
    spaceID: Scalars['ID'];
};
export declare type QueryhostArgs = {
    id: Scalars['ID'];
};
export declare type QueryhostByURLArgs = {
    urlSlug: Scalars['String'];
};
export declare type QueryhostsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type QuerymediaArgs = {
    id: Scalars['ID'];
};
export declare type QueryrevenueReportArgs = {
    input: RevenueReportInput;
};
export declare type QueryreviewsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type QuerytripArgs = {
    id: Scalars['ID'];
};
export declare type QuerytripByURLArgs = {
    urlSlug: Scalars['String'];
};
export declare type QuerytripRevenueReportArgs = {
    input: TripRevenueReportInput;
};
export declare type QuerytripsArgs = {
    includeInActiveTrips?: InputMaybe<Scalars['Boolean']>;
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type QuerytripsLandingPageArgs = {
    slug: Scalars['String'];
};
export declare type QuerytrustMyTravelAuthorisationCodeArgs = {
    price: PriceInput;
    turnstileToken?: InputMaybe<Scalars['String']>;
};
export declare type QuerytrustPilotTrustedReviewLinkArgs = {
    spaceID: Scalars['String'];
};
export declare type QueryuserArgs = {
    id: Scalars['ID'];
};
export declare type QueryuserByEmailArgs = {
    email: Scalars['AWSEmail'];
};
export declare type QueryusersArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type QueryvalidateCouponCodeArgs = {
    code: Scalars['String'];
    groupID: Scalars['ID'];
};
export declare type QuerywaitListItemsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type QuerywishlistArgs = {
    id: Scalars['ID'];
};
export declare type RecommendedTrip = {
    title: Scalars['String'];
    url: Scalars['AWSURL'];
};
export declare type RecommendedTripInput = {
    title: Scalars['String'];
    url: Scalars['AWSURL'];
};
/**
 * Reference
 *
 * Gives the ID of an object, but not the full underlying item in this query
 */
export declare type Ref = {
    id: Scalars['ID'];
};
export declare type RefInput = {
    id: Scalars['ID'];
};
export declare type RemoveParticipantFromChatConversationInput = {
    conversationID: Scalars['ID'];
    participantID: Scalars['ID'];
};
export declare type RemoveUserCreditInput = {
    currency: GlobalCurrencies;
    note?: InputMaybe<Scalars['String']>;
    userID: Scalars['ID'];
};
export declare type RemoveUserFromWaitListInput = {
    groupID: Scalars['ID'];
    userID: Scalars['ID'];
};
export declare type RemoveUserHostRoleInput = {
    hostID: Scalars['String'];
    userID: Scalars['ID'];
};
export declare type RemoveWishlistInput = {
    tripID: Scalars['ID'];
    userID: Scalars['ID'];
};
export declare type ReplyToReviewInput = {
    reply: Scalars['String'];
    reviewID: Scalars['String'];
};
export declare type RevenueReport = Node & {
    /** GMV = Total booking value including credits and cancellations */
    GMV: Price;
    /** GMV/number of bookings */
    averageBookingValue: Price;
    /** Net commissions/spaces booked */
    averageNetCommission: Price;
    /** Number of spaces booked/number of bookings */
    averagePeoplePerBooking: Scalars['Float'];
    /** Cash received = Total money allocated to us on TMT */
    cashReceived: Price;
    created: Scalars['AWSDateTime'];
    id: Scalars['ID'];
    /** Net GMV = Total booking value excluding credits and cancellations */
    netCommission: Price;
    /** number of bookings made */
    numberOfBookingMade: Scalars['Int'];
    /** number of spaces booked */
    numberOfSpacesBooked: Scalars['Int'];
    /**
     * The period of the report in the format of YYYY-MM-DD for daily, YYYY-MM for
     * monthly, and YYYY for annual reports
     */
    period: Scalars['String'];
    type: RevenueReportType;
    updated: Scalars['AWSDateTime'];
};
export declare type RevenueReportConnection = {
    items?: Maybe<Array<Maybe<RevenueReport>>>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type RevenueReportInput = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
    period?: InputMaybe<Scalars['String']>;
    type: RevenueReportType;
};
export declare enum RevenueReportType {
    ANNUAL = "ANNUAL",
    DAILY = "DAILY",
    MONTHLY = "MONTHLY",
    OVERALL = "OVERALL",
    QUARTERLY = "QUARTERLY"
}
export declare type Review = Node & {
    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;
};
export declare type ReviewmediaArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type ReviewConnection = {
    items: Array<Review>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type ReviewReply = {
    content: Scalars['String'];
    created: Scalars['AWSDateTime'];
};
export declare enum ReviewSource {
    /** The review was copied from an external source e.g. TrustPilot. */
    EXTERNAL = "EXTERNAL",
    /** The review was created by the guest. */
    GUEST = "GUEST"
}
export declare type ReviewStatistics = {
    fiveStarRatingAverage?: Maybe<Scalars['Float']>;
    ratingAverage?: Maybe<Scalars['Float']>;
    reviewCount: Scalars['Int'];
    starsReviewBreakdown: StarsReviewBreakdown;
};
export declare enum ReviewStatisticsType {
    ALL = "ALL",
    HOST = "HOST",
    TRIP = "TRIP"
}
export declare type 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).
 */
export declare type S3Object = {
    bucket: Scalars['String'];
    key: Scalars['String'];
    region: Scalars['String'];
};
export declare type S3ObjectInput = {
    key: Scalars['String'];
    type: MediaType;
};
export declare type SEO = {
    metaDescription?: Maybe<Scalars['String']>;
    metaTitle?: Maybe<Scalars['String']>;
};
export declare type SEOInput = {
    metaDescription?: InputMaybe<Scalars['String']>;
    metaTitle?: InputMaybe<Scalars['String']>;
};
export declare type Search = {
    /**
     * Algolia admin search ID
     *
     * Important: must be restricted to admins
     */
    algoliaAdminID: Scalars['String'];
    /**
     * Algolia admin search ID
     *
     * Important: must be restricted to admins
     */
    algoliaAdminKey: Scalars['String'];
};
export declare type SendGridOpenEventInput = {
    /**
     * JSON payload from SendGrid containing the event data for the open event.
     * This is a JSON string, so it should be escaped properly.
     */
    payload: Scalars['String'];
};
export declare enum SkyhookClubTiers {
    Bronze = "Bronze",
    Diamond = "Diamond",
    Gold = "Gold",
    Platinum = "Platinum",
    Silver = "Silver"
}
export declare type SkyhookFanClubCredits = Node & {
    amount: Price;
    booking: Booking;
    created: Scalars['AWSDateTime'];
    credit?: Maybe<UserCredit>;
    group: Group;
    id: Scalars['ID'];
    travelledOn: Scalars['AWSDateTime'];
    user: User;
};
export declare type StarsReviewBreakdown = {
    fiveStar: Scalars['Int'];
    fourStar: Scalars['Int'];
    oneStar: Scalars['Int'];
    threeStar: Scalars['Int'];
    twoStar: Scalars['Int'];
};
/**
 * Status ENUM (ACTIVE or INACTIVE)
 *
 * Used in Dynamo only.
 */
export declare enum Status {
    ACTIVE = "ACTIVE",
    INACTIVE = "INACTIVE"
}
export declare type SubscribeWebPushInput = {
    registrationToken: Scalars['String'];
};
export declare type Subscription = {
    chatUserMessageCount?: Maybe<ChatUserMessageCount>;
    onDripTagGuestOnGroups?: Maybe<Scalars['Boolean']>;
};
export declare type SubscriptionchatUserMessageCountArgs = {
    userID: Scalars['ID'];
};
export declare type SubscriptiononDripTagGuestOnGroupsArgs = {
    requestID: Scalars['ID'];
};
export declare type SupportMessageInput = {
    email: Scalars['AWSEmail'];
    message: Scalars['String'];
    name: Scalars['String'];
    subject?: InputMaybe<Scalars['String']>;
    tags?: InputMaybe<Array<SupportMessageTags>>;
};
export declare enum SupportMessageTags {
    BOOK_ANOTHER_SPACE = "BOOK_ANOTHER_SPACE",
    CANCELLATION = "CANCELLATION",
    CANT_FIND_BOOKING = "CANT_FIND_BOOKING",
    CHANGE_DATES = "CHANGE_DATES",
    EXISTING_BOOKING = "EXISTING_BOOKING",
    GUIDE_QUESTION = "GUIDE_QUESTION",
    HELP_PAGE = "HELP_PAGE",
    OTHER = "OTHER",
    PRE_TRIP_QUESTION = "PRE_TRIP_QUESTION",
    TRIP_RECOMMENDATION = "TRIP_RECOMMENDATION"
}
export declare type SystemChatUserMessageCountUpdateInput = {
    userID: Scalars['ID'];
};
export declare type TMTDetails = {
    affiliateChannelID?: Maybe<Scalars['Int']>;
    /** TMT Booking ID */
    bookingID: Scalars['Int'];
    channelID: Scalars['Int'];
};
export declare type Testimonial = {
    order: Scalars['Int'];
    thumbnail: Media;
    youtubeVideoURL: Scalars['AWSURL'];
};
export declare type TestimonialInput = {
    order: Scalars['Int'];
    thumbnail: MediaReferenceInput;
    youtubeVideoURL: Scalars['AWSURL'];
};
export declare type TotalCredits = {
    amountZD: Scalars['Int'];
    currency: GlobalCurrencies;
    updated: Scalars['AWSDateTime'];
};
export declare type Tracking = {
    facebookBrowserID?: Maybe<Scalars['String']>;
    facebookClickID?: Maybe<Scalars['String']>;
    ipAddress?: Maybe<Scalars['AWSIPAddress']>;
    userAgent?: Maybe<Scalars['String']>;
};
/**
 * Tracking parameters
 *
 * Used to help track conversion, where permitted, with third parties.
 */
export declare type TrackingInput = {
    facebookBrowserID?: InputMaybe<Scalars['String']>;
    facebookClickID?: InputMaybe<Scalars['String']>;
    ipAddress?: InputMaybe<Scalars['AWSIPAddress']>;
    userAgent?: InputMaybe<Scalars['String']>;
};
export declare type Transaction = Node & {
    /** 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;
};
export declare type TransactionAddressInput = {
    additionalNames?: InputMaybe<Scalars['String']>;
    addressLine1: Scalars['String'];
    addressLine2?: InputMaybe<Scalars['String']>;
    /** State, province or county */
    administrativeArea?: InputMaybe<Scalars['String']>;
    country: CountryCodes;
    /** Neighborhood or suburb */
    dependentLocality?: InputMaybe<Scalars['String']>;
    familyName: Scalars['String'];
    givenName: Scalars['String'];
    /** City */
    locality?: InputMaybe<Scalars['String']>;
    organisation?: InputMaybe<Scalars['String']>;
    postalCode: Scalars['String'];
    sortingCode?: InputMaybe<Scalars['String']>;
};
export declare type TransactionCard = {
    /** Billing address including cardholder name */
    address?: Maybe<Address>;
    cardType?: Maybe<Scalars['String']>;
    lastFourDigits?: Maybe<Scalars['String']>;
};
export declare type TransactionCardInput = {
    /** Billing address including cardholder name */
    address: TransactionAddressInput;
    /** Expiry Of the form YYYY-MM */
    expiry?: InputMaybe<Scalars['String']>;
};
export declare type TransactionConnection = {
    items: Array<Transaction>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare enum TransactionProcessor {
    PAYPAL = "PAYPAL",
    STRIPE = "STRIPE",
    /** Legacy TMT */
    TMT = "TMT",
    TMTV2 = "TMTV2"
}
export declare enum TransactionType {
    CHARGEBACK = "CHARGEBACK",
    PAYMENT = "PAYMENT",
    REFUND = "REFUND"
}
export declare enum TransportMode {
    BUS = "BUS",
    CAR = "CAR",
    COACH = "COACH",
    FLIGHT = "FLIGHT",
    /**  None - e.g. already at the destination.  */
    NONE = "NONE",
    TRAIN = "TRAIN"
}
export declare type Trip = Node & {
    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;
    coupons?: Maybe<CouponConnection>;
    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']>>;
    testimonials?: Maybe<Array<Testimonial>>;
    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 declare type TripcouponsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type TripgroupsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
    startDateFrom?: InputMaybe<Scalars['AWSDateTime']>;
    startDateTo?: InputMaybe<Scalars['AWSDateTime']>;
};
export declare type TripmediaArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type TripreviewsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
/**
 * Trip Activity Types
 *
 * Uses the noun form (e.g. CLIMBING not CLIMB), so that these can be written as e.g. "All Climbing trips".
 */
export declare enum TripActivityType {
    ALPINE_CLIMBING = "ALPINE_CLIMBING",
    BACKPACKING = "BACKPACKING",
    BACK_COUNTRY_SKIING = "BACK_COUNTRY_SKIING",
    CANOEING = "CANOEING",
    CANYONING = "CANYONING",
    COASTEERING = "COASTEERING",
    CROSS_COUNTRY_SKIING = "CROSS_COUNTRY_SKIING",
    FLAT_WATER_KAYAKING = "FLAT_WATER_KAYAKING",
    FORAGING = "FORAGING",
    GORGE_WALKING = "GORGE_WALKING",
    HIKING = "HIKING",
    ICE_CLIMBING = "ICE_CLIMBING",
    MOUNTAIN_BIKING = "MOUNTAIN_BIKING",
    PACK_RAFTING = "PACK_RAFTING",
    RAFTING = "RAFTING",
    RESORT_SKIING = "RESORT_SKIING",
    ROAD_CYCLING = "ROAD_CYCLING",
    ROCK_CLIMBING = "ROCK_CLIMBING",
    SAFARI = "SAFARI",
    SCRAMBLING = "SCRAMBLING",
    SEA_KAYAKING = "SEA_KAYAKING",
    SIGHTSEEING = "SIGHTSEEING",
    SKI_MOUNTAINEERING = "SKI_MOUNTAINEERING",
    SKI_TOURING = "SKI_TOURING",
    SNORKELING = "SNORKELING",
    SNOWSHOEING = "SNOWSHOEING",
    STAND_UP_PADDLE_BOARDING = "STAND_UP_PADDLE_BOARDING",
    SURFING = "SURFING",
    SWIMMING = "SWIMMING",
    VIA_FERRATA = "VIA_FERRATA",
    WHITE_WATER_KAYAKING = "WHITE_WATER_KAYAKING",
    WHITE_WATER_RAFTING = "WHITE_WATER_RAFTING",
    WILD_CAMPING = "WILD_CAMPING",
    WINTER_HIKING = "WINTER_HIKING",
    YOGA = "YOGA"
}
export declare type 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 declare enum TripAutomatedMessageNumber {
    ONE = "ONE",
    POST_TRIP = "POST_TRIP",
    TWO = "TWO"
}
export declare type TripConnection = {
    items?: Maybe<Array<Maybe<Trip>>>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type TripFAQ = Node & {
    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'];
};
export declare type TripFAQConnection = {
    items: Array<TripFAQ>;
};
export declare type TripFAQLink = {
    title: Scalars['String'];
    url: Scalars['AWSURL'];
};
export declare type TripFAQLinkInput = {
    title: Scalars['String'];
    url: Scalars['AWSURL'];
};
export declare type TripFAQVideo = {
    url: Scalars['AWSURL'];
};
export declare type TripFAQVideoInput = {
    url: Scalars['AWSURL'];
};
export declare enum TripFAQsCategories {
    BEFORE_YOUR_TRIP = "BEFORE_YOUR_TRIP",
    DURING_YOUR_TRIP = "DURING_YOUR_TRIP",
    OTHERS = "OTHERS"
}
export declare type 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>;
};
export declare type TripFormEmergencyContact = {
    name: Scalars['String'];
    phone: Scalars['String'];
    relationship?: Maybe<Scalars['String']>;
};
export declare type TripFormEmergencyContactInput = {
    name: Scalars['String'];
    phone: Scalars['AWSPhone'];
    relationship?: InputMaybe<Scalars['String']>;
};
export declare type TripFormInput = {
    additionalInformation?: InputMaybe<Scalars['String']>;
    departPoint?: InputMaybe<TripFormWayPointInput>;
    dietaryRequirements?: InputMaybe<Scalars['String']>;
    emergencyContact?: InputMaybe<TripFormEmergencyContactInput>;
    medicalInformation?: InputMaybe<Scalars['String']>;
    meetPoint?: InputMaybe<TripFormWayPointInput>;
    passportInformation?: InputMaybe<TripFormPassportInformationInput>;
    travelInformation?: InputMaybe<TripFormTravelInformationInput>;
    travelInsurance?: InputMaybe<TripFormTravelInsuranceInput>;
};
export declare type 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'];
};
export declare type TripFormPassportInformationInput = {
    dateOfBirth: Scalars['AWSDate'];
    expiryDate: Scalars['AWSDate'];
    familyName: Scalars['String'];
    gender: Gender;
    givenName: Scalars['String'];
    issueDate?: InputMaybe<Scalars['AWSDate']>;
    nationality: 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.
 */
export declare type TripFormRequiredInformation = Node & {
    /**
     * 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'];
};
export declare type TripFormRequiredInformationInput = {
    /**
     * 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?: InputMaybe<Scalars['String']>;
    /**
     * Days before travel that the information is due
     *
     * The guest/booking owner will receive several reminders to fill in the trip information, this number of days before
     * departure.
     */
    daysBeforeTravelDue: Scalars['Int'];
    emergencyContact: Scalars['Boolean'];
    passportInformation: Scalars['Boolean'];
    travelInformation: Scalars['Boolean'];
    travelInsurance: Scalars['Boolean'];
    tripID: Scalars['String'];
};
export declare type 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>;
};
export declare type TripFormTravelInformationInput = {
    arrivalFlightNumber?: InputMaybe<Scalars['String']>;
    /**
     * Arrival Time
     *
     * Local time (not UTC) - any timezone given will be stripped out.
     */
    arrivalTime?: InputMaybe<Scalars['String']>;
    arrivalTransportMode: TransportMode;
    departureFlightNumber?: InputMaybe<Scalars['String']>;
    /**
     * Departure Time
     *
     * Local time (not UTC) - any timezone given will be stripped out.
     */
    departureTime?: InputMaybe<Scalars['String']>;
    departureTransportMode: TransportMode;
};
export declare type TripFormTravelInsurance = {
    company: Scalars['String'];
    phone?: Maybe<Scalars['String']>;
    policyNumber: Scalars['String'];
};
export declare type TripFormTravelInsuranceInput = {
    company: Scalars['String'];
    phone?: InputMaybe<Scalars['AWSPhone']>;
    policyNumber: Scalars['String'];
};
export declare type TripFormWayPointInput = {
    id: Scalars['String'];
};
export declare type TripItineraryItem = Node & {
    day: Scalars['Int'];
    description: Scalars['String'];
    id: Scalars['ID'];
    media?: Maybe<MediaConnection>;
    title: Scalars['String'];
    wayPoints: WayPointsConnection;
};
export declare type TripItineraryItemConnection = {
    items: Array<TripItineraryItem>;
};
export declare type TripItineraryItemInput = {
    day: Scalars['Int'];
    description: Scalars['String'];
    media: Array<MediaReferenceInput>;
    title: Scalars['String'];
    tripID: Scalars['String'];
};
export declare type 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']>;
};
export declare type TripMealsInput = {
    /** The number of breakfasts included in the trip */
    breakfast?: InputMaybe<Scalars['Int']>;
    /** The number of dinners included in the trip */
    dinner?: InputMaybe<Scalars['Int']>;
    /** The number of lunches included in the trip */
    lunch?: InputMaybe<Scalars['Int']>;
};
export declare type TripPagePromotionBanner = {
    link: Scalars['String'];
    text: Scalars['String'];
};
export declare type TripPagePromotionBannerInput = {
    link: Scalars['String'];
    text: Scalars['String'];
};
export declare type TripPageSettings = {
    /**
     * Whether the trip is discontinued or not and if so, what which trips are
     * recommended instead
     */
    discontinued?: Maybe<DiscontinuedTrip>;
    promotionsBanner?: Maybe<TripPagePromotionBanner>;
    /** A list of recommended trips to display on the trip page */
    recommendedTrips?: Maybe<Array<RecommendedTrip>>;
    seo?: Maybe<SEO>;
};
/** We should move all nested settings here */
export declare type TripPageSettingsInput = {
    discontinued?: InputMaybe<DiscontinuedTripInput>;
    promotionsBanner?: InputMaybe<TripPagePromotionBannerInput>;
    recommendedTrips?: InputMaybe<Array<RecommendedTripInput>>;
    seo?: InputMaybe<SEOInput>;
};
export declare type TripRevenueReportConnection = {
    items?: Maybe<Array<Maybe<TripsRevenueReport>>>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type TripRevenueReportInput = {
    hostID?: InputMaybe<Scalars['ID']>;
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
    tripID?: InputMaybe<Scalars['ID']>;
    type: RevenueReportType;
};
/**
 * TripSlugHistory
 *
 * A history of Trips slugs and trips they redirect to, this is for the purpose of
 * redirecting old links to the new ones.
 */
export declare type TripSlugHistory = Node & {
    created: Scalars['AWSDateTime'];
    id: Scalars['ID'];
    slug: Scalars['String'];
    trip: Trip;
};
export declare type TripsLandingPageUpsertInput = {
    countryCode?: InputMaybe<Scalars['String']>;
    description: Scalars['String'];
    faqs?: InputMaybe<Array<LandingPagesFAQInput>>;
    filterBy: LandingPageFilterBy;
    id?: InputMaybe<Scalars['ID']>;
    image: MediaReferenceInput;
    slug?: InputMaybe<Scalars['String']>;
    snapshot: Scalars['String'];
    tags?: InputMaybe<Array<Scalars['String']>>;
    title: Scalars['String'];
};
export declare type TripsLandingPages = Node & {
    /** Country are used to filter trips on the landing page */
    countryCode?: Maybe<Scalars['String']>;
    created: Scalars['AWSDateTime'];
    description: Scalars['String'];
    faqs?: Maybe<Array<LandingPageFAQ>>;
    filterBy: LandingPageFilterBy;
    id: Scalars['ID'];
    image?: Maybe<Media>;
    slug: Scalars['String'];
    snapshot: Scalars['String'];
    /** Tags are used to filter trips on the landing page */
    tags?: Maybe<Array<Scalars['String']>>;
    title: Scalars['String'];
    updated: Scalars['AWSDateTime'];
};
export declare type TripsRevenueReport = Node & {
    GMV: Price;
    averagePeoplePerBooking: Scalars['Float'];
    cashReceived: Price;
    created: Scalars['AWSDateTime'];
    id: Scalars['ID'];
    netCommission: Price;
    numberOfBookingMade: Scalars['Int'];
    numberOfSpacesBooked: Scalars['Int'];
    period: Scalars['String'];
    trip: Trip;
    type: RevenueReportType;
    updated: Scalars['AWSDateTime'];
};
/** Get a TMT Authorisation code, for taking bookings using their payments modal */
export declare type TrustMyTravelAuthorisationCode = {
    channelID: Scalars['Int'];
    code: Scalars['String'];
};
export declare type UpdateGroupInput = {
    end: Scalars['AWSDateTime'];
    /** Host price before discount in ZD */
    hostAmountBeforeDiscountZD?: InputMaybe<Scalars['Int']>;
    hostAmountZD: Scalars['Int'];
    id?: InputMaybe<Scalars['ID']>;
    private: Scalars['Boolean'];
    spacesRemaining: Scalars['Int'];
    start: Scalars['AWSDateTime'];
    tripID: Scalars['ID'];
};
export declare type UpdateReviewInput = {
    body: Scalars['String'];
    givenName?: InputMaybe<Scalars['String']>;
    /**
     * ID
     *
     * This is the same as the booking space id.
     */
    id: Scalars['String'];
    /** This is to be used when the review is being created by an admin */
    media?: InputMaybe<Array<MediaReferenceInput>>;
    /**
     * Rating
     *
     * Should be between 0 and 1.
     */
    rating: Scalars['Float'];
    source?: InputMaybe<ReviewSource>;
    /** This is to be used when the review is being created by an admin */
    starts?: InputMaybe<Scalars['AWSDateTime']>;
    tripID?: InputMaybe<Scalars['String']>;
};
export declare type UpdateTripFAQInput = {
    answer: Scalars['String'];
    category?: InputMaybe<TripFAQsCategories>;
    /**
     * ID
     *
     * ID should be empty when adding a new FAQ and must provided when updating an
     * existing one.
     */
    id?: InputMaybe<Scalars['ID']>;
    links?: InputMaybe<Array<TripFAQLinkInput>>;
    question: Scalars['String'];
    tripID: Scalars['String'];
    videos?: InputMaybe<Array<TripFAQVideoInput>>;
    weight?: InputMaybe<Scalars['Int']>;
};
export declare type UpdateTripInput = {
    active: Scalars['Boolean'];
    activities?: InputMaybe<Array<TripActivityType>>;
    address: AddressInput;
    allowPrivateGroups?: InputMaybe<Scalars['Boolean']>;
    description: Scalars['String'];
    difficultyLevel?: InputMaybe<Scalars['Int']>;
    endTimezone: Scalars['String'];
    excludes?: InputMaybe<Array<Scalars['String']>>;
    featuredImages?: InputMaybe<Array<MediaReferenceInput>>;
    hostID: Scalars['String'];
    id?: InputMaybe<Scalars['ID']>;
    image: MediaReferenceInput;
    includes?: InputMaybe<Array<Scalars['String']>>;
    meals?: InputMaybe<TripMealsInput>;
    notice?: InputMaybe<Scalars['String']>;
    startTimezone: Scalars['String'];
    title: Scalars['String'];
    tripVideoURL?: InputMaybe<Scalars['AWSURL']>;
    tripVideoURLThumbnail?: InputMaybe<MediaReferenceInput>;
    urlSlug: Scalars['String'];
};
export declare type UpdateTripSettingsInput = {
    active?: InputMaybe<Scalars['Boolean']>;
    addAPhantomGroup?: InputMaybe<Scalars['Boolean']>;
    id: Scalars['ID'];
    isRecentTrip?: InputMaybe<Scalars['Boolean']>;
    overlayText?: InputMaybe<Scalars['String']>;
    pageSettings?: InputMaybe<TripPageSettingsInput>;
    phantomGroupPrice?: InputMaybe<Scalars['Int']>;
    preventGuestCancellation?: InputMaybe<Scalars['Boolean']>;
    preventGuestCancellationMessage?: InputMaybe<Scalars['String']>;
    tags?: InputMaybe<Array<Scalars['String']>>;
    testimonials?: InputMaybe<Array<TestimonialInput>>;
    urlSlug: Scalars['String'];
};
export declare type UpdateUserInput = {
    address?: InputMaybe<AddressInput>;
    bio?: InputMaybe<Scalars['String']>;
    birthDate?: InputMaybe<Scalars['AWSDate']>;
    email: Scalars['AWSEmail'];
    familyName: Scalars['String'];
    gender?: InputMaybe<Gender>;
    givenName: Scalars['String'];
    id: Scalars['ID'];
    phone?: InputMaybe<Scalars['AWSPhone']>;
    picture?: InputMaybe<MediaReferenceInput>;
};
export declare type UpsertCouponInput = {
    active: Scalars['Boolean'];
    code: Scalars['String'];
    created?: InputMaybe<Scalars['AWSDateTime']>;
    deductFrom: CouponDeductionType;
    description?: InputMaybe<Scalars['String']>;
    expiryDate?: InputMaybe<Scalars['AWSDateTime']>;
    groupID?: InputMaybe<Scalars['ID']>;
    id?: InputMaybe<Scalars['ID']>;
    tripID?: InputMaybe<Scalars['ID']>;
    type: CouponType;
    value: CouponValueInput;
};
export declare type UpsertPostBookingAutomatedMessageInput = {
    /** The message to send to the guest after booking */
    message: Scalars['String'];
    tripID: Scalars['String'];
};
export declare type UpsertTripAutomatedMessageInput = {
    message: Scalars['String'];
    messageNumber: TripAutomatedMessageNumber;
    tripID: Scalars['ID'];
    weeksFromStart: Scalars['Int'];
};
export declare type UpsertWayPointInput = {
    address: AddressInput;
    /**
     * Arrive At
     *
     * Either use correct timezone offset for the trip, or include no offset at all
     * so that we can assume it uses the trip timezone (do not send UTC time).
     */
    arriveAt: Scalars['AWSTime'];
    /**
     * ID
     *
     * Optional id for waypoint. If not provided, a new id will be generated.
     */
    id?: InputMaybe<Scalars['ID']>;
    itineraryItemID: Scalars['ID'];
    tripID: Scalars['ID'];
    type: WayPointType;
};
/**
 * User
 *
 * Broadly follows the OpenID Connect specification (but with our own address format).
 */
export declare type User = Node & {
    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;
};
/**
 * User
 *
 * Broadly follows the OpenID Connect specification (but with our own address format).
 */
export declare type UserchatInboxArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
/**
 * User
 *
 * Broadly follows the OpenID Connect specification (but with our own address format).
 */
export declare type UsermediaArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
/**
 * User
 *
 * Broadly follows the OpenID Connect specification (but with our own address format).
 */
export declare type UsernotificationsArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
/**
 * User
 *
 * Broadly follows the OpenID Connect specification (but with our own address format).
 */
export declare type UsertotalCreditsArgs = {
    currency: Currency;
};
/**
 * User
 *
 * Broadly follows the OpenID Connect specification (but with our own address format).
 */
export declare type UserwaitListArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type UserConnection = {
    items: Array<User>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type UserCredit = Node & {
    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'];
};
export declare type UserCreditConnection = {
    items?: Maybe<Array<UserCredit>>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type UserCreditInput = {
    amountZD: Scalars['Int'];
    bookingID?: InputMaybe<Scalars['ID']>;
    currency: GlobalCurrencies;
    note?: InputMaybe<Scalars['String']>;
    spaceID?: InputMaybe<Scalars['ID']>;
    userID: Scalars['ID'];
};
/**
 * 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.
 */
export declare type 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>;
};
/**
 * 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.
 */
export declare type UserCreditsSummaryhistoryArgs = {
    limit?: InputMaybe<Scalars['Int']>;
    nextToken?: InputMaybe<Scalars['String']>;
};
export declare type 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.
 */
export declare type UserPublicProfile = {
    address?: Maybe<Address>;
    bio?: Maybe<Scalars['String']>;
    givenName: Scalars['String'];
    id: Scalars['ID'];
    /** The profile picture of the user */
    picture?: Maybe<Media>;
};
export declare type WaitList = Node & {
    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;
};
export declare type WaitListConnection = Nodes & {
    items: Array<WaitList>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type WayPoint = Node & {
    address: Address;
    arriveAt: WayPointTime;
    id: Scalars['ID'];
    itineraryItemID: Scalars['String'];
    type: WayPointType;
};
export declare type WayPointTime = {
    localTime: Scalars['AWSTime'];
    /** @deprecated Use localTime instead */
    utc: Scalars['AWSTime'];
    zone: Scalars['String'];
};
export declare enum WayPointType {
    DepartPoint = "DepartPoint",
    MeetPoint = "MeetPoint"
}
export declare type WayPointsConnection = Nodes & {
    items: Array<WayPoint>;
    nextToken?: Maybe<Scalars['String']>;
};
/**
 * Web Push Subscription for Firebase
 *
 * https://firebase.google.com/docs/cloud-messaging
 */
export declare type WebPushSubscription = {
    registrationToken: Scalars['String'];
};
export declare type Wishlist = Node & {
    created: Scalars['AWSDateTime'];
    id: Scalars['ID'];
    notes?: Maybe<Scalars['String']>;
    trip: Trip;
    user: User;
};
export declare type WishlistConnection = {
    items: Array<Wishlist>;
    nextToken?: Maybe<Scalars['String']>;
};
export declare type XCCYRate = {
    currency: Scalars['String'];
    rate: Scalars['Float'];
};
