import { GiverReceiverInputInfo } from "../libs/util";

export interface GiverOutputInfo {
  action: string;
  giver?: GiverReceiverInputInfo;
  description?: string;
  amount?: number;
  unitCode?: string;
}

export interface ClaimResult {
  success: { claimId: string; handleId: string };
  error: { code: string; message: string };
}

export interface VerifiableCredential {
  exp?: number;
  iat: number;
  iss: string;
  vc: {
    "@context": string[];
    type: string[];
    credentialSubject: VerifiableCredentialSubject;
  };
}

export interface VerifiableCredentialSubject {
  "@context": string;
  "@type": string;
  [key: string]: unknown;
}

export interface WorldProperties {
  startTime?: string;
  endTime?: string;
}

export interface ProviderInfo {
  /**
   * Could be a DID or a handleId that identifies the provider
   */
  identifier: string;
  /**
   * Indicates if the provider link has been confirmed
   */
  linkConfirmed: boolean;
}
