UNPKG

@iexec/web3mail

Version:

This product enables users to confidentially store data–such as mail address, documents, personal information ...

199 lines (177 loc) 4.74 kB
import type { AbstractSigner } from 'ethers'; import { IExecConfigOptions } from 'iexec/IExecConfig'; import type { BulkRequest } from '@iexec/dataprotector'; export type Web3SignerProvider = AbstractSigner; export type Address = string; export type TimeStamp = string; /** * request to send email in bulk * * use `prepareEmailCampaign()` to create a `CampaignRequest` * * then use `sendEmailCampaign()` to send the campaign */ export type CampaignRequest = BulkRequest; /** * authorization signed by the data owner granting access to this contact * * `GrantedAccess` are obtained by fetching contacts (e.g. `fetchMyContacts()` or `fetchUserContacts()`) * * `GrantedAccess` can be consumed for email campaigns (e.g. `prepareEmailCampaign()` then `sendEmailCampaign()`) */ export type GrantedAccess = { dataset: string; datasetprice: string; volume: string; tag: string; apprestrict: string; workerpoolrestrict: string; requesterrestrict: string; salt: string; sign: string; remainingAccess: number; }; export type Contact = { address: Address; owner: Address; accessGrantTimestamp: TimeStamp; isUserStrict: boolean; name?: string; remainingAccess: number; accessPrice: number; grantedAccess: GrantedAccess; }; export type SendEmailParams = { emailSubject: string; emailContent: string; protectedData: Address; contentType?: string; senderName?: string; label?: string; workerpoolAddress?: Address; dataMaxPrice?: number; appMaxPrice?: number; workerpoolMaxPrice?: number; }; export type FetchMyContactsParams = { /** * Get contacts for this specific user only */ isUserStrict?: boolean; /** * If true, returns only contacts with bulk processing access grants */ bulkOnly?: boolean; }; export type FetchUserContactsParams = { /** * Address of the user */ userAddress: Address; } & FetchMyContactsParams; export type SendEmailResponse = { /** * ID of the task */ taskId: string; /** * ID of the deal containing the task */ dealId: string; }; /** * Configuration options for Web3Mail. */ export type Web3MailConfigOptions = { /** * Ethereum contract address for the email sender dapp. * If not provided, the default web3mail address will be used. */ dappAddress?: Address; /** * The Ethereum contract address for the whitelist. * If not provided, the default whitelist smart contract address will be used. */ dappWhitelistAddress?: Address; /** * The subgraph URL for querying data. * If not provided, the default data protector subgraph URL will be used. */ dataProtectorSubgraph?: string; /** * Options specific to iExec integration. * If not provided, default iexec options will be used. */ iexecOptions?: IExecConfigOptions; /** * The IPFS node URL. * If not provided, the default IPFS node URL will be used. */ ipfsNode?: string; /** * The IPFS gateway URL. * If not provided, the default IPFS gateway URL will be used. */ ipfsGateway?: string; /** * if true allows using a provider connected to an experimental networks (default false) * * ⚠️ experimental networks are networks on which the iExec's stack is partially deployed, experimental networks can be subject to instabilities or discontinuity. Access is provided without warranties. */ allowExperimentalNetworks?: boolean; }; export type PrepareEmailCampaignParams = { /** * List of `GrantedAccess` to contacts to send emails to in bulk. * * use `fetchMyContacts({ bulkOnly: true })` to get granted accesses. */ grantedAccesses: GrantedAccess[]; maxProtectedDataPerTask?: number; senderName?: string; emailSubject: string; emailContent: string; contentType?: string; label?: string; workerpoolAddress?: Address; dataMaxPrice?: number; appMaxPrice?: number; workerpoolMaxPrice?: number; }; export type PrepareEmailCampaignResponse = { /** * The prepared campaign request * * Use this in `sendEmailCampaign()` to start or continue sending the campaign */ campaignRequest: CampaignRequest; }; export type SendEmailCampaignParams = { /** * The prepared campaign request from `prepareEmailCampaign()` */ campaignRequest: CampaignRequest; /** * Workerpool contract address used for processing */ workerpoolAddress?: string; }; export type SendEmailCampaignResponse = { /** * List of tasks created for the campaign */ tasks: Array<{ /** * ID of the task */ taskId: string; /** * ID of the deal containing the task */ dealId: string; /** * Index of the task in the bulk request */ bulkIndex: number; }>; };