|  | // Copyright 2018 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | library fuchsia.pkg; | 
|  |  | 
|  | /// A content-addressed merkle root that describes an artifact that is tracked by the | 
|  | /// packaging system. | 
|  | struct BlobId { | 
|  | array<uint8>:32 merkle_root; | 
|  | }; | 
|  |  | 
|  | /// A tuple of the content-addressed merkle root for an artifact, along with that | 
|  | /// artifact's length in bytes. | 
|  | struct BlobInfo { | 
|  | BlobId blob_id; | 
|  | uint64 length; | 
|  | }; | 
|  |  | 
|  | /// A fuchsia-pkg:// URL indicating a package. | 
|  | /// https://fuchsia.dev/fuchsia-src/concepts/packages/package_url#package_identity | 
|  | struct PackageUrl { | 
|  | string:2048 url; | 
|  | }; | 
|  |  | 
|  | /// A fuchsia-pkg:// URL indicating a repository. | 
|  | /// https://fuchsia.dev/fuchsia-src/concepts/packages/package_url#repository_identity | 
|  | struct RepositoryUrl { | 
|  | string:2048 url; | 
|  | }; | 
|  |  | 
|  | /// A single entry in the package index. | 
|  | struct PackageIndexEntry { | 
|  | PackageUrl package_url; | 
|  | BlobId meta_far_blob_id; | 
|  | }; |