UNPKG

@iexec/web3telegram

Version:

Enables secure, blockchain-based messaging by encrypting Telegram user IDs for privacy. It lets users message Ethereum account holders without knowing their Telegram details.

156 lines (155 loc) 4.76 kB
import { BulkRequest } from '@iexec/dataprotector'; import { EnhancedWallet } from 'iexec'; import { IExecConfigOptions } from 'iexec/IExecConfig'; export type Web3SignerProvider = EnhancedWallet; export type ENS = string; export type AddressOrENS = Address | ENS; 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 FetchMyContactsParams = { /** * Get contacts for this specific user only */ isUserStrict?: boolean; bulkOnly?: boolean; }; export type FetchUserContactsParams = { /** * Address of the user */ userAddress: Address; } & FetchMyContactsParams; export type SendTelegramParams = { senderName?: string; telegramContent: string; protectedData: Address; label?: string; workerpoolAddressOrEns?: AddressOrENS; dataMaxPrice?: number; appMaxPrice?: number; workerpoolMaxPrice?: number; useVoucher?: boolean; }; export type SendTelegramResponse = { taskId: string; dealId: string; }; export type PrepareTelegramCampaignParams = { /** * List of `GrantedAccess` to contacts to send telegrams to in bulk. * * use `fetchMyContacts({ bulkOnly: true })` to get granted accesses. */ grantedAccesses: GrantedAccess[]; maxProtectedDataPerTask?: number; senderName?: string; telegramContent: string; label?: string; workerpoolAddressOrEns?: AddressOrENS; dataMaxPrice?: number; appMaxPrice?: number; workerpoolMaxPrice?: number; }; export type PrepareTelegramCampaignResponse = { /** * The prepared campaign request * * Use this in `sendTelegramCampaign()` to start or continue sending the campaign */ campaignRequest: CampaignRequest; }; export type SendTelegramCampaignParams = { /** * The prepared campaign request from prepareTelegramCampaign */ campaignRequest: CampaignRequest; /** * Workerpool address or ENS to use for processing */ workerpoolAddressOrEns?: string; }; export type SendTelegramCampaignResponse = { tasks: { bulkIndex: number; taskId: string; dealId: string; }[]; }; /** * Configuration options for web3telegram. */ export type Web3TelegramConfigOptions = { /** * The Ethereum contract address or ENS (Ethereum Name Service) for the telegram sender dapp. * If not provided, the default web3telegram address for the detected chain will be used. */ dappAddressOrENS?: AddressOrENS; /** * The Ethereum contract address for the whitelist. * If not provided, the default whitelist smart contract address for the detected chain will be used. */ dappWhitelistAddress?: Address; /** * The subgraph URL for querying data. * If not provided, the default data protector subgraph URL for the detected chain 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 for the detected chain will be used. */ ipfsNode?: string; /** * The IPFS gateway URL. * If not provided, the default IPFS gateway URL for the detected chain 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; };