/* tslint:disable */
/* eslint-disable */
/**
 * Paystack
 * The OpenAPI specification of the Paystack API that merchants and developers can harness to build financial solutions in Africa.
 *
 * The version of the Paystack Node library: 1.0.0
 * Contact: techsupport@paystack.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { exists, mapValues } from '../runtime';
/**
 * 
 * @export
 * @interface SubscriptionCreate
 */
export interface SubscriptionCreate {
    /**
     * Customer's email address or customer code
     * @type {string}
     * @memberof SubscriptionCreate
     */
    customer: string;
    /**
     * Plan code
     * @type {string}
     * @memberof SubscriptionCreate
     */
    plan: string;
    /**
     * If customer has multiple authorizations, you can set the desired authorization you wish to use for this subscription here. 
     * If this is not supplied, the customer's most recent authorization would be used
     * @type {string}
     * @memberof SubscriptionCreate
     */
    authorization?: string;
    /**
     * Set the date for the first debit. (ISO 8601 format) e.g. 2017-05-16T00:30:13+01:00
     * @type {Date}
     * @memberof SubscriptionCreate
     */
    startDate?: Date;
}

export function SubscriptionCreateFromJSON(json: any): SubscriptionCreate {
    return SubscriptionCreateFromJSONTyped(json, false);
}

export function SubscriptionCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): SubscriptionCreate {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'customer': json['customer'],
        'plan': json['plan'],
        'authorization': !exists(json, 'authorization') ? undefined : json['authorization'],
        'startDate': !exists(json, 'start_date') ? undefined : (new Date(json['start_date'])),
    };
}

export function SubscriptionCreateToJSON(value?: SubscriptionCreate | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'customer': value.customer,
        'plan': value.plan,
        'authorization': value.authorization,
        'start_date': value.startDate === undefined ? undefined : (value.startDate.toISOString()),
    };
}


