/** 市场签发包定价 */
export type MarketPricing = 'free' | 'paid'

/** market.sig 签名载荷（稳定字段，勿随意增删） */
export type MarketSigPayload = {
  marketId: string
  pricing: MarketPricing
  version: string
  key: string
  contentHash: string
}

/** 离线 / 联网 license 载荷 */
export type MarketLicensePayload = {
  v: 1
  marketId: string
  buyerId: string
  issuedAt: string
  /** null = 永久 */
  expireAt: string | null
  orderNo?: string | null
  /** 联网签发时必填，须与请求 nonce 一致 */
  nonce?: string | null
  pluginName?: string | null
}

/** 磁盘 / 接口中的 license 文件结构 */
export type MarketLicenseFile = {
  payload: MarketLicensePayload
  sig: string
}

export type InstallGateKind =
  | 'local'
  | 'market-free'
  | 'market-paid'

export type InstallGateResult = {
  kind: InstallGateKind
  marketId?: string
  via?: 'file' | 'network'
}

export type AssertModuleInstallOptions = {
  /** 覆盖 core 内置市场公钥（SPKI DER base64 或 PEM） */
  marketPublicKey?: string | Uint8Array
  /**
   * 联网拉取「签名 license 原文」；core 只验签，不采信 boolean。
   * 返回 null/空 = 无凭证。
   */
  fetchSignedLicense?: (
    marketId: string,
    nonce: string,
  ) => Promise<string | MarketLicenseFile | null | undefined>
}
