/**
 * Stripe Node - Version 1
 * Discriminator: resource=charge, operation=create
 */


interface Credentials {
  stripeApi: CredentialReference;
}

/** Create a charge */
export type StripeV1ChargeCreateParams = {
  resource: 'charge';
  operation: 'create';
/**
 * ID of the customer to be associated with this charge
 */
    customerId?: string | Expression<string> | PlaceholderValue;
/**
 * Amount in cents to be collected for this charge, e.g. enter &lt;code&gt;100&lt;/code&gt; for $1.00
 * @default 0
 */
    amount?: number | Expression<number>;
/**
 * Three-letter ISO currency code, e.g. &lt;code&gt;USD&lt;/code&gt; or &lt;code&gt;EUR&lt;/code&gt;. It must be a &lt;a href="https://stripe.com/docs/currencies"&gt;Stripe-supported currency&lt;/a&gt;. Choose from the list, or specify an ID using an &lt;a href="https://docs.n8n.io/code/expressions/"&gt;expression&lt;/a&gt;.
 */
    currency?: string | Expression<string>;
/**
 * ID of the customer's payment source to be charged
 */
    source?: string | Expression<string> | PlaceholderValue;
/**
 * Additional Fields
 * @default {}
 */
    additionalFields?: {
    /** Arbitrary text to describe the charge to create
     */
    description?: string | Expression<string> | PlaceholderValue;
    /** Set of key-value pairs to attach to the charge to create
     * @default []
     */
    metadata?: {
        /** Metadata Properties
     */
    metadataProperties?: Array<{
      /** Key
       */
      key?: string | Expression<string> | PlaceholderValue;
      /** Value
       */
      value?: string | Expression<string> | PlaceholderValue;
    }>;
  };
    /** Email address to which the receipt for this charge will be sent
     */
    receipt_email?: string | Expression<string> | PlaceholderValue;
    /** Shipping information for the charge
     * @default []
     */
    shipping?: {
        /** Shipping Properties
     */
    shippingProperties?: Array<{
      /** Name of the person who will receive the shipment
       */
      name?: string | Expression<string> | PlaceholderValue;
      /** Address
       * @default {}
       */
      address?: {
        /** Details
     */
    details?: {
      /** Address line 1 (e.g. street, PO Box, or company name)
       */
      line1?: string | Expression<string> | PlaceholderValue;
      /** Address line 2 (e.g. apartment, suite, unit, or building)
       */
      line2?: string | Expression<string> | PlaceholderValue;
      /** City, district, suburb, town, or village
       */
      city?: string | Expression<string> | PlaceholderValue;
      /** State, county, province, or region
       */
      state?: string | Expression<string> | PlaceholderValue;
      /** Two-letter country code (&lt;a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2"&gt;ISO 3166-1 alpha-2&lt;/a&gt;)
       */
      country?: string | Expression<string> | PlaceholderValue;
      /** ZIP or postal code
       */
      postal_code?: string | Expression<string> | PlaceholderValue;
    };
  };
    }>;
  };
  };
};

export type StripeV1ChargeCreateNode = {
  type: 'n8n-nodes-base.stripe';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<StripeV1ChargeCreateParams>;
};