import * as z from "zod";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { RFCDate } from "../../types/rfcdate.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { CurrencyCode } from "./currencycode.js";
import { CustomProperty, CustomProperty$Outbound } from "./customproperty.js";
import { Party, Party$Outbound } from "./party.js";
import { ResourceMetadata, ResourceMetadata$Outbound } from "./resourcemetadata.js";
/**
 * Terms specifying the payment due date, based on a defined number of days or other conditions.
 */
export declare const PaymentTermsDueDate: {
    readonly UnderSevenDays: "UNDER_SEVEN_DAYS";
    readonly SevenDays: "SEVEN_DAYS";
    readonly FifteenDays: "FIFTEEN_DAYS";
    readonly ThirtyDays: "THIRTY_DAYS";
    readonly FortyFiveDays: "FORTY_FIVE_DAYS";
    readonly SixtyDays: "SIXTY_DAYS";
    readonly NinetyDays: "NINETY_DAYS";
    readonly OverNinetyDays: "OVER_NINETY_DAYS";
    readonly OnReceipt: "ON_RECEIPT";
    readonly Other: "OTHER";
    readonly Silent: "SILENT";
};
/**
 * Terms specifying the payment due date, based on a defined number of days or other conditions.
 */
export type PaymentTermsDueDate = ClosedEnum<typeof PaymentTermsDueDate>;
/**
 * "The conditions or rules written in a legal agreement. The set of possible provisions is determined by the agreement type.
 *
 * @remarks
 * This set of provisions can change dynamically."
 */
export type Provisions = {
    /**
     * The type of assignment rights in the agreement (e.g., transferability)
     */
    assignmentType?: string | undefined;
    /**
     * Provisions related to changes in control of the assigning party
     */
    assignmentChangeOfControl?: string | undefined;
    /**
     * Provisions for the termination of assignment rights
     */
    assignmentTerminationRights?: string | undefined;
    /**
     * A subset of ISO 8601 duration. Fractional or negative values are not supported.
     */
    confidentialityObligationPeriod?: string | null | undefined;
    /**
     * The governing law clause identifies the substantive law that will govern the rights and obligations of the parties to the agreement.
     */
    governingLaw?: string | null | undefined;
    /**
     * A jurisdiction clause expressly sets out which courts or tribunals have the power to hear a dispute which arises under the agreement.
     */
    jurisdiction?: string | null | undefined;
    /**
     * Type of non-disclosure agreement (e.g., unilateral, bilateral).
     */
    ndaType?: string | null | undefined;
    /**
     * Total annual value of the agreement.
     */
    annualAgreementValue?: number | null | undefined;
    /**
     * 'ISO 4217 codes. From https://en.wikipedia.org/wiki/ISO_4217
     *
     * @remarks
     * https://www.currency-iso.org/en/home/tables/table-a1.html'
     */
    annualAgreementValueCurrencyCode?: CurrencyCode | null | undefined;
    /**
     * Total value of the agreement.
     */
    totalAgreementValue?: number | null | undefined;
    /**
     * 'ISO 4217 codes. From https://en.wikipedia.org/wiki/ISO_4217
     *
     * @remarks
     * https://www.currency-iso.org/en/home/tables/table-a1.html'
     */
    totalAgreementValueCurrencyCode?: CurrencyCode | null | undefined;
    /**
     * Terms specifying the payment due date, based on a defined number of days or other conditions.
     */
    paymentTermsDueDate?: PaymentTermsDueDate | undefined;
    /**
     * Indicates if late payment fees can be charged.
     */
    canChargeLatePaymentFees?: boolean | null | undefined;
    /**
     * Percentage fee charged on late payments.
     */
    latePaymentFeePercent?: number | null | undefined;
    /**
     * Maximum liability cap in the agreement
     */
    liabilityCapFixedAmount?: number | null | undefined;
    /**
     * 'ISO 4217 codes. From https://en.wikipedia.org/wiki/ISO_4217
     *
     * @remarks
     * https://www.currency-iso.org/en/home/tables/table-a1.html'
     */
    liabilityCapCurrencyCode?: CurrencyCode | null | undefined;
    /**
     * Multiplier applied to calculate the liability cap
     */
    liabilityCapMultiplier?: number | null | undefined;
    liabilityCapDuration?: string | null | undefined;
    /**
     * Maximum allowed percentage increase in prices, limited between 0 and 100.
     */
    priceCapPercentIncrease?: number | null | undefined;
    /**
     * Specifies the type of renewal (e.g., automatic, manual).
     */
    renewalType?: string | null | undefined;
    renewalNoticePeriod?: string | null | undefined;
    /**
     * Calculated field based on renewal notice period. (agreement expiration date - renewal notice period duration)
     */
    renewalNoticeDate?: Date | null | undefined;
    autoRenewalTermLength?: string | null | undefined;
    renewalExtensionPeriod?: string | null | undefined;
    renewalProcessOwner?: string | null | undefined;
    /**
     * Additional information related to the renewal process.
     */
    renewalAdditionalInfo?: string | null | undefined;
    /**
     * The specific duration that a party has to give notice before terminating the agreement due to a significant breach or violation of terms.
     *
     * @remarks
     * This period allows the other party to address the cause or prepare for termination.
     */
    terminationPeriodForCause?: string | null | undefined;
    /**
     * Specifies the required notice period that a party must provide before terminating the agreement for convenience, without cause, under the terms outlined in the contract.
     */
    terminationPeriodForConvenience?: string | null | undefined;
    /**
     * The date when the terms of the agreement start to apply and become legally binding.
     */
    effectiveDate?: RFCDate | null | undefined;
    /**
     * The date when the agreement ends and is no longer valid or enforceable.
     */
    expirationDate?: RFCDate | null | undefined;
    /**
     * The date when the agreement is signed by all parties, making it officially binding. This is not necessarily the same as the effective date.
     */
    executionDate?: RFCDate | null | undefined;
    /**
     * Overall duration of the agreement.
     */
    termLength?: string | null | undefined;
};
export type RelatedAgreementDocuments = {
    parentAgreementDocumentId?: string | null | undefined;
};
/**
 * The Agreement component represents a comprehensive overview of a contractual document, detailing its unique identifiers, key properties, parties involved,
 *
 * @remarks
 * and specific provisions. It includes general information such as the title, type, status, and important dates like effective and expiration dates.
 * The component also incorporates various provisions—legal, financial, lifecycle, and custom—along with metadata, external references, and related documents
 * to offer a full representation of the structure and context of an agreement.
 */
export type Agreement = {
    id?: string | null | undefined;
    /**
     * Title of the agreement document, summarizing its purpose.
     */
    title?: string | null | undefined;
    /**
     * The file name of the agreement.
     */
    fileName?: string | null | undefined;
    /**
     * The type of agreement.
     */
    type?: string | null | undefined;
    /**
     * Server-defined category based on the agreement type.
     */
    category?: string | null | undefined;
    /**
     * A detailed summary of the agreement's key provisions and scope.
     */
    summary?: string | null | undefined;
    /**
     * Current status of the agreement (e.g., PENDING, COMPLETE, INACTIVE)
     */
    status?: string | null | undefined;
    /**
     * A list of parties involved in the agreement.
     */
    parties?: Array<Party> | null | undefined;
    /**
     * "The conditions or rules written in a legal agreement. The set of possible provisions is determined by the agreement type.
     *
     * @remarks
     * This set of provisions can change dynamically."
     */
    provisions?: Provisions | null | undefined;
    /**
     * A generic map/dict. The key is a string, and the value can be of any type, including strings, booleans, numbers, arrays, or objects
     */
    additionalUserDefinedData?: {
        [k: string]: CustomProperty;
    } | null | undefined;
    /**
     * A generic map/dict. The key is a string, and the value can be of any type, including strings, booleans, numbers, arrays, or objects
     */
    additionalCustomClmData?: {
        [k: string]: CustomProperty;
    } | null | undefined;
    /**
     * A generic map/dict. The key is a string, and the value can be of any type, including strings, booleans, numbers, arrays, or objects
     */
    additionalCustomEsignData?: {
        [k: string]: CustomProperty;
    } | null | undefined;
    relatedAgreementDocuments?: RelatedAgreementDocuments | undefined;
    /**
     * List of languages applicable to the agreement, identified using BCP-47 language codes.
     */
    languages?: Array<string | null> | null | undefined;
    /**
     * The name of the source system who creates this entity, e.g. eSign, CLM, or Salesforce.
     */
    sourceName?: string | null | undefined;
    /**
     * The ID of the entity in the source system that this entity is associated with. For example, it could be an ID of the envelope in eSign.
     */
    sourceId?: string | null | undefined;
    /**
     * The Account ID of the source system who creates this entity, e.g. eSign Account ID
     */
    sourceAccountId?: string | null | undefined;
    metadata?: ResourceMetadata | undefined;
};
/** @internal */
export declare const PaymentTermsDueDate$inboundSchema: z.ZodNativeEnum<typeof PaymentTermsDueDate>;
/** @internal */
export declare const PaymentTermsDueDate$outboundSchema: z.ZodNativeEnum<typeof PaymentTermsDueDate>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace PaymentTermsDueDate$ {
    /** @deprecated use `PaymentTermsDueDate$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly UnderSevenDays: "UNDER_SEVEN_DAYS";
        readonly SevenDays: "SEVEN_DAYS";
        readonly FifteenDays: "FIFTEEN_DAYS";
        readonly ThirtyDays: "THIRTY_DAYS";
        readonly FortyFiveDays: "FORTY_FIVE_DAYS";
        readonly SixtyDays: "SIXTY_DAYS";
        readonly NinetyDays: "NINETY_DAYS";
        readonly OverNinetyDays: "OVER_NINETY_DAYS";
        readonly OnReceipt: "ON_RECEIPT";
        readonly Other: "OTHER";
        readonly Silent: "SILENT";
    }>;
    /** @deprecated use `PaymentTermsDueDate$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly UnderSevenDays: "UNDER_SEVEN_DAYS";
        readonly SevenDays: "SEVEN_DAYS";
        readonly FifteenDays: "FIFTEEN_DAYS";
        readonly ThirtyDays: "THIRTY_DAYS";
        readonly FortyFiveDays: "FORTY_FIVE_DAYS";
        readonly SixtyDays: "SIXTY_DAYS";
        readonly NinetyDays: "NINETY_DAYS";
        readonly OverNinetyDays: "OVER_NINETY_DAYS";
        readonly OnReceipt: "ON_RECEIPT";
        readonly Other: "OTHER";
        readonly Silent: "SILENT";
    }>;
}
/** @internal */
export declare const Provisions$inboundSchema: z.ZodType<Provisions, z.ZodTypeDef, unknown>;
/** @internal */
export type Provisions$Outbound = {
    assignment_type?: string | undefined;
    assignment_change_of_control?: string | undefined;
    assignment_termination_rights?: string | undefined;
    confidentiality_obligation_period?: string | null | undefined;
    governing_law?: string | null | undefined;
    jurisdiction?: string | null | undefined;
    nda_type?: string | null | undefined;
    annual_agreement_value?: number | null | undefined;
    annual_agreement_value_currency_code?: string | null | undefined;
    total_agreement_value?: number | null | undefined;
    total_agreement_value_currency_code?: string | null | undefined;
    payment_terms_due_date: string;
    can_charge_late_payment_fees?: boolean | null | undefined;
    late_payment_fee_percent?: number | null | undefined;
    liability_cap_fixed_amount?: number | null | undefined;
    liability_cap_currency_code?: string | null | undefined;
    liability_cap_multiplier?: number | null | undefined;
    liability_cap_duration?: string | null | undefined;
    price_cap_percent_increase?: number | null | undefined;
    renewal_type?: string | null | undefined;
    renewal_notice_period?: string | null | undefined;
    renewal_notice_date?: string | null | undefined;
    auto_renewal_term_length?: string | null | undefined;
    renewal_extension_period?: string | null | undefined;
    renewal_process_owner?: string | null | undefined;
    renewal_additional_info?: string | null | undefined;
    termination_period_for_cause?: string | null | undefined;
    termination_period_for_convenience?: string | null | undefined;
    effective_date?: string | null | undefined;
    expiration_date?: string | null | undefined;
    execution_date?: string | null | undefined;
    term_length?: string | null | undefined;
};
/** @internal */
export declare const Provisions$outboundSchema: z.ZodType<Provisions$Outbound, z.ZodTypeDef, Provisions>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Provisions$ {
    /** @deprecated use `Provisions$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Provisions, z.ZodTypeDef, unknown>;
    /** @deprecated use `Provisions$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Provisions$Outbound, z.ZodTypeDef, Provisions>;
    /** @deprecated use `Provisions$Outbound` instead. */
    type Outbound = Provisions$Outbound;
}
export declare function provisionsToJSON(provisions: Provisions): string;
export declare function provisionsFromJSON(jsonString: string): SafeParseResult<Provisions, SDKValidationError>;
/** @internal */
export declare const RelatedAgreementDocuments$inboundSchema: z.ZodType<RelatedAgreementDocuments, z.ZodTypeDef, unknown>;
/** @internal */
export type RelatedAgreementDocuments$Outbound = {
    parent_agreement_document_id: string | null;
};
/** @internal */
export declare const RelatedAgreementDocuments$outboundSchema: z.ZodType<RelatedAgreementDocuments$Outbound, z.ZodTypeDef, RelatedAgreementDocuments>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace RelatedAgreementDocuments$ {
    /** @deprecated use `RelatedAgreementDocuments$inboundSchema` instead. */
    const inboundSchema: z.ZodType<RelatedAgreementDocuments, z.ZodTypeDef, unknown>;
    /** @deprecated use `RelatedAgreementDocuments$outboundSchema` instead. */
    const outboundSchema: z.ZodType<RelatedAgreementDocuments$Outbound, z.ZodTypeDef, RelatedAgreementDocuments>;
    /** @deprecated use `RelatedAgreementDocuments$Outbound` instead. */
    type Outbound = RelatedAgreementDocuments$Outbound;
}
export declare function relatedAgreementDocumentsToJSON(relatedAgreementDocuments: RelatedAgreementDocuments): string;
export declare function relatedAgreementDocumentsFromJSON(jsonString: string): SafeParseResult<RelatedAgreementDocuments, SDKValidationError>;
/** @internal */
export declare const Agreement$inboundSchema: z.ZodType<Agreement, z.ZodTypeDef, unknown>;
/** @internal */
export type Agreement$Outbound = {
    id: string | null;
    title?: string | null | undefined;
    file_name?: string | null | undefined;
    type?: string | null | undefined;
    category?: string | null | undefined;
    summary?: string | null | undefined;
    status?: string | null | undefined;
    parties?: Array<Party$Outbound> | null | undefined;
    provisions?: Provisions$Outbound | null | undefined;
    additional_user_defined_data?: {
        [k: string]: CustomProperty$Outbound;
    } | null | undefined;
    additional_custom_clm_data?: {
        [k: string]: CustomProperty$Outbound;
    } | null | undefined;
    additional_custom_esign_data?: {
        [k: string]: CustomProperty$Outbound;
    } | null | undefined;
    related_agreement_documents?: RelatedAgreementDocuments$Outbound | undefined;
    languages?: Array<string | null> | null | undefined;
    source_name?: string | null | undefined;
    source_id?: string | null | undefined;
    source_account_id?: string | null | undefined;
    metadata?: ResourceMetadata$Outbound | undefined;
};
/** @internal */
export declare const Agreement$outboundSchema: z.ZodType<Agreement$Outbound, z.ZodTypeDef, Agreement>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Agreement$ {
    /** @deprecated use `Agreement$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Agreement, z.ZodTypeDef, unknown>;
    /** @deprecated use `Agreement$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Agreement$Outbound, z.ZodTypeDef, Agreement>;
    /** @deprecated use `Agreement$Outbound` instead. */
    type Outbound = Agreement$Outbound;
}
export declare function agreementToJSON(agreement: Agreement): string;
export declare function agreementFromJSON(jsonString: string): SafeParseResult<Agreement, SDKValidationError>;
//# sourceMappingURL=agreement.d.ts.map