package com.seeyon.apps.esign.service;

import com.seeyon.apps.esign.po.signer.SignParty;

import java.util.List;

public interface SignParamSource {

    /* ================= 文档相关 ================= */

    /** 合同标题 */
    String getContractTitle();

    /** 是否通过附件生成文件 */
    boolean isByFile();

    /* ================= 签署流 / 回调 ================= */

    /** 业务唯一标识（回调使用） */
    String getBizFormId();

    /** 业务表名 */
    String getTableName();

    String getSignFileRefId();

    /** 盖章后附件字段 */
    String getSignedFileField();

    /** 签署状态字段 */
    String getSignStatusField();

    /** 签署状态枚举值 */
    Long getSignStatusEnumId();

    boolean autoSign();

    /* ================= 签署方编排（核心） ================= */

    String getCallbackUrl();
    /** 
     * 所有签署方（顺序、类型、自动签等都在这里）
     */
    List<SignParty> getSignerParties() throws Exception;

    /** 通知类型 */
    default String noticeTypes() {
        return "1";
    }

    String getAppId();

    boolean useKeyWordPositioning();

}