import type { AddressCreate } from './AddressCreate';
import type { CreationEntityState } from './CreationEntityState';
/**
 * A subscriber represents everyone who is subscribed to a product.
 * @export
 * @interface SubscriberCreate
 */
export interface SubscriberCreate {
    /**
     * The merchant's reference used to identify the subscriber.
     * @type {string}
     * @memberof SubscriberCreate
     */
    reference?: string;
    /**
     * Allow the subscriber to use these payment methods even if subscription products do not accept them.
     * @type {Array<number>}
     * @memberof SubscriberCreate
     */
    additionalAllowedPaymentMethodConfigurations?: Array<number>;
    /**
     * Allow to store additional information about the object.
     * @type {{ [key: string]: string; }}
     * @memberof SubscriberCreate
     */
    metaData?: {
        [key: string]: string;
    };
    /**
     * The email address that is used to communicate with the subscriber. There can be only one subscriber per space with the same email address.
     * @type {string}
     * @memberof SubscriberCreate
     */
    emailAddress?: string;
    /**
     * Prevent the subscriber from using these payment methods even if subscription products do accept them.
     * @type {Array<number>}
     * @memberof SubscriberCreate
     */
    disallowedPaymentMethodConfigurations?: Array<number>;
    /**
     * The description used to identify the subscriber.
     * @type {string}
     * @memberof SubscriberCreate
     */
    description?: string;
    /**
     *
     * @type {AddressCreate}
     * @memberof SubscriberCreate
     */
    shippingAddress?: AddressCreate;
    /**
     * The language that is used when communicating with the subscriber via emails and documents.
     * @type {string}
     * @memberof SubscriberCreate
     */
    language?: string;
    /**
     *
     * @type {AddressCreate}
     * @memberof SubscriberCreate
     */
    billingAddress?: AddressCreate;
    /**
     * A client-generated nonce which uniquely identifies some action to be executed. Subsequent requests with the same external ID do not execute the action again, but return the original result.
     * @type {string}
     * @memberof SubscriberCreate
     */
    externalId: string;
    /**
     *
     * @type {CreationEntityState}
     * @memberof SubscriberCreate
     */
    state?: CreationEntityState;
}
/**
 * Check if a given object implements the SubscriberCreate interface.
 */
export declare function instanceOfSubscriberCreate(value: object): value is SubscriberCreate;
export declare function SubscriberCreateFromJSON(json: any): SubscriberCreate;
export declare function SubscriberCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): SubscriberCreate;
export declare function SubscriberCreateToJSON(json: any): SubscriberCreate;
export declare function SubscriberCreateToJSONTyped(value?: SubscriberCreate | null, ignoreDiscriminator?: boolean): any;
