import gql from 'graphql-tag';
export type Maybe<T> = T | null;
export type InputMaybe<T> = Maybe<T>;
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
export type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };
export type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
  ID: { input: string; output: string; }
  String: { input: string; output: string; }
  Boolean: { input: boolean; output: boolean; }
  Int: { input: number; output: number; }
  Float: { input: number; output: number; }
  Date: { input: any; output: any; }
  DateTime: { input: any; output: any; }
  Decimal: { input: any; output: any; }
  HexColorCode: { input: any; output: any; }
  JSON: { input: any; output: any; }
  URL: { input: any; output: any; }
};

/** A unique record for each type of asset, liability, equity, income and expense. Used as part of a Chart of Accounts. */
export type Account = BusinessNode & Node & {
  __typename?: 'Account';
  /** The balance of the account as of the current date. */
  balance?: Maybe<Scalars['Decimal']['output']>;
  /** The balance of the account as of the current date in the business currency. */
  balanceInBusinessCurrency?: Maybe<Scalars['Decimal']['output']>;
  /** Business that the account belongs to. */
  business: Business;
  /** The classic primary key used internally at Wave. */
  classicId?: Maybe<Scalars['String']['output']>;
  /** Currency of the account. */
  currency: Currency;
  /** User defined description for the account. */
  description?: Maybe<Scalars['String']['output']>;
  /** User defined id for the account. */
  displayId?: Maybe<Scalars['String']['output']>;
  /** Unique identifier for the account. */
  id: Scalars['ID']['output'];
  /** Indicates whether the account is hidden from view by default. */
  isArchived: Scalars['Boolean']['output'];
  /** Name of the account. */
  name: Scalars['String']['output'];
  /** Credit or Debit. */
  normalBalanceType: AccountNormalBalanceType;
  /**
   * Numerically increasing version, each representing a revision of account data.
   * As soon as something modifies an account, its sequence is incremented.
   */
  sequence: Scalars['Int']['output'];
  /** The account subtype classification based on type. */
  subtype: AccountSubtype;
  /** Account type. */
  type: AccountType;
};

/** Input to the `accountArchive` mutation. */
export type AccountArchiveInput = {
  /** The unique identifier for the account. */
  id: Scalars['ID']['input'];
};

/** Output of the accountArchive mutation. */
export type AccountArchiveOutput = {
  __typename?: 'AccountArchiveOutput';
  /** Indicates whether the account was successfully archived. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
};

/** Account connection. */
export type AccountConnection = {
  __typename?: 'AccountConnection';
  /** List of accounts from the Chart of Accounts. */
  edges: Array<AccountEdge>;
  /** Information about pagination. */
  pageInfo: OffsetPageInfo;
};

/** Input to the `accountCreate` mutation. */
export type AccountCreateInput = {
  /** The unique identifier for the business. */
  businessId: Scalars['ID']['input'];
  /** Currency of the account. Will default to business's currency. */
  currency?: InputMaybe<CurrencyCode>;
  /** User defined description for the account. */
  description?: InputMaybe<Scalars['String']['input']>;
  /** User defined id for the account. */
  displayId?: InputMaybe<Scalars['String']['input']>;
  /** Name of the account. */
  name: Scalars['String']['input'];
  /** The account subtype classification. */
  subtype: AccountSubtypeValue;
};

/** Output of the `accountCreate` mutation. */
export type AccountCreateOutput = {
  __typename?: 'AccountCreateOutput';
  /** Account that was created. */
  account?: Maybe<Account>;
  /** Indicates whether the account was successfully created. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
};

/** Account edge. */
export type AccountEdge = {
  __typename?: 'AccountEdge';
  /** An account from the Chart of Accounts. */
  node?: Maybe<Account>;
};

/** Account balance type. */
export enum AccountNormalBalanceType {
  /** Credit */
  Credit = 'CREDIT',
  /** Debit */
  Debit = 'DEBIT'
}

/** Input to the `accountPatch` mutation. */
export type AccountPatchInput = {
  /** User defined description for the account. Use null to unset the current value. */
  description?: InputMaybe<Scalars['String']['input']>;
  /** User defined id for the account. Use null to unset the current value. */
  displayId?: InputMaybe<Scalars['String']['input']>;
  /** The unique identifier for the account. */
  id: Scalars['ID']['input'];
  /** Name of the account. */
  name?: InputMaybe<Scalars['String']['input']>;
  /** The most recent reversion you are aware of. As soon as something modifies an account, its sequence is incremented. */
  sequence: Scalars['Int']['input'];
};

/** Output of the accountPatch mutation. */
export type AccountPatchOutput = {
  __typename?: 'AccountPatchOutput';
  /** Account that was patched. */
  account?: Maybe<Account>;
  /** Indicates whether the account was successfully patched. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
};

/** Account subtype. */
export type AccountSubtype = {
  __typename?: 'AccountSubtype';
  /** Indicates if accounts of this subtype can be archived. */
  archivable: Scalars['Boolean']['output'];
  /** Account subtype description. */
  description?: Maybe<Scalars['String']['output']>;
  /** Account subtype name. */
  name: Scalars['String']['output'];
  /** Indicates if accounts of this subtype is system created accounts. */
  systemCreated: Scalars['Boolean']['output'];
  /** Account type for the subtype. */
  type: AccountType;
  /** Account subtype value. */
  value: AccountSubtypeValue;
};

/** Subtypes of accounts, as used in the Chart of Accounts. */
export enum AccountSubtypeValue {
  /** Cash & Bank */
  CashAndBank = 'CASH_AND_BANK',
  /** Cost of Goods Sold */
  CostOfGoodsSold = 'COST_OF_GOODS_SOLD',
  /** Credit Card */
  CreditCard = 'CREDIT_CARD',
  /** Customer Prepayments and Customer Credits */
  CustomerPrepaymentsAndCredits = 'CUSTOMER_PREPAYMENTS_AND_CREDITS',
  /** Depreciation and Amortization */
  DepreciationAndAmortization = 'DEPRECIATION_AND_AMORTIZATION',
  /** Discount */
  Discounts = 'DISCOUNTS',
  /** Due For Payroll */
  DueForPayroll = 'DUE_FOR_PAYROLL',
  /** Due to You and Other Business Owners */
  DueToYouAndOtherOwners = 'DUE_TO_YOU_AND_OTHER_OWNERS',
  /** Expense */
  Expense = 'EXPENSE',
  /** Gain on Foreign Exchange */
  GainOnForeignExchange = 'GAIN_ON_FOREIGN_EXCHANGE',
  /** Income */
  Income = 'INCOME',
  /** Inventory */
  Inventory = 'INVENTORY',
  /** Loan and Line of Credit */
  Loans = 'LOANS',
  /** Loss on Foreign Exchange */
  LossOnForeignExchange = 'LOSS_ON_FOREIGN_EXCHANGE',
  /** Money in Transit */
  MoneyInTransit = 'MONEY_IN_TRANSIT',
  /** Business Owner Contribution */
  NonRetainedEarnings = 'NON_RETAINED_EARNINGS',
  /** Other Short-Term Asset */
  OtherCurrentAssets = 'OTHER_CURRENT_ASSETS',
  /** Other Short-Term Liability */
  OtherCurrentLiability = 'OTHER_CURRENT_LIABILITY',
  /** Other Income */
  OtherIncome = 'OTHER_INCOME',
  /** Other Long-Term Asset */
  OtherLongTermAssets = 'OTHER_LONG_TERM_ASSETS',
  /** Other Long-Term Liability */
  OtherLongTermLiability = 'OTHER_LONG_TERM_LIABILITY',
  /** Payable */
  Payable = 'PAYABLE',
  /** System Payable Bill */
  PayableBills = 'PAYABLE_BILLS',
  /** System Payable Non-Bill */
  PayableOther = 'PAYABLE_OTHER',
  /** Payment Processing Fee */
  PaymentProcessingFees = 'PAYMENT_PROCESSING_FEES',
  /** Payroll Expense */
  PayrollExpenses = 'PAYROLL_EXPENSES',
  /** Property, Plant, Equipment */
  PropertyPlantEquipment = 'PROPERTY_PLANT_EQUIPMENT',
  /** Receivable */
  Receivable = 'RECEIVABLE',
  /** System Receivable Invoice */
  ReceivableInvoices = 'RECEIVABLE_INVOICES',
  /** System Receivable Non-Invoice */
  ReceivableOther = 'RECEIVABLE_OTHER',
  /** Retained Earnings: Profit and Business Owner Drawing */
  RetainedEarnings = 'RETAINED_EARNINGS',
  /** Sales Tax on Sales and Purchases */
  SalesTax = 'SALES_TAX',
  /** System Customer Credits */
  SystemCustomerCredits = 'SYSTEM_CUSTOMER_CREDITS',
  /** Transfers */
  Transfers = 'TRANSFERS',
  /** Uncategorized Expense */
  UncategorizedExpense = 'UNCATEGORIZED_EXPENSE',
  /** Uncategorized Income */
  UncategorizedIncome = 'UNCATEGORIZED_INCOME',
  /** Unknown Account */
  UnknownAccount = 'UNKNOWN_ACCOUNT',
  /** Vendor Prepayments and Vendor Credits */
  VendorPrepaymentsAndCredits = 'VENDOR_PREPAYMENTS_AND_CREDITS'
}

/** Account type. */
export type AccountType = {
  __typename?: 'AccountType';
  /** Account type name. */
  name: Scalars['String']['output'];
  /** Normal balance type of the account type */
  normalBalanceType: AccountNormalBalanceType;
  /** Account type value. */
  value: AccountTypeValue;
};

/** Types of accounts, as used in the Chart of Accounts. */
export enum AccountTypeValue {
  /** Represents the different types of economic resources owned or controlled by an entity. */
  Asset = 'ASSET',
  /** Represents the residual equity of an entity. */
  Equity = 'EQUITY',
  /** Represents the business's expenditures. */
  Expense = 'EXPENSE',
  /** Represents the business's earnings. */
  Income = 'INCOME',
  /** Represents the different types of economic obligations of an entity. */
  Liability = 'LIABILITY'
}

/** An address. */
export type Address = {
  __typename?: 'Address';
  /** Address line 1 (Street address/PO Box/Company name). */
  addressLine1?: Maybe<Scalars['String']['output']>;
  /** Address line 2 (Apartment/Suite/Unit/Building). */
  addressLine2?: Maybe<Scalars['String']['output']>;
  /** City/District/Suburb/Town/Village. */
  city?: Maybe<Scalars['String']['output']>;
  /** Country. */
  country?: Maybe<Country>;
  /** Zip/Postal Code. */
  postalCode?: Maybe<Scalars['String']['output']>;
  /** State/County/Province/Region. */
  province?: Maybe<Province>;
};

/** An address. */
export type AddressInput = {
  /** Address line 1 (Street address/PO Box/Company name). */
  addressLine1?: InputMaybe<Scalars['String']['input']>;
  /** Address line 2 (Apartment/Suite/Unit/Building). */
  addressLine2?: InputMaybe<Scalars['String']['input']>;
  /** City/District/Suburb/Town/Village. */
  city?: InputMaybe<Scalars['String']['input']>;
  /** Country Code. */
  countryCode?: InputMaybe<CountryCode>;
  /** Zip/Postal Code. */
  postalCode?: InputMaybe<Scalars['String']['input']>;
  /** State/County/Province/Region Code ([ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2)). */
  provinceCode?: InputMaybe<Scalars['String']['input']>;
};

/** Balance type that expresses how to change an account. */
export enum BalanceType {
  /** Credit. */
  Credit = 'CREDIT',
  /** Debit. */
  Debit = 'DEBIT',
  /** Decrease using the inverse of the account's normal balance type. For contra accounts whose subtype is `DISCOUNTS` or `DEPRECIATION_AND_AMORTIZATION`, apply the amount in the account's normal balance type. */
  Decrease = 'DECREASE',
  /** Increase using the account's normal balance type. For contra accounts whose subtype is `DISCOUNTS` or `DEPRECIATION_AND_AMORTIZATION`, apply the amount in the inverse of the account's normal balance type. */
  Increase = 'INCREASE'
}

/** An organization and legal entity made up of an association of people. */
export type Business = Node & {
  __typename?: 'Business';
  /** Get an account of the business. */
  account?: Maybe<Account>;
  /** Chart of Accounts for the business. */
  accounts?: Maybe<AccountConnection>;
  /** The address of the business. */
  address?: Maybe<Address>;
  /** When the business was created. */
  createdAt: Scalars['DateTime']['output'];
  /** The currency of the business. */
  currency: Currency;
  /** Get a customer of the business. */
  customer?: Maybe<Customer>;
  /** List of customers for the business. */
  customers?: Maybe<CustomerConnection>;
  /** Indicates whether Wave email sending features, such as sending invoices, are enabled for this business */
  emailSendEnabled: Scalars['Boolean']['output'];
  /** The fax number of the business. */
  fax?: Maybe<Scalars['String']['output']>;
  /** The unique identifier for the business. */
  id: Scalars['ID']['output'];
  /** Get an invoice of the business. */
  invoice?: Maybe<Invoice>;
  /** Invoice and estimate settings for the business. */
  invoiceEstimateSettings: InvoiceEstimateSettings;
  /** List of invoices for the business. */
  invoices?: Maybe<InvoiceConnection>;
  /** Is the business hidden from view by default. */
  isArchived: Scalars['Boolean']['output'];
  /**
   * Does business use classic accounting system.
   * @deprecated Classic Accounting is deprecated
   */
  isClassicAccounting: Scalars['Boolean']['output'];
  /**
   * Does business use classic invoicing system.
   * @deprecated Classic Invoicing is deprecated
   */
  isClassicInvoicing: Scalars['Boolean']['output'];
  /** Is the business a personal one with limited functionality compared to regular businesses. */
  isPersonal: Scalars['Boolean']['output'];
  /** The mobile/cell number of the business. */
  mobile?: Maybe<Scalars['String']['output']>;
  /** When the business was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
  /** The name of the business. */
  name: Scalars['String']['output'];
  /** The organization type of the business. */
  organizationalType?: Maybe<OrganizationalType>;
  /** The phone number of the business. */
  phone?: Maybe<Scalars['String']['output']>;
  /** Get a product (or service) of the business. */
  product?: Maybe<Product>;
  /** List of products (and services) for the business. */
  products?: Maybe<ProductConnection>;
  /** Get a sales tax of the business. */
  salesTax?: Maybe<SalesTax>;
  /** List of sales taxes for the business. */
  salesTaxes?: Maybe<SalesTaxConnection>;
  /** The subtype of the business. */
  subtype?: Maybe<BusinessSubtype>;
  /** The timezone of the business. */
  timezone?: Maybe<Scalars['String']['output']>;
  /** The toll free number of the business. */
  tollFree?: Maybe<Scalars['String']['output']>;
  /** The type of the business. */
  type?: Maybe<BusinessType>;
  /** Get a vendor of the business. */
  vendor?: Maybe<Vendor>;
  /** List of vendors for the business. */
  vendors?: Maybe<VendorConnection>;
  /** The website of the business. */
  website?: Maybe<Scalars['String']['output']>;
};


/** An organization and legal entity made up of an association of people. */
export type BusinessAccountArgs = {
  id: Scalars['ID']['input'];
};


/** An organization and legal entity made up of an association of people. */
export type BusinessAccountsArgs = {
  excludedSubtypes?: InputMaybe<Array<AccountSubtypeValue>>;
  isArchived?: InputMaybe<Scalars['Boolean']['input']>;
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
  subtypes?: InputMaybe<Array<AccountSubtypeValue>>;
  types?: InputMaybe<Array<AccountTypeValue>>;
};


/** An organization and legal entity made up of an association of people. */
export type BusinessCustomerArgs = {
  id: Scalars['ID']['input'];
};


/** An organization and legal entity made up of an association of people. */
export type BusinessCustomersArgs = {
  email?: InputMaybe<Scalars['String']['input']>;
  modifiedAtAfter?: InputMaybe<Scalars['DateTime']['input']>;
  modifiedAtBefore?: InputMaybe<Scalars['DateTime']['input']>;
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
  sort?: Array<CustomerSort>;
};


/** An organization and legal entity made up of an association of people. */
export type BusinessInvoiceArgs = {
  id: Scalars['ID']['input'];
};


/** An organization and legal entity made up of an association of people. */
export type BusinessInvoicesArgs = {
  amountDue?: InputMaybe<Scalars['Decimal']['input']>;
  currency?: InputMaybe<CurrencyCode>;
  customerId?: InputMaybe<Scalars['ID']['input']>;
  invoiceDateEnd?: InputMaybe<Scalars['Date']['input']>;
  invoiceDateStart?: InputMaybe<Scalars['Date']['input']>;
  invoiceNumber?: InputMaybe<Scalars['String']['input']>;
  modifiedAtAfter?: InputMaybe<Scalars['DateTime']['input']>;
  modifiedAtBefore?: InputMaybe<Scalars['DateTime']['input']>;
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
  sort?: Array<InvoiceSort>;
  sourceId?: InputMaybe<Scalars['ID']['input']>;
  status?: InputMaybe<InvoiceStatus>;
};


/** An organization and legal entity made up of an association of people. */
export type BusinessProductArgs = {
  id: Scalars['ID']['input'];
};


/** An organization and legal entity made up of an association of people. */
export type BusinessProductsArgs = {
  isArchived?: InputMaybe<Scalars['Boolean']['input']>;
  isBought?: InputMaybe<Scalars['Boolean']['input']>;
  isSold?: InputMaybe<Scalars['Boolean']['input']>;
  modifiedAtAfter?: InputMaybe<Scalars['DateTime']['input']>;
  modifiedAtBefore?: InputMaybe<Scalars['DateTime']['input']>;
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
  sort?: Array<ProductSort>;
};


/** An organization and legal entity made up of an association of people. */
export type BusinessSalesTaxArgs = {
  id: Scalars['ID']['input'];
};


/** An organization and legal entity made up of an association of people. */
export type BusinessSalesTaxesArgs = {
  isArchived?: InputMaybe<Scalars['Boolean']['input']>;
  modifiedAtAfter?: InputMaybe<Scalars['DateTime']['input']>;
  modifiedAtBefore?: InputMaybe<Scalars['DateTime']['input']>;
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
};


/** An organization and legal entity made up of an association of people. */
export type BusinessVendorArgs = {
  id: Scalars['ID']['input'];
};


/** An organization and legal entity made up of an association of people. */
export type BusinessVendorsArgs = {
  email?: InputMaybe<Scalars['String']['input']>;
  modifiedAtAfter?: InputMaybe<Scalars['DateTime']['input']>;
  modifiedAtBefore?: InputMaybe<Scalars['DateTime']['input']>;
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
};

/** Business connection. */
export type BusinessConnection = {
  __typename?: 'BusinessConnection';
  /** List of businesses. */
  edges: Array<BusinessEdge>;
  /** Information about pagination. */
  pageInfo: OffsetPageInfo;
};

/** Business edge. */
export type BusinessEdge = {
  __typename?: 'BusinessEdge';
  /** A business. */
  node?: Maybe<Business>;
};

/** An object belonging to a `Business` with an `ID`. */
export type BusinessNode = {
  /** Business that the node belongs to. */
  business: Business;
  /** ID of the object. */
  id: Scalars['ID']['output'];
};

/** Granular area of focus of a business. */
export type BusinessSubtype = {
  __typename?: 'BusinessSubtype';
  /** The description of the business subtype in human-friendly form. */
  name: Scalars['String']['output'];
  /** The enum value of the business subtype. */
  value: BusinessSubtypeValue;
};

/** Granular area of focus of a business. */
export enum BusinessSubtypeValue {
  /** Advertising, Public Relations */
  AdvertisingPublicRelations = 'ADVERTISING_PUBLIC_RELATIONS',
  /** Agriculture, Ranching and Farming */
  AgricultureRanchingFarming = 'AGRICULTURE_RANCHING_FARMING',
  /** Actor */
  ArtistsPhotographersCreativeActor = 'ARTISTS_PHOTOGRAPHERS_CREATIVE__ACTOR',
  /** Audio/Visual Production */
  ArtistsPhotographersCreativeAudioVisualProduction = 'ARTISTS_PHOTOGRAPHERS_CREATIVE__AUDIO_VISUAL_PRODUCTION',
  /** Craftsperson */
  ArtistsPhotographersCreativeCraftsperson = 'ARTISTS_PHOTOGRAPHERS_CREATIVE__CRAFTSPERSON',
  /** Dancer, Choreographer */
  ArtistsPhotographersCreativeDancerChoreog = 'ARTISTS_PHOTOGRAPHERS_CREATIVE__DANCER_CHOREOG',
  /** Musician */
  ArtistsPhotographersCreativeMusician = 'ARTISTS_PHOTOGRAPHERS_CREATIVE__MUSICIAN',
  /** Other Creative */
  ArtistsPhotographersCreativeOther = 'ARTISTS_PHOTOGRAPHERS_CREATIVE__OTHER',
  /** Performing Arts (acting, music, dance) */
  ArtistsPhotographersCreativePerformingArtsActingMusicDance = 'ARTISTS_PHOTOGRAPHERS_CREATIVE__PERFORMING_ARTS_ACTING_MUSIC_DANCE',
  /** Photographer */
  ArtistsPhotographersCreativePhotographer = 'ARTISTS_PHOTOGRAPHERS_CREATIVE__PHOTOGRAPHER',
  /** Visual Artist */
  ArtistsPhotographersCreativeVisualArtist = 'ARTISTS_PHOTOGRAPHERS_CREATIVE__VISUAL_ARTIST',
  /** Automotive Repair & Sales */
  AutomotiveSalesAndRepair = 'AUTOMOTIVE_SALES_AND_REPAIR',
  /** Church, Religious Organization */
  ChurchReligiousOrganization = 'CHURCH_RELIGIOUS_ORGANIZATION',
  /** Contractor */
  ConstructionHomeImprovementContractor = 'CONSTRUCTION_HOME_IMPROVEMENT__CONTRACTOR',
  /** Engineer */
  ConstructionHomeImprovementEngineer = 'CONSTRUCTION_HOME_IMPROVEMENT__ENGINEER',
  /** Home Inspector */
  ConstructionHomeImprovementHomeInspector = 'CONSTRUCTION_HOME_IMPROVEMENT__HOME_INSPECTOR',
  /** Trade */
  ConstructionHomeImprovementOtherTrades = 'CONSTRUCTION_HOME_IMPROVEMENT__OTHER_TRADES',
  /** Accountant, Bookkeeper */
  ConsultantsProfessionalsAccountantsBookkeepers = 'CONSULTANTS_PROFESSIONALS__ACCOUNTANTS_BOOKKEEPERS',
  /** Communications, Marketing, PR */
  ConsultantsProfessionalsCommunications = 'CONSULTANTS_PROFESSIONALS__COMMUNICATIONS',
  /** Executive Coach */
  ConsultantsProfessionalsExecutiveCoach = 'CONSULTANTS_PROFESSIONALS__EXECUTIVE_COACH',
  /** HR, Recruitment, Staffing */
  ConsultantsProfessionalsHrRecruitmentStaffing = 'CONSULTANTS_PROFESSIONALS__HR_RECRUITMENT_STAFFING',
  /** IT, Technical */
  ConsultantsProfessionalsItTechnical = 'CONSULTANTS_PROFESSIONALS__IT_TECHNICAL',
  /** Other Consultant */
  ConsultantsProfessionalsOther = 'CONSULTANTS_PROFESSIONALS__OTHER',
  /** Sales */
  ConsultantsProfessionalsSales = 'CONSULTANTS_PROFESSIONALS__SALES',
  /** Design, Architecture, Engineering */
  DesignArchitectureEngineering = 'DESIGN_ARCHITECTURE_ENGINEERING',
  /** Other Financial Service */
  FinancialServices = 'FINANCIAL_SERVICES',
  /** Salon, Spa */
  HairSpaAestheticsHairSalon = 'HAIR_SPA_AESTHETICS__HAIR_SALON',
  /** Massage */
  HairSpaAestheticsMassage = 'HAIR_SPA_AESTHETICS__MASSAGE',
  /** Nails, Skin, Aesthetics */
  HairSpaAestheticsNailSkinAesthetics = 'HAIR_SPA_AESTHETICS__NAIL_SKIN_AESTHETICS',
  /** Other Aesthetics/Spa */
  HairSpaAestheticsOther = 'HAIR_SPA_AESTHETICS__OTHER',
  /** Insurance Agency, Broker */
  InsuranceAgencyBroker = 'INSURANCE_AGENCY_BROKER',
  /** Landlord */
  LandlordPropertyManagerLandlord = 'LANDLORD_PROPERTY_MANAGER__LANDLORD',
  /** Property Manager */
  LandlordPropertyManagerPropertyManager = 'LANDLORD_PROPERTY_MANAGER__PROPERTY_MANAGER',
  /** Lawn Care, Landscaping */
  LawnCareLandscaping = 'LAWN_CARE_LANDSCAPING',
  /** Legal Services */
  LegalServices = 'LEGAL_SERVICES',
  /** Lodging, Hotel, Motel */
  LodgingHotelMotel = 'LODGING_HOTEL_MOTEL',
  /** Manufacturing Representative, Agent */
  ManufacturerRepresentativeAgent = 'MANUFACTURER_REPRESENTATIVE_AGENT',
  /** Chiropractor */
  MedicalDentalHealthServiceChiropractor = 'MEDICAL_DENTAL_HEALTH_SERVICE__CHIROPRACTOR',
  /** Dentist */
  MedicalDentalHealthServiceDentist = 'MEDICAL_DENTAL_HEALTH_SERVICE__DENTIST',
  /** Fitness */
  MedicalDentalHealthServiceFitness = 'MEDICAL_DENTAL_HEALTH_SERVICE__FITNESS',
  /** Massage Therapist */
  MedicalDentalHealthServiceMassageTherapist = 'MEDICAL_DENTAL_HEALTH_SERVICE__MASSAGE_THERAPIST',
  /** Mental Health */
  MedicalDentalHealthServiceMentalHealth = 'MEDICAL_DENTAL_HEALTH_SERVICE__MENTAL_HEALTH',
  /** Nutrition */
  MedicalDentalHealthServiceNutrition = 'MEDICAL_DENTAL_HEALTH_SERVICE__NUTRITION',
  /** Occupational Therapist */
  MedicalDentalHealthServiceOccupTherapist = 'MEDICAL_DENTAL_HEALTH_SERVICE__OCCUP_THERAPIST',
  /** Other Health */
  MedicalDentalHealthServiceOther = 'MEDICAL_DENTAL_HEALTH_SERVICE__OTHER',
  /** Physical Therapist */
  MedicalDentalHealthServicePhysicalTherapist = 'MEDICAL_DENTAL_HEALTH_SERVICE__PHYSICAL_THERAPIST',
  /** Association */
  NonprofitAssociationsGroupsAssociation = 'NONPROFIT_ASSOCIATIONS_GROUPS__ASSOCIATION',
  /** Charity */
  NonprofitAssociationsGroupsCharitable = 'NONPROFIT_ASSOCIATIONS_GROUPS__CHARITABLE',
  /** Club */
  NonprofitAssociationsGroupsClub = 'NONPROFIT_ASSOCIATIONS_GROUPS__CLUB',
  /** Condo */
  NonprofitAssociationsGroupsCondo = 'NONPROFIT_ASSOCIATIONS_GROUPS__CONDO',
  /** Other Non-Profit */
  NonprofitAssociationsGroupsOther = 'NONPROFIT_ASSOCIATIONS_GROUPS__OTHER',
  /** Parent Booster USA */
  NonprofitAssociationsGroupsParentBooster = 'NONPROFIT_ASSOCIATIONS_GROUPS__PARENT_BOOSTER',
  /** Other (please specify) */
  OtherOtherPleaseSpecify = 'OTHER__OTHER_PLEASE_SPECIFY',
  /** Manufacturer */
  ProductProviderManufacturer = 'PRODUCT_PROVIDER__MANUFACTURER',
  /** Manufacturer and Vendor */
  ProductProviderManufacturerAndVendor = 'PRODUCT_PROVIDER__MANUFACTURER_AND_VENDOR',
  /** Other Product-based Business */
  ProductProviderOther = 'PRODUCT_PROVIDER__OTHER',
  /** Vendor */
  ProductProviderVendor = 'PRODUCT_PROVIDER__VENDOR',
  /** Real Estate Agent */
  RealEstateSalesAgent = 'REAL_ESTATE_SALES__AGENT',
  /** Real Estate Broker */
  RealEstateSalesBroker = 'REAL_ESTATE_SALES__BROKER',
  /** Other Real Estate */
  RealEstateSalesOther = 'REAL_ESTATE_SALES__OTHER',
  /** Real Estate Rental */
  Rental = 'RENTAL',
  /** Repairs/Maintenance */
  RepairAndMaintenance = 'REPAIR_AND_MAINTENANCE',
  /** Restaurant, Caterer, Bar */
  RestaurantCatererBar = 'RESTAURANT_CATERER_BAR',
  /** eBay Resellers */
  RetailersAndResellersEbay = 'RETAILERS_AND_RESELLERS__EBAY',
  /** Etsy Vendors */
  RetailersAndResellersEtsy = 'RETAILERS_AND_RESELLERS__ETSY',
  /** Non-Store Retailers */
  RetailersAndResellersNonStoreRetailer = 'RETAILERS_AND_RESELLERS__NON_STORE_RETAILER',
  /** Other Retailers */
  RetailersAndResellersOther = 'RETAILERS_AND_RESELLERS__OTHER',
  /** Store Retailers */
  RetailersAndResellersStoreRetailer = 'RETAILERS_AND_RESELLERS__STORE_RETAILER',
  /** Sales: Independent Agent */
  SalesIndependentAgent = 'SALES_INDEPENDENT_AGENT',
  /** Cleaning, Janitorial Services */
  ServiceProviderCleaningJanitorialServices = 'SERVICE_PROVIDER__CLEANING_JANITORIAL_SERVICES',
  /** Customer Service/Support */
  ServiceProviderCustomerServiceSupport = 'SERVICE_PROVIDER__CUSTOMER_SERVICE_SUPPORT',
  /** Household Employer */
  ServiceProviderDomesticCaregiverEmployer = 'SERVICE_PROVIDER__DOMESTIC_CAREGIVER_EMPLOYER',
  /** Fitness */
  ServiceProviderFitness = 'SERVICE_PROVIDER__FITNESS',
  /** Office Admin/Support */
  ServiceProviderOfficeAdminSupport = 'SERVICE_PROVIDER__OFFICE_ADMIN_SUPPORT',
  /** Other Service-based Business */
  ServiceProviderOther = 'SERVICE_PROVIDER__OTHER',
  /** Personal Care */
  ServiceProviderPersonalCare = 'SERVICE_PROVIDER__PERSONAL_CARE',
  /** Telemarketing */
  ServiceProviderTelemarketing = 'SERVICE_PROVIDER__TELEMARKETING',
  /** Transcription */
  ServiceProviderTranscription = 'SERVICE_PROVIDER__TRANSCRIPTION',
  /** Transportation, Trucking, Deliver */
  TransportationTruckingDelivery = 'TRANSPORTATION_TRUCKING_DELIVERY',
  /** Designer */
  WebMediaFreelancerDesigner = 'WEB_MEDIA_FREELANCER__DESIGNER',
  /** Marketing, Social Media */
  WebMediaFreelancerMarketingSocialMedia = 'WEB_MEDIA_FREELANCER__MARKETING_SOCIAL_MEDIA',
  /** Other Media/Tech */
  WebMediaFreelancerOther = 'WEB_MEDIA_FREELANCER__OTHER',
  /** Programmer */
  WebMediaFreelancerProgrammer = 'WEB_MEDIA_FREELANCER__PROGRAMMER',
  /** SEO */
  WebMediaFreelancerSeo = 'WEB_MEDIA_FREELANCER__SEO',
  /** Writer */
  WebMediaFreelancerWriter = 'WEB_MEDIA_FREELANCER__WRITER',
  /** Wholesale Distribution and Sales */
  WholesaleDistributionSales = 'WHOLESALE_DISTRIBUTION_SALES'
}

/** Area of focus of a business. */
export type BusinessType = {
  __typename?: 'BusinessType';
  /** The description of the business type in human-friendly form. */
  name: Scalars['String']['output'];
  /** The enum value of the business type. */
  value: BusinessTypeValue;
};

/** Area of focus of a business. */
export enum BusinessTypeValue {
  /** Artists, Photographers & Creative Types */
  ArtistsPhotographersCreative = 'ARTISTS_PHOTOGRAPHERS_CREATIVE',
  /** Consultants & Professionals */
  ConsultantsProfessionals = 'CONSULTANTS_PROFESSIONALS',
  /** Financial Services */
  FinanceInsurance = 'FINANCE_INSURANCE',
  /** Hair, Spa & Aesthetics */
  HairSpaAesthetics = 'HAIR_SPA_AESTHETICS',
  /** Medical, Dental, Health */
  MedicalDentalHealthService = 'MEDICAL_DENTAL_HEALTH_SERVICE',
  /** Non-profits, Associations & Groups */
  NonprofitAssociationsGroups = 'NONPROFIT_ASSOCIATIONS_GROUPS',
  /** Other (please specify) */
  Other = 'OTHER',
  /** General: I make or sell a PRODUCT */
  ProductProvider = 'PRODUCT_PROVIDER',
  /** Real Estate, Construction & Home Improvement */
  RealestateHome = 'REALESTATE_HOME',
  /** Retailers, Resellers & Sales */
  RetailersAndResellers = 'RETAILERS_AND_RESELLERS',
  /** General: I provide a SERVICE */
  ServiceProvider = 'SERVICE_PROVIDER',
  /** Web, Tech & Media */
  WebMediaFreelancer = 'WEB_MEDIA_FREELANCER'
}

/** A country. */
export type Country = {
  __typename?: 'Country';
  /** Country code. */
  code: CountryCode;
  /** Default currency of the country. */
  currency: Currency;
  /** Plain-language representation. */
  name: Scalars['String']['output'];
  /** Name of the country with the appropriate article. */
  nameWithArticle: Scalars['String']['output'];
  /** List of principal subdivisions. */
  provinces: Array<Province>;
};

/** Country codes ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)). */
export enum CountryCode {
  /** Andorra */
  Ad = 'AD',
  /** United Arab Emirates */
  Ae = 'AE',
  /** Afghanistan */
  Af = 'AF',
  /** Antigua and Barbuda */
  Ag = 'AG',
  /** Anguilla */
  Ai = 'AI',
  /** Albania */
  Al = 'AL',
  /** Armenia */
  Am = 'AM',
  /** Angola */
  Ao = 'AO',
  /** Antarctica */
  Aq = 'AQ',
  /** Argentina */
  Ar = 'AR',
  /** American Samoa */
  As = 'AS',
  /** Austria */
  At = 'AT',
  /** Australia */
  Au = 'AU',
  /** Aruba */
  Aw = 'AW',
  /** Åland Islands */
  Ax = 'AX',
  /** Azerbaijan */
  Az = 'AZ',
  /** Bosnia and Herzegovina */
  Ba = 'BA',
  /** Barbados */
  Bb = 'BB',
  /** Bangladesh */
  Bd = 'BD',
  /** Belgium */
  Be = 'BE',
  /** Burkina Faso */
  Bf = 'BF',
  /** Bulgaria */
  Bg = 'BG',
  /** Bahrain */
  Bh = 'BH',
  /** Burundi */
  Bi = 'BI',
  /** Benin */
  Bj = 'BJ',
  /** Saint Barthélemy */
  Bl = 'BL',
  /** Bermuda */
  Bm = 'BM',
  /** Brunei Darussalam */
  Bn = 'BN',
  /** Bolivia, Plurinational State of */
  Bo = 'BO',
  /** Bonaire, Sint Eustatius and Saba */
  Bq = 'BQ',
  /** Brazil */
  Br = 'BR',
  /** Bahamas */
  Bs = 'BS',
  /** Bhutan */
  Bt = 'BT',
  /** Bouvet Island */
  Bv = 'BV',
  /** Botswana */
  Bw = 'BW',
  /** Belarus */
  By = 'BY',
  /** Belize */
  Bz = 'BZ',
  /** Canada */
  Ca = 'CA',
  /** Cocos (Keeling) Islands */
  Cc = 'CC',
  /** Congo, The Democratic Republic of the */
  Cd = 'CD',
  /** Central African Republic */
  Cf = 'CF',
  /** Congo */
  Cg = 'CG',
  /** Switzerland */
  Ch = 'CH',
  /** Côte d'Ivoire */
  Ci = 'CI',
  /** Cook Islands */
  Ck = 'CK',
  /** Chile */
  Cl = 'CL',
  /** Cameroon */
  Cm = 'CM',
  /** China */
  Cn = 'CN',
  /** Colombia */
  Co = 'CO',
  /** Costa Rica */
  Cr = 'CR',
  /** Cuba */
  Cu = 'CU',
  /** Cape Verde */
  Cv = 'CV',
  /** Curaçao */
  Cw = 'CW',
  /** Christmas Island */
  Cx = 'CX',
  /** Cyprus */
  Cy = 'CY',
  /** Czech Republic */
  Cz = 'CZ',
  /** Germany */
  De = 'DE',
  /** Djibouti */
  Dj = 'DJ',
  /** Denmark */
  Dk = 'DK',
  /** Dominica */
  Dm = 'DM',
  /** Dominican Republic */
  Do = 'DO',
  /** Algeria */
  Dz = 'DZ',
  /** Ecuador */
  Ec = 'EC',
  /** Estonia */
  Ee = 'EE',
  /** Egypt */
  Eg = 'EG',
  /** Western Sahara */
  Eh = 'EH',
  /** Eritrea */
  Er = 'ER',
  /** Spain */
  Es = 'ES',
  /** Ethiopia */
  Et = 'ET',
  /** Finland */
  Fi = 'FI',
  /** Fiji */
  Fj = 'FJ',
  /** Falkland Islands */
  Fk = 'FK',
  /** Micronesia, Federated States of */
  Fm = 'FM',
  /** Faroe Islands */
  Fo = 'FO',
  /** France */
  Fr = 'FR',
  /** Gabon */
  Ga = 'GA',
  /** United Kingdom */
  Gb = 'GB',
  /** Grenada */
  Gd = 'GD',
  /** Georgia */
  Ge = 'GE',
  /** French Guiana */
  Gf = 'GF',
  /** Guernsey */
  Gg = 'GG',
  /** Ghana */
  Gh = 'GH',
  /** Gibraltar */
  Gi = 'GI',
  /** Greenland */
  Gl = 'GL',
  /** Gambia */
  Gm = 'GM',
  /** Guinea */
  Gn = 'GN',
  /** Guadeloupe */
  Gp = 'GP',
  /** Equatorial Guinea */
  Gq = 'GQ',
  /** Greece */
  Gr = 'GR',
  /** South Georgia and the South Sandwich Islands */
  Gs = 'GS',
  /** Guatemala */
  Gt = 'GT',
  /** Guam */
  Gu = 'GU',
  /** Guinea-Bissau */
  Gw = 'GW',
  /** Guyana */
  Gy = 'GY',
  /** Hong Kong */
  Hk = 'HK',
  /** Heard Island and McDonald Islands */
  Hm = 'HM',
  /** Honduras */
  Hn = 'HN',
  /** Croatia */
  Hr = 'HR',
  /** Haiti */
  Ht = 'HT',
  /** Hungary */
  Hu = 'HU',
  /** Indonesia */
  Id = 'ID',
  /** Ireland */
  Ie = 'IE',
  /** Israel */
  Il = 'IL',
  /** Isle of Man */
  Im = 'IM',
  /** India */
  In = 'IN',
  /** British Indian Ocean Territory */
  Io = 'IO',
  /** Iraq */
  Iq = 'IQ',
  /** Iran */
  Ir = 'IR',
  /** Iceland */
  Is = 'IS',
  /** Italy */
  It = 'IT',
  /** Jersey */
  Je = 'JE',
  /** Jamaica */
  Jm = 'JM',
  /** Jordan */
  Jo = 'JO',
  /** Japan */
  Jp = 'JP',
  /** Kenya */
  Ke = 'KE',
  /** Kyrgyzstan */
  Kg = 'KG',
  /** Cambodia */
  Kh = 'KH',
  /** Kiribati */
  Ki = 'KI',
  /** Comoros */
  Km = 'KM',
  /** Saint Kitts and Nevis */
  Kn = 'KN',
  /** Korea, Democratic People's Republic of */
  Kp = 'KP',
  /** Korea, Republic of */
  Kr = 'KR',
  /** Kuwait */
  Kw = 'KW',
  /** Cayman Islands */
  Ky = 'KY',
  /** Kazakhstan */
  Kz = 'KZ',
  /** Lao People's Democratic Republic */
  La = 'LA',
  /** Lebanon */
  Lb = 'LB',
  /** Saint Lucia */
  Lc = 'LC',
  /** Liechtenstein */
  Li = 'LI',
  /** Sri Lanka */
  Lk = 'LK',
  /** Liberia */
  Lr = 'LR',
  /** Lesotho */
  Ls = 'LS',
  /** Lithuania */
  Lt = 'LT',
  /** Luxembourg */
  Lu = 'LU',
  /** Latvia */
  Lv = 'LV',
  /** Libya */
  Ly = 'LY',
  /** Morocco */
  Ma = 'MA',
  /** Monaco */
  Mc = 'MC',
  /** Moldova, Republic of */
  Md = 'MD',
  /** Montenegro */
  Me = 'ME',
  /** Saint Martin */
  Mf = 'MF',
  /** Madagascar */
  Mg = 'MG',
  /** Marshall Islands */
  Mh = 'MH',
  /** North Macedonia */
  Mk = 'MK',
  /** Mali */
  Ml = 'ML',
  /** Myanmar */
  Mm = 'MM',
  /** Mongolia */
  Mn = 'MN',
  /** Macao */
  Mo = 'MO',
  /** Northern Mariana Islands */
  Mp = 'MP',
  /** Martinique */
  Mq = 'MQ',
  /** Mauritania */
  Mr = 'MR',
  /** Montserrat */
  Ms = 'MS',
  /** Malta */
  Mt = 'MT',
  /** Mauritius */
  Mu = 'MU',
  /** Maldives */
  Mv = 'MV',
  /** Malawi */
  Mw = 'MW',
  /** Mexico */
  Mx = 'MX',
  /** Malaysia */
  My = 'MY',
  /** Mozambique */
  Mz = 'MZ',
  /** Namibia */
  Na = 'NA',
  /** New Caledonia */
  Nc = 'NC',
  /** Niger */
  Ne = 'NE',
  /** Norfolk Island */
  Nf = 'NF',
  /** Nigeria */
  Ng = 'NG',
  /** Nicaragua */
  Ni = 'NI',
  /** Netherlands */
  Nl = 'NL',
  /** Norway */
  No = 'NO',
  /** Nepal */
  Np = 'NP',
  /** Nauru */
  Nr = 'NR',
  /** Niue */
  Nu = 'NU',
  /** New Zealand */
  Nz = 'NZ',
  /** Oman */
  Om = 'OM',
  /** Panama */
  Pa = 'PA',
  /** Peru */
  Pe = 'PE',
  /** French Polynesia */
  Pf = 'PF',
  /** Papua New Guinea */
  Pg = 'PG',
  /** Philippines */
  Ph = 'PH',
  /** Pakistan */
  Pk = 'PK',
  /** Poland */
  Pl = 'PL',
  /** Saint Pierre and Miquelon */
  Pm = 'PM',
  /** Pitcairn */
  Pn = 'PN',
  /** Puerto Rico */
  Pr = 'PR',
  /** Palestine */
  Ps = 'PS',
  /** Portugal */
  Pt = 'PT',
  /** Palau */
  Pw = 'PW',
  /** Paraguay */
  Py = 'PY',
  /** Qatar */
  Qa = 'QA',
  /** Réunion */
  Re = 'RE',
  /** Romania */
  Ro = 'RO',
  /** Serbia */
  Rs = 'RS',
  /** Russian Federation */
  Ru = 'RU',
  /** Rwanda */
  Rw = 'RW',
  /** Saudi Arabia */
  Sa = 'SA',
  /** Solomon Islands */
  Sb = 'SB',
  /** Seychelles */
  Sc = 'SC',
  /** Sudan */
  Sd = 'SD',
  /** Sweden */
  Se = 'SE',
  /** Singapore */
  Sg = 'SG',
  /** Saint Helena, Ascension and Tristan da Cunha */
  Sh = 'SH',
  /** Slovenia */
  Si = 'SI',
  /** Svalbard and Jan Mayen */
  Sj = 'SJ',
  /** Slovakia */
  Sk = 'SK',
  /** Sierra Leone */
  Sl = 'SL',
  /** San Marino */
  Sm = 'SM',
  /** Senegal */
  Sn = 'SN',
  /** Somalia */
  So = 'SO',
  /** Suriname */
  Sr = 'SR',
  /** South Sudan */
  Ss = 'SS',
  /** Sao Tome and Principe */
  St = 'ST',
  /** El Salvador */
  Sv = 'SV',
  /** Sint Maarten */
  Sx = 'SX',
  /** Syria */
  Sy = 'SY',
  /** Eswatini */
  Sz = 'SZ',
  /** Turks and Caicos Islands */
  Tc = 'TC',
  /** Chad */
  Td = 'TD',
  /** French Southern Territories */
  Tf = 'TF',
  /** Togo */
  Tg = 'TG',
  /** Thailand */
  Th = 'TH',
  /** Tajikistan */
  Tj = 'TJ',
  /** Tokelau */
  Tk = 'TK',
  /** Timor-Leste */
  Tl = 'TL',
  /** Turkmenistan */
  Tm = 'TM',
  /** Tunisia */
  Tn = 'TN',
  /** Tonga */
  To = 'TO',
  /** Turkey */
  Tr = 'TR',
  /** Trinidad and Tobago */
  Tt = 'TT',
  /** Tuvalu */
  Tv = 'TV',
  /** Taiwan */
  Tw = 'TW',
  /** Tanzania, United Republic of */
  Tz = 'TZ',
  /** Ukraine */
  Ua = 'UA',
  /** Uganda */
  Ug = 'UG',
  /** United States Minor Outlying Islands */
  Um = 'UM',
  /** United States */
  Us = 'US',
  /** Uruguay */
  Uy = 'UY',
  /** Uzbekistan */
  Uz = 'UZ',
  /** Holy See */
  Va = 'VA',
  /** Saint Vincent and the Grenadines */
  Vc = 'VC',
  /** Venezuela, Bolivarian Republic of */
  Ve = 'VE',
  /** Virgin Islands (British) */
  Vg = 'VG',
  /** Virgin Islands (U.S) */
  Vi = 'VI',
  /** Viet Nam */
  Vn = 'VN',
  /** Vanuatu */
  Vu = 'VU',
  /** Wallis and Futuna */
  Wf = 'WF',
  /** Samoa */
  Ws = 'WS',
  /** Yemen */
  Ye = 'YE',
  /** Mayotte */
  Yt = 'YT',
  /** South Africa */
  Za = 'ZA',
  /** Zambia */
  Zm = 'ZM',
  /** Zimbabwe */
  Zw = 'ZW'
}

/** A medium of exchange in common use. */
export type Currency = {
  __typename?: 'Currency';
  /** Currency code. */
  code: CurrencyCode;
  /** Expresses the relationship between a major currency unit and its minor currency unit. The number of digits found to the right of the decimal place to represent the fractional part of this currency (assumes a base of 10). */
  exponent: Scalars['Int']['output'];
  /** Plain-language representation. */
  name: Scalars['String']['output'];
  /** Plural version of currency name. */
  plural: Scalars['String']['output'];
  /** Symbol used to denote that a number is a monetary value. */
  symbol: Scalars['String']['output'];
};

/** Currency codes based on ISO 4217. */
export enum CurrencyCode {
  /** UAE dirham */
  Aed = 'AED',
  /** Afghani */
  Afn = 'AFN',
  /** Lek */
  All = 'ALL',
  /** Armenian dram */
  Amd = 'AMD',
  /** Netherlands Antillean Guilder */
  Ang = 'ANG',
  /** Kwanza */
  Aoa = 'AOA',
  /** Argentinian peso */
  Ars = 'ARS',
  /** Australian dollar */
  Aud = 'AUD',
  /** Aruban Guilder */
  Awg = 'AWG',
  /** New Manat */
  Azn = 'AZN',
  /** Convertible Marks */
  Bam = 'BAM',
  /** Barbados dollar */
  Bbd = 'BBD',
  /** Taka */
  Bdt = 'BDT',
  /** Lev */
  Bgn = 'BGN',
  /** Bahraini dinar */
  Bhd = 'BHD',
  /** Burundi franc */
  Bif = 'BIF',
  /** Bermuda dollar */
  Bmd = 'BMD',
  /** Brunei dollar */
  Bnd = 'BND',
  /** Boliviano */
  Bob = 'BOB',
  /** Real */
  Brl = 'BRL',
  /** Bahamian dollar */
  Bsd = 'BSD',
  /** Ngultrum */
  Btn = 'BTN',
  /** Pula */
  Bwp = 'BWP',
  /** Belarussian rouble */
  Byr = 'BYR',
  /** Belize dollar */
  Bzd = 'BZD',
  /** Canadian dollar */
  Cad = 'CAD',
  /** Franc congolais */
  Cdf = 'CDF',
  /** Swiss franc */
  Chf = 'CHF',
  /** Chilean peso */
  Clp = 'CLP',
  /** Ren-Min-Bi yuan */
  Cny = 'CNY',
  /** Colombian peso */
  Cop = 'COP',
  /** Costa Rican colon */
  Crc = 'CRC',
  /** Cuban peso */
  Cup = 'CUP',
  /** Cape Verde escudo */
  Cve = 'CVE',
  /** Czech koruna */
  Czk = 'CZK',
  /** Djibouti franc */
  Djf = 'DJF',
  /** Danish krone */
  Dkk = 'DKK',
  /** Dominican peso */
  Dop = 'DOP',
  /** Algerian dinar */
  Dzd = 'DZD',
  /** Estonian kroon */
  Eek = 'EEK',
  /** Egyptian pound */
  Egp = 'EGP',
  /** Nakfa */
  Ern = 'ERN',
  /** Ethiopian birr */
  Etb = 'ETB',
  /** Euro */
  Eur = 'EUR',
  /** Fiji dollar */
  Fjd = 'FJD',
  /** Falkland Islands (Malvinas) Pound */
  Fkp = 'FKP',
  /** Pound sterling */
  Gbp = 'GBP',
  /** Lari */
  Gel = 'GEL',
  /** Ghana Cedi */
  Ghs = 'GHS',
  /** Gibraltar pound */
  Gip = 'GIP',
  /** Dalasi */
  Gmd = 'GMD',
  /** Guinean franc */
  Gnf = 'GNF',
  /** Quetzal */
  Gtq = 'GTQ',
  /** Guinean bissau Peso */
  Gwp = 'GWP',
  /** Guyana dollar */
  Gyd = 'GYD',
  /** Hong Kong dollar */
  Hkd = 'HKD',
  /** Lempira */
  Hnl = 'HNL',
  /** Kuna */
  Hrk = 'HRK',
  /** Haitian gourde */
  Htg = 'HTG',
  /** Forint */
  Huf = 'HUF',
  /** Rupiah */
  Idr = 'IDR',
  /** New Israeli sheqel */
  Ils = 'ILS',
  /** Indian rupee */
  Inr = 'INR',
  /** Iraqi dinar */
  Iqd = 'IQD',
  /** Iranian rial */
  Irr = 'IRR',
  /** Icelandic Krona */
  Isk = 'ISK',
  /** Jamaican dollar */
  Jmd = 'JMD',
  /** Jordanian dinar */
  Jod = 'JOD',
  /** Yen */
  Jpy = 'JPY',
  /** Kenyan shilling */
  Kes = 'KES',
  /** Kyrgyz Som */
  Kgs = 'KGS',
  /** Riel */
  Khr = 'KHR',
  /** Comoro franc */
  Kmf = 'KMF',
  /** Won */
  Krw = 'KRW',
  /** Kuwaiti dinar */
  Kwd = 'KWD',
  /** Cayman Islands dollar */
  Kyd = 'KYD',
  /** Tenge */
  Kzt = 'KZT',
  /** Kip */
  Lak = 'LAK',
  /** Lebanese pound */
  Lbp = 'LBP',
  /** Sri Lankan rupee */
  Lkr = 'LKR',
  /** Liberian dollar */
  Lrd = 'LRD',
  /** Loti */
  Lsl = 'LSL',
  /** Lithuanian litus */
  Ltl = 'LTL',
  /** Latvian lats */
  Lvl = 'LVL',
  /** Libyan dinar */
  Lyd = 'LYD',
  /** Moroccan dirham */
  Mad = 'MAD',
  /** Moldovan leu */
  Mdl = 'MDL',
  /** Malagasy Ariary */
  Mga = 'MGA',
  /** Denar */
  Mkd = 'MKD',
  /** Kyat */
  Mmk = 'MMK',
  /** Tugrik */
  Mnt = 'MNT',
  /** Pataca */
  Mop = 'MOP',
  /** Ouguiya */
  Mro = 'MRO',
  /** Ouguiya */
  Mru = 'MRU',
  /** Mauritian rupee */
  Mur = 'MUR',
  /** Rufiyaa */
  Mvr = 'MVR',
  /** Kwacha */
  Mwk = 'MWK',
  /** Mexican peso */
  Mxn = 'MXN',
  /** Malaysian ringgit */
  Myr = 'MYR',
  /** Metical */
  Mzn = 'MZN',
  /** Namibian dollar */
  Nad = 'NAD',
  /** Naira */
  Ngn = 'NGN',
  /** Cordoba Oro */
  Nio = 'NIO',
  /** Norwegian krone */
  Nok = 'NOK',
  /** Nepalese rupee */
  Npr = 'NPR',
  /** New Zealand dollar */
  Nzd = 'NZD',
  /** Omani rial */
  Omr = 'OMR',
  /** Balboa */
  Pab = 'PAB',
  /** Nuevo Sol */
  Pen = 'PEN',
  /** Kina */
  Pgk = 'PGK',
  /** Philippine peso */
  Php = 'PHP',
  /** Pakistani rupee */
  Pkr = 'PKR',
  /** Zloty */
  Pln = 'PLN',
  /** Guarani */
  Pyg = 'PYG',
  /** Qatari riyal */
  Qar = 'QAR',
  /** New Leu */
  Ron = 'RON',
  /** Serbian Dinar */
  Rsd = 'RSD',
  /** Russian rouble */
  Rub = 'RUB',
  /** Rwanda franc */
  Rwf = 'RWF',
  /** Saudi riyal */
  Sar = 'SAR',
  /** Solomon Islands Dollar */
  Sbd = 'SBD',
  /** Seychelles rupee */
  Scr = 'SCR',
  /** Sudanese Pound */
  Sdg = 'SDG',
  /** Swedish Krona */
  Sek = 'SEK',
  /** Singapore dollar */
  Sgd = 'SGD',
  /** Saint Helena Pound */
  Shp = 'SHP',
  /** Leone */
  Sll = 'SLL',
  /** Somali shilling */
  Sos = 'SOS',
  /** Surinam dollar */
  Srd = 'SRD',
  /** South Sudanese pound */
  Ssp = 'SSP',
  /** Dobra */
  Std = 'STD',
  /** El Salvador colon */
  Svc = 'SVC',
  /** Syrian pound */
  Syp = 'SYP',
  /** Lilangeni */
  Szl = 'SZL',
  /** Baht */
  Thb = 'THB',
  /** Somoni */
  Tjs = 'TJS',
  /** Manat */
  Tmm = 'TMM',
  /** Tunisian dinar */
  Tnd = 'TND',
  /** Pa'anga */
  Top = 'TOP',
  /** Turkish Lira */
  Try = 'TRY',
  /** Trinidad and Tobago dollar */
  Ttd = 'TTD',
  /** Taiwan New Dollar */
  Twd = 'TWD',
  /** Tanzanian shilling */
  Tzs = 'TZS',
  /** Hryvnia */
  Uah = 'UAH',
  /** Ugandan shilling */
  Ugx = 'UGX',
  /** United States dollar */
  Usd = 'USD',
  /** Uruguayo peso */
  Uyu = 'UYU',
  /** Uzbekistan sum */
  Uzs = 'UZS',
  /** Bolivar Fuerte */
  Vef = 'VEF',
  /** Dong */
  Vnd = 'VND',
  /** Vatu */
  Vuv = 'VUV',
  /** Samoan Tala */
  Wst = 'WST',
  /** CFA Franc - BEAC */
  Xaf = 'XAF',
  /** Eastern Caribbean dollar */
  Xcd = 'XCD',
  /** CFA franc - BCEAO */
  Xof = 'XOF',
  /** Comptoirs Francais du Pacifique Francs */
  Xpf = 'XPF',
  /** Yemeni rial */
  Yer = 'YER',
  /** Rand */
  Zar = 'ZAR',
  /** Kwacha */
  Zmk = 'ZMK',
  /** Kwacha */
  Zmw = 'ZMW',
  /** Zimbabwean dollar */
  Zwd = 'ZWD'
}

/** A customer of the business. */
export type Customer = BusinessNode & Node & {
  __typename?: 'Customer';
  /** Address of the customer. */
  address?: Maybe<Address>;
  /** Business that the customer belongs to. */
  business: Business;
  /** When the customer was created. */
  createdAt: Scalars['DateTime']['output'];
  /** Default currency used by the customer. */
  currency?: Maybe<Currency>;
  /** User defined id for the customer. Commonly referred to as Account Number. */
  displayId?: Maybe<Scalars['String']['output']>;
  /** Email of the principal contact. */
  email?: Maybe<Scalars['String']['output']>;
  /** Fax number of the customer. */
  fax?: Maybe<Scalars['String']['output']>;
  /** First name of the principal contact. */
  firstName?: Maybe<Scalars['String']['output']>;
  /** Unique identifier for the customer. */
  id: Scalars['ID']['output'];
  /**
   * The primary key used internally at Wave.
   * @deprecated Exposed internal IDs will eventually be removed in favor of global ID. Use Node.id instead.
   */
  internalId?: Maybe<Scalars['String']['output']>;
  /** Internal notes about the customer. */
  internalNotes?: Maybe<Scalars['String']['output']>;
  /** Whether or not the customer is archived. */
  isArchived?: Maybe<Scalars['Boolean']['output']>;
  /** Last name of the principal contact. */
  lastName?: Maybe<Scalars['String']['output']>;
  /** Mobile telephone number of the principal contact. */
  mobile?: Maybe<Scalars['String']['output']>;
  /** When the customer was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
  /** Name or business name of the customer. */
  name: Scalars['String']['output'];
  /** Amount due on customer's invoices. */
  outstandingAmount: Money;
  /** Amount due on customer's invoices with due date that have passed. */
  overdueAmount: Money;
  /** Telephone number of the customer. */
  phone?: Maybe<Scalars['String']['output']>;
  /** Details for shipping to the customer. */
  shippingDetails?: Maybe<CustomerShippingDetails>;
  /** Toll-free number of the customer. */
  tollFree?: Maybe<Scalars['String']['output']>;
  /** Website address of the customer. */
  website?: Maybe<Scalars['String']['output']>;
};

/** Customer connection. */
export type CustomerConnection = {
  __typename?: 'CustomerConnection';
  /** List of customers. */
  edges: Array<CustomerEdge>;
  /** Information about pagination. */
  pageInfo: OffsetPageInfo;
};

/** Input to the `customerCreate` mutation. */
export type CustomerCreateInput = {
  /** Address */
  address?: InputMaybe<AddressInput>;
  /** The unique identifier for the business. */
  businessId: Scalars['ID']['input'];
  /** Default currency used by the customer. */
  currency?: InputMaybe<CurrencyCode>;
  /** User defined id for the customer. */
  displayId?: InputMaybe<Scalars['String']['input']>;
  /** Email of the principal contact. */
  email?: InputMaybe<Scalars['String']['input']>;
  /** Fax number of the customer. */
  fax?: InputMaybe<Scalars['String']['input']>;
  /** First name of the principal contact. */
  firstName?: InputMaybe<Scalars['String']['input']>;
  /** Internal notes about the customer. */
  internalNotes?: InputMaybe<Scalars['String']['input']>;
  /** Last name of the principal contact. */
  lastName?: InputMaybe<Scalars['String']['input']>;
  /** Mobile telephone number of the principal contact. */
  mobile?: InputMaybe<Scalars['String']['input']>;
  /** Name or business name of the customer. */
  name: Scalars['String']['input'];
  /** Telephone number of the customer. */
  phone?: InputMaybe<Scalars['String']['input']>;
  /** Details for shipping to the customer. */
  shippingDetails?: InputMaybe<CustomerShippingDetailsInput>;
  /** Toll-free number of the customer. */
  tollFree?: InputMaybe<Scalars['String']['input']>;
  /** Website address of the customer. */
  website?: InputMaybe<Scalars['String']['input']>;
};

/** Output of the `customerCreate` mutation. */
export type CustomerCreateOutput = {
  __typename?: 'CustomerCreateOutput';
  /** Customer that was created. */
  customer?: Maybe<Customer>;
  /** Indicates whether the customer was successfully created. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
};

/** Input to the `customerDelete` mutation. */
export type CustomerDeleteInput = {
  /** The unique identifier for the customer. */
  id: Scalars['ID']['input'];
};

/** Output of the `customerDelete` mutation. */
export type CustomerDeleteOutput = {
  __typename?: 'CustomerDeleteOutput';
  /** Indicates whether the customer was successfully deleted. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
};

/** Customer edge. */
export type CustomerEdge = {
  __typename?: 'CustomerEdge';
  /** A customer. */
  node?: Maybe<Customer>;
};

/** Input to the `customerPatch` mutation. */
export type CustomerPatchInput = {
  /** Address */
  address?: InputMaybe<AddressInput>;
  /** Default currency used by the customer. */
  currency?: InputMaybe<CurrencyCode>;
  /** User defined id for the customer. */
  displayId?: InputMaybe<Scalars['String']['input']>;
  /** Email of the principal contact. */
  email?: InputMaybe<Scalars['String']['input']>;
  /** Fax number of the customer. */
  fax?: InputMaybe<Scalars['String']['input']>;
  /** First name of the principal contact. */
  firstName?: InputMaybe<Scalars['String']['input']>;
  /** The unique identifier for the customer. */
  id: Scalars['ID']['input'];
  /** Internal notes about the customer. */
  internalNotes?: InputMaybe<Scalars['String']['input']>;
  /** Last name of the principal contact. */
  lastName?: InputMaybe<Scalars['String']['input']>;
  /** Mobile telephone number of the principal contact. */
  mobile?: InputMaybe<Scalars['String']['input']>;
  /** Name or business name of the customer. */
  name?: InputMaybe<Scalars['String']['input']>;
  /** Telephone number of the customer. */
  phone?: InputMaybe<Scalars['String']['input']>;
  /** Details for shipping to the customer. */
  shippingDetails?: InputMaybe<CustomerPatchShippingDetailsInput>;
  /** Toll-free number of the customer. */
  tollFree?: InputMaybe<Scalars['String']['input']>;
  /** Website address of the customer. */
  website?: InputMaybe<Scalars['String']['input']>;
};

/** Output of the `customerPatch` mutation. */
export type CustomerPatchOutput = {
  __typename?: 'CustomerPatchOutput';
  /** Customer that was patched. */
  customer?: Maybe<Customer>;
  /** Indicates whether the customer was successfully patched. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
};

/** Shipping details related to a customer. */
export type CustomerPatchShippingDetailsInput = {
  /** Address of the customer. */
  address?: InputMaybe<AddressInput>;
  /** Delivery instructions for handling. */
  instructions?: InputMaybe<Scalars['String']['input']>;
  /** Name or business name of the customer. */
  name?: InputMaybe<Scalars['String']['input']>;
  /** Telephone number of the customer. */
  phone?: InputMaybe<Scalars['String']['input']>;
};

/** Shipping details related to a customer. */
export type CustomerShippingDetails = {
  __typename?: 'CustomerShippingDetails';
  /** Address of the customer. */
  address?: Maybe<Address>;
  /** Delivery instructions for handling. */
  instructions?: Maybe<Scalars['String']['output']>;
  /** Name or business name of the customer. */
  name?: Maybe<Scalars['String']['output']>;
  /** Telephone number of the customer. */
  phone?: Maybe<Scalars['String']['output']>;
};

/** Shipping details related to a customer. */
export type CustomerShippingDetailsInput = {
  /** Address of the customer. */
  address?: InputMaybe<AddressInput>;
  /** Delivery instructions for handling. */
  instructions?: InputMaybe<Scalars['String']['input']>;
  /** Name or business name of the customer. */
  name?: InputMaybe<Scalars['String']['input']>;
  /** Telephone number of the customer. */
  phone?: InputMaybe<Scalars['String']['input']>;
};

/** Options by which customers can be ordered. */
export enum CustomerSort {
  /** Ascending by creation time. */
  CreatedAtAsc = 'CREATED_AT_ASC',
  /** Descending by creation time. */
  CreatedAtDesc = 'CREATED_AT_DESC',
  /** Ascending by modified time. */
  ModifiedAtAsc = 'MODIFIED_AT_ASC',
  /** Descending by modified time. */
  ModifiedAtDesc = 'MODIFIED_AT_DESC',
  /** Ascending by name. */
  NameAsc = 'NAME_ASC',
  /** Descending by name. */
  NameDesc = 'NAME_DESC'
}

/** An approximate bill given to a buyer indicating the products or services, quantities, and expected prices (not a request for payment). */
export type Estimate = BusinessNode & Node & {
  __typename?: 'Estimate';
  /** Business that the Estimate belongs to */
  business: Business;
  /** Unique identifier for the estimate. */
  id: Scalars['ID']['output'];
  /**
   * The primary key used internally at Wave.
   * @deprecated Exposed internal IDs will eventually be removed in favor of global ID. Use Node.id instead.
   */
  internalId?: Maybe<Scalars['String']['output']>;
};

/** A fixed discount applied to an Invoice. */
export type FixedInvoiceDiscount = InvoiceDiscount & {
  __typename?: 'FixedInvoiceDiscount';
  /** The amount of the discount. */
  amount?: Maybe<Scalars['Decimal']['output']>;
  /** When the invoice discount was created. */
  createdAt: Scalars['DateTime']['output'];
  /** When the invoice discount was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
  /** A description of the discount. */
  name?: Maybe<Scalars['String']['output']>;
};

/** General settings on an invoice and estimate. */
export type GeneralSettings = {
  __typename?: 'GeneralSettings';
  /** Color to represent the brand of the business. */
  accentColor?: Maybe<Scalars['HexColorCode']['output']>;
  /** Logo of the business. */
  logoUrl?: Maybe<Scalars['URL']['output']>;
};

/** Mutation validation error. */
export type InputError = {
  __typename?: 'InputError';
  /** Error code. */
  code?: Maybe<Scalars['String']['output']>;
  /** Error message. */
  message?: Maybe<Scalars['String']['output']>;
  /** Path to the input value. */
  path?: Maybe<Array<Scalars['String']['output']>>;
};

/** Document issued to a buyer for payment indicating the products or services, quantities, and agreed prices. */
export type Invoice = BusinessNode & Node & {
  __typename?: 'Invoice';
  /** Invoice total less amount already paid. */
  amountDue: Money;
  /** Total of all payments so far made against this invoice. */
  amountPaid: Money;
  /** The label for the 'Amount' (= unit x price) column in the listing of line items on the invoice. */
  amountTitle: Scalars['String']['output'];
  /** Business that the invoice belongs to. */
  business: Business;
  /** When the invoice was created. */
  createdAt: Scalars['DateTime']['output'];
  /** Currency of the invoice. */
  currency: Currency;
  /** Customer the invoice is for. */
  customer: Customer;
  /** Within a business that is enabled to accept credit card payments, indicates if this individual invoice has been marked to not be payable by American Express. */
  disableAmexPayments: Scalars['Boolean']['output'];
  /** Within a business that is enabled to accept bank payments, indicates if this individual invoice has been marked to not be payable by bank payment. */
  disableBankPayments: Scalars['Boolean']['output'];
  /** Within a business that is enabled to accept credit card payments, indicates if this individual invoice has been marked to not be payable by card. */
  disableCreditCardPayments: Scalars['Boolean']['output'];
  /** Total value of all discounts. */
  discountTotal: Money;
  /** Invoice discounts. */
  discounts?: Maybe<Array<InvoiceDiscount>>;
  /** Date when payment is due. */
  dueDate: Scalars['Date']['output'];
  /** Exchange rate to business's currency from the invoice's currency. Used to value the invoice income within Wave's accounting transactions. */
  exchangeRate: Scalars['Decimal']['output'];
  /** Invoice footer text. */
  footer?: Maybe<Scalars['String']['output']>;
  /** Indicates whether item's amount is hidden in the line items listing. */
  hideAmount: Scalars['Boolean']['output'];
  /** Indicates whether item's description in item column is hidden in the line items listing. */
  hideDescription: Scalars['Boolean']['output'];
  /** Indicates whether item's product name in item column is hidden in the line items listing. */
  hideName: Scalars['Boolean']['output'];
  /** Indicates whether item's price is hidden in the line items listing. */
  hidePrice: Scalars['Boolean']['output'];
  /** Indicates whether item's unit is hidden in the line items listing. */
  hideUnit: Scalars['Boolean']['output'];
  /** Unique identifier for the invoice. */
  id: Scalars['ID']['output'];
  /**
   * The primary key used internally at Wave.
   * @deprecated Exposed internal IDs will eventually be removed in favor of global ID. Use Node.id instead.
   */
  internalId?: Maybe<Scalars['String']['output']>;
  /** Date when invoice is issued. */
  invoiceDate: Scalars['Date']['output'];
  /** Unique number assigned to the invoice. */
  invoiceNumber: Scalars['String']['output'];
  /** The label for the 'Item' column in the line items listing. */
  itemTitle: Scalars['String']['output'];
  /** The line items (product, unit and price) that make up the invoiced sale. */
  items?: Maybe<Array<InvoiceItem>>;
  /** When the invoice was last sent. */
  lastSentAt?: Maybe<Scalars['DateTime']['output']>;
  /** How the invoice was last sent. */
  lastSentVia?: Maybe<InvoiceSendMethod>;
  /** When the invoice was last viewed by the customer. */
  lastViewedAt?: Maybe<Scalars['DateTime']['output']>;
  /** Invoice memo (notes) text. */
  memo?: Maybe<Scalars['String']['output']>;
  /** When the invoice was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
  /** URL to access PDF representation of the invoice. */
  pdfUrl: Scalars['String']['output'];
  /** Purchase order or sales order number for the invoice. */
  poNumber?: Maybe<Scalars['String']['output']>;
  /** The label for the 'Price' column in the listing of line items on the invoice. */
  priceTitle: Scalars['String']['output'];
  /** Indicates whether the customer is required to accept the terms of service. */
  requireTermsOfServiceAgreement: Scalars['Boolean']['output'];
  /** Entity that was the precursor to the invoice. */
  source?: Maybe<InvoiceSource>;
  /** Status of the Invoice. */
  status: InvoiceStatus;
  /** Invoice subheading text. */
  subhead?: Maybe<Scalars['String']['output']>;
  /** Pretax total. */
  subtotal: Money;
  /** Total of all sales taxes on all line items within the invoice. */
  taxTotal: Money;
  /** Invoice title at the top of the document. */
  title: Scalars['String']['output'];
  /** Total value of the invoice including sales taxes. */
  total: Money;
  /** The label for the 'Unit' column in the listing of line items on the invoice. */
  unitTitle: Scalars['String']['output'];
  /** URL to view the invoice online as seen by a customer. */
  viewUrl: Scalars['String']['output'];
};

/** Input to the `invoiceApprove` mutation. */
export type InvoiceApproveInput = {
  /** The unique identifier for the invoice. */
  invoiceId: Scalars['ID']['input'];
};

/** Output of the `invoiceApprove` mutation. */
export type InvoiceApproveOutput = {
  __typename?: 'InvoiceApproveOutput';
  /** Indicates whether the invoice was successfully approved. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Invoice that was approved. */
  invoice?: Maybe<Invoice>;
};

/** Input to the `invoiceClone` mutation. */
export type InvoiceCloneInput = {
  /** The unique identifier for the invoice. */
  invoiceId: Scalars['ID']['input'];
};

/** Output of the `invoiceClone` mutation. */
export type InvoiceCloneOutput = {
  __typename?: 'InvoiceCloneOutput';
  /** Indicates whether the invoice was successfully cloned. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Invoice that was cloned. */
  invoice?: Maybe<Invoice>;
};

/** Invoice connection. */
export type InvoiceConnection = {
  __typename?: 'InvoiceConnection';
  /** List of invoices. */
  edges: Array<InvoiceEdge>;
  /** Information about pagination. */
  pageInfo: OffsetPageInfo;
};

/** Input to the `invoiceCreate` mutation. */
export type InvoiceCreateInput = {
  /** The label for the 'Amount' (= unit x price) column in the listing of line items on the invoice. If not provided, will use the business's default invoice column amount title. */
  amountTitle?: InputMaybe<Scalars['String']['input']>;
  /** The unique identifier for the business. */
  businessId: Scalars['ID']['input'];
  /** Currency of the invoice. If not provided, will use the business's default currency. */
  currency?: InputMaybe<CurrencyCode>;
  /** The customer identifier to associate with invoice. */
  customerId: Scalars['ID']['input'];
  /** Within a business that is enabled to accept credit card payments, indicates if this individual invoice has been marked to not be payable by american express payment. If not provided, will use the business's default invoice settings american express payment state. */
  disableAmexPayments?: InputMaybe<Scalars['Boolean']['input']>;
  /** Within a business that is enabled to accept bank payments, indicates if this individual invoice has been marked to not be payable by bank payment. If not provided, will use the business's default invoice bank payment state. */
  disableBankPayments?: InputMaybe<Scalars['Boolean']['input']>;
  /** Within a business that is enabled to accept credit card payments, indicates if this individual invoice has been marked to not be payable by card. If not provided, will use the business's default invoice credit card payment state. */
  disableCreditCardPayments?: InputMaybe<Scalars['Boolean']['input']>;
  /** The discounts applied to the invoice (currently limited to max 1). */
  discounts?: InputMaybe<Array<InvoiceDiscountInput>>;
  /** Date when payment is due. If not provided, will apply the business's default invoice payment terms to `invoiceDate` value. */
  dueDate?: InputMaybe<Scalars['Date']['input']>;
  /** Exchange rate to business's currency from the invoice's currency. Used to value the invoice income within Wave's accounting transactions. */
  exchangeRate?: InputMaybe<Scalars['Decimal']['input']>;
  /** Invoice footer text. If not provided, will use the business's default invoice footer. */
  footer?: InputMaybe<Scalars['String']['input']>;
  /** Indicates whether item's amount is hidden in the line items listing. If not provided, will use the business's default invoice item amount visibility. */
  hideAmount?: InputMaybe<Scalars['Boolean']['input']>;
  /** Indicates whether item's description in item column is hidden in the line items listing. If not provided, will use the business's default invoice item description visibility. */
  hideDescription?: InputMaybe<Scalars['Boolean']['input']>;
  /** Indicates whether item's product name in item column is hidden in the line items listing. If not provided, will use the business's default invoice item name visibility. */
  hideName?: InputMaybe<Scalars['Boolean']['input']>;
  /** Indicates whether item's price is hidden in the line items listing. If not provided, will use the business's default invoice item price visibility. */
  hidePrice?: InputMaybe<Scalars['Boolean']['input']>;
  /** Indicates whether item's unit is hidden in the line items listing. If not provided, will use the business's default invoice item unit visibility. */
  hideUnit?: InputMaybe<Scalars['Boolean']['input']>;
  /** Date when invoice is issued. If not provided, will use today's date. */
  invoiceDate?: InputMaybe<Scalars['Date']['input']>;
  /** Unique number assigned to the invoice. If not provided, will find the current largest invoice number and add 1. */
  invoiceNumber?: InputMaybe<Scalars['String']['input']>;
  /** The label for the 'Item' column in the listing of line items on the invoice. If not provided, will use the business's default invoice column item title. */
  itemTitle?: InputMaybe<Scalars['String']['input']>;
  /** The line items (product, unit and price) that make up the invoiced sale. */
  items?: InputMaybe<Array<InvoiceCreateItemInput>>;
  /** Invoice memo (notes) text. If not provided, will use the business's default invoice memo. */
  memo?: InputMaybe<Scalars['String']['input']>;
  /** Purchase order or sales order number for the invoice. */
  poNumber?: InputMaybe<Scalars['String']['input']>;
  /** The label for the 'Price' column in the listing of line items on the invoice. If not provided, will use the business's default invoice column price title. */
  priceTitle?: InputMaybe<Scalars['String']['input']>;
  /** Indicates whether the customer is required to accept the terms of service. */
  requireTermsOfServiceAgreement?: InputMaybe<Scalars['Boolean']['input']>;
  /** Status of the Invoice. */
  status?: InputMaybe<InvoiceCreateStatus>;
  /** Invoice subheading text. If not provided, will use the business's default invoice subheading. */
  subhead?: InputMaybe<Scalars['String']['input']>;
  /** Invoice title at the top of the document. If not provided, will use the business's default invoice title. */
  title?: InputMaybe<Scalars['String']['input']>;
  /** The label for the 'Unit' column in the listing of line items on the invoice. If not provided, will use the business's default invoice column unit title. */
  unitTitle?: InputMaybe<Scalars['String']['input']>;
};

/** Invoice line item. */
export type InvoiceCreateItemInput = {
  /** Override product's description. */
  description?: InputMaybe<Scalars['String']['input']>;
  /** Associated product. */
  productId: Scalars['ID']['input'];
  /** Number of units (rounded to nearest 8 decimal places with ties going away from zero). */
  quantity?: InputMaybe<Scalars['Decimal']['input']>;
  /** Taxes. To have the product's default sales taxes applied, provide `undefined` as the value. */
  taxes?: InputMaybe<Array<InvoiceCreateItemTaxInput>>;
  /** Override product's unitPrice. Price per unit in the major currency unit (rounded to nearest 8 decimal places with ties going away from zero). */
  unitPrice?: InputMaybe<Scalars['Decimal']['input']>;
};

/** Invoice line item's sales tax. */
export type InvoiceCreateItemTaxInput = {
  /** *DEPRECATED - DO NOT USE* Sales Tax Amount is calculated by Wave using your Sales Tax settings. */
  amount?: InputMaybe<Scalars['Decimal']['input']>;
  /** Sales tax. */
  salesTaxId: Scalars['ID']['input'];
};

/** Output of the `invoiceCreate` mutation. */
export type InvoiceCreateOutput = {
  __typename?: 'InvoiceCreateOutput';
  /** Indicates whether the invoice was successfully created. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Invoice that was created. */
  invoice?: Maybe<Invoice>;
};

/** Status of an invoice. */
export enum InvoiceCreateStatus {
  /** The invoice is still a draft. */
  Draft = 'DRAFT',
  /** The invoice was saved. */
  Saved = 'SAVED'
}

/** Input to the `invoiceDelete` mutation. */
export type InvoiceDeleteInput = {
  /** The unique identifier for the invoice. */
  invoiceId: Scalars['ID']['input'];
};

/** Output of the `invoiceDelete` mutation. */
export type InvoiceDeleteOutput = {
  __typename?: 'InvoiceDeleteOutput';
  /** Indicates whether the invoice was successfully deleted. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
};

/** Common base properties of InvoiceDiscounts. */
export type InvoiceDiscount = {
  /** When the invoice discount was created. */
  createdAt: Scalars['DateTime']['output'];
  /** When the invoice discount was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
  /** A description of the discount. */
  name?: Maybe<Scalars['String']['output']>;
};

/** Invoice Discount. */
export type InvoiceDiscountInput = {
  /** Discount amount (for FIXED-type discounts). */
  amount?: InputMaybe<Scalars['Decimal']['input']>;
  /** Discount type. */
  discountType: InvoiceDiscountType;
  /** Discount name. */
  name?: InputMaybe<Scalars['String']['input']>;
  /** Discount percentage (for PERCENTAGE-type discounts). */
  percentage?: InputMaybe<Scalars['Decimal']['input']>;
};

/** Type of invoice discount. */
export enum InvoiceDiscountType {
  /** Fixed dollar amount discount. */
  Fixed = 'FIXED',
  /** Type of invoice discount. */
  Percentage = 'PERCENTAGE'
}

/** Invoice edge. */
export type InvoiceEdge = {
  __typename?: 'InvoiceEdge';
  /** An invoice. */
  node: Invoice;
};

/** Business invoice and estimates settings information. */
export type InvoiceEstimateSettings = {
  __typename?: 'InvoiceEstimateSettings';
  /** Settings applied to both invoices and estimates. */
  generalSettings: GeneralSettings;
};

/** Invoice line item. */
export type InvoiceItem = {
  __typename?: 'InvoiceItem';
  /** Income account. */
  account: Account;
  /** Detailed description. */
  description?: Maybe<Scalars['String']['output']>;
  /**
   * Price per unit.
   * @deprecated Use unitPrice to avoid ambiguity in how the value relates to quantity and the subtotal.
   */
  price: Scalars['Decimal']['output'];
  /** Associated product. */
  product: Product;
  /** Number of units. */
  quantity: Scalars['Decimal']['output'];
  /** Pretax total. */
  subtotal: Money;
  /** Taxes. */
  taxes: Array<InvoiceItemTax>;
  /** Total including sales taxes. */
  total: Money;
  /** Price per unit in the major currency unit. */
  unitPrice: Scalars['Decimal']['output'];
};

/** Invoice line item's sales tax. */
export type InvoiceItemTax = {
  __typename?: 'InvoiceItemTax';
  /** Sales tax amount. */
  amount?: Maybe<Money>;
  /**
   * Sales tax rate.
   * @deprecated Use `salesTax.rate`. `rate` will be removed on Oct 20th 2022.
   */
  rate?: Maybe<Scalars['Decimal']['output']>;
  /** Sales tax. */
  salesTax: SalesTax;
};

/** Input to the `invoiceMarkSent` mutation. */
export type InvoiceMarkSentInput = {
  /** The unique identifier for the invoice. */
  invoiceId: Scalars['ID']['input'];
  /** How the invoice was sent. */
  sendMethod: InvoiceSendMethod;
  /** When the invoice was sent. */
  sentAt?: InputMaybe<Scalars['DateTime']['input']>;
};

/** Output of the `invoiceMarkSent` mutation. */
export type InvoiceMarkSentOutput = {
  __typename?: 'InvoiceMarkSentOutput';
  /** Indicates whether the invoice was successfully marked as sent. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Invoice that was marked as sent. */
  invoice?: Maybe<Invoice>;
};

/** Input to the `invoicePatch` mutation. For each value if it's not provided - do not update it. */
export type InvoicePatchInput = {
  /** The label for the 'Amount' (= unit x price) column in the listing of line items on the invoice. */
  amountTitle?: InputMaybe<Scalars['String']['input']>;
  /** Currency of the invoice. */
  currency?: InputMaybe<CurrencyCode>;
  /** The customer identifier to associate with invoice. */
  customerId?: InputMaybe<Scalars['ID']['input']>;
  /** Within a business that is enabled to accept credit card payments, indicates if this individual invoice has been marked to not be payable by american express payment. */
  disableAmexPayments?: InputMaybe<Scalars['Boolean']['input']>;
  /** Within a business that is enabled to accept bank payments, indicates if this individual invoice has been marked to not be payable by bank payment. */
  disableBankPayments?: InputMaybe<Scalars['Boolean']['input']>;
  /** Within a business that is enabled to accept credit card payments, indicates if this individual invoice has been marked to not be payable by card. */
  disableCreditCardPayments?: InputMaybe<Scalars['Boolean']['input']>;
  /** The discounts applied to the invoice (currently limited to max 1). */
  discounts?: InputMaybe<Array<InvoiceDiscountInput>>;
  /** Date when payment is due. */
  dueDate?: InputMaybe<Scalars['Date']['input']>;
  /** Exchange rate to business's currency from the invoice's currency. Used to value the invoice income within Wave's accounting transactions. */
  exchangeRate?: InputMaybe<Scalars['Decimal']['input']>;
  /** Invoice footer text. */
  footer?: InputMaybe<Scalars['String']['input']>;
  /** Indicates whether item's amount is hidden in the line items listing. */
  hideAmount?: InputMaybe<Scalars['Boolean']['input']>;
  /** Indicates whether item's description in item column is hidden in the line items listing. */
  hideDescription?: InputMaybe<Scalars['Boolean']['input']>;
  /** Indicates whether item's product name in item column is hidden in the line items listing. */
  hideName?: InputMaybe<Scalars['Boolean']['input']>;
  /** Indicates whether item's price is hidden in the line items listing. */
  hidePrice?: InputMaybe<Scalars['Boolean']['input']>;
  /** Indicates whether item's unit is hidden in the line items listing. */
  hideUnit?: InputMaybe<Scalars['Boolean']['input']>;
  /** Unique identifier for the invoice. */
  id: Scalars['ID']['input'];
  /** Date when invoice is issued. */
  invoiceDate?: InputMaybe<Scalars['Date']['input']>;
  /** Unique number assigned to the invoice. */
  invoiceNumber?: InputMaybe<Scalars['String']['input']>;
  /** The label for the 'Item' column in the listing of line items on the invoice. */
  itemTitle?: InputMaybe<Scalars['String']['input']>;
  /** The line items (product, unit and price) that make up the invoiced sale. If provided, it would replace all items with given ones. */
  items?: InputMaybe<Array<InvoiceCreateItemInput>>;
  /** Invoice memo (notes) text. */
  memo?: InputMaybe<Scalars['String']['input']>;
  /** Purchase order or sales order number for the invoice. */
  poNumber?: InputMaybe<Scalars['String']['input']>;
  /** The label for the 'Price' column in the listing of line items on the invoice. */
  priceTitle?: InputMaybe<Scalars['String']['input']>;
  /** Indicates whether the customer is required to accept the terms of service. */
  requireTermsOfServiceAgreement?: InputMaybe<Scalars['Boolean']['input']>;
  /** Status of the Invoice. */
  status?: InputMaybe<InvoiceCreateStatus>;
  /** Invoice subheading text. */
  subhead?: InputMaybe<Scalars['String']['input']>;
  /** Invoice title at the top of the document. */
  title?: InputMaybe<Scalars['String']['input']>;
  /** The label for the 'Unit' column in the listing of line items on the invoice. */
  unitTitle?: InputMaybe<Scalars['String']['input']>;
};

/** Output of the `invoicePatch` mutation. */
export type InvoicePatchOutput = {
  __typename?: 'InvoicePatchOutput';
  /** Indicates whether the invoice was successfully created. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Invoice that was created. */
  invoice?: Maybe<Invoice>;
};

/** Input to the `invoiceSend` mutation. */
export type InvoiceSendInput = {
  /** Include a PDF of the invoice as an attachment. */
  attachPDF?: Scalars['Boolean']['input'];
  /** Carbon copy email. */
  ccMyself?: InputMaybe<Scalars['Boolean']['input']>;
  /** Email address from */
  fromAddress?: InputMaybe<Scalars['String']['input']>;
  /** The unique identifier for the invoice. */
  invoiceId: Scalars['ID']['input'];
  /** Message body of the email. */
  message?: InputMaybe<Scalars['String']['input']>;
  /** Subject line of the email. */
  subject?: InputMaybe<Scalars['String']['input']>;
  /** Email addresses to receive an email. */
  to: Array<Scalars['String']['input']>;
};

/** Invoice send method. */
export enum InvoiceSendMethod {
  /** Export PDF. */
  ExportPdf = 'EXPORT_PDF',
  /** Gmail */
  Gmail = 'GMAIL',
  /** Marked as sent. */
  MarkedSent = 'MARKED_SENT',
  /** Not sent. */
  NotSent = 'NOT_SENT',
  /** Outlook. */
  Outlook = 'OUTLOOK',
  /** Shared link. */
  SharedLink = 'SHARED_LINK',
  /** Skipped. */
  Skipped = 'SKIPPED',
  /** Wave. */
  Wave = 'WAVE',
  /** Yahoo. */
  Yahoo = 'YAHOO'
}

/** Output of the `invoiceSend` mutation. */
export type InvoiceSendOutput = {
  __typename?: 'InvoiceSendOutput';
  /** Indicates whether the invoice was successfully queued for sending. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Invoice that was sent. */
  invoice?: Maybe<Invoice>;
};

/** Options by which invoices can be ordered. */
export enum InvoiceSort {
  /** Ascending by amount due. */
  AmountDueAsc = 'AMOUNT_DUE_ASC',
  /** Descending by amount due. */
  AmountDueDesc = 'AMOUNT_DUE_DESC',
  /** Ascending by amount paid. */
  AmountPaidAsc = 'AMOUNT_PAID_ASC',
  /** Descending by amount paid. */
  AmountPaidDesc = 'AMOUNT_PAID_DESC',
  /** Ascending by creation time. */
  CreatedAtAsc = 'CREATED_AT_ASC',
  /** Descending by creation time. */
  CreatedAtDesc = 'CREATED_AT_DESC',
  /** Ascending by customer's name. */
  CustomerNameAsc = 'CUSTOMER_NAME_ASC',
  /** Descending by customer's name. */
  CustomerNameDesc = 'CUSTOMER_NAME_DESC',
  /** Ascending by due date. */
  DueAtAsc = 'DUE_AT_ASC',
  /** Descending by due date. */
  DueAtDesc = 'DUE_AT_DESC',
  /** Ascending by invoice date. */
  InvoiceDateAsc = 'INVOICE_DATE_ASC',
  /** Descending by invoice date. */
  InvoiceDateDesc = 'INVOICE_DATE_DESC',
  /** Ascending by invoice number. */
  InvoiceNumberAsc = 'INVOICE_NUMBER_ASC',
  /** Descending by invoice number. */
  InvoiceNumberDesc = 'INVOICE_NUMBER_DESC',
  /** Ascending by modified date. */
  ModifiedAtAsc = 'MODIFIED_AT_ASC',
  /** Descending by modified date. */
  ModifiedAtDesc = 'MODIFIED_AT_DESC',
  /** Ascending by status. */
  StatusAsc = 'STATUS_ASC',
  /** Descending by status. */
  StatusDesc = 'STATUS_DESC',
  /** Ascending by total amount. */
  TotalAsc = 'TOTAL_ASC',
  /** Descending by total amount. */
  TotalDesc = 'TOTAL_DESC'
}

/** Specifies either the invoice is made from estimate, is recurring, or created manually. */
export type InvoiceSource = Estimate | NewEstimate | RecurringInvoice;

/** Status of an invoice. */
export enum InvoiceStatus {
  /** The invoice is still a draft. */
  Draft = 'DRAFT',
  /** The invoice is overdue. */
  Overdue = 'OVERDUE',
  /** The invoice was overpaid. */
  Overpaid = 'OVERPAID',
  /** The invoice was paid. */
  Paid = 'PAID',
  /** The invoice was partially paid. */
  Partial = 'PARTIAL',
  /** The invoice was saved. */
  Saved = 'SAVED',
  /** The invoice was sent. */
  Sent = 'SENT',
  /** The invoice is unpaid. */
  Unpaid = 'UNPAID',
  /** The invoice was viewed. */
  Viewed = 'VIEWED'
}

/** A medium of exchange in common use. */
export type Money = {
  __typename?: 'Money';
  /** Currency */
  currency: Currency;
  /** Value represented in only the minor currency unit. */
  minorUnitValue: Scalars['Decimal']['output'];
  /**
   * Value represented in only the minor currency unit.
   * @deprecated Use `minorUnitValue` instead, as `raw` can overflow for large numbers.
   */
  raw: Scalars['Int']['output'];
  /** Amount represented as a combination of the major and minor currency unit (uses a decimal separator). */
  value: Scalars['String']['output'];
};

/** Input representing a deposit. */
export type MoneyDepositTransactionCreateDepositInput = {
  /** Id of the account. */
  accountId: Scalars['ID']['input'];
  /** Date of the transaction. */
  amount: Scalars['Float']['input'];
};

/** Fee input. */
export type MoneyDepositTransactionCreateFeeInput = {
  /** ID of the account associated with the fee. */
  accountId: Scalars['ID']['input'];
  /** Amount. */
  amount: Scalars['Float']['input'];
};

/** Input of the moneyDepositTransactionCreate Mutation */
export type MoneyDepositTransactionCreateInput = {
  /** Id of the business. */
  businessId: Scalars['ID']['input'];
  /** Transaction timestamp. */
  createdAt?: InputMaybe<Scalars['DateTime']['input']>;
  /** Date of the transaction. */
  date: Scalars['Date']['input'];
  /** Deposit account and amount. */
  deposit: MoneyDepositTransactionCreateDepositInput;
  /** Description for the transaction. */
  description: Scalars['String']['input'];
  /** ID of the transaction in an external system. */
  externalId?: InputMaybe<Scalars['String']['input']>;
  /** Fees. */
  fees?: InputMaybe<Array<MoneyDepositTransactionCreateFeeInput>>;
  /** Line items. */
  lineItems: Array<MoneyDepositTransactionCreateLineItemInput>;
  /** Extra notes about the transaction. */
  notes?: InputMaybe<Scalars['String']['input']>;
  /** Origin of the transaction. */
  origin: TransactionOrigin;
};

/** Line item input. */
export type MoneyDepositTransactionCreateLineItemInput = {
  /** ID of the account associated with the line item. */
  accountId: Scalars['ID']['input'];
  /** Amount. */
  amount: Scalars['Float']['input'];
  /** ID of the customer associated with the line item. */
  customerId?: InputMaybe<Scalars['ID']['input']>;
  /** Taxes applied to the line item. */
  taxes: Array<TransactionCreateSalesTaxInput>;
};

/** Output of the moneyDepositTransactionCreate Mutation */
export type MoneyDepositTransactionCreateOutput = {
  __typename?: 'MoneyDepositTransactionCreateOutput';
  /** Whether or not the transaction was successfully created. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
};

/** Anchor input. */
export type MoneyTransactionCreateAnchorInput = {
  /** ID of the anchor account. */
  accountId: Scalars['ID']['input'];
  /** Amount of the transaction (unsigned). */
  amount: Scalars['Decimal']['input'];
  /** Direction of a transaction */
  direction: TransactionDirection;
};

/** Input of the `moneyTransactionCreate` Mutation */
export type MoneyTransactionCreateInput = {
  /** Anchor item. */
  anchor: MoneyTransactionCreateAnchorInput;
  /** The unique identifier for the business. */
  businessId: Scalars['ID']['input'];
  /** Date of the transaction. */
  date: Scalars['Date']['input'];
  /** Description for the transaction. */
  description: Scalars['String']['input'];
  /** ID of the transaction in an external system. If you don't have one, generate a UUID and provide it. */
  externalId: Scalars['String']['input'];
  /** Line items. */
  lineItems: Array<MoneyTransactionCreateLineItemInput>;
  /** Extra notes about the transaction. */
  notes?: InputMaybe<Scalars['String']['input']>;
};

/** Line item input. */
export type MoneyTransactionCreateLineItemInput = {
  /** ID of the account associated with the line item. */
  accountId: Scalars['ID']['input'];
  /** Amount of the line item (unsigned). */
  amount: Scalars['Decimal']['input'];
  /** How the account should change in relation to the amount. */
  balance?: BalanceType;
  /** ID of the customer associated with the line item. */
  customerId?: InputMaybe<Scalars['ID']['input']>;
  /** Optional description for line item. */
  description?: InputMaybe<Scalars['String']['input']>;
  /** Taxes applied to the line item. */
  taxes?: InputMaybe<Array<MoneyTransactionCreateSalesTaxInput>>;
};

/** Output of the `moneyTransactionCreate` Mutation */
export type MoneyTransactionCreateOutput = {
  __typename?: 'MoneyTransactionCreateOutput';
  /** Whether or not the transaction was successfully created. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Created transaction. */
  transaction?: Maybe<Transaction>;
};

/** Sales tax input. */
export type MoneyTransactionCreateSalesTaxInput = {
  /** Override the amount of the tax (unsigned). */
  amount: Scalars['Decimal']['input'];
  /** ID of the sales tax. */
  salesTaxId: Scalars['ID']['input'];
};

/** Input for creating a money transaction. */
export type MoneyTransactionDetails = {
  /** Anchor item. */
  anchor: MoneyTransactionCreateAnchorInput;
  /** Date of the transaction. */
  date: Scalars['Date']['input'];
  /** Description for the transaction. */
  description: Scalars['String']['input'];
  /** ID of the transaction in an external system. If you don't have one, generate a UUID and provide it. */
  externalId: Scalars['String']['input'];
  /** Line items. */
  lineItems: Array<MoneyTransactionCreateLineItemInput>;
  /** Extra notes about the transaction. */
  notes?: InputMaybe<Scalars['String']['input']>;
};

/** Input of the `moneyTransactionsCreate` Mutation */
export type MoneyTransactionsCreateInput = {
  /** The unique identifier for the business. */
  businessId: Scalars['ID']['input'];
  /** Array of transactions to create. */
  transactions: Array<MoneyTransactionDetails>;
};

/** Output of the `moneyTransactionsCreate` Mutation */
export type MoneyTransactionsCreateOutput = {
  __typename?: 'MoneyTransactionsCreateOutput';
  /** Whether or not all transactions were successfully created. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Created transactions. */
  transactions?: Maybe<Array<Maybe<Transaction>>>;
};

/** The schema’s entry point for mutations. */
export type Mutation = {
  __typename?: 'Mutation';
  /** No-op placeholder for code generation. */
  _?: Maybe<Scalars['Boolean']['output']>;
  /** Archive an account. */
  accountArchive?: Maybe<AccountArchiveOutput>;
  /** Create an account. */
  accountCreate?: Maybe<AccountCreateOutput>;
  /** Patch an account. */
  accountPatch?: Maybe<AccountPatchOutput>;
  /** Create a customer. */
  customerCreate?: Maybe<CustomerCreateOutput>;
  /** Delete customer. */
  customerDelete?: Maybe<CustomerDeleteOutput>;
  /** Patch a customer. */
  customerPatch?: Maybe<CustomerPatchOutput>;
  /** Approve an invoice. */
  invoiceApprove?: Maybe<InvoiceApproveOutput>;
  /** Clones an invoice. */
  invoiceClone?: Maybe<InvoiceCloneOutput>;
  /** Create an invoice. */
  invoiceCreate?: Maybe<InvoiceCreateOutput>;
  /** Delete an invoice. */
  invoiceDelete?: Maybe<InvoiceDeleteOutput>;
  /** Mark the invoice as sent. */
  invoiceMarkSent?: Maybe<InvoiceMarkSentOutput>;
  /** Patch an invoice. */
  invoicePatch?: Maybe<InvoicePatchOutput>;
  /** Send an invoice. Requires `Business.emailSendEnabled` to be true. */
  invoiceSend?: Maybe<InvoiceSendOutput>;
  /**
   * Create a money transaction.
   * @deprecated Not available for public use at this time.
   */
  moneyDepositTransactionCreate?: Maybe<MoneyDepositTransactionCreateOutput>;
  /** **BETA**: Create money transaction. Requires `isClassicAccounting` to be `false`. */
  moneyTransactionCreate?: Maybe<MoneyTransactionCreateOutput>;
  /** **BETA**: Bulk create money transactions. Requires `isClassicAccounting` to be `false`. */
  moneyTransactionsCreate?: Maybe<MoneyTransactionsCreateOutput>;
  /** Archive a product. */
  productArchive?: Maybe<ProductArchiveOutput>;
  /** Create a product. */
  productCreate?: Maybe<ProductCreateOutput>;
  /** Patch a product. */
  productPatch?: Maybe<ProductPatchOutput>;
  /** Archive a sales tax. */
  salesTaxArchive: SalesTaxArchiveOutput;
  /** Create a sales tax. */
  salesTaxCreate: SalesTaxCreateOutput;
  /** Update a sales tax. */
  salesTaxPatch: SalesTaxPatchOutput;
};


/** The schema’s entry point for mutations. */
export type MutationAccountArchiveArgs = {
  input: AccountArchiveInput;
};


/** The schema’s entry point for mutations. */
export type MutationAccountCreateArgs = {
  input: AccountCreateInput;
};


/** The schema’s entry point for mutations. */
export type MutationAccountPatchArgs = {
  input: AccountPatchInput;
};


/** The schema’s entry point for mutations. */
export type MutationCustomerCreateArgs = {
  input: CustomerCreateInput;
};


/** The schema’s entry point for mutations. */
export type MutationCustomerDeleteArgs = {
  input: CustomerDeleteInput;
};


/** The schema’s entry point for mutations. */
export type MutationCustomerPatchArgs = {
  input: CustomerPatchInput;
};


/** The schema’s entry point for mutations. */
export type MutationInvoiceApproveArgs = {
  input: InvoiceApproveInput;
};


/** The schema’s entry point for mutations. */
export type MutationInvoiceCloneArgs = {
  input: InvoiceCloneInput;
};


/** The schema’s entry point for mutations. */
export type MutationInvoiceCreateArgs = {
  input: InvoiceCreateInput;
};


/** The schema’s entry point for mutations. */
export type MutationInvoiceDeleteArgs = {
  input: InvoiceDeleteInput;
};


/** The schema’s entry point for mutations. */
export type MutationInvoiceMarkSentArgs = {
  input: InvoiceMarkSentInput;
};


/** The schema’s entry point for mutations. */
export type MutationInvoicePatchArgs = {
  input: InvoicePatchInput;
};


/** The schema’s entry point for mutations. */
export type MutationInvoiceSendArgs = {
  input: InvoiceSendInput;
};


/** The schema’s entry point for mutations. */
export type MutationMoneyDepositTransactionCreateArgs = {
  input: MoneyDepositTransactionCreateInput;
};


/** The schema’s entry point for mutations. */
export type MutationMoneyTransactionCreateArgs = {
  input: MoneyTransactionCreateInput;
};


/** The schema’s entry point for mutations. */
export type MutationMoneyTransactionsCreateArgs = {
  input: MoneyTransactionsCreateInput;
};


/** The schema’s entry point for mutations. */
export type MutationProductArchiveArgs = {
  input: ProductArchiveInput;
};


/** The schema’s entry point for mutations. */
export type MutationProductCreateArgs = {
  input: ProductCreateInput;
};


/** The schema’s entry point for mutations. */
export type MutationProductPatchArgs = {
  input: ProductPatchInput;
};


/** The schema’s entry point for mutations. */
export type MutationSalesTaxArchiveArgs = {
  input: SalesTaxArchiveInput;
};


/** The schema’s entry point for mutations. */
export type MutationSalesTaxCreateArgs = {
  input: SalesTaxCreateInput;
};


/** The schema’s entry point for mutations. */
export type MutationSalesTaxPatchArgs = {
  input: SalesTaxPatchInput;
};

/** An estimate created in our new platform. */
export type NewEstimate = BusinessNode & Node & {
  __typename?: 'NewEstimate';
  /** Business that the Estimate belongs to */
  business: Business;
  /** Unique identifier for the estimate. */
  id: Scalars['ID']['output'];
};

/** An object with an `ID`. */
export type Node = {
  /** ID of the object. */
  id: Scalars['ID']['output'];
};

/** An OAuth application. */
export type OAuthApplication = Node & {
  __typename?: 'OAuthApplication';
  /** The client identifier issued to the client during the registration process. */
  clientId: Scalars['String']['output'];
  /** When the application was created. */
  createdAt: Scalars['DateTime']['output'];
  /** A description of the application. */
  description?: Maybe<Scalars['String']['output']>;
  /**
   * Additional data for the application.
   * - If the requested `clientId` does not match that of the current OAuth application, `extraData` will not be returned.
   */
  extraData?: Maybe<Scalars['JSON']['output']>;
  /** The unique identifier for the application. */
  id: Scalars['ID']['output'];
  /** The URL to the application logo. */
  logoUrl?: Maybe<Scalars['URL']['output']>;
  /** When the application was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
  /** The name of the application. */
  name: Scalars['String']['output'];
};

/** Information about pagination in a connection. */
export type OffsetPageInfo = {
  __typename?: 'OffsetPageInfo';
  /** Current page number. */
  currentPage: Scalars['Int']['output'];
  /** Total number of nodes in the connection. */
  totalCount?: Maybe<Scalars['Int']['output']>;
  /** Total number of pages in the connection. */
  totalPages?: Maybe<Scalars['Int']['output']>;
};

/** Forms of business ownership. */
export enum OrganizationalType {
  /** Corporation */
  Corporation = 'CORPORATION',
  /** Partnership */
  Partnership = 'PARTNERSHIP',
  /** Sole Proprietorship */
  SoleProprietorship = 'SOLE_PROPRIETORSHIP'
}

/** A percentage discount applied to an Invoice. */
export type PercentageInvoiceDiscount = InvoiceDiscount & {
  __typename?: 'PercentageInvoiceDiscount';
  /** When the invoice discount was created. */
  createdAt: Scalars['DateTime']['output'];
  /** When the invoice discount was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
  /** A description of the discount. */
  name?: Maybe<Scalars['String']['output']>;
  /** The percentage of the discount. */
  percentage?: Maybe<Scalars['Decimal']['output']>;
};

/** Product (or service) that a business sells to a customer or purchases from a vendor. */
export type Product = BusinessNode & Node & {
  __typename?: 'Product';
  /** Business that the product belongs to. */
  business: Business;
  /** When the product was created. */
  createdAt: Scalars['DateTime']['output'];
  /** Default sales taxes to apply on product. */
  defaultSalesTaxes: Array<SalesTax>;
  /** Description of the product. */
  description?: Maybe<Scalars['String']['output']>;
  /** The expense account to associate with this product, set when isBought. */
  expenseAccount?: Maybe<Account>;
  /** Unique identifier for the product. */
  id: Scalars['ID']['output'];
  /** The income account to associate with this product, set when isSold. */
  incomeAccount?: Maybe<Account>;
  /**
   * The primary key used internally at Wave.
   * @deprecated Exposed internal IDs will eventually be removed in favor of global ID. Use Node.id instead.
   */
  internalId?: Maybe<Scalars['String']['output']>;
  /** Is the product hidden from view by default. */
  isArchived: Scalars['Boolean']['output'];
  /** Is product bought by the business. Allow this product or service to be added to Bills. */
  isBought: Scalars['Boolean']['output'];
  /** Is product sold by the business. Allow this product or service to be added to Invoices. */
  isSold: Scalars['Boolean']['output'];
  /** When the product was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
  /** Name of the product. */
  name: Scalars['String']['output'];
  /** Price per unit in the major currency unit. */
  unitPrice: Scalars['Decimal']['output'];
};

/** Input to the `productArchive` mutation. */
export type ProductArchiveInput = {
  /** The unique identifier for the product. */
  id: Scalars['ID']['input'];
};

/** Output of the `productArchive` mutation. */
export type ProductArchiveOutput = {
  __typename?: 'ProductArchiveOutput';
  /** Indicates whether the product was successfully deleted. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Product that was archived. */
  product?: Maybe<Product>;
};

/** Product connection. */
export type ProductConnection = {
  __typename?: 'ProductConnection';
  /** List of products. */
  edges: Array<ProductEdge>;
  /** Information about pagination. */
  pageInfo: OffsetPageInfo;
};

/** Input to the `productCreate` mutation. */
export type ProductCreateInput = {
  /** The unique identifier for the business. */
  businessId: Scalars['ID']['input'];
  /** Default sales taxes to apply on product. */
  defaultSalesTaxIds?: InputMaybe<Array<Scalars['ID']['input']>>;
  /** Product description. */
  description?: InputMaybe<Scalars['String']['input']>;
  /** Expense account to associate with this product. Account must be one of subtypes: `EXPENSE`, `COST_OF_GOODS_SOLD`, `PAYMENT_PROCESSING_FEES`, `PAYROLL_EXPENSES`. */
  expenseAccountId?: InputMaybe<Scalars['ID']['input']>;
  /** Income account to associate with this product. Account must be one of subtypes: `INCOME`, `DISCOUNTS`, `OTHER_INCOME`. */
  incomeAccountId?: InputMaybe<Scalars['ID']['input']>;
  /** Name of the product. */
  name: Scalars['String']['input'];
  /** Price per unit in the major currency unit (rounded to nearest 5 decimal places with ties going away from zero). */
  unitPrice: Scalars['Decimal']['input'];
};

/** Output of the `productCreate` mutation. */
export type ProductCreateOutput = {
  __typename?: 'ProductCreateOutput';
  /** Indicates whether the product was successfully created. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Product that was created. */
  product?: Maybe<Product>;
};

/** Product edge. */
export type ProductEdge = {
  __typename?: 'ProductEdge';
  /** A product. */
  node: Product;
};

/** Input to the `productPatch` mutation. */
export type ProductPatchInput = {
  /** Default sales taxes to apply on product. */
  defaultSalesTaxIds?: InputMaybe<Array<Scalars['ID']['input']>>;
  /** Description of the product. */
  description?: InputMaybe<Scalars['String']['input']>;
  /** Expense account to associate with this product. Account must be one of subtypes: `EXPENSE`, `COST_OF_GOODS_SOLD`, `PAYMENT_PROCESSING_FEES`, `PAYROLL_EXPENSES`. */
  expenseAccountId?: InputMaybe<Scalars['ID']['input']>;
  /** The unique identifier for the product. */
  id: Scalars['ID']['input'];
  /** Income account to associate with this product. Account must be one of subtypes: `INCOME`, `DISCOUNTS`, `OTHER_INCOME`. */
  incomeAccountId?: InputMaybe<Scalars['ID']['input']>;
  /** Name of the product. */
  name?: InputMaybe<Scalars['String']['input']>;
  /** Price per unit in the major currency unit (rounded to nearest 5 decimal places with ties going away from zero). */
  unitPrice?: InputMaybe<Scalars['Decimal']['input']>;
};

/** Output of the `productPatch` mutation. */
export type ProductPatchOutput = {
  __typename?: 'ProductPatchOutput';
  /** Indicates whether the product was successfully patched. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Product that was updated. */
  product?: Maybe<Product>;
};

/** Options by which products can be ordered. */
export enum ProductSort {
  /** Ascending by creation time. */
  CreatedAtAsc = 'CREATED_AT_ASC',
  /** Descending by creation time. */
  CreatedAtDesc = 'CREATED_AT_DESC',
  /** Ascending by modified time. */
  ModifiedAtAsc = 'MODIFIED_AT_ASC',
  /** Descending by modified time. */
  ModifiedAtDesc = 'MODIFIED_AT_DESC',
  /** Ascending by name. */
  NameAsc = 'NAME_ASC',
  /** Descending by name. */
  NameDesc = 'NAME_DESC'
}

/** A state/county/province/region. */
export type Province = {
  __typename?: 'Province';
  /** [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) identifier. */
  code: Scalars['String']['output'];
  /** Plain-lanuage representaton. */
  name: Scalars['String']['output'];
  /**
   * Informal name for identification.
   * @deprecated Nonstandard values. Use code instead.
   */
  slug?: Maybe<Scalars['String']['output']>;
};

/** The schema’s entry point for queries. */
export type Query = {
  __typename?: 'Query';
  /** No-op placeholder for code generation. */
  _?: Maybe<Scalars['Boolean']['output']>;
  /** List subtypes of accounts. */
  accountSubtypes: Array<AccountSubtype>;
  /** List types of accounts. */
  accountTypes: Array<AccountType>;
  /** Get a business. */
  business?: Maybe<Business>;
  /** List businesses. */
  businesses?: Maybe<BusinessConnection>;
  /** List countries. */
  countries: Array<Country>;
  /** Get a country. */
  country?: Maybe<Country>;
  /** List currencies. */
  currencies: Array<Currency>;
  /** Get a currency. */
  currency?: Maybe<Currency>;
  /** Get the current OAuth application. */
  oAuthApplication?: Maybe<OAuthApplication>;
  /** Get a province. */
  province?: Maybe<Province>;
  /** The currently authenticated user. */
  user?: Maybe<User>;
};


/** The schema’s entry point for queries. */
export type QueryBusinessArgs = {
  id?: InputMaybe<Scalars['ID']['input']>;
};


/** The schema’s entry point for queries. */
export type QueryBusinessesArgs = {
  isArchived?: InputMaybe<Scalars['Boolean']['input']>;
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
};


/** The schema’s entry point for queries. */
export type QueryCountryArgs = {
  code: CountryCode;
};


/** The schema’s entry point for queries. */
export type QueryCurrencyArgs = {
  code: CurrencyCode;
};


/** The schema’s entry point for queries. */
export type QueryProvinceArgs = {
  code: Scalars['String']['input'];
};

/** A template that can be used to generate and possibly pay an invoice at regular intervals. */
export type RecurringInvoice = BusinessNode & Node & {
  __typename?: 'RecurringInvoice';
  /** Business that the RecurringInvoice belongs to */
  business: Business;
  /** Unique identifier for the recurring invoice. */
  id: Scalars['ID']['output'];
  /**
   * The primary key used internally at Wave.
   * @deprecated Exposed internal IDs will eventually be removed in favor of global ID. Use Node.id instead.
   */
  internalId?: Maybe<Scalars['String']['output']>;
};

/** A tax paid to a taxing authority for the sales of certain goods and services. */
export type SalesTax = BusinessNode & Node & {
  __typename?: 'SalesTax';
  /** A short form or code representing the sales tax. */
  abbreviation: Scalars['String']['output'];
  /** Business that the sales tax belongs to. */
  business: Business;
  /** When the sales tax was created. */
  createdAt: Scalars['DateTime']['output'];
  /** User defined description for the sales tax. */
  description?: Maybe<Scalars['String']['output']>;
  /** The unique identifier for the sales tax. */
  id: Scalars['ID']['output'];
  /**
   * The primary key used internally at Wave.
   * @deprecated Exposed internal IDs will eventually be removed in favor of global ID. Use Node.id instead.
   */
  internalId?: Maybe<Scalars['String']['output']>;
  /** Is the sales tax hidden from view by default. */
  isArchived: Scalars['Boolean']['output'];
  /** Is a compound tax, or stacked tax. This tax is calculated on top of the subtotal and other tax amounts. */
  isCompound: Scalars['Boolean']['output'];
  /** Is a recoverable tax. It is recoverable if you can deduct the tax that you as a business paid from the tax that you have collected. */
  isRecoverable: Scalars['Boolean']['output'];
  /** When the sales tax was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
  /** Name of the tax. */
  name: Scalars['String']['output'];
  /** Tax rate effective on 'for' date, or current date if no parameter, as a decimal (e.g. 0.15 represents 15%). */
  rate: Scalars['Decimal']['output'];
  /** Tax rates with their effective dates of application */
  rates: Array<SalesTaxRate>;
  /** Display tax number beside the tax name on an invoice. */
  showTaxNumberOnInvoices: Scalars['Boolean']['output'];
  /** The tax's issued identification number from a taxing authority. */
  taxNumber?: Maybe<Scalars['String']['output']>;
};


/** A tax paid to a taxing authority for the sales of certain goods and services. */
export type SalesTaxRateArgs = {
  for?: InputMaybe<Scalars['Date']['input']>;
};

/** Input to the `salesTaxArchive` mutation. */
export type SalesTaxArchiveInput = {
  /** The unique identifier for the sales tax. */
  id: Scalars['ID']['input'];
};

/** Output of the `salesTaxArchive` mutation. */
export type SalesTaxArchiveOutput = {
  __typename?: 'SalesTaxArchiveOutput';
  /** Indicates whether the sales tax was successfully deleted. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Sales tax that was archived. */
  salesTax?: Maybe<SalesTax>;
};

/** Sales tax connection. */
export type SalesTaxConnection = {
  __typename?: 'SalesTaxConnection';
  /** List of sales taxes. */
  edges: Array<SalesTaxEdge>;
  /** Information about pagination. */
  pageInfo: OffsetPageInfo;
};

/** Input to the `salesTaxCreate` mutation. */
export type SalesTaxCreateInput = {
  /** An short form or code representing the sales tax. Max 10 characters, and MUST BE UNIQUE within business. */
  abbreviation: Scalars['String']['input'];
  /** The unique identifier for the business. */
  businessId: Scalars['ID']['input'];
  /** User defined description for the sales tax. */
  description?: InputMaybe<Scalars['String']['input']>;
  /** Is a compound tax, or stacked tax. This tax is calculated on top of the subtotal and other tax amounts. */
  isCompound?: InputMaybe<Scalars['Boolean']['input']>;
  /** Is a recoverable tax. It is recoverable if you can deduct the tax that you as a business paid from the tax that you have collected. */
  isRecoverable?: InputMaybe<Scalars['Boolean']['input']>;
  /** Name of the tax. */
  name: Scalars['String']['input'];
  /** The current rate, as a decimal (e.g. 0.15 represents 15%; rounded to nearest 6 decimal places with ties going away from zero). */
  rate: Scalars['Decimal']['input'];
  /** Display tax number beside the tax name on an invoice. */
  showTaxNumberOnInvoices?: InputMaybe<Scalars['Boolean']['input']>;
  /** The tax's issued identification number from a taxing authority. */
  taxNumber?: InputMaybe<Scalars['String']['input']>;
};

/** Output of the `salesTaxCreate` mutation. */
export type SalesTaxCreateOutput = {
  __typename?: 'SalesTaxCreateOutput';
  /** Indicates whether the sales tax was successfully created. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Sales tax that was created. */
  salesTax?: Maybe<SalesTax>;
};

/** Sales tax edge. */
export type SalesTaxEdge = {
  __typename?: 'SalesTaxEdge';
  /** A sales tax. */
  node?: Maybe<SalesTax>;
};

/** Input to the `salesTaxPatch` mutation. */
export type SalesTaxPatchInput = {
  /** An short form or code representing the sales tax */
  abbreviation?: InputMaybe<Scalars['String']['input']>;
  /** User defined description for the sales tax. */
  description?: InputMaybe<Scalars['String']['input']>;
  /** The unique identifier for the sales tax. */
  id: Scalars['ID']['input'];
  /** Name of the tax. */
  name?: InputMaybe<Scalars['String']['input']>;
  /** Tax rate information. */
  rates?: InputMaybe<Array<SalesTaxRateInput>>;
  /** Display tax number beside the tax name on an invoice. */
  showTaxNumberOnInvoices?: InputMaybe<Scalars['Boolean']['input']>;
  /** The tax's issued identification number from a taxing authority. */
  taxNumber?: InputMaybe<Scalars['String']['input']>;
};

/** Output of the `salesTaxPatch` mutation. */
export type SalesTaxPatchOutput = {
  __typename?: 'SalesTaxPatchOutput';
  /** Indicates whether the sales tax was successfully patched. */
  didSucceed: Scalars['Boolean']['output'];
  /** Mutation validation errors. */
  inputErrors?: Maybe<Array<InputError>>;
  /** Sales tax that was patched. */
  salesTax?: Maybe<SalesTax>;
};

/** A Sales Tax rate with effective date. New entry for each change of rate. */
export type SalesTaxRate = {
  __typename?: 'SalesTaxRate';
  /** Date from which the sales tax rate applies. */
  effective: Scalars['Date']['output'];
  /** Tax rate applying from the effective date as a decimal (e.g. 0.15 represents 15%). */
  rate: Scalars['Decimal']['output'];
};

/** Sales tax rate input for the `salesTaxPatch` mutation */
export type SalesTaxRateInput = {
  /** Date from which the sales tax rate applies. */
  effective: Scalars['Date']['input'];
  /** Tax rate applying from the effective date as a decimal (e.g. 0.15 represents 15%). */
  rate: Scalars['Decimal']['input'];
};

/** Wave's schemas. */
export enum Schema {
  /** Available only to HR Block integration. */
  Hrblock = 'HRBLOCK',
  /** Available only to Wave. */
  Internal = 'INTERNAL',
  /** Available to all third parties. */
  Public = 'PUBLIC',
  /** Available only to Wave staff. */
  Staff = 'STAFF'
}

/** An created transaction. */
export type Transaction = {
  __typename?: 'Transaction';
  /** Unique identifier for the transaction. */
  id: Scalars['ID']['output'];
};

/** Sales tax input. */
export type TransactionCreateSalesTaxInput = {
  /** Tax Abbreviation. */
  abbreviation: Scalars['String']['input'];
  /** Tax Amount. */
  amount: Scalars['Float']['input'];
};

/** Represents the direction of a transaction. */
export enum TransactionDirection {
  /** To put in. */
  Deposit = 'DEPOSIT',
  /** To remove from. */
  Withdrawal = 'WITHDRAWAL'
}

/** Represents the origin of a transaction. */
export enum TransactionOrigin {
  /** Manually created transaction. */
  Manual = 'MANUAL',
  /** Transaction created through Zapier. */
  Zapier = 'ZAPIER'
}

/** A user is an individual's account. */
export type User = Node & {
  __typename?: 'User';
  /** When the user was created. */
  createdAt: Scalars['DateTime']['output'];
  /** The user's primary email address. */
  defaultEmail?: Maybe<Scalars['String']['output']>;
  /** The user's first name. */
  firstName?: Maybe<Scalars['String']['output']>;
  /** The unique identifier for the user. */
  id: Scalars['ID']['output'];
  /** The user's last name. */
  lastName?: Maybe<Scalars['String']['output']>;
  /** When the user was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
};

/** A vendor of the business. */
export type Vendor = BusinessNode & Node & {
  __typename?: 'Vendor';
  /** The address of the vendor. */
  address?: Maybe<Address>;
  /** Business that the vendor belongs to. */
  business: Business;
  /** When the vendor was created. */
  createdAt: Scalars['DateTime']['output'];
  /** Default currency used by the vendor. */
  currency?: Maybe<Currency>;
  /** User defined id for the vendor. Commonly referred to as Account Number. */
  displayId?: Maybe<Scalars['String']['output']>;
  /** Email of the principal vendor. */
  email?: Maybe<Scalars['String']['output']>;
  /** Fax number of the vendor. */
  fax?: Maybe<Scalars['String']['output']>;
  /** The first name of the principal contact. */
  firstName?: Maybe<Scalars['String']['output']>;
  /** Unique identifier for the customer. */
  id: Scalars['ID']['output'];
  /** Internal notes about the vendor. */
  internalNotes?: Maybe<Scalars['String']['output']>;
  /** Whether or not the vendor is archived. */
  isArchived?: Maybe<Scalars['Boolean']['output']>;
  /** The last name of the principal contact. */
  lastName?: Maybe<Scalars['String']['output']>;
  /** The mobile number of the vendor. */
  mobile?: Maybe<Scalars['String']['output']>;
  /** When the vendor was last modified. */
  modifiedAt: Scalars['DateTime']['output'];
  /** Name or business name of the vendor. */
  name: Scalars['String']['output'];
  /** The phone number of the vendor. */
  phone?: Maybe<Scalars['String']['output']>;
  /** Details for shipping to the vendor. */
  shippingDetails?: Maybe<VendorShippingDetails>;
  /** Toll-free number of the vendor. */
  tollFree?: Maybe<Scalars['String']['output']>;
  /** Website address of the vendor. */
  website?: Maybe<Scalars['String']['output']>;
};

/** Vendor connection. */
export type VendorConnection = {
  __typename?: 'VendorConnection';
  /** List of vendors. */
  edges: Array<VendorEdge>;
  /** Information about pagination. */
  pageInfo: OffsetPageInfo;
};

/** Vendor edge. */
export type VendorEdge = {
  __typename?: 'VendorEdge';
  /** A vendor. */
  node: Vendor;
};

/** Shipping details related to a vendor. */
export type VendorShippingDetails = {
  __typename?: 'VendorShippingDetails';
  /** Address of the vendor. */
  address?: Maybe<Address>;
  /** Delivery instructions for handling. */
  instructions?: Maybe<Scalars['String']['output']>;
  /** Name or business name of the vendor. */
  name?: Maybe<Scalars['String']['output']>;
  /** Telephone number of the vendor. */
  phone?: Maybe<Scalars['String']['output']>;
};

export type CreateAccountMutationVariables = Exact<{
  input: AccountCreateInput;
}>;


export type CreateAccountMutation = { __typename?: 'Mutation', accountCreate?: { __typename?: 'AccountCreateOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, account?: { __typename?: 'Account', id: string, name: string, description?: string | null, displayId?: string | null, type: { __typename?: 'AccountType', name: string, value: AccountTypeValue }, subtype: { __typename?: 'AccountSubtype', name: string, value: AccountSubtypeValue }, currency: { __typename?: 'Currency', code: CurrencyCode } } | null } | null };

export type UpdateAccountMutationVariables = Exact<{
  input: AccountPatchInput;
}>;


export type UpdateAccountMutation = { __typename?: 'Mutation', accountPatch?: { __typename?: 'AccountPatchOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, account?: { __typename?: 'Account', id: string, name: string, description?: string | null, displayId?: string | null, sequence: number } | null } | null };

export type ArchiveAccountMutationVariables = Exact<{
  input: AccountArchiveInput;
}>;


export type ArchiveAccountMutation = { __typename?: 'Mutation', accountArchive?: { __typename?: 'AccountArchiveOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null } | null };

export type CreateCustomerMutationVariables = Exact<{
  input: CustomerCreateInput;
}>;


export type CreateCustomerMutation = { __typename?: 'Mutation', customerCreate?: { __typename?: 'CustomerCreateOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, customer?: { __typename?: 'Customer', id: string, name: string, firstName?: string | null, lastName?: string | null, email?: string | null, phone?: string | null, createdAt: any, currency?: { __typename?: 'Currency', code: CurrencyCode } | null } | null } | null };

export type UpdateCustomerMutationVariables = Exact<{
  input: CustomerPatchInput;
}>;


export type UpdateCustomerMutation = { __typename?: 'Mutation', customerPatch?: { __typename?: 'CustomerPatchOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, customer?: { __typename?: 'Customer', id: string, name: string, firstName?: string | null, lastName?: string | null, email?: string | null, phone?: string | null, modifiedAt: any } | null } | null };

export type DeleteCustomerMutationVariables = Exact<{
  input: CustomerDeleteInput;
}>;


export type DeleteCustomerMutation = { __typename?: 'Mutation', customerDelete?: { __typename?: 'CustomerDeleteOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null } | null };

export type CreateInvoiceMutationVariables = Exact<{
  input: InvoiceCreateInput;
}>;


export type CreateInvoiceMutation = { __typename?: 'Mutation', invoiceCreate?: { __typename?: 'InvoiceCreateOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, invoice?: { __typename?: 'Invoice', id: string, invoiceNumber: string, invoiceDate: any, dueDate: any, status: InvoiceStatus, createdAt: any, total: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode } } } | null } | null };

export type UpdateInvoiceMutationVariables = Exact<{
  input: InvoicePatchInput;
}>;


export type UpdateInvoiceMutation = { __typename?: 'Mutation', invoicePatch?: { __typename?: 'InvoicePatchOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, invoice?: { __typename?: 'Invoice', id: string, invoiceNumber: string, invoiceDate: any, dueDate: any, status: InvoiceStatus, modifiedAt: any, total: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode } } } | null } | null };

export type DeleteInvoiceMutationVariables = Exact<{
  input: InvoiceDeleteInput;
}>;


export type DeleteInvoiceMutation = { __typename?: 'Mutation', invoiceDelete?: { __typename?: 'InvoiceDeleteOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null } | null };

export type SendInvoiceMutationVariables = Exact<{
  input: InvoiceSendInput;
}>;


export type SendInvoiceMutation = { __typename?: 'Mutation', invoiceSend?: { __typename?: 'InvoiceSendOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, invoice?: { __typename?: 'Invoice', id: string, status: InvoiceStatus, lastSentAt?: any | null, lastSentVia?: InvoiceSendMethod | null } | null } | null };

export type ApproveInvoiceMutationVariables = Exact<{
  input: InvoiceApproveInput;
}>;


export type ApproveInvoiceMutation = { __typename?: 'Mutation', invoiceApprove?: { __typename?: 'InvoiceApproveOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, invoice?: { __typename?: 'Invoice', id: string, status: InvoiceStatus } | null } | null };

export type MarkInvoiceSentMutationVariables = Exact<{
  input: InvoiceMarkSentInput;
}>;


export type MarkInvoiceSentMutation = { __typename?: 'Mutation', invoiceMarkSent?: { __typename?: 'InvoiceMarkSentOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, invoice?: { __typename?: 'Invoice', id: string, status: InvoiceStatus, lastSentAt?: any | null, lastSentVia?: InvoiceSendMethod | null } | null } | null };

export type CloneInvoiceMutationVariables = Exact<{
  input: InvoiceCloneInput;
}>;


export type CloneInvoiceMutation = { __typename?: 'Mutation', invoiceClone?: { __typename?: 'InvoiceCloneOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, invoice?: { __typename?: 'Invoice', id: string, invoiceNumber: string, status: InvoiceStatus } | null } | null };

export type CreateProductMutationVariables = Exact<{
  input: ProductCreateInput;
}>;


export type CreateProductMutation = { __typename?: 'Mutation', productCreate?: { __typename?: 'ProductCreateOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, product?: { __typename?: 'Product', id: string, name: string, description?: string | null, unitPrice: any, isSold: boolean, isBought: boolean, createdAt: any } | null } | null };

export type UpdateProductMutationVariables = Exact<{
  input: ProductPatchInput;
}>;


export type UpdateProductMutation = { __typename?: 'Mutation', productPatch?: { __typename?: 'ProductPatchOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, product?: { __typename?: 'Product', id: string, name: string, description?: string | null, unitPrice: any, isSold: boolean, isBought: boolean, modifiedAt: any } | null } | null };

export type ArchiveProductMutationVariables = Exact<{
  input: ProductArchiveInput;
}>;


export type ArchiveProductMutation = { __typename?: 'Mutation', productArchive?: { __typename?: 'ProductArchiveOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, product?: { __typename?: 'Product', id: string, isArchived: boolean } | null } | null };

export type CreateSalesTaxMutationVariables = Exact<{
  input: SalesTaxCreateInput;
}>;


export type CreateSalesTaxMutation = { __typename?: 'Mutation', salesTaxCreate: { __typename?: 'SalesTaxCreateOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, salesTax?: { __typename?: 'SalesTax', id: string, name: string, abbreviation: string, rate: any, isCompound: boolean, isRecoverable: boolean, createdAt: any } | null } };

export type UpdateSalesTaxMutationVariables = Exact<{
  input: SalesTaxPatchInput;
}>;


export type UpdateSalesTaxMutation = { __typename?: 'Mutation', salesTaxPatch: { __typename?: 'SalesTaxPatchOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, salesTax?: { __typename?: 'SalesTax', id: string, name: string, abbreviation: string, rate: any, modifiedAt: any } | null } };

export type ArchiveSalesTaxMutationVariables = Exact<{
  input: SalesTaxArchiveInput;
}>;


export type ArchiveSalesTaxMutation = { __typename?: 'Mutation', salesTaxArchive: { __typename?: 'SalesTaxArchiveOutput', didSucceed: boolean, inputErrors?: Array<{ __typename?: 'InputError', path?: Array<string> | null, message?: string | null, code?: string | null }> | null, salesTax?: { __typename?: 'SalesTax', id: string, isArchived: boolean } | null } };

export type GetAccountsQueryVariables = Exact<{
  businessId: Scalars['ID']['input'];
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
  types?: InputMaybe<Array<AccountTypeValue> | AccountTypeValue>;
  subtypes?: InputMaybe<Array<AccountSubtypeValue> | AccountSubtypeValue>;
  isArchived?: InputMaybe<Scalars['Boolean']['input']>;
}>;


export type GetAccountsQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, accounts?: { __typename?: 'AccountConnection', edges: Array<{ __typename?: 'AccountEdge', node?: { __typename?: 'Account', id: string, name: string, description?: string | null, displayId?: string | null, normalBalanceType: AccountNormalBalanceType, balance?: any | null, balanceInBusinessCurrency?: any | null, isArchived: boolean, type: { __typename?: 'AccountType', name: string, value: AccountTypeValue }, subtype: { __typename?: 'AccountSubtype', name: string, value: AccountSubtypeValue }, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } } | null }>, pageInfo: { __typename?: 'OffsetPageInfo', currentPage: number, totalPages?: number | null, totalCount?: number | null } } | null } | null };

export type GetAccountQueryVariables = Exact<{
  businessId: Scalars['ID']['input'];
  accountId: Scalars['ID']['input'];
}>;


export type GetAccountQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, account?: { __typename?: 'Account', id: string, name: string, description?: string | null, displayId?: string | null, normalBalanceType: AccountNormalBalanceType, balance?: any | null, balanceInBusinessCurrency?: any | null, isArchived: boolean, sequence: number, type: { __typename?: 'AccountType', name: string, value: AccountTypeValue, normalBalanceType: AccountNormalBalanceType }, subtype: { __typename?: 'AccountSubtype', name: string, value: AccountSubtypeValue, archivable: boolean, systemCreated: boolean, description?: string | null }, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string, name: string } } | null } | null };

export type GetAccountTypesQueryVariables = Exact<{ [key: string]: never; }>;


export type GetAccountTypesQuery = { __typename?: 'Query', accountTypes: Array<{ __typename?: 'AccountType', name: string, value: AccountTypeValue, normalBalanceType: AccountNormalBalanceType }> };

export type GetAccountSubtypesQueryVariables = Exact<{ [key: string]: never; }>;


export type GetAccountSubtypesQuery = { __typename?: 'Query', accountSubtypes: Array<{ __typename?: 'AccountSubtype', name: string, value: AccountSubtypeValue, archivable: boolean, systemCreated: boolean, description?: string | null, type: { __typename?: 'AccountType', name: string, value: AccountTypeValue } }> };

export type GetBusinessQueryVariables = Exact<{
  id?: InputMaybe<Scalars['ID']['input']>;
}>;


export type GetBusinessQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, name: string, isPersonal: boolean, timezone?: string | null, phone?: string | null, website?: string | null, isArchived: boolean, createdAt: any, modifiedAt: any, emailSendEnabled: boolean, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string, name: string }, address?: { __typename?: 'Address', addressLine1?: string | null, addressLine2?: string | null, city?: string | null, postalCode?: string | null, province?: { __typename?: 'Province', code: string, name: string } | null, country?: { __typename?: 'Country', code: CountryCode, name: string } | null } | null } | null };

export type ListBusinessesQueryVariables = Exact<{
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
}>;


export type ListBusinessesQuery = { __typename?: 'Query', businesses?: { __typename?: 'BusinessConnection', edges: Array<{ __typename?: 'BusinessEdge', node?: { __typename?: 'Business', id: string, name: string, isPersonal: boolean, isArchived: boolean, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } } | null }>, pageInfo: { __typename?: 'OffsetPageInfo', currentPage: number, totalPages?: number | null, totalCount?: number | null } } | null };

export type GetCustomersQueryVariables = Exact<{
  businessId: Scalars['ID']['input'];
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
  sort?: Array<CustomerSort> | CustomerSort;
}>;


export type GetCustomersQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, customers?: { __typename?: 'CustomerConnection', edges: Array<{ __typename?: 'CustomerEdge', node?: { __typename?: 'Customer', id: string, name: string, firstName?: string | null, lastName?: string | null, email?: string | null, phone?: string | null, mobile?: string | null, createdAt: any, modifiedAt: any, isArchived?: boolean | null, currency?: { __typename?: 'Currency', code: CurrencyCode, symbol: string } | null, address?: { __typename?: 'Address', addressLine1?: string | null, addressLine2?: string | null, city?: string | null, postalCode?: string | null, province?: { __typename?: 'Province', code: string, name: string } | null, country?: { __typename?: 'Country', code: CountryCode, name: string } | null } | null, outstandingAmount: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode } }, overdueAmount: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode } } } | null }>, pageInfo: { __typename?: 'OffsetPageInfo', currentPage: number, totalPages?: number | null, totalCount?: number | null } } | null } | null };

export type GetCustomerQueryVariables = Exact<{
  businessId: Scalars['ID']['input'];
  customerId: Scalars['ID']['input'];
}>;


export type GetCustomerQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, customer?: { __typename?: 'Customer', id: string, name: string, firstName?: string | null, lastName?: string | null, displayId?: string | null, email?: string | null, phone?: string | null, mobile?: string | null, fax?: string | null, tollFree?: string | null, website?: string | null, internalNotes?: string | null, createdAt: any, modifiedAt: any, isArchived?: boolean | null, currency?: { __typename?: 'Currency', code: CurrencyCode, symbol: string, name: string } | null, address?: { __typename?: 'Address', addressLine1?: string | null, addressLine2?: string | null, city?: string | null, postalCode?: string | null, province?: { __typename?: 'Province', code: string, name: string } | null, country?: { __typename?: 'Country', code: CountryCode, name: string } | null } | null, shippingDetails?: { __typename?: 'CustomerShippingDetails', name?: string | null, phone?: string | null, instructions?: string | null, address?: { __typename?: 'Address', addressLine1?: string | null, addressLine2?: string | null, city?: string | null, postalCode?: string | null, province?: { __typename?: 'Province', code: string, name: string } | null, country?: { __typename?: 'Country', code: CountryCode, name: string } | null } | null } | null, outstandingAmount: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode } }, overdueAmount: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode } } } | null } | null };

export type GetInvoicesQueryVariables = Exact<{
  businessId: Scalars['ID']['input'];
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
  sort?: Array<InvoiceSort> | InvoiceSort;
  status?: InputMaybe<InvoiceStatus>;
  customerId?: InputMaybe<Scalars['ID']['input']>;
}>;


export type GetInvoicesQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, invoices?: { __typename?: 'InvoiceConnection', edges: Array<{ __typename?: 'InvoiceEdge', node: { __typename?: 'Invoice', id: string, invoiceNumber: string, invoiceDate: any, dueDate: any, status: InvoiceStatus, title: string, createdAt: any, modifiedAt: any, lastSentAt?: any | null, lastViewedAt?: any | null, customer: { __typename?: 'Customer', id: string, name: string, email?: string | null }, amountDue: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } }, amountPaid: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } }, total: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } }, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } } }>, pageInfo: { __typename?: 'OffsetPageInfo', currentPage: number, totalPages?: number | null, totalCount?: number | null } } | null } | null };

export type GetInvoiceQueryVariables = Exact<{
  businessId: Scalars['ID']['input'];
  invoiceId: Scalars['ID']['input'];
}>;


export type GetInvoiceQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, invoice?: { __typename?: 'Invoice', id: string, invoiceNumber: string, invoiceDate: any, dueDate: any, status: InvoiceStatus, title: string, subhead?: string | null, poNumber?: string | null, memo?: string | null, footer?: string | null, pdfUrl: string, viewUrl: string, exchangeRate: any, createdAt: any, modifiedAt: any, lastSentAt?: any | null, lastSentVia?: InvoiceSendMethod | null, lastViewedAt?: any | null, customer: { __typename?: 'Customer', id: string, name: string, firstName?: string | null, lastName?: string | null, email?: string | null, address?: { __typename?: 'Address', addressLine1?: string | null, addressLine2?: string | null, city?: string | null, postalCode?: string | null, province?: { __typename?: 'Province', code: string, name: string } | null, country?: { __typename?: 'Country', code: CountryCode, name: string } | null } | null }, items?: Array<{ __typename?: 'InvoiceItem', description?: string | null, quantity: any, unitPrice: any, product: { __typename?: 'Product', id: string, name: string }, subtotal: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode } }, total: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode } }, taxes: Array<{ __typename?: 'InvoiceItemTax', salesTax: { __typename?: 'SalesTax', id: string, name: string, abbreviation: string }, amount?: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode } } | null }> }> | null, discounts?: Array<
        | { __typename?: 'FixedInvoiceDiscount', name?: string | null, amount?: any | null }
        | { __typename?: 'PercentageInvoiceDiscount', name?: string | null, percentage?: any | null }
      > | null, subtotal: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } }, taxTotal: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } }, discountTotal: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } }, total: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } }, amountDue: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } }, amountPaid: { __typename?: 'Money', value: string, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string } }, currency: { __typename?: 'Currency', code: CurrencyCode, symbol: string, name: string } } | null } | null };

export type GetProductsQueryVariables = Exact<{
  businessId: Scalars['ID']['input'];
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
  sort?: Array<ProductSort> | ProductSort;
  isSold?: InputMaybe<Scalars['Boolean']['input']>;
  isBought?: InputMaybe<Scalars['Boolean']['input']>;
  isArchived?: InputMaybe<Scalars['Boolean']['input']>;
}>;


export type GetProductsQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, products?: { __typename?: 'ProductConnection', edges: Array<{ __typename?: 'ProductEdge', node: { __typename?: 'Product', id: string, name: string, description?: string | null, unitPrice: any, isSold: boolean, isBought: boolean, isArchived: boolean, createdAt: any, modifiedAt: any, incomeAccount?: { __typename?: 'Account', id: string, name: string } | null, expenseAccount?: { __typename?: 'Account', id: string, name: string } | null, defaultSalesTaxes: Array<{ __typename?: 'SalesTax', id: string, name: string, abbreviation: string }> } }>, pageInfo: { __typename?: 'OffsetPageInfo', currentPage: number, totalPages?: number | null, totalCount?: number | null } } | null } | null };

export type GetProductQueryVariables = Exact<{
  businessId: Scalars['ID']['input'];
  productId: Scalars['ID']['input'];
}>;


export type GetProductQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, product?: { __typename?: 'Product', id: string, name: string, description?: string | null, unitPrice: any, isSold: boolean, isBought: boolean, isArchived: boolean, createdAt: any, modifiedAt: any, incomeAccount?: { __typename?: 'Account', id: string, name: string, type: { __typename?: 'AccountType', name: string, value: AccountTypeValue }, subtype: { __typename?: 'AccountSubtype', name: string, value: AccountSubtypeValue } } | null, expenseAccount?: { __typename?: 'Account', id: string, name: string, type: { __typename?: 'AccountType', name: string, value: AccountTypeValue }, subtype: { __typename?: 'AccountSubtype', name: string, value: AccountSubtypeValue } } | null, defaultSalesTaxes: Array<{ __typename?: 'SalesTax', id: string, name: string, abbreviation: string, rate: any }> } | null } | null };

export type GetSalesTaxesQueryVariables = Exact<{
  businessId: Scalars['ID']['input'];
  page?: InputMaybe<Scalars['Int']['input']>;
  pageSize?: InputMaybe<Scalars['Int']['input']>;
  isArchived?: InputMaybe<Scalars['Boolean']['input']>;
}>;


export type GetSalesTaxesQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, salesTaxes?: { __typename?: 'SalesTaxConnection', edges: Array<{ __typename?: 'SalesTaxEdge', node?: { __typename?: 'SalesTax', id: string, name: string, abbreviation: string, description?: string | null, taxNumber?: string | null, showTaxNumberOnInvoices: boolean, rate: any, isCompound: boolean, isRecoverable: boolean, isArchived: boolean, createdAt: any, modifiedAt: any, rates: Array<{ __typename?: 'SalesTaxRate', effective: any, rate: any }> } | null }>, pageInfo: { __typename?: 'OffsetPageInfo', currentPage: number, totalPages?: number | null, totalCount?: number | null } } | null } | null };

export type GetSalesTaxQueryVariables = Exact<{
  businessId: Scalars['ID']['input'];
  salesTaxId: Scalars['ID']['input'];
}>;


export type GetSalesTaxQuery = { __typename?: 'Query', business?: { __typename?: 'Business', id: string, salesTax?: { __typename?: 'SalesTax', id: string, name: string, abbreviation: string, description?: string | null, taxNumber?: string | null, showTaxNumberOnInvoices: boolean, rate: any, isCompound: boolean, isRecoverable: boolean, isArchived: boolean, createdAt: any, modifiedAt: any, rates: Array<{ __typename?: 'SalesTaxRate', effective: any, rate: any }> } | null } | null };


export const CreateAccountDocument = gql`
    mutation CreateAccount($input: AccountCreateInput!) {
  accountCreate(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    account {
      id
      name
      description
      displayId
      type {
        name
        value
      }
      subtype {
        name
        value
      }
      currency {
        code
      }
    }
  }
}
    `;
export const UpdateAccountDocument = gql`
    mutation UpdateAccount($input: AccountPatchInput!) {
  accountPatch(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    account {
      id
      name
      description
      displayId
      sequence
    }
  }
}
    `;
export const ArchiveAccountDocument = gql`
    mutation ArchiveAccount($input: AccountArchiveInput!) {
  accountArchive(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
  }
}
    `;
export const CreateCustomerDocument = gql`
    mutation CreateCustomer($input: CustomerCreateInput!) {
  customerCreate(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    customer {
      id
      name
      firstName
      lastName
      email
      phone
      currency {
        code
      }
      createdAt
    }
  }
}
    `;
export const UpdateCustomerDocument = gql`
    mutation UpdateCustomer($input: CustomerPatchInput!) {
  customerPatch(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    customer {
      id
      name
      firstName
      lastName
      email
      phone
      modifiedAt
    }
  }
}
    `;
export const DeleteCustomerDocument = gql`
    mutation DeleteCustomer($input: CustomerDeleteInput!) {
  customerDelete(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
  }
}
    `;
export const CreateInvoiceDocument = gql`
    mutation CreateInvoice($input: InvoiceCreateInput!) {
  invoiceCreate(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    invoice {
      id
      invoiceNumber
      invoiceDate
      dueDate
      status
      total {
        value
        currency {
          code
        }
      }
      createdAt
    }
  }
}
    `;
export const UpdateInvoiceDocument = gql`
    mutation UpdateInvoice($input: InvoicePatchInput!) {
  invoicePatch(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    invoice {
      id
      invoiceNumber
      invoiceDate
      dueDate
      status
      total {
        value
        currency {
          code
        }
      }
      modifiedAt
    }
  }
}
    `;
export const DeleteInvoiceDocument = gql`
    mutation DeleteInvoice($input: InvoiceDeleteInput!) {
  invoiceDelete(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
  }
}
    `;
export const SendInvoiceDocument = gql`
    mutation SendInvoice($input: InvoiceSendInput!) {
  invoiceSend(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    invoice {
      id
      status
      lastSentAt
      lastSentVia
    }
  }
}
    `;
export const ApproveInvoiceDocument = gql`
    mutation ApproveInvoice($input: InvoiceApproveInput!) {
  invoiceApprove(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    invoice {
      id
      status
    }
  }
}
    `;
export const MarkInvoiceSentDocument = gql`
    mutation MarkInvoiceSent($input: InvoiceMarkSentInput!) {
  invoiceMarkSent(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    invoice {
      id
      status
      lastSentAt
      lastSentVia
    }
  }
}
    `;
export const CloneInvoiceDocument = gql`
    mutation CloneInvoice($input: InvoiceCloneInput!) {
  invoiceClone(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    invoice {
      id
      invoiceNumber
      status
    }
  }
}
    `;
export const CreateProductDocument = gql`
    mutation CreateProduct($input: ProductCreateInput!) {
  productCreate(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    product {
      id
      name
      description
      unitPrice
      isSold
      isBought
      createdAt
    }
  }
}
    `;
export const UpdateProductDocument = gql`
    mutation UpdateProduct($input: ProductPatchInput!) {
  productPatch(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    product {
      id
      name
      description
      unitPrice
      isSold
      isBought
      modifiedAt
    }
  }
}
    `;
export const ArchiveProductDocument = gql`
    mutation ArchiveProduct($input: ProductArchiveInput!) {
  productArchive(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    product {
      id
      isArchived
    }
  }
}
    `;
export const CreateSalesTaxDocument = gql`
    mutation CreateSalesTax($input: SalesTaxCreateInput!) {
  salesTaxCreate(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    salesTax {
      id
      name
      abbreviation
      rate
      isCompound
      isRecoverable
      createdAt
    }
  }
}
    `;
export const UpdateSalesTaxDocument = gql`
    mutation UpdateSalesTax($input: SalesTaxPatchInput!) {
  salesTaxPatch(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    salesTax {
      id
      name
      abbreviation
      rate
      modifiedAt
    }
  }
}
    `;
export const ArchiveSalesTaxDocument = gql`
    mutation ArchiveSalesTax($input: SalesTaxArchiveInput!) {
  salesTaxArchive(input: $input) {
    didSucceed
    inputErrors {
      path
      message
      code
    }
    salesTax {
      id
      isArchived
    }
  }
}
    `;
export const GetAccountsDocument = gql`
    query GetAccounts($businessId: ID!, $page: Int, $pageSize: Int, $types: [AccountTypeValue!], $subtypes: [AccountSubtypeValue!], $isArchived: Boolean) {
  business(id: $businessId) {
    id
    accounts(
      page: $page
      pageSize: $pageSize
      types: $types
      subtypes: $subtypes
      isArchived: $isArchived
    ) {
      edges {
        node {
          id
          name
          description
          displayId
          type {
            name
            value
          }
          subtype {
            name
            value
          }
          normalBalanceType
          currency {
            code
            symbol
          }
          balance
          balanceInBusinessCurrency
          isArchived
        }
      }
      pageInfo {
        currentPage
        totalPages
        totalCount
      }
    }
  }
}
    `;
export const GetAccountDocument = gql`
    query GetAccount($businessId: ID!, $accountId: ID!) {
  business(id: $businessId) {
    id
    account(id: $accountId) {
      id
      name
      description
      displayId
      type {
        name
        value
        normalBalanceType
      }
      subtype {
        name
        value
        archivable
        systemCreated
        description
      }
      normalBalanceType
      currency {
        code
        symbol
        name
      }
      balance
      balanceInBusinessCurrency
      isArchived
      sequence
    }
  }
}
    `;
export const GetAccountTypesDocument = gql`
    query GetAccountTypes {
  accountTypes {
    name
    value
    normalBalanceType
  }
}
    `;
export const GetAccountSubtypesDocument = gql`
    query GetAccountSubtypes {
  accountSubtypes {
    name
    value
    type {
      name
      value
    }
    archivable
    systemCreated
    description
  }
}
    `;
export const GetBusinessDocument = gql`
    query GetBusiness($id: ID) {
  business(id: $id) {
    id
    name
    isPersonal
    currency {
      code
      symbol
      name
    }
    timezone
    address {
      addressLine1
      addressLine2
      city
      province {
        code
        name
      }
      country {
        code
        name
      }
      postalCode
    }
    phone
    website
    isArchived
    createdAt
    modifiedAt
    emailSendEnabled
  }
}
    `;
export const ListBusinessesDocument = gql`
    query ListBusinesses($page: Int, $pageSize: Int) {
  businesses(page: $page, pageSize: $pageSize) {
    edges {
      node {
        id
        name
        isPersonal
        currency {
          code
          symbol
        }
        isArchived
      }
    }
    pageInfo {
      currentPage
      totalPages
      totalCount
    }
  }
}
    `;
export const GetCustomersDocument = gql`
    query GetCustomers($businessId: ID!, $page: Int, $pageSize: Int, $sort: [CustomerSort!]! = [NAME_ASC]) {
  business(id: $businessId) {
    id
    customers(page: $page, pageSize: $pageSize, sort: $sort) {
      edges {
        node {
          id
          name
          firstName
          lastName
          email
          phone
          mobile
          currency {
            code
            symbol
          }
          address {
            addressLine1
            addressLine2
            city
            province {
              code
              name
            }
            country {
              code
              name
            }
            postalCode
          }
          outstandingAmount {
            value
            currency {
              code
            }
          }
          overdueAmount {
            value
            currency {
              code
            }
          }
          createdAt
          modifiedAt
          isArchived
        }
      }
      pageInfo {
        currentPage
        totalPages
        totalCount
      }
    }
  }
}
    `;
export const GetCustomerDocument = gql`
    query GetCustomer($businessId: ID!, $customerId: ID!) {
  business(id: $businessId) {
    id
    customer(id: $customerId) {
      id
      name
      firstName
      lastName
      displayId
      email
      phone
      mobile
      fax
      tollFree
      website
      internalNotes
      currency {
        code
        symbol
        name
      }
      address {
        addressLine1
        addressLine2
        city
        province {
          code
          name
        }
        country {
          code
          name
        }
        postalCode
      }
      shippingDetails {
        name
        phone
        instructions
        address {
          addressLine1
          addressLine2
          city
          province {
            code
            name
          }
          country {
            code
            name
          }
          postalCode
        }
      }
      outstandingAmount {
        value
        currency {
          code
        }
      }
      overdueAmount {
        value
        currency {
          code
        }
      }
      createdAt
      modifiedAt
      isArchived
    }
  }
}
    `;
export const GetInvoicesDocument = gql`
    query GetInvoices($businessId: ID!, $page: Int, $pageSize: Int, $sort: [InvoiceSort!]! = [INVOICE_DATE_DESC], $status: InvoiceStatus, $customerId: ID) {
  business(id: $businessId) {
    id
    invoices(
      page: $page
      pageSize: $pageSize
      sort: $sort
      status: $status
      customerId: $customerId
    ) {
      edges {
        node {
          id
          invoiceNumber
          invoiceDate
          dueDate
          status
          title
          customer {
            id
            name
            email
          }
          amountDue {
            value
            currency {
              code
              symbol
            }
          }
          amountPaid {
            value
            currency {
              code
              symbol
            }
          }
          total {
            value
            currency {
              code
              symbol
            }
          }
          currency {
            code
            symbol
          }
          createdAt
          modifiedAt
          lastSentAt
          lastViewedAt
        }
      }
      pageInfo {
        currentPage
        totalPages
        totalCount
      }
    }
  }
}
    `;
export const GetInvoiceDocument = gql`
    query GetInvoice($businessId: ID!, $invoiceId: ID!) {
  business(id: $businessId) {
    id
    invoice(id: $invoiceId) {
      id
      invoiceNumber
      invoiceDate
      dueDate
      status
      title
      subhead
      poNumber
      memo
      footer
      pdfUrl
      viewUrl
      customer {
        id
        name
        firstName
        lastName
        email
        address {
          addressLine1
          addressLine2
          city
          province {
            code
            name
          }
          country {
            code
            name
          }
          postalCode
        }
      }
      items {
        product {
          id
          name
        }
        description
        quantity
        unitPrice
        subtotal {
          value
          currency {
            code
          }
        }
        total {
          value
          currency {
            code
          }
        }
        taxes {
          salesTax {
            id
            name
            abbreviation
          }
          amount {
            value
            currency {
              code
            }
          }
        }
      }
      discounts {
        ... on FixedInvoiceDiscount {
          name
          amount
        }
        ... on PercentageInvoiceDiscount {
          name
          percentage
        }
      }
      subtotal {
        value
        currency {
          code
          symbol
        }
      }
      taxTotal {
        value
        currency {
          code
          symbol
        }
      }
      discountTotal {
        value
        currency {
          code
          symbol
        }
      }
      total {
        value
        currency {
          code
          symbol
        }
      }
      amountDue {
        value
        currency {
          code
          symbol
        }
      }
      amountPaid {
        value
        currency {
          code
          symbol
        }
      }
      currency {
        code
        symbol
        name
      }
      exchangeRate
      createdAt
      modifiedAt
      lastSentAt
      lastSentVia
      lastViewedAt
    }
  }
}
    `;
export const GetProductsDocument = gql`
    query GetProducts($businessId: ID!, $page: Int, $pageSize: Int, $sort: [ProductSort!]! = [NAME_ASC], $isSold: Boolean, $isBought: Boolean, $isArchived: Boolean) {
  business(id: $businessId) {
    id
    products(
      page: $page
      pageSize: $pageSize
      sort: $sort
      isSold: $isSold
      isBought: $isBought
      isArchived: $isArchived
    ) {
      edges {
        node {
          id
          name
          description
          unitPrice
          isSold
          isBought
          isArchived
          incomeAccount {
            id
            name
          }
          expenseAccount {
            id
            name
          }
          defaultSalesTaxes {
            id
            name
            abbreviation
          }
          createdAt
          modifiedAt
        }
      }
      pageInfo {
        currentPage
        totalPages
        totalCount
      }
    }
  }
}
    `;
export const GetProductDocument = gql`
    query GetProduct($businessId: ID!, $productId: ID!) {
  business(id: $businessId) {
    id
    product(id: $productId) {
      id
      name
      description
      unitPrice
      isSold
      isBought
      isArchived
      incomeAccount {
        id
        name
        type {
          name
          value
        }
        subtype {
          name
          value
        }
      }
      expenseAccount {
        id
        name
        type {
          name
          value
        }
        subtype {
          name
          value
        }
      }
      defaultSalesTaxes {
        id
        name
        abbreviation
        rate
      }
      createdAt
      modifiedAt
    }
  }
}
    `;
export const GetSalesTaxesDocument = gql`
    query GetSalesTaxes($businessId: ID!, $page: Int, $pageSize: Int, $isArchived: Boolean) {
  business(id: $businessId) {
    id
    salesTaxes(page: $page, pageSize: $pageSize, isArchived: $isArchived) {
      edges {
        node {
          id
          name
          abbreviation
          description
          taxNumber
          showTaxNumberOnInvoices
          rate
          rates {
            effective
            rate
          }
          isCompound
          isRecoverable
          isArchived
          createdAt
          modifiedAt
        }
      }
      pageInfo {
        currentPage
        totalPages
        totalCount
      }
    }
  }
}
    `;
export const GetSalesTaxDocument = gql`
    query GetSalesTax($businessId: ID!, $salesTaxId: ID!) {
  business(id: $businessId) {
    id
    salesTax(id: $salesTaxId) {
      id
      name
      abbreviation
      description
      taxNumber
      showTaxNumberOnInvoices
      rate
      rates {
        effective
        rate
      }
      isCompound
      isRecoverable
      isArchived
      createdAt
      modifiedAt
    }
  }
}
    `;