interface AccountDetails {
  date_registered: number;
  gender: string;
  age?: string;
  type?: string;
  balance?: number;
  identities: {
    evm: {
      'bloxberg:8996': string[];
      'oldchain:1': string[];
    };
    latitude: number;
    longitude: number;
  };
  location: {
    area?: string;
    area_name: string;
    area_type?: string;
  };
  products: string[];
  category?: string;
  vcard: {
    email: [
      {
        value: string;
      }
    ];
    fn: [
      {
        value: string;
      }
    ];
    n: [
      {
        value: string[];
      }
    ];
    tel: [
      {
        meta: {
          TYP: string[];
        };
        value: string;
      }
    ];
    version: [
      {
        value: string;
      }
    ];
  };
}

interface Signature {
  algo: string;
  data: string;
  digest: string;
  engine: string;
}

interface Meta {
  data: AccountDetails;
  id: string;
  signature: Signature;
}

interface MetaResponse {
  id: string;
  m: Meta;
}

const defaultAccount: AccountDetails = {
  date_registered: Date.now(),
  gender: 'other',
  identities: {
    evm: {
      'bloxberg:8996': [''],
      'oldchain:1': [''],
    },
    latitude: 0,
    longitude: 0,
  },
  location: {
    area_name: 'Kilifi',
  },
  products: [],
  vcard: {
    email: [
      {
        value: '',
      },
    ],
    fn: [
      {
        value: 'Sarafu Contract',
      },
    ],
    n: [
      {
        value: ['Sarafu', 'Contract'],
      },
    ],
    tel: [
      {
        meta: {
          TYP: [],
        },
        value: '',
      },
    ],
    version: [
      {
        value: '3.0',
      },
    ],
  },
};

export { AccountDetails, Signature, Meta, MetaResponse, defaultAccount };
