// @flow declare type Claim = StreamClaim | ChannelClaim | CollectionClaim; declare type ChannelClaim = GenericClaim & { value: ChannelMetadata, }; declare type CollectionClaim = GenericClaim & { value: CollectionMetadata, }; declare type StreamClaim = GenericClaim & { value: StreamMetadata, }; declare type GenericClaim = { address: string, // address associated with tx amount: string, // bid amount at time of tx canonical_url: string, // URL with short id, includes channel with short id claim_id: string, // unique claim identifier claim_sequence: number, // not being used currently claim_op: 'create' | 'update', confirmations: number, decoded_claim: boolean, // Not available currently https://github.com/lbryio/lbry/issues/2044 timestamp?: number, // date of last transaction height: number, // block height the tx was confirmed is_channel_signature_valid?: boolean, is_my_output: boolean, name: string, normalized_name: string, // `name` normalized via unicode NFD spec, nout: number, // index number for an output of a tx permanent_url: string, // name + claim_id short_url: string, // permanent_url with short id, no channel txid: string, // unique tx id type: 'claim' | 'update' | 'support', value_type: 'stream' | 'channel' | 'collection', signing_channel?: ChannelClaim, reposted_claim?: GenericClaim, repost_channel_url?: string, repost_url?: string, repost_bid_amount?: string, purchase_receipt?: PurchaseReceipt, meta: { activation_height: number, claims_in_channel?: number, creation_height: number, creation_timestamp: number, effective_amount: string, expiration_height: number, is_controlling: boolean, support_amount: string, reposted: number, trending_global: number, trending_group: number, trending_local: number, trending_mixed: number, }, }; declare type GenericMetadata = { title?: string, description?: string, thumbnail?: { url?: string, }, languages?: Array, tags?: Array, locations?: Array, }; declare type ChannelMetadata = GenericMetadata & { public_key: string, public_key_id: string, cover_url?: string, email?: string, website_url?: string, featured?: Array, }; declare type CollectionMetadata = GenericMetadata & { claims: Array, } declare type StreamMetadata = GenericMetadata & { license?: string, // License "title" ex: Creative Commons, Custom copyright license_url?: string, // Link to full license release_time?: number, // linux timestamp author?: string, source: { sd_hash: string, media_type?: string, hash?: string, name?: string, // file name size?: number, // size of file in bytes }, // Only exists if a stream has a fee fee?: Fee, stream_type: 'video' | 'audio' | 'image' | 'software', // Below correspond to `stream_type` video?: { duration: number, height: number, width: number, }, audio?: { duration: number, }, image?: { height: number, width: number, }, software?: { os: string, }, }; declare type Location = { latitude?: number, longitude?: number, country?: string, state?: string, city?: string, code?: string, }; declare type Fee = { amount: string, currency: string, address: string, }; declare type PurchaseReceipt = { address: string, amount: string, claim_id: string, confirmations: number, height: number, nout: number, timestamp: number, txid: string, type: 'purchase', }; declare type ClaimErrorCensor = { address: string, amount: string, canonical_url: string, claim_id: string, claim_op: string, confirmations: number, has_signing_key: boolean, height: number, meta: { activation_height: number, claims_in_channel: number, creation_height: number, creation_timestamp: number, effective_amount: string, expiration_height: number, is_controlling: boolean, reposted: number, support_amount: string, take_over_height: number, }, name: string, normalized_name: string, nout: number, permanent_url: string, short_url: string, timestamp: number, txid: string, type: string, value: { public_key: string, public_key_id: string, }, value_type: string, } declare type ClaimActionResolveInfo = { [string]: { stream: ?StreamClaim, channel: ?ChannelClaim, claimsInChannel: ?number, collection: ?CollectionClaim, errorCensor: ?ClaimErrorCensor, }, } declare type ChannelUpdateParams = { claim_id: string, bid?: string, title?: string, cover_url?: string, thumbnail_url?: string, description?: string, website_url?: string, email?: string, tags?: Array, replace?: boolean, languages?: Array, locations?: Array, blocking?: boolean, } declare type ChannelPublishParams = { name: string, bid: string, blocking?: true, title?: string, cover_url?: string, thumbnail_url?: string, description?: string, website_url?: string, email?: string, tags?: Array, languages?: Array, } declare type CollectionUpdateParams = { claim_id: string, claim_ids?: Array, bid?: string, title?: string, cover_url?: string, thumbnail_url?: string, description?: string, website_url?: string, email?: string, tags?: Array, replace?: boolean, languages?: Array, locations?: Array, blocking?: boolean, } declare type CollectionPublishParams = { name: string, bid: string, claim_ids: Array, blocking?: true, title?: string, thumbnail_url?: string, description?: string, tags?: Array, languages?: Array, }